Change to use @ndcode/clean-css not clean-css, and uglify-es not uglify-js
authorNick Downing <nick@ndcode.org>
Sun, 18 Nov 2018 12:35:50 +0000 (23:35 +1100)
committerNick Downing <nick@ndcode.org>
Sun, 18 Nov 2018 12:56:36 +0000 (23:56 +1100)
.gitignore
dist/htmlminifier.js
dist/htmlminifier.min.js
env.sh [new file with mode: 0644]
package.json
src/htmlminifier.js
tests/index.html

index d4b2d8f..328451d 100644 (file)
@@ -5,5 +5,8 @@
 /_site/
 /benchmarks/*.html
 /benchmarks/generated
+/ndcode-html-minifier-*.tgz
 /node_modules/
 /npm-debug.log
+/yarn.lock
+/yarn-error.log
index 3fb8b97..29d53e1 100644 (file)
  */
 
 require=(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
-'use strict'
-
-exports.byteLength = byteLength
-exports.toByteArray = toByteArray
-exports.fromByteArray = fromByteArray
-
-var lookup = []
-var revLookup = []
-var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
-
-var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
-for (var i = 0, len = code.length; i < len; ++i) {
-  lookup[i] = code[i]
-  revLookup[code.charCodeAt(i)] = i
-}
+module.exports = require('./lib/clean');
 
-// Support decoding URL-safe base64 strings, as Node.js does.
-// See: https://en.wikipedia.org/wiki/Base64#URL_applications
-revLookup['-'.charCodeAt(0)] = 62
-revLookup['_'.charCodeAt(0)] = 63
+},{"./lib/clean":2}],2:[function(require,module,exports){
+(function (process){
+/**
+ * Clean-css - https://github.com/jakubpawlowicz/clean-css
+ * Released under the terms of MIT license
+ *
+ * Copyright (C) 2017 JakubPawlowicz.com
+ */
 
-function getLens (b64) {
-  var len = b64.length
+var level0Optimize = require('./optimizer/level-0/optimize');
+var level1Optimize = require('./optimizer/level-1/optimize');
+var level2Optimize = require('./optimizer/level-2/optimize');
+var validator = require('./optimizer/validator');
 
-  if (len % 4 > 0) {
-    throw new Error('Invalid string. Length must be a multiple of 4')
-  }
+var compatibilityFrom = require('./options/compatibility');
+var fetchFrom = require('./options/fetch');
+var formatFrom = require('./options/format').formatFrom;
+var inlineFrom = require('./options/inline');
+var inlineRequestFrom = require('./options/inline-request');
+var inlineTimeoutFrom = require('./options/inline-timeout');
+var OptimizationLevel = require('./options/optimization-level').OptimizationLevel;
+var optimizationLevelFrom = require('./options/optimization-level').optimizationLevelFrom;
+var rebaseFrom = require('./options/rebase');
+var rebaseToFrom = require('./options/rebase-to');
 
-  // Trim off extra bytes after placeholder bytes are found
-  // See: https://github.com/beatgammit/base64-js/issues/42
-  var validLen = b64.indexOf('=')
-  if (validLen === -1) validLen = len
+var inputSourceMapTracker = require('./reader/input-source-map-tracker');
+var readSources = require('./reader/read-sources');
 
-  var placeHoldersLen = validLen === len
-    ? 0
-    : 4 - (validLen % 4)
+var serializeStyles = require('./writer/simple');
+var serializeStylesAndSourceMap = require('./writer/source-maps');
 
-  return [validLen, placeHoldersLen]
-}
+var CleanCSS = module.exports = function CleanCSS(options) {
+  options = options || {};
 
-// base64 is 4/3 + up to two characters of the original data
-function byteLength (b64) {
-  var lens = getLens(b64)
-  var validLen = lens[0]
-  var placeHoldersLen = lens[1]
-  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
-}
+  this.options = {
+    compatibility: compatibilityFrom(options.compatibility),
+    fetch: fetchFrom(options.fetch),
+    format: formatFrom(options.format),
+    inline: inlineFrom(options.inline),
+    inlineRequest: inlineRequestFrom(options.inlineRequest),
+    inlineTimeout: inlineTimeoutFrom(options.inlineTimeout),
+    level: optimizationLevelFrom(options.level),
+    rebase: rebaseFrom(options.rebase),
+    rebaseTo: rebaseToFrom(options.rebaseTo),
+    returnPromise: !!options.returnPromise,
+    sourceMap: !!options.sourceMap,
+    sourceMapInlineSources: !!options.sourceMapInlineSources
+  };
+};
 
-function _byteLength (b64, validLen, placeHoldersLen) {
-  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
-}
 
-function toByteArray (b64) {
-  var tmp
-  var lens = getLens(b64)
-  var validLen = lens[0]
-  var placeHoldersLen = lens[1]
+// for compatibility with optimize-css-assets-webpack-plugin
+CleanCSS.process = function (input, opts) {
+  var cleanCss;
+  var optsTo = opts.to;
 
-  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
+  delete opts.to;
+  cleanCss = new CleanCSS(Object.assign({ returnPromise: true, rebaseTo: optsTo }, opts));
 
-  var curByte = 0
+  return cleanCss.minify(input)
+    .then(function(output) {
+      return { css: output.styles };
+    });
+};
 
-  // if there are placeholders, only get up to the last complete 4 chars
-  var len = placeHoldersLen > 0
-    ? validLen - 4
-    : validLen
+CleanCSS.prototype.minify = function (input, maybeSourceMap, maybeCallback) {
+  var options = this.options;
 
-  for (var i = 0; i < len; i += 4) {
-    tmp =
-      (revLookup[b64.charCodeAt(i)] << 18) |
-      (revLookup[b64.charCodeAt(i + 1)] << 12) |
-      (revLookup[b64.charCodeAt(i + 2)] << 6) |
-      revLookup[b64.charCodeAt(i + 3)]
-    arr[curByte++] = (tmp >> 16) & 0xFF
-    arr[curByte++] = (tmp >> 8) & 0xFF
-    arr[curByte++] = tmp & 0xFF
+  if (options.returnPromise) {
+    return new Promise(function (resolve, reject) {
+      minify(input, -1, options, maybeSourceMap, function (errors, output) {
+        return errors ?
+          reject(errors) :
+          resolve(output);
+      });
+    });
+  } else {
+    return minify(input, -1, options, maybeSourceMap, maybeCallback);
   }
+};
 
-  if (placeHoldersLen === 2) {
-    tmp =
-      (revLookup[b64.charCodeAt(i)] << 2) |
-      (revLookup[b64.charCodeAt(i + 1)] >> 4)
-    arr[curByte++] = tmp & 0xFF
-  }
+CleanCSS.prototype.minifyEmbedded = function (input, embeddedStart, maybeSourceMap, maybeCallback) {
+  var options = this.options;
 
-  if (placeHoldersLen === 1) {
-    tmp =
-      (revLookup[b64.charCodeAt(i)] << 10) |
-      (revLookup[b64.charCodeAt(i + 1)] << 4) |
-      (revLookup[b64.charCodeAt(i + 2)] >> 2)
-    arr[curByte++] = (tmp >> 8) & 0xFF
-    arr[curByte++] = tmp & 0xFF
+  if (options.returnPromise) {
+    return new Promise(function (resolve, reject) {
+      minify(input, embeddedStart, options, maybeSourceMap, function (errors, output) {
+        return errors ?
+          reject(errors) :
+          resolve(output);
+      });
+    });
+  } else {
+    return minify(input, embeddedStart, options, maybeSourceMap, maybeCallback);
   }
+};
 
-  return arr
-}
 
-function tripletToBase64 (num) {
-  return lookup[num >> 18 & 0x3F] +
-    lookup[num >> 12 & 0x3F] +
-    lookup[num >> 6 & 0x3F] +
-    lookup[num & 0x3F]
-}
+function minify(input, embeddedStart, options, maybeSourceMap, maybeCallback) {
+  var sourceMap = typeof maybeSourceMap != 'function' ?
+    maybeSourceMap :
+    null;
+  var callback = typeof maybeCallback == 'function' ?
+    maybeCallback :
+    (typeof maybeSourceMap == 'function' ? maybeSourceMap : null);
+  var context = {
+    stats: {
+      efficiency: 0,
+      minifiedSize: 0,
+      originalSize: 0,
+      startedAt: Date.now(),
+      timeSpent: 0
+    },
+    cache: {
+      specificity: {}
+    },
+    embeddedStart: embeddedStart, // Nick
+    embeddedEnd: -1, // Nick
+    errors: [],
+    inlinedStylesheets: [],
+    inputSourceMapTracker: inputSourceMapTracker(),
+    localOnly: !callback,
+    options: options,
+    source: null,
+    sourcesContent: {},
+    validator: validator(options.compatibility),
+    warnings: []
+  };
 
-function encodeChunk (uint8, start, end) {
-  var tmp
-  var output = []
-  for (var i = start; i < end; i += 3) {
-    tmp =
-      ((uint8[i] << 16) & 0xFF0000) +
-      ((uint8[i + 1] << 8) & 0xFF00) +
-      (uint8[i + 2] & 0xFF)
-    output.push(tripletToBase64(tmp))
+  if (sourceMap) {
+    context.inputSourceMapTracker.track(undefined, sourceMap);
   }
-  return output.join('')
-}
 
-function fromByteArray (uint8) {
-  var tmp
-  var len = uint8.length
-  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
-  var parts = []
-  var maxChunkLength = 16383 // must be multiple of 3
+  return runner(context.localOnly)(function () {
+    return readSources(input, context, function (tokens) {
+      var serialize = context.options.sourceMap ?
+        serializeStylesAndSourceMap :
+        serializeStyles;
 
-  // go through the array every three bytes, we'll deal with trailing stuff later
-  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
-    parts.push(encodeChunk(
-      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
-    ))
-  }
+      var optimizedTokens = optimize(tokens, context);
+      var optimizedStyles = serialize(optimizedTokens, context);
+      var output = withMetadata(optimizedStyles, context);
 
-  // pad the end with zeros, but make sure to not forget the extra bytes
-  if (extraBytes === 1) {
-    tmp = uint8[len - 1]
-    parts.push(
-      lookup[tmp >> 2] +
-      lookup[(tmp << 4) & 0x3F] +
-      '=='
-    )
-  } else if (extraBytes === 2) {
-    tmp = (uint8[len - 2] << 8) + uint8[len - 1]
-    parts.push(
-      lookup[tmp >> 10] +
-      lookup[(tmp >> 4) & 0x3F] +
-      lookup[(tmp << 2) & 0x3F] +
-      '='
-    )
-  }
+      return callback ?
+        callback(context.errors.length > 0 ? context.errors : null, output) :
+        output;
+    });
+  });
+}
 
-  return parts.join('')
+function runner(localOnly) {
+  // to always execute code asynchronously when a callback is given
+  // more at blog.izs.me/post/59142742143/designing-apis-for-asynchrony
+  return localOnly ?
+    function (callback) { return callback(); } :
+    process.nextTick;
 }
 
-},{}],2:[function(require,module,exports){
+function optimize(tokens, context) {
+  var optimized;
 
-},{}],3:[function(require,module,exports){
-arguments[4][2][0].apply(exports,arguments)
-},{"dup":2}],4:[function(require,module,exports){
-/*!
- * The buffer module from node.js, for the browser.
- *
- * @author   Feross Aboukhadijeh <https://feross.org>
- * @license  MIT
- */
-/* eslint-disable no-proto */
-
-'use strict'
+  optimized = level0Optimize(tokens, context);
+  optimized = OptimizationLevel.One in context.options.level ?
+    level1Optimize(tokens, context) :
+    tokens;
+  optimized = OptimizationLevel.Two in context.options.level ?
+    level2Optimize(tokens, context, true) :
+    optimized;
 
-var base64 = require('base64-js')
-var ieee754 = require('ieee754')
+  return optimized;
+}
 
-exports.Buffer = Buffer
-exports.SlowBuffer = SlowBuffer
-exports.INSPECT_MAX_BYTES = 50
+function withMetadata(output, context) {
+  if (Object.prototype.hasOwnProperty.call(output, 'styles')) // Nick
+    output.stats = calculateStatsFrom(output.styles, context);
+  output.embeddedStart = context.embeddedStart; // Nick
+  output.embeddedEnd = context.embeddedEnd; // Nick
+  output.errors = context.errors;
+  output.inlinedStylesheets = context.inlinedStylesheets;
+  output.warnings = context.warnings;
 
-var K_MAX_LENGTH = 0x7fffffff
-exports.kMaxLength = K_MAX_LENGTH
+  return output;
+}
 
-/**
- * If `Buffer.TYPED_ARRAY_SUPPORT`:
- *   === true    Use Uint8Array implementation (fastest)
- *   === false   Print warning and recommend using `buffer` v4.x which has an Object
- *               implementation (most compatible, even IE6)
- *
- * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
- * Opera 11.6+, iOS 4.2+.
- *
- * We report that the browser does not support typed arrays if the are not subclassable
- * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
- * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
- * for __proto__ and has a buggy typed array implementation.
- */
-Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
+function calculateStatsFrom(styles, context) {
+  var finishedAt = Date.now();
+  var timeSpent = finishedAt - context.stats.startedAt;
 
-if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
-    typeof console.error === 'function') {
-  console.error(
-    'This browser lacks typed array (Uint8Array) support which is required by ' +
-    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
-  )
-}
+  delete context.stats.startedAt;
+  context.stats.timeSpent = timeSpent;
+  context.stats.efficiency = 1 - styles.length / context.stats.originalSize;
+  context.stats.minifiedSize = styles.length;
 
-function typedArraySupport () {
-  // Can typed array instances can be augmented?
-  try {
-    var arr = new Uint8Array(1)
-    arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }
-    return arr.foo() === 42
-  } catch (e) {
-    return false
-  }
+  return context.stats;
 }
 
-Object.defineProperty(Buffer.prototype, 'parent', {
-  enumerable: true,
-  get: function () {
-    if (!Buffer.isBuffer(this)) return undefined
-    return this.buffer
-  }
-})
+}).call(this,require('_process'))
+},{"./optimizer/level-0/optimize":4,"./optimizer/level-1/optimize":5,"./optimizer/level-2/optimize":24,"./optimizer/validator":52,"./options/compatibility":54,"./options/fetch":55,"./options/format":56,"./options/inline":59,"./options/inline-request":57,"./options/inline-timeout":58,"./options/optimization-level":60,"./options/rebase":62,"./options/rebase-to":61,"./reader/input-source-map-tracker":66,"./reader/read-sources":72,"./writer/simple":94,"./writer/source-maps":95,"_process":124}],3:[function(require,module,exports){
+var Hack = {
+  ASTERISK: 'asterisk',
+  BANG: 'bang',
+  BACKSLASH: 'backslash',
+  UNDERSCORE: 'underscore'
+};
 
-Object.defineProperty(Buffer.prototype, 'offset', {
-  enumerable: true,
-  get: function () {
-    if (!Buffer.isBuffer(this)) return undefined
-    return this.byteOffset
-  }
-})
+module.exports = Hack;
 
-function createBuffer (length) {
-  if (length > K_MAX_LENGTH) {
-    throw new RangeError('The value "' + length + '" is invalid for option "size"')
-  }
-  // Return an augmented `Uint8Array` instance
-  var buf = new Uint8Array(length)
-  buf.__proto__ = Buffer.prototype
-  return buf
+},{}],4:[function(require,module,exports){
+function level0Optimize(tokens) {
+  // noop as level 0 means no optimizations!
+  return tokens;
 }
 
-/**
- * The Buffer constructor returns instances of `Uint8Array` that have their
- * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
- * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
- * and the `Uint8Array` methods. Square bracket notation works as expected -- it
- * returns a single octet.
- *
- * The `Uint8Array` prototype remains unmodified.
- */
+module.exports = level0Optimize;
 
-function Buffer (arg, encodingOrOffset, length) {
-  // Common case.
-  if (typeof arg === 'number') {
-    if (typeof encodingOrOffset === 'string') {
-      throw new TypeError(
-        'The "string" argument must be of type string. Received type number'
-      )
-    }
-    return allocUnsafe(arg)
-  }
-  return from(arg, encodingOrOffset, length)
-}
+},{}],5:[function(require,module,exports){
+var shortenHex = require('./shorten-hex');
+var shortenHsl = require('./shorten-hsl');
+var shortenRgb = require('./shorten-rgb');
+var sortSelectors = require('./sort-selectors');
+var tidyRules = require('./tidy-rules');
+var tidyBlock = require('./tidy-block');
+var tidyAtRule = require('./tidy-at-rule');
 
-// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
-if (typeof Symbol !== 'undefined' && Symbol.species != null &&
-    Buffer[Symbol.species] === Buffer) {
-  Object.defineProperty(Buffer, Symbol.species, {
-    value: null,
-    configurable: true,
-    enumerable: false,
-    writable: false
-  })
-}
+var Hack = require('../hack');
+var removeUnused = require('../remove-unused');
+var restoreFromOptimizing = require('../restore-from-optimizing');
+var wrapForOptimizing = require('../wrap-for-optimizing').all;
 
-Buffer.poolSize = 8192 // not used by this implementation
+var OptimizationLevel = require('../../options/optimization-level').OptimizationLevel;
 
-function from (value, encodingOrOffset, length) {
-  if (typeof value === 'string') {
-    return fromString(value, encodingOrOffset)
-  }
+var Token = require('../../tokenizer/token');
+var Marker = require('../../tokenizer/marker');
 
-  if (ArrayBuffer.isView(value)) {
-    return fromArrayLike(value)
-  }
+var formatPosition = require('../../utils/format-position');
+var split = require('../../utils/split');
 
-  if (value == null) {
-    throw TypeError(
-      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +
-      'or Array-like Object. Received type ' + (typeof value)
-    )
-  }
+var serializeRules = require('../../writer/one-time').rules;
 
-  if (isInstance(value, ArrayBuffer) ||
-      (value && isInstance(value.buffer, ArrayBuffer))) {
-    return fromArrayBuffer(value, encodingOrOffset, length)
-  }
+var IgnoreProperty = 'ignore-property';
 
-  if (typeof value === 'number') {
-    throw new TypeError(
-      'The "value" argument must not be of type number. Received type number'
-    )
-  }
+var CHARSET_TOKEN = '@charset';
+var CHARSET_REGEXP = new RegExp('^' + CHARSET_TOKEN, 'i');
 
-  var valueOf = value.valueOf && value.valueOf()
-  if (valueOf != null && valueOf !== value) {
-    return Buffer.from(valueOf, encodingOrOffset, length)
-  }
+var DEFAULT_ROUNDING_PRECISION = require('../../options/rounding-precision').DEFAULT;
 
-  var b = fromObject(value)
-  if (b) return b
+var WHOLE_PIXEL_VALUE = /(?:^|\s|\()(-?\d+)px/;
+var TIME_VALUE = /^(\-?[\d\.]+)(m?s)$/;
 
-  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&
-      typeof value[Symbol.toPrimitive] === 'function') {
-    return Buffer.from(
-      value[Symbol.toPrimitive]('string'), encodingOrOffset, length
-    )
-  }
+var HEX_VALUE_PATTERN = /[0-9a-f]/i;
+var PROPERTY_NAME_PATTERN = /^(?:\-chrome\-|\-[\w\-]+\w|\w[\w\-]+\w|\-\-\S+)$/;
+var IMPORT_PREFIX_PATTERN = /^@import/i;
+var QUOTED_PATTERN = /^('.*'|".*")$/;
+var QUOTED_BUT_SAFE_PATTERN = /^['"][a-zA-Z][a-zA-Z\d\-_]+['"]$/;
+var URL_PREFIX_PATTERN = /^url\(/i;
+var VARIABLE_NAME_PATTERN = /^--\S+$/;
 
-  throw new TypeError(
-    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +
-    'or Array-like Object. Received type ' + (typeof value)
-  )
+function isNegative(value) {
+  return value && value[1][0] == '-' && parseFloat(value[1]) < 0;
 }
 
-/**
- * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
- * if value is a number.
- * Buffer.from(str[, encoding])
- * Buffer.from(array)
- * Buffer.from(buffer)
- * Buffer.from(arrayBuffer[, byteOffset[, length]])
- **/
-Buffer.from = function (value, encodingOrOffset, length) {
-  return from(value, encodingOrOffset, length)
+function isQuoted(value) {
+  return QUOTED_PATTERN.test(value);
 }
 
-// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
-// https://github.com/feross/buffer/pull/148
-Buffer.prototype.__proto__ = Uint8Array.prototype
-Buffer.__proto__ = Uint8Array
+function isUrl(value) {
+  return URL_PREFIX_PATTERN.test(value);
+}
 
-function assertSize (size) {
-  if (typeof size !== 'number') {
-    throw new TypeError('"size" argument must be of type number')
-  } else if (size < 0) {
-    throw new RangeError('The value "' + size + '" is invalid for option "size"')
-  }
+function normalizeUrl(value) {
+  return value
+    .replace(URL_PREFIX_PATTERN, 'url(')
+    .replace(/\\?\n|\\?\r\n/g, '');
 }
 
-function alloc (size, fill, encoding) {
-  assertSize(size)
-  if (size <= 0) {
-    return createBuffer(size)
+function optimizeBackground(property) {
+  var values = property.value;
+
+  if (values.length == 1 && values[0][1] == 'none') {
+    values[0][1] = '0 0';
   }
-  if (fill !== undefined) {
-    // Only pay attention to encoding if it's a string. This
-    // prevents accidentally sending in a number that would
-    // be interpretted as a start offset.
-    return typeof encoding === 'string'
-      ? createBuffer(size).fill(fill, encoding)
-      : createBuffer(size).fill(fill)
+
+  if (values.length == 1 && values[0][1] == 'transparent') {
+    values[0][1] = '0 0';
   }
-  return createBuffer(size)
 }
 
-/**
- * Creates a new filled Buffer instance.
- * alloc(size[, fill[, encoding]])
- **/
-Buffer.alloc = function (size, fill, encoding) {
-  return alloc(size, fill, encoding)
-}
+function optimizeBorderRadius(property) {
+  var values = property.value;
+  var spliceAt;
 
-function allocUnsafe (size) {
-  assertSize(size)
-  return createBuffer(size < 0 ? 0 : checked(size) | 0)
-}
+  if (values.length == 3 && values[1][1] == '/' && values[0][1] == values[2][1]) {
+    spliceAt = 1;
+  } else if (values.length == 5 && values[2][1] == '/' && values[0][1] == values[3][1] && values[1][1] == values[4][1]) {
+    spliceAt = 2;
+  } else if (values.length == 7 && values[3][1] == '/' && values[0][1] == values[4][1] && values[1][1] == values[5][1] && values[2][1] == values[6][1]) {
+    spliceAt = 3;
+  } else if (values.length == 9 && values[4][1] == '/' && values[0][1] == values[5][1] && values[1][1] == values[6][1] && values[2][1] == values[7][1] && values[3][1] == values[8][1]) {
+    spliceAt = 4;
+  }
 
-/**
- * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
- * */
-Buffer.allocUnsafe = function (size) {
-  return allocUnsafe(size)
-}
-/**
- * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
- */
-Buffer.allocUnsafeSlow = function (size) {
-  return allocUnsafe(size)
+  if (spliceAt) {
+    property.value.splice(spliceAt);
+    property.dirty = true;
+  }
 }
 
-function fromString (string, encoding) {
-  if (typeof encoding !== 'string' || encoding === '') {
-    encoding = 'utf8'
+function optimizeColors(name, value, compatibility) {
+  if (value.indexOf('#') === -1 && value.indexOf('rgb') == -1 && value.indexOf('hsl') == -1) {
+    return shortenHex(value);
   }
 
-  if (!Buffer.isEncoding(encoding)) {
-    throw new TypeError('Unknown encoding: ' + encoding)
-  }
+  value = value
+    .replace(/rgb\((\-?\d+),(\-?\d+),(\-?\d+)\)/g, function (match, red, green, blue) {
+      return shortenRgb(red, green, blue);
+    })
+    .replace(/hsl\((-?\d+),(-?\d+)%?,(-?\d+)%?\)/g, function (match, hue, saturation, lightness) {
+      return shortenHsl(hue, saturation, lightness);
+    })
+    .replace(/(^|[^='"])#([0-9a-f]{6})/gi, function (match, prefix, color, at, inputValue) {
+      var suffix = inputValue[at + match.length];
 
-  var length = byteLength(string, encoding) | 0
-  var buf = createBuffer(length)
+      if (suffix && HEX_VALUE_PATTERN.test(suffix)) {
+        return match;
+      } else if (color[0] == color[1] && color[2] == color[3] && color[4] == color[5]) {
+        return (prefix + '#' + color[0] + color[2] + color[4]).toLowerCase();
+      } else {
+        return (prefix + '#' + color).toLowerCase();
+      }
+    })
+    .replace(/(^|[^='"])#([0-9a-f]{3})/gi, function (match, prefix, color) {
+      return prefix + '#' + color.toLowerCase();
+    })
+    .replace(/(rgb|rgba|hsl|hsla)\(([^\)]+)\)/g, function (match, colorFunction, colorDef) {
+      var tokens = colorDef.split(',');
+      var applies = (colorFunction == 'hsl' && tokens.length == 3) ||
+        (colorFunction == 'hsla' && tokens.length == 4) ||
+        (colorFunction == 'rgb' && tokens.length == 3 && colorDef.indexOf('%') > 0) ||
+        (colorFunction == 'rgba' && tokens.length == 4 && colorDef.indexOf('%') > 0);
 
-  var actual = buf.write(string, encoding)
+      if (!applies) {
+        return match;
+      }
 
-  if (actual !== length) {
-    // Writing a hex string, for example, that contains invalid characters will
-    // cause everything after the first invalid character to be ignored. (e.g.
-    // 'abxxcd' will be treated as 'ab')
-    buf = buf.slice(0, actual)
-  }
+      if (tokens[1].indexOf('%') == -1) {
+        tokens[1] += '%';
+      }
 
-  return buf
-}
+      if (tokens[2].indexOf('%') == -1) {
+        tokens[2] += '%';
+      }
 
-function fromArrayLike (array) {
-  var length = array.length < 0 ? 0 : checked(array.length) | 0
-  var buf = createBuffer(length)
-  for (var i = 0; i < length; i += 1) {
-    buf[i] = array[i] & 255
-  }
-  return buf
-}
+      return colorFunction + '(' + tokens.join(',') + ')';
+    });
 
-function fromArrayBuffer (array, byteOffset, length) {
-  if (byteOffset < 0 || array.byteLength < byteOffset) {
-    throw new RangeError('"offset" is outside of buffer bounds')
-  }
+  if (compatibility.colors.opacity && name.indexOf('background') == -1) {
+    value = value.replace(/(?:rgba|hsla)\(0,0%?,0%?,0\)/g, function (match) {
+      if (split(value, ',').pop().indexOf('gradient(') > -1) {
+        return match;
+      }
 
-  if (array.byteLength < byteOffset + (length || 0)) {
-    throw new RangeError('"length" is outside of buffer bounds')
+      return 'transparent';
+    });
   }
 
-  var buf
-  if (byteOffset === undefined && length === undefined) {
-    buf = new Uint8Array(array)
-  } else if (length === undefined) {
-    buf = new Uint8Array(array, byteOffset)
-  } else {
-    buf = new Uint8Array(array, byteOffset, length)
+  return shortenHex(value);
+}
+
+function optimizeFilter(property) {
+  if (property.value.length == 1) {
+    property.value[0][1] = property.value[0][1].replace(/progid:DXImageTransform\.Microsoft\.(Alpha|Chroma)(\W)/, function (match, filter, suffix) {
+      return filter.toLowerCase() + suffix;
+    });
   }
 
-  // Return an augmented `Uint8Array` instance
-  buf.__proto__ = Buffer.prototype
-  return buf
+  property.value[0][1] = property.value[0][1]
+    .replace(/,(\S)/g, ', $1')
+    .replace(/ ?= ?/g, '=');
 }
 
-function fromObject (obj) {
-  if (Buffer.isBuffer(obj)) {
-    var len = checked(obj.length) | 0
-    var buf = createBuffer(len)
-
-    if (buf.length === 0) {
-      return buf
-    }
+function optimizeFontWeight(property, atIndex) {
+  var value = property.value[atIndex][1];
 
-    obj.copy(buf, 0, 0, len)
-    return buf
+  if (value == 'normal') {
+    value = '400';
+  } else if (value == 'bold') {
+    value = '700';
   }
 
-  if (obj.length !== undefined) {
-    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
-      return createBuffer(0)
+  property.value[atIndex][1] = value;
+}
+
+function optimizeMultipleZeros(property) {
+  var values = property.value;
+  var spliceAt;
+
+  if (values.length == 4 && values[0][1] === '0' && values[1][1] === '0' && values[2][1] === '0' && values[3][1] === '0') {
+    if (property.name.indexOf('box-shadow') > -1) {
+      spliceAt = 2;
+    } else {
+      spliceAt = 1;
     }
-    return fromArrayLike(obj)
   }
 
-  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
-    return fromArrayLike(obj.data)
+  if (spliceAt) {
+    property.value.splice(spliceAt);
+    property.dirty = true;
   }
 }
 
-function checked (length) {
-  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
-  // length is NaN (which is otherwise coerced to zero.)
-  if (length >= K_MAX_LENGTH) {
-    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
-                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
+function optimizeOutline(property) {
+  var values = property.value;
+
+  if (values.length == 1 && values[0][1] == 'none') {
+    values[0][1] = '0';
   }
-  return length | 0
 }
 
-function SlowBuffer (length) {
-  if (+length != length) { // eslint-disable-line eqeqeq
-    length = 0
+function optimizePixelLengths(_, value, compatibility) {
+  if (!WHOLE_PIXEL_VALUE.test(value)) {
+    return value;
   }
-  return Buffer.alloc(+length)
-}
 
-Buffer.isBuffer = function isBuffer (b) {
-  return b != null && b._isBuffer === true &&
-    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false
-}
+  return value.replace(WHOLE_PIXEL_VALUE, function (match, val) {
+    var newValue;
+    var intVal = parseInt(val);
 
-Buffer.compare = function compare (a, b) {
-  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)
-  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)
-  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
-    throw new TypeError(
-      'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'
-    )
-  }
+    if (intVal === 0) {
+      return match;
+    }
 
-  if (a === b) return 0
+    if (compatibility.properties.shorterLengthUnits && compatibility.units.pt && intVal * 3 % 4 === 0) {
+      newValue = intVal * 3 / 4 + 'pt';
+    }
 
-  var x = a.length
-  var y = b.length
+    if (compatibility.properties.shorterLengthUnits && compatibility.units.pc && intVal % 16 === 0) {
+      newValue = intVal / 16 + 'pc';
+    }
 
-  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
-    if (a[i] !== b[i]) {
-      x = a[i]
-      y = b[i]
-      break
+    if (compatibility.properties.shorterLengthUnits && compatibility.units.in && intVal % 96 === 0) {
+      newValue = intVal / 96 + 'in';
     }
-  }
 
-  if (x < y) return -1
-  if (y < x) return 1
-  return 0
-}
+    if (newValue) {
+      newValue = match.substring(0, match.indexOf(val)) + newValue;
+    }
 
-Buffer.isEncoding = function isEncoding (encoding) {
-  switch (String(encoding).toLowerCase()) {
-    case 'hex':
-    case 'utf8':
-    case 'utf-8':
-    case 'ascii':
-    case 'latin1':
-    case 'binary':
-    case 'base64':
-    case 'ucs2':
-    case 'ucs-2':
-    case 'utf16le':
-    case 'utf-16le':
-      return true
-    default:
-      return false
-  }
+    return newValue && newValue.length < match.length ? newValue : match;
+  });
 }
 
-Buffer.concat = function concat (list, length) {
-  if (!Array.isArray(list)) {
-    throw new TypeError('"list" argument must be an Array of Buffers')
+function optimizePrecision(_, value, precisionOptions) {
+  if (!precisionOptions.enabled || value.indexOf('.') === -1) {
+    return value;
   }
 
-  if (list.length === 0) {
-    return Buffer.alloc(0)
-  }
-
-  var i
-  if (length === undefined) {
-    length = 0
-    for (i = 0; i < list.length; ++i) {
-      length += list[i].length
-    }
-  }
+  return value
+    .replace(precisionOptions.decimalPointMatcher, '$1$2$3')
+    .replace(precisionOptions.zeroMatcher, function (match, integerPart, fractionPart, unit) {
+      var multiplier = precisionOptions.units[unit].multiplier;
+      var parsedInteger = parseInt(integerPart);
+      var integer = isNaN(parsedInteger) ? 0 : parsedInteger;
+      var fraction = parseFloat(fractionPart);
 
-  var buffer = Buffer.allocUnsafe(length)
-  var pos = 0
-  for (i = 0; i < list.length; ++i) {
-    var buf = list[i]
-    if (isInstance(buf, Uint8Array)) {
-      buf = Buffer.from(buf)
-    }
-    if (!Buffer.isBuffer(buf)) {
-      throw new TypeError('"list" argument must be an Array of Buffers')
-    }
-    buf.copy(buffer, pos)
-    pos += buf.length
-  }
-  return buffer
+      return Math.round((integer + fraction) * multiplier) / multiplier + unit;
+    });
 }
 
-function byteLength (string, encoding) {
-  if (Buffer.isBuffer(string)) {
-    return string.length
-  }
-  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {
-    return string.byteLength
-  }
-  if (typeof string !== 'string') {
-    throw new TypeError(
-      'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' +
-      'Received type ' + typeof string
-    )
-  }
+function optimizeTimeUnits(_, value) {
+  if (!TIME_VALUE.test(value))
+    return value;
 
-  var len = string.length
-  var mustMatch = (arguments.length > 2 && arguments[2] === true)
-  if (!mustMatch && len === 0) return 0
+  return value.replace(TIME_VALUE, function (match, val, unit) {
+    var newValue;
 
-  // Use a for loop to avoid recursion
-  var loweredCase = false
-  for (;;) {
-    switch (encoding) {
-      case 'ascii':
-      case 'latin1':
-      case 'binary':
-        return len
-      case 'utf8':
-      case 'utf-8':
-        return utf8ToBytes(string).length
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return len * 2
-      case 'hex':
-        return len >>> 1
-      case 'base64':
-        return base64ToBytes(string).length
-      default:
-        if (loweredCase) {
-          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8
-        }
-        encoding = ('' + encoding).toLowerCase()
-        loweredCase = true
+    if (unit == 'ms') {
+      newValue = parseInt(val) / 1000 + 's';
+    } else if (unit == 's') {
+      newValue = parseFloat(val) * 1000 + 'ms';
     }
-  }
-}
-Buffer.byteLength = byteLength
-
-function slowToString (encoding, start, end) {
-  var loweredCase = false
 
-  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
-  // property of a typed array.
+    return newValue.length < match.length ? newValue : match;
+  });
+}
 
-  // This behaves neither like String nor Uint8Array in that we set start/end
-  // to their upper/lower bounds if the value passed is out of range.
-  // undefined is handled specially as per ECMA-262 6th Edition,
-  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
-  if (start === undefined || start < 0) {
-    start = 0
-  }
-  // Return early if start > this.length. Done here to prevent potential uint32
-  // coercion fail below.
-  if (start > this.length) {
-    return ''
+function optimizeUnits(name, value, unitsRegexp) {
+  if (/^(?:\-moz\-calc|\-webkit\-calc|calc|rgb|hsl|rgba|hsla)\(/.test(value)) {
+    return value;
   }
 
-  if (end === undefined || end > this.length) {
-    end = this.length
+  if (name == 'flex' || name == '-ms-flex' || name == '-webkit-flex' || name == 'flex-basis' || name == '-webkit-flex-basis') {
+    return value;
   }
 
-  if (end <= 0) {
-    return ''
+  if (value.indexOf('%') > 0 && (name == 'height' || name == 'max-height' || name == 'width' || name == 'max-width')) {
+    return value;
   }
 
-  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
-  end >>>= 0
-  start >>>= 0
+  return value
+    .replace(unitsRegexp, '$1' + '0' + '$2')
+    .replace(unitsRegexp, '$1' + '0' + '$2');
+}
 
-  if (end <= start) {
-    return ''
+function optimizeWhitespace(name, value) {
+  if (name.indexOf('filter') > -1 || value.indexOf(' ') == -1 || value.indexOf('expression') === 0) {
+    return value;
   }
 
-  if (!encoding) encoding = 'utf8'
-
-  while (true) {
-    switch (encoding) {
-      case 'hex':
-        return hexSlice(this, start, end)
-
-      case 'utf8':
-      case 'utf-8':
-        return utf8Slice(this, start, end)
-
-      case 'ascii':
-        return asciiSlice(this, start, end)
-
-      case 'latin1':
-      case 'binary':
-        return latin1Slice(this, start, end)
-
-      case 'base64':
-        return base64Slice(this, start, end)
+  if (value.indexOf(Marker.SINGLE_QUOTE) > -1 || value.indexOf(Marker.DOUBLE_QUOTE) > -1) {
+    return value;
+  }
 
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return utf16leSlice(this, start, end)
+  value = value.replace(/\s+/g, ' ');
 
-      default:
-        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
-        encoding = (encoding + '').toLowerCase()
-        loweredCase = true
-    }
+  if (value.indexOf('calc') > -1) {
+    value = value.replace(/\) ?\/ ?/g, ')/ ');
   }
-}
-
-// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
-// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
-// reliably in a browserify context because there could be multiple different
-// copies of the 'buffer' package in use. This method works even for Buffer
-// instances that were created from another copy of the `buffer` package.
-// See: https://github.com/feross/buffer/issues/154
-Buffer.prototype._isBuffer = true
 
-function swap (b, n, m) {
-  var i = b[n]
-  b[n] = b[m]
-  b[m] = i
+  return value
+    .replace(/(\(;?)\s+/g, '$1')
+    .replace(/\s+(;?\))/g, '$1')
+    .replace(/, /g, ',');
 }
 
-Buffer.prototype.swap16 = function swap16 () {
-  var len = this.length
-  if (len % 2 !== 0) {
-    throw new RangeError('Buffer size must be a multiple of 16-bits')
-  }
-  for (var i = 0; i < len; i += 2) {
-    swap(this, i, i + 1)
+function optimizeZeroDegUnit(_, value) {
+  if (value.indexOf('0deg') == -1) {
+    return value;
   }
-  return this
+
+  return value.replace(/\(0deg\)/g, '(0)');
 }
 
-Buffer.prototype.swap32 = function swap32 () {
-  var len = this.length
-  if (len % 4 !== 0) {
-    throw new RangeError('Buffer size must be a multiple of 32-bits')
+function optimizeZeroUnits(name, value) {
+  if (value.indexOf('0') == -1) {
+    return value;
   }
-  for (var i = 0; i < len; i += 4) {
-    swap(this, i, i + 3)
-    swap(this, i + 1, i + 2)
+
+  if (value.indexOf('-') > -1) {
+    value = value
+      .replace(/([^\w\d\-]|^)\-0([^\.]|$)/g, '$10$2')
+      .replace(/([^\w\d\-]|^)\-0([^\.]|$)/g, '$10$2');
   }
-  return this
+
+  return value
+    .replace(/(^|\s)0+([1-9])/g, '$1$2')
+    .replace(/(^|\D)\.0+(\D|$)/g, '$10$2')
+    .replace(/(^|\D)\.0+(\D|$)/g, '$10$2')
+    .replace(/\.([1-9]*)0+(\D|$)/g, function (match, nonZeroPart, suffix) {
+      return (nonZeroPart.length > 0 ? '.' : '') + nonZeroPart + suffix;
+    })
+    .replace(/(^|\D)0\.(\d)/g, '$1.$2');
 }
 
-Buffer.prototype.swap64 = function swap64 () {
-  var len = this.length
-  if (len % 8 !== 0) {
-    throw new RangeError('Buffer size must be a multiple of 64-bits')
-  }
-  for (var i = 0; i < len; i += 8) {
-    swap(this, i, i + 7)
-    swap(this, i + 1, i + 6)
-    swap(this, i + 2, i + 5)
-    swap(this, i + 3, i + 4)
+function removeQuotes(name, value) {
+  if (name == 'content' || name.indexOf('font-variation-settings') > -1 || name.indexOf('font-feature-settings') > -1 || name.indexOf('grid-') > -1) {
+    return value;
   }
-  return this
-}
 
-Buffer.prototype.toString = function toString () {
-  var length = this.length
-  if (length === 0) return ''
-  if (arguments.length === 0) return utf8Slice(this, 0, length)
-  return slowToString.apply(this, arguments)
+  return QUOTED_BUT_SAFE_PATTERN.test(value) ?
+    value.substring(1, value.length - 1) :
+    value;
 }
 
-Buffer.prototype.toLocaleString = Buffer.prototype.toString
-
-Buffer.prototype.equals = function equals (b) {
-  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
-  if (this === b) return true
-  return Buffer.compare(this, b) === 0
+function removeUrlQuotes(value) {
+  return /^url\(['"].+['"]\)$/.test(value) && !/^url\(['"].*[\*\s\(\)'"].*['"]\)$/.test(value) && !/^url\(['"]data:[^;]+;charset/.test(value) ?
+    value.replace(/["']/g, '') :
+    value;
 }
 
-Buffer.prototype.inspect = function inspect () {
-  var str = ''
-  var max = exports.INSPECT_MAX_BYTES
-  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()
-  if (this.length > max) str += ' ... '
-  return '<Buffer ' + str + '>'
-}
+function transformValue(propertyName, propertyValue, rule, transformCallback) {
+  var selector = serializeRules(rule);
+  var transformedValue = transformCallback(propertyName, propertyValue, selector);
 
-Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
-  if (isInstance(target, Uint8Array)) {
-    target = Buffer.from(target, target.offset, target.byteLength)
-  }
-  if (!Buffer.isBuffer(target)) {
-    throw new TypeError(
-      'The "target" argument must be one of type Buffer or Uint8Array. ' +
-      'Received type ' + (typeof target)
-    )
+  if (transformedValue === undefined) {
+    return propertyValue;
+  } else if (transformedValue === false) {
+    return IgnoreProperty;
+  } else {
+    return transformedValue;
   }
+}
 
-  if (start === undefined) {
-    start = 0
-  }
-  if (end === undefined) {
-    end = target ? target.length : 0
-  }
-  if (thisStart === undefined) {
-    thisStart = 0
-  }
-  if (thisEnd === undefined) {
-    thisEnd = this.length
-  }
+//
 
-  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
-    throw new RangeError('out of range index')
-  }
+function optimizeBody(rule, properties, context) {
+  var options = context.options;
+  var levelOptions = options.level[OptimizationLevel.One];
+  var property, name, type, value;
+  var valueIsUrl;
+  var propertyToken;
+  var _properties = wrapForOptimizing(properties, true);
 
-  if (thisStart >= thisEnd && start >= end) {
-    return 0
-  }
-  if (thisStart >= thisEnd) {
-    return -1
-  }
-  if (start >= end) {
-    return 1
-  }
+  propertyLoop:
+  for (var i = 0, l = _properties.length; i < l; i++) {
+    property = _properties[i];
+    name = property.name;
 
-  start >>>= 0
-  end >>>= 0
-  thisStart >>>= 0
-  thisEnd >>>= 0
+    if (!PROPERTY_NAME_PATTERN.test(name)) {
+      propertyToken = property.all[property.position];
+      context.warnings.push('Invalid property name \'' + name + '\' at ' + formatPosition(propertyToken[1][2][0]) + '. Ignoring.');
+      property.unused = true;
+    }
 
-  if (this === target) return 0
+    if (property.value.length === 0) {
+      propertyToken = property.all[property.position];
+      context.warnings.push('Empty property \'' + name + '\' at ' + formatPosition(propertyToken[1][2][0]) + '. Ignoring.');
+      property.unused = true;
+    }
 
-  var x = thisEnd - thisStart
-  var y = end - start
-  var len = Math.min(x, y)
+    if (property.hack && (
+        (property.hack[0] == Hack.ASTERISK || property.hack[0] == Hack.UNDERSCORE) && !options.compatibility.properties.iePrefixHack ||
+        property.hack[0] == Hack.BACKSLASH && !options.compatibility.properties.ieSuffixHack ||
+        property.hack[0] == Hack.BANG && !options.compatibility.properties.ieBangHack)) {
+      property.unused = true;
+    }
 
-  var thisCopy = this.slice(thisStart, thisEnd)
-  var targetCopy = target.slice(start, end)
+    if (levelOptions.removeNegativePaddings && name.indexOf('padding') === 0 && (isNegative(property.value[0]) || isNegative(property.value[1]) || isNegative(property.value[2]) || isNegative(property.value[3]))) {
+      property.unused = true;
+    }
 
-  for (var i = 0; i < len; ++i) {
-    if (thisCopy[i] !== targetCopy[i]) {
-      x = thisCopy[i]
-      y = targetCopy[i]
-      break
+    if (!options.compatibility.properties.ieFilters && isLegacyFilter(property)) {
+      property.unused = true;
     }
-  }
 
-  if (x < y) return -1
-  if (y < x) return 1
-  return 0
-}
+    if (property.unused) {
+      continue;
+    }
 
-// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
-// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
-//
-// Arguments:
-// - buffer - a Buffer to search
-// - val - a string, Buffer, or number
-// - byteOffset - an index into `buffer`; will be clamped to an int32
-// - encoding - an optional encoding, relevant is val is a string
-// - dir - true for indexOf, false for lastIndexOf
-function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
-  // Empty buffer means no match
-  if (buffer.length === 0) return -1
+    if (property.block) {
+      optimizeBody(rule, property.value[0][1], context);
+      continue;
+    }
 
-  // Normalize byteOffset
-  if (typeof byteOffset === 'string') {
-    encoding = byteOffset
-    byteOffset = 0
-  } else if (byteOffset > 0x7fffffff) {
-    byteOffset = 0x7fffffff
-  } else if (byteOffset < -0x80000000) {
-    byteOffset = -0x80000000
-  }
-  byteOffset = +byteOffset // Coerce to Number.
-  if (numberIsNaN(byteOffset)) {
-    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
-    byteOffset = dir ? 0 : (buffer.length - 1)
-  }
+    if (VARIABLE_NAME_PATTERN.test(name)) {
+      continue;
+    }
 
-  // Normalize byteOffset: negative offsets start from the end of the buffer
-  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
-  if (byteOffset >= buffer.length) {
-    if (dir) return -1
-    else byteOffset = buffer.length - 1
-  } else if (byteOffset < 0) {
-    if (dir) byteOffset = 0
-    else return -1
-  }
+    for (var j = 0, m = property.value.length; j < m; j++) {
+      type = property.value[j][0];
+      value = property.value[j][1];
+      valueIsUrl = isUrl(value);
 
-  // Normalize val
-  if (typeof val === 'string') {
-    val = Buffer.from(val, encoding)
-  }
+      if (type == Token.PROPERTY_BLOCK) {
+        property.unused = true;
+        context.warnings.push('Invalid value token at ' + formatPosition(value[0][1][2][0]) + '. Ignoring.');
+        break;
+      }
 
-  // Finally, search either indexOf (if dir is true) or lastIndexOf
-  if (Buffer.isBuffer(val)) {
-    // Special case: looking for empty string/buffer always fails
-    if (val.length === 0) {
-      return -1
-    }
-    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
-  } else if (typeof val === 'number') {
-    val = val & 0xFF // Search for a byte value [0-255]
-    if (typeof Uint8Array.prototype.indexOf === 'function') {
-      if (dir) {
-        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
-      } else {
-        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
+      if (valueIsUrl && !context.validator.isUrl(value)) {
+        property.unused = true;
+        context.warnings.push('Broken URL \'' + value + '\' at ' + formatPosition(property.value[j][2][0]) + '. Ignoring.');
+        break;
       }
-    }
-    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
-  }
 
-  throw new TypeError('val must be string, number or Buffer')
-}
+      if (valueIsUrl) {
+        value = levelOptions.normalizeUrls ?
+          normalizeUrl(value) :
+          value;
+        value = !options.compatibility.properties.urlQuotes ?
+          removeUrlQuotes(value) :
+          value;
+      } else if (isQuoted(value)) {
+        value = levelOptions.removeQuotes ?
+          removeQuotes(name, value) :
+          value;
+      } else {
+        value = levelOptions.removeWhitespace ?
+          optimizeWhitespace(name, value) :
+          value;
+        value = optimizePrecision(name, value, options.precision);
+        value = optimizePixelLengths(name, value, options.compatibility);
+        value = levelOptions.replaceTimeUnits ?
+          optimizeTimeUnits(name, value) :
+          value;
+        value = levelOptions.replaceZeroUnits ?
+          optimizeZeroUnits(name, value) :
+          value;
 
-function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
-  var indexSize = 1
-  var arrLength = arr.length
-  var valLength = val.length
+        if (options.compatibility.properties.zeroUnits) {
+          value = optimizeZeroDegUnit(name, value);
+          value = optimizeUnits(name, value, options.unitsRegexp);
+        }
 
-  if (encoding !== undefined) {
-    encoding = String(encoding).toLowerCase()
-    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
-        encoding === 'utf16le' || encoding === 'utf-16le') {
-      if (arr.length < 2 || val.length < 2) {
-        return -1
+        if (options.compatibility.properties.colors) {
+          value = optimizeColors(name, value, options.compatibility);
+        }
       }
-      indexSize = 2
-      arrLength /= 2
-      valLength /= 2
-      byteOffset /= 2
+
+      value = transformValue(name, value, rule, levelOptions.transform);
+
+      if (value === IgnoreProperty) {
+        property.unused = true;
+        continue propertyLoop;
+      }
+
+      property.value[j][1] = value;
     }
-  }
 
-  function read (buf, i) {
-    if (indexSize === 1) {
-      return buf[i]
-    } else {
-      return buf.readUInt16BE(i * indexSize)
+    if (levelOptions.replaceMultipleZeros) {
+      optimizeMultipleZeros(property);
+    }
+
+    if (name == 'background' && levelOptions.optimizeBackground) {
+      optimizeBackground(property);
+    } else if (name.indexOf('border') === 0 && name.indexOf('radius') > 0 && levelOptions.optimizeBorderRadius) {
+      optimizeBorderRadius(property);
+    } else if (name == 'filter'&& levelOptions.optimizeFilter && options.compatibility.properties.ieFilters) {
+      optimizeFilter(property);
+    } else if (name == 'font-weight' && levelOptions.optimizeFontWeight) {
+      optimizeFontWeight(property, 0);
+    } else if (name == 'outline' && levelOptions.optimizeOutline) {
+      optimizeOutline(property);
     }
   }
 
-  var i
-  if (dir) {
-    var foundIndex = -1
-    for (i = byteOffset; i < arrLength; i++) {
-      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
-        if (foundIndex === -1) foundIndex = i
-        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
-      } else {
-        if (foundIndex !== -1) i -= i - foundIndex
-        foundIndex = -1
-      }
-    }
-  } else {
-    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
-    for (i = byteOffset; i >= 0; i--) {
-      var found = true
-      for (var j = 0; j < valLength; j++) {
-        if (read(arr, i + j) !== read(val, j)) {
-          found = false
-          break
-        }
-      }
-      if (found) return i
-    }
-  }
-
-  return -1
-}
-
-Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
-  return this.indexOf(val, byteOffset, encoding) !== -1
+  restoreFromOptimizing(_properties);
+  removeUnused(_properties);
+  removeComments(properties, options);
 }
 
-Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
-  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
-}
+function removeComments(tokens, options) {
+  var token;
+  var i;
 
-Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
-  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
-}
+  for (i = 0; i < tokens.length; i++) {
+    token = tokens[i];
 
-function hexWrite (buf, string, offset, length) {
-  offset = Number(offset) || 0
-  var remaining = buf.length - offset
-  if (!length) {
-    length = remaining
-  } else {
-    length = Number(length)
-    if (length > remaining) {
-      length = remaining
+    if (token[0] != Token.COMMENT) {
+      continue;
     }
-  }
 
-  var strLen = string.length
+    optimizeComment(token, options);
 
-  if (length > strLen / 2) {
-    length = strLen / 2
-  }
-  for (var i = 0; i < length; ++i) {
-    var parsed = parseInt(string.substr(i * 2, 2), 16)
-    if (numberIsNaN(parsed)) return i
-    buf[offset + i] = parsed
+    if (token[1].length === 0) {
+      tokens.splice(i, 1);
+      i--;
+    }
   }
-  return i
 }
 
-function utf8Write (buf, string, offset, length) {
-  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
-}
+function optimizeComment(token, options) {
+  if (token[1][2] == Marker.EXCLAMATION && (options.level[OptimizationLevel.One].specialComments == 'all' || options.commentsKept < options.level[OptimizationLevel.One].specialComments)) {
+    options.commentsKept++;
+    return;
+  }
 
-function asciiWrite (buf, string, offset, length) {
-  return blitBuffer(asciiToBytes(string), buf, offset, length)
+  token[1] = [];
 }
 
-function latin1Write (buf, string, offset, length) {
-  return asciiWrite(buf, string, offset, length)
-}
+function cleanupCharsets(tokens) {
+  var hasCharset = false;
 
-function base64Write (buf, string, offset, length) {
-  return blitBuffer(base64ToBytes(string), buf, offset, length)
-}
+  for (var i = 0, l = tokens.length; i < l; i++) {
+    var token = tokens[i];
 
-function ucs2Write (buf, string, offset, length) {
-  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
-}
+    if (token[0] != Token.AT_RULE)
+      continue;
 
-Buffer.prototype.write = function write (string, offset, length, encoding) {
-  // Buffer#write(string)
-  if (offset === undefined) {
-    encoding = 'utf8'
-    length = this.length
-    offset = 0
-  // Buffer#write(string, encoding)
-  } else if (length === undefined && typeof offset === 'string') {
-    encoding = offset
-    length = this.length
-    offset = 0
-  // Buffer#write(string, offset[, length][, encoding])
-  } else if (isFinite(offset)) {
-    offset = offset >>> 0
-    if (isFinite(length)) {
-      length = length >>> 0
-      if (encoding === undefined) encoding = 'utf8'
+    if (!CHARSET_REGEXP.test(token[1]))
+      continue;
+
+    if (hasCharset || token[1].indexOf(CHARSET_TOKEN) == -1) {
+      tokens.splice(i, 1);
+      i--;
+      l--;
     } else {
-      encoding = length
-      length = undefined
+      hasCharset = true;
+      tokens.splice(i, 1);
+      tokens.unshift([Token.AT_RULE, token[1].replace(CHARSET_REGEXP, CHARSET_TOKEN)]);
     }
-  } else {
-    throw new Error(
-      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
-    )
   }
+}
 
-  var remaining = this.length - offset
-  if (length === undefined || length > remaining) length = remaining
-
-  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
-    throw new RangeError('Attempt to write outside buffer bounds')
-  }
-
-  if (!encoding) encoding = 'utf8'
-
-  var loweredCase = false
-  for (;;) {
-    switch (encoding) {
-      case 'hex':
-        return hexWrite(this, string, offset, length)
+function buildUnitRegexp(options) {
+  var units = ['px', 'em', 'ex', 'cm', 'mm', 'in', 'pt', 'pc', '%'];
+  var otherUnits = ['ch', 'rem', 'vh', 'vm', 'vmax', 'vmin', 'vw'];
 
-      case 'utf8':
-      case 'utf-8':
-        return utf8Write(this, string, offset, length)
+  otherUnits.forEach(function (unit) {
+    if (options.compatibility.units[unit]) {
+      units.push(unit);
+    }
+  });
 
-      case 'ascii':
-        return asciiWrite(this, string, offset, length)
+  return new RegExp('(^|\\s|\\(|,)0(?:' + units.join('|') + ')(\\W|$)', 'g');
+}
 
-      case 'latin1':
-      case 'binary':
-        return latin1Write(this, string, offset, length)
+function buildPrecisionOptions(roundingPrecision) {
+  var precisionOptions = {
+    matcher: null,
+    units: {},
+  };
+  var optimizable = [];
+  var unit;
+  var value;
 
-      case 'base64':
-        // Warning: maxLength not taken into account in base64Write
-        return base64Write(this, string, offset, length)
+  for (unit in roundingPrecision) {
+    value = roundingPrecision[unit];
 
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return ucs2Write(this, string, offset, length)
+    if (value != DEFAULT_ROUNDING_PRECISION) {
+      precisionOptions.units[unit] = {};
+      precisionOptions.units[unit].value = value;
+      precisionOptions.units[unit].multiplier = Math.pow(10, value);
 
-      default:
-        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
-        encoding = ('' + encoding).toLowerCase()
-        loweredCase = true
+      optimizable.push(unit);
     }
   }
-}
 
-Buffer.prototype.toJSON = function toJSON () {
-  return {
-    type: 'Buffer',
-    data: Array.prototype.slice.call(this._arr || this, 0)
+  if (optimizable.length > 0) {
+    precisionOptions.enabled = true;
+    precisionOptions.decimalPointMatcher = new RegExp('(\\d)\\.($|' + optimizable.join('|') + ')($|\W)', 'g');
+    precisionOptions.zeroMatcher = new RegExp('(\\d*)(\\.\\d+)(' + optimizable.join('|') + ')', 'g');
   }
+
+  return precisionOptions;
 }
 
-function base64Slice (buf, start, end) {
-  if (start === 0 && end === buf.length) {
-    return base64.fromByteArray(buf)
+function isImport(token) {
+  return IMPORT_PREFIX_PATTERN.test(token[1]);
+}
+
+function isLegacyFilter(property) {
+  var value;
+
+  if (property.name == 'filter' || property.name == '-ms-filter') {
+    value = property.value[0][1];
+
+    return value.indexOf('progid') > -1 ||
+      value.indexOf('alpha') === 0 ||
+      value.indexOf('chroma') === 0;
   } else {
-    return base64.fromByteArray(buf.slice(start, end))
+    return false;
   }
 }
 
-function utf8Slice (buf, start, end) {
-  end = Math.min(buf.length, end)
-  var res = []
+function level1Optimize(tokens, context) {
+  var options = context.options;
+  var levelOptions = options.level[OptimizationLevel.One];
+  var ie7Hack = options.compatibility.selectors.ie7Hack;
+  var adjacentSpace = options.compatibility.selectors.adjacentSpace;
+  var spaceAfterClosingBrace = options.compatibility.properties.spaceAfterClosingBrace;
+  var format = options.format;
+  var mayHaveCharset = false;
+  var afterRules = false;
 
-  var i = start
-  while (i < end) {
-    var firstByte = buf[i]
-    var codePoint = null
-    var bytesPerSequence = (firstByte > 0xEF) ? 4
-      : (firstByte > 0xDF) ? 3
-        : (firstByte > 0xBF) ? 2
-          : 1
+  options.unitsRegexp = options.unitsRegexp || buildUnitRegexp(options);
+  options.precision = options.precision || buildPrecisionOptions(levelOptions.roundingPrecision);
+  options.commentsKept = options.commentsKept || 0;
 
-    if (i + bytesPerSequence <= end) {
-      var secondByte, thirdByte, fourthByte, tempCodePoint
+  for (var i = 0, l = tokens.length; i < l; i++) {
+    var token = tokens[i];
 
-      switch (bytesPerSequence) {
-        case 1:
-          if (firstByte < 0x80) {
-            codePoint = firstByte
-          }
-          break
-        case 2:
-          secondByte = buf[i + 1]
-          if ((secondByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
-            if (tempCodePoint > 0x7F) {
-              codePoint = tempCodePoint
-            }
-          }
-          break
-        case 3:
-          secondByte = buf[i + 1]
-          thirdByte = buf[i + 2]
-          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
-            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
-              codePoint = tempCodePoint
-            }
-          }
-          break
-        case 4:
-          secondByte = buf[i + 1]
-          thirdByte = buf[i + 2]
-          fourthByte = buf[i + 3]
-          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
-            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
-              codePoint = tempCodePoint
-            }
-          }
-      }
+    switch (token[0]) {
+      case Token.AT_RULE:
+        token[1] = isImport(token) && afterRules ? '' : token[1];
+        token[1] = levelOptions.tidyAtRules ? tidyAtRule(token[1]) : token[1];
+        mayHaveCharset = true;
+        break;
+      case Token.AT_RULE_BLOCK:
+        optimizeBody(token[1], token[2], context);
+        afterRules = true;
+        break;
+      case Token.NESTED_BLOCK:
+        token[1] = levelOptions.tidyBlockScopes ? tidyBlock(token[1], spaceAfterClosingBrace) : token[1];
+        level1Optimize(token[2], context);
+        afterRules = true;
+        break;
+      case Token.COMMENT:
+        optimizeComment(token, options);
+        break;
+      case Token.RULE:
+        token[1] = levelOptions.tidySelectors ? tidyRules(token[1], !ie7Hack, adjacentSpace, format, context.warnings) : token[1];
+        token[1] = token[1].length > 1 ? sortSelectors(token[1], levelOptions.selectorsSortingMethod) : token[1];
+        optimizeBody(token[1], token[2], context);
+        afterRules = true;
+        break;
     }
 
-    if (codePoint === null) {
-      // we did not generate a valid codePoint so insert a
-      // replacement char (U+FFFD) and advance only 1 byte
-      codePoint = 0xFFFD
-      bytesPerSequence = 1
-    } else if (codePoint > 0xFFFF) {
-      // encode to utf16 (surrogate pair dance)
-      codePoint -= 0x10000
-      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
-      codePoint = 0xDC00 | codePoint & 0x3FF
+    if (token[0] == Token.COMMENT && token[1].length === 0 || levelOptions.removeEmpty && (token[1].length === 0 || (token[2] && token[2].length === 0))) {
+      tokens.splice(i, 1);
+      i--;
+      l--;
     }
+  }
 
-    res.push(codePoint)
-    i += bytesPerSequence
+  if (levelOptions.cleanupCharsets && mayHaveCharset) {
+    cleanupCharsets(tokens);
   }
 
-  return decodeCodePointsArray(res)
+  return tokens;
 }
 
-// Based on http://stackoverflow.com/a/22747272/680742, the browser with
-// the lowest limit is Chrome, with 0x10000 args.
-// We go 1 magnitude less, for safety
-var MAX_ARGUMENTS_LENGTH = 0x1000
+module.exports = level1Optimize;
 
-function decodeCodePointsArray (codePoints) {
-  var len = codePoints.length
-  if (len <= MAX_ARGUMENTS_LENGTH) {
-    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
-  }
+},{"../../options/optimization-level":60,"../../options/rounding-precision":63,"../../tokenizer/marker":78,"../../tokenizer/token":79,"../../utils/format-position":82,"../../utils/split":91,"../../writer/one-time":93,"../hack":3,"../remove-unused":50,"../restore-from-optimizing":51,"../wrap-for-optimizing":53,"./shorten-hex":6,"./shorten-hsl":7,"./shorten-rgb":8,"./sort-selectors":9,"./tidy-at-rule":10,"./tidy-block":11,"./tidy-rules":12}],6:[function(require,module,exports){
+var COLORS = {
+  aliceblue: '#f0f8ff',
+  antiquewhite: '#faebd7',
+  aqua: '#0ff',
+  aquamarine: '#7fffd4',
+  azure: '#f0ffff',
+  beige: '#f5f5dc',
+  bisque: '#ffe4c4',
+  black: '#000',
+  blanchedalmond: '#ffebcd',
+  blue: '#00f',
+  blueviolet: '#8a2be2',
+  brown: '#a52a2a',
+  burlywood: '#deb887',
+  cadetblue: '#5f9ea0',
+  chartreuse: '#7fff00',
+  chocolate: '#d2691e',
+  coral: '#ff7f50',
+  cornflowerblue: '#6495ed',
+  cornsilk: '#fff8dc',
+  crimson: '#dc143c',
+  cyan: '#0ff',
+  darkblue: '#00008b',
+  darkcyan: '#008b8b',
+  darkgoldenrod: '#b8860b',
+  darkgray: '#a9a9a9',
+  darkgreen: '#006400',
+  darkgrey: '#a9a9a9',
+  darkkhaki: '#bdb76b',
+  darkmagenta: '#8b008b',
+  darkolivegreen: '#556b2f',
+  darkorange: '#ff8c00',
+  darkorchid: '#9932cc',
+  darkred: '#8b0000',
+  darksalmon: '#e9967a',
+  darkseagreen: '#8fbc8f',
+  darkslateblue: '#483d8b',
+  darkslategray: '#2f4f4f',
+  darkslategrey: '#2f4f4f',
+  darkturquoise: '#00ced1',
+  darkviolet: '#9400d3',
+  deeppink: '#ff1493',
+  deepskyblue: '#00bfff',
+  dimgray: '#696969',
+  dimgrey: '#696969',
+  dodgerblue: '#1e90ff',
+  firebrick: '#b22222',
+  floralwhite: '#fffaf0',
+  forestgreen: '#228b22',
+  fuchsia: '#f0f',
+  gainsboro: '#dcdcdc',
+  ghostwhite: '#f8f8ff',
+  gold: '#ffd700',
+  goldenrod: '#daa520',
+  gray: '#808080',
+  green: '#008000',
+  greenyellow: '#adff2f',
+  grey: '#808080',
+  honeydew: '#f0fff0',
+  hotpink: '#ff69b4',
+  indianred: '#cd5c5c',
+  indigo: '#4b0082',
+  ivory: '#fffff0',
+  khaki: '#f0e68c',
+  lavender: '#e6e6fa',
+  lavenderblush: '#fff0f5',
+  lawngreen: '#7cfc00',
+  lemonchiffon: '#fffacd',
+  lightblue: '#add8e6',
+  lightcoral: '#f08080',
+  lightcyan: '#e0ffff',
+  lightgoldenrodyellow: '#fafad2',
+  lightgray: '#d3d3d3',
+  lightgreen: '#90ee90',
+  lightgrey: '#d3d3d3',
+  lightpink: '#ffb6c1',
+  lightsalmon: '#ffa07a',
+  lightseagreen: '#20b2aa',
+  lightskyblue: '#87cefa',
+  lightslategray: '#778899',
+  lightslategrey: '#778899',
+  lightsteelblue: '#b0c4de',
+  lightyellow: '#ffffe0',
+  lime: '#0f0',
+  limegreen: '#32cd32',
+  linen: '#faf0e6',
+  magenta: '#ff00ff',
+  maroon: '#800000',
+  mediumaquamarine: '#66cdaa',
+  mediumblue: '#0000cd',
+  mediumorchid: '#ba55d3',
+  mediumpurple: '#9370db',
+  mediumseagreen: '#3cb371',
+  mediumslateblue: '#7b68ee',
+  mediumspringgreen: '#00fa9a',
+  mediumturquoise: '#48d1cc',
+  mediumvioletred: '#c71585',
+  midnightblue: '#191970',
+  mintcream: '#f5fffa',
+  mistyrose: '#ffe4e1',
+  moccasin: '#ffe4b5',
+  navajowhite: '#ffdead',
+  navy: '#000080',
+  oldlace: '#fdf5e6',
+  olive: '#808000',
+  olivedrab: '#6b8e23',
+  orange: '#ffa500',
+  orangered: '#ff4500',
+  orchid: '#da70d6',
+  palegoldenrod: '#eee8aa',
+  palegreen: '#98fb98',
+  paleturquoise: '#afeeee',
+  palevioletred: '#db7093',
+  papayawhip: '#ffefd5',
+  peachpuff: '#ffdab9',
+  peru: '#cd853f',
+  pink: '#ffc0cb',
+  plum: '#dda0dd',
+  powderblue: '#b0e0e6',
+  purple: '#800080',
+  rebeccapurple: '#663399',
+  red: '#f00',
+  rosybrown: '#bc8f8f',
+  royalblue: '#4169e1',
+  saddlebrown: '#8b4513',
+  salmon: '#fa8072',
+  sandybrown: '#f4a460',
+  seagreen: '#2e8b57',
+  seashell: '#fff5ee',
+  sienna: '#a0522d',
+  silver: '#c0c0c0',
+  skyblue: '#87ceeb',
+  slateblue: '#6a5acd',
+  slategray: '#708090',
+  slategrey: '#708090',
+  snow: '#fffafa',
+  springgreen: '#00ff7f',
+  steelblue: '#4682b4',
+  tan: '#d2b48c',
+  teal: '#008080',
+  thistle: '#d8bfd8',
+  tomato: '#ff6347',
+  turquoise: '#40e0d0',
+  violet: '#ee82ee',
+  wheat: '#f5deb3',
+  white: '#fff',
+  whitesmoke: '#f5f5f5',
+  yellow: '#ff0',
+  yellowgreen: '#9acd32'
+};
 
-  // Decode in chunks to avoid "call stack size exceeded".
-  var res = ''
-  var i = 0
-  while (i < len) {
-    res += String.fromCharCode.apply(
-      String,
-      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
-    )
-  }
-  return res
-}
+var toHex = {};
+var toName = {};
 
-function asciiSlice (buf, start, end) {
-  var ret = ''
-  end = Math.min(buf.length, end)
+for (var name in COLORS) {
+  var hex = COLORS[name];
 
-  for (var i = start; i < end; ++i) {
-    ret += String.fromCharCode(buf[i] & 0x7F)
+  if (name.length < hex.length) {
+    toName[hex] = name;
+  } else {
+    toHex[name] = hex;
   }
-  return ret
 }
 
-function latin1Slice (buf, start, end) {
-  var ret = ''
-  end = Math.min(buf.length, end)
+var toHexPattern = new RegExp('(^| |,|\\))(' + Object.keys(toHex).join('|') + ')( |,|\\)|$)', 'ig');
+var toNamePattern = new RegExp('(' + Object.keys(toName).join('|') + ')([^a-f0-9]|$)', 'ig');
 
-  for (var i = start; i < end; ++i) {
-    ret += String.fromCharCode(buf[i])
-  }
-  return ret
+function hexConverter(match, prefix, colorValue, suffix) {
+  return prefix + toHex[colorValue.toLowerCase()] + suffix;
 }
 
-function hexSlice (buf, start, end) {
-  var len = buf.length
+function nameConverter(match, colorValue, suffix) {
+  return toName[colorValue.toLowerCase()] + suffix;
+}
 
-  if (!start || start < 0) start = 0
-  if (!end || end < 0 || end > len) end = len
+function shortenHex(value) {
+  var hasHex = value.indexOf('#') > -1;
+  var shortened = value.replace(toHexPattern, hexConverter);
 
-  var out = ''
-  for (var i = start; i < end; ++i) {
-    out += toHex(buf[i])
+  if (shortened != value) {
+    shortened = shortened.replace(toHexPattern, hexConverter);
   }
-  return out
-}
 
-function utf16leSlice (buf, start, end) {
-  var bytes = buf.slice(start, end)
-  var res = ''
-  for (var i = 0; i < bytes.length; i += 2) {
-    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
-  }
-  return res
+  return hasHex ?
+    shortened.replace(toNamePattern, nameConverter) :
+    shortened;
 }
 
-Buffer.prototype.slice = function slice (start, end) {
-  var len = this.length
-  start = ~~start
-  end = end === undefined ? len : ~~end
-
-  if (start < 0) {
-    start += len
-    if (start < 0) start = 0
-  } else if (start > len) {
-    start = len
-  }
+module.exports = shortenHex;
 
-  if (end < 0) {
-    end += len
-    if (end < 0) end = 0
-  } else if (end > len) {
-    end = len
-  }
+},{}],7:[function(require,module,exports){
+// HSL to RGB converter. Both methods adapted from:
+// http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript
 
-  if (end < start) end = start
+function hslToRgb(h, s, l) {
+  var r, g, b;
 
-  var newBuf = this.subarray(start, end)
-  // Return an augmented `Uint8Array` instance
-  newBuf.__proto__ = Buffer.prototype
-  return newBuf
-}
+  // normalize hue orientation b/w 0 and 360 degrees
+  h = h % 360;
+  if (h < 0)
+    h += 360;
+  h = ~~h / 360;
 
-/*
- * Need to make sure that buffer isn't trying to write out of bounds.
- */
-function checkOffset (offset, ext, length) {
-  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
-  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
-}
+  if (s < 0)
+    s = 0;
+  else if (s > 100)
+    s = 100;
+  s = ~~s / 100;
 
-Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
+  if (l < 0)
+    l = 0;
+  else if (l > 100)
+    l = 100;
+  l = ~~l / 100;
 
-  var val = this[offset]
-  var mul = 1
-  var i = 0
-  while (++i < byteLength && (mul *= 0x100)) {
-    val += this[offset + i] * mul
+  if (s === 0) {
+    r = g = b = l; // achromatic
+  } else {
+    var q = l < 0.5 ?
+      l * (1 + s) :
+      l + s - l * s;
+    var p = 2 * l - q;
+    r = hueToRgb(p, q, h + 1/3);
+    g = hueToRgb(p, q, h);
+    b = hueToRgb(p, q, h - 1/3);
   }
 
-  return val
+  return [~~(r * 255), ~~(g * 255), ~~(b * 255)];
 }
 
-Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) {
-    checkOffset(offset, byteLength, this.length)
-  }
-
-  var val = this[offset + --byteLength]
-  var mul = 1
-  while (byteLength > 0 && (mul *= 0x100)) {
-    val += this[offset + --byteLength] * mul
-  }
-
-  return val
+function hueToRgb(p, q, t) {
+  if (t < 0) t += 1;
+  if (t > 1) t -= 1;
+  if (t < 1/6) return p + (q - p) * 6 * t;
+  if (t < 1/2) return q;
+  if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;
+  return p;
 }
 
-Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 1, this.length)
-  return this[offset]
-}
+function shortenHsl(hue, saturation, lightness) {
+  var asRgb = hslToRgb(hue, saturation, lightness);
+  var redAsHex = asRgb[0].toString(16);
+  var greenAsHex = asRgb[1].toString(16);
+  var blueAsHex = asRgb[2].toString(16);
 
-Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  return this[offset] | (this[offset + 1] << 8)
+  return '#' +
+    ((redAsHex.length == 1 ? '0' : '') + redAsHex) +
+    ((greenAsHex.length == 1 ? '0' : '') + greenAsHex) +
+    ((blueAsHex.length == 1 ? '0' : '') + blueAsHex);
 }
 
-Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  return (this[offset] << 8) | this[offset + 1]
-}
+module.exports = shortenHsl;
 
-Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
+},{}],8:[function(require,module,exports){
+function shortenRgb(red, green, blue) {
+  var normalizedRed = Math.max(0, Math.min(parseInt(red), 255));
+  var normalizedGreen = Math.max(0, Math.min(parseInt(green), 255));
+  var normalizedBlue = Math.max(0, Math.min(parseInt(blue), 255));
 
-  return ((this[offset]) |
-      (this[offset + 1] << 8) |
-      (this[offset + 2] << 16)) +
-      (this[offset + 3] * 0x1000000)
+  // Credit: Asen  http://jsbin.com/UPUmaGOc/2/edit?js,console
+  return '#' + ('00000' + (normalizedRed << 16 | normalizedGreen << 8 | normalizedBlue).toString(16)).slice(-6);
 }
 
-Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
+module.exports = shortenRgb;
 
-  return (this[offset] * 0x1000000) +
-    ((this[offset + 1] << 16) |
-    (this[offset + 2] << 8) |
-    this[offset + 3])
+},{}],9:[function(require,module,exports){
+var naturalCompare = require('../../utils/natural-compare');
+
+function naturalSorter(scope1, scope2) {
+  return naturalCompare(scope1[1], scope2[1]);
 }
 
-Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
+function standardSorter(scope1, scope2) {
+  return scope1[1] > scope2[1] ? 1 : -1;
+}
 
-  var val = this[offset]
-  var mul = 1
-  var i = 0
-  while (++i < byteLength && (mul *= 0x100)) {
-    val += this[offset + i] * mul
+function sortSelectors(selectors, method) {
+  switch (method) {
+    case 'natural':
+      return selectors.sort(naturalSorter);
+    case 'standard':
+      return selectors.sort(standardSorter);
+    case 'none':
+    case false:
+      return selectors;
   }
-  mul *= 0x80
+}
 
-  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+module.exports = sortSelectors;
 
-  return val
+},{"../../utils/natural-compare":89}],10:[function(require,module,exports){
+function tidyAtRule(value) {
+  return value
+    .replace(/\s+/g, ' ')
+    .replace(/url\(\s+/g, 'url(')
+    .replace(/\s+\)/g, ')')
+    .trim();
 }
 
-Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
+module.exports = tidyAtRule;
 
-  var i = byteLength
-  var mul = 1
-  var val = this[offset + --i]
-  while (i > 0 && (mul *= 0x100)) {
-    val += this[offset + --i] * mul
-  }
-  mul *= 0x80
+},{}],11:[function(require,module,exports){
+var SUPPORTED_COMPACT_BLOCK_MATCHER = /^@media\W/;
 
-  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+function tidyBlock(values, spaceAfterClosingBrace) {
+  var withoutSpaceAfterClosingBrace;
+  var i;
 
-  return val
-}
+  for (i = values.length - 1; i >= 0; i--) {
+    withoutSpaceAfterClosingBrace = !spaceAfterClosingBrace && SUPPORTED_COMPACT_BLOCK_MATCHER.test(values[i][1]);
 
-Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 1, this.length)
-  if (!(this[offset] & 0x80)) return (this[offset])
-  return ((0xff - this[offset] + 1) * -1)
-}
+    values[i][1] = values[i][1]
+      .replace(/\n|\r\n/g, ' ')
+      .replace(/\s+/g, ' ')
+      .replace(/(,|:|\() /g, '$1')
+      .replace(/ \)/g, ')')
+      .replace(/'([a-zA-Z][a-zA-Z\d\-_]+)'/, '$1')
+      .replace(/"([a-zA-Z][a-zA-Z\d\-_]+)"/, '$1')
+      .replace(withoutSpaceAfterClosingBrace ? /\) /g : null, ')');
+  }
 
-Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  var val = this[offset] | (this[offset + 1] << 8)
-  return (val & 0x8000) ? val | 0xFFFF0000 : val
+  return values;
 }
 
-Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  var val = this[offset + 1] | (this[offset] << 8)
-  return (val & 0x8000) ? val | 0xFFFF0000 : val
-}
+module.exports = tidyBlock;
 
-Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
+},{}],12:[function(require,module,exports){
+var Spaces = require('../../options/format').Spaces;
+var Marker = require('../../tokenizer/marker');
+var formatPosition = require('../../utils/format-position');
 
-  return (this[offset]) |
-    (this[offset + 1] << 8) |
-    (this[offset + 2] << 16) |
-    (this[offset + 3] << 24)
-}
+var CASE_ATTRIBUTE_PATTERN = /[\s"'][iI]\s*\]/;
+var CASE_RESTORE_PATTERN = /([\d\w])([iI])\]/g;
+var DOUBLE_QUOTE_CASE_PATTERN = /="([a-zA-Z][a-zA-Z\d\-_]+)"([iI])/g;
+var DOUBLE_QUOTE_PATTERN = /="([a-zA-Z][a-zA-Z\d\-_]+)"(\s|\])/g;
+var HTML_COMMENT_PATTERN = /^(?:(?:<!--|-->)\s*)+/;
+var SINGLE_QUOTE_CASE_PATTERN = /='([a-zA-Z][a-zA-Z\d\-_]+)'([iI])/g;
+var SINGLE_QUOTE_PATTERN = /='([a-zA-Z][a-zA-Z\d\-_]+)'(\s|\])/g;
+var RELATION_PATTERN = /[>\+~]/;
+var WHITESPACE_PATTERN = /\s/;
 
-Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
+var ASTERISK_PLUS_HTML_HACK = '*+html ';
+var ASTERISK_FIRST_CHILD_PLUS_HTML_HACK = '*:first-child+html ';
+var LESS_THAN = '<';
 
-  return (this[offset] << 24) |
-    (this[offset + 1] << 16) |
-    (this[offset + 2] << 8) |
-    (this[offset + 3])
-}
+function hasInvalidCharacters(value) {
+  var isEscaped;
+  var isInvalid = false;
+  var character;
+  var isQuote = false;
+  var i, l;
 
-Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-  return ieee754.read(this, offset, true, 23, 4)
-}
+  for (i = 0, l = value.length; i < l; i++) {
+    character = value[i];
 
-Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-  return ieee754.read(this, offset, false, 23, 4)
-}
+    if (isEscaped) {
+      // continue as always
+    } else if (character == Marker.SINGLE_QUOTE || character == Marker.DOUBLE_QUOTE) {
+      isQuote = !isQuote;
+    } else if (!isQuote && (character == Marker.CLOSE_CURLY_BRACKET || character == Marker.EXCLAMATION || character == LESS_THAN || character == Marker.SEMICOLON)) {
+      isInvalid = true;
+      break;
+    } else if (!isQuote && i === 0 && RELATION_PATTERN.test(character)) {
+      isInvalid = true;
+      break;
+    }
 
-Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 8, this.length)
-  return ieee754.read(this, offset, true, 52, 8)
-}
+    isEscaped = character == Marker.BACK_SLASH;
+  }
 
-Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 8, this.length)
-  return ieee754.read(this, offset, false, 52, 8)
+  return isInvalid;
 }
 
-function checkInt (buf, value, offset, ext, max, min) {
-  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
-  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
-  if (offset + ext > buf.length) throw new RangeError('Index out of range')
-}
+function removeWhitespace(value, format) {
+  var stripped = [];
+  var character;
+  var isNewLineNix;
+  var isNewLineWin;
+  var isEscaped;
+  var wasEscaped;
+  var isQuoted;
+  var isSingleQuoted;
+  var isDoubleQuoted;
+  var isAttribute;
+  var isRelation;
+  var isWhitespace;
+  var roundBracketLevel = 0;
+  var wasRelation = false;
+  var wasWhitespace = false;
+  var withCaseAttribute = CASE_ATTRIBUTE_PATTERN.test(value);
+  var spaceAroundRelation = format && format.spaces[Spaces.AroundSelectorRelation];
+  var i, l;
 
-Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) {
-    var maxBytes = Math.pow(2, 8 * byteLength) - 1
-    checkInt(this, value, offset, byteLength, maxBytes, 0)
-  }
+  for (i = 0, l = value.length; i < l; i++) {
+    character = value[i];
 
-  var mul = 1
-  var i = 0
-  this[offset] = value & 0xFF
-  while (++i < byteLength && (mul *= 0x100)) {
-    this[offset + i] = (value / mul) & 0xFF
-  }
+    isNewLineNix = character == Marker.NEW_LINE_NIX;
+    isNewLineWin = character == Marker.NEW_LINE_NIX && value[i - 1] == Marker.CARRIAGE_RETURN;
+    isQuoted = isSingleQuoted || isDoubleQuoted;
+    isRelation = !isAttribute && !isEscaped && roundBracketLevel === 0 && RELATION_PATTERN.test(character);
+    isWhitespace = WHITESPACE_PATTERN.test(character);
 
-  return offset + byteLength
-}
+    if (wasEscaped && isQuoted && isNewLineWin) {
+      // swallow escaped new windows lines in comments
+      stripped.pop();
+      stripped.pop();
+    } else if (isEscaped && isQuoted && isNewLineNix) {
+      // swallow escaped new *nix lines in comments
+      stripped.pop();
+    } else if (isEscaped) {
+      stripped.push(character);
+    } else if (character == Marker.OPEN_SQUARE_BRACKET && !isQuoted) {
+      stripped.push(character);
+      isAttribute = true;
+    } else if (character == Marker.CLOSE_SQUARE_BRACKET && !isQuoted) {
+      stripped.push(character);
+      isAttribute = false;
+    } else if (character == Marker.OPEN_ROUND_BRACKET && !isQuoted) {
+      stripped.push(character);
+      roundBracketLevel++;
+    } else if (character == Marker.CLOSE_ROUND_BRACKET && !isQuoted) {
+      stripped.push(character);
+      roundBracketLevel--;
+    } else if (character == Marker.SINGLE_QUOTE && !isQuoted) {
+      stripped.push(character);
+      isSingleQuoted = true;
+    } else if (character == Marker.DOUBLE_QUOTE && !isQuoted) {
+      stripped.push(character);
+      isDoubleQuoted = true;
+    } else if (character == Marker.SINGLE_QUOTE && isQuoted) {
+      stripped.push(character);
+      isSingleQuoted = false;
+    } else if (character == Marker.DOUBLE_QUOTE && isQuoted) {
+      stripped.push(character);
+      isDoubleQuoted = false;
+    } else if (isWhitespace && wasRelation && !spaceAroundRelation) {
+      continue;
+    } else if (!isWhitespace && wasRelation && spaceAroundRelation) {
+      stripped.push(Marker.SPACE);
+      stripped.push(character);
+    } else if (isWhitespace && (isAttribute || roundBracketLevel > 0) && !isQuoted) {
+      // skip space
+    } else if (isWhitespace && wasWhitespace && !isQuoted) {
+      // skip extra space
+    } else if ((isNewLineWin || isNewLineNix) && (isAttribute || roundBracketLevel > 0) && isQuoted) {
+      // skip newline
+    } else if (isRelation && wasWhitespace && !spaceAroundRelation) {
+      stripped.pop();
+      stripped.push(character);
+    } else if (isRelation && !wasWhitespace && spaceAroundRelation) {
+      stripped.push(Marker.SPACE);
+      stripped.push(character);
+    } else if (isWhitespace) {
+      stripped.push(Marker.SPACE);
+    } else {
+      stripped.push(character);
+    }
 
-Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) {
-    var maxBytes = Math.pow(2, 8 * byteLength) - 1
-    checkInt(this, value, offset, byteLength, maxBytes, 0)
+    wasEscaped = isEscaped;
+    isEscaped = character == Marker.BACK_SLASH;
+    wasRelation = isRelation;
+    wasWhitespace = isWhitespace;
   }
 
-  var i = byteLength - 1
-  var mul = 1
-  this[offset + i] = value & 0xFF
-  while (--i >= 0 && (mul *= 0x100)) {
-    this[offset + i] = (value / mul) & 0xFF
+  return withCaseAttribute ?
+    stripped.join('').replace(CASE_RESTORE_PATTERN, '$1 $2]') :
+    stripped.join('');
+}
+
+function removeQuotes(value) {
+  if (value.indexOf('\'') == -1 && value.indexOf('"') == -1) {
+    return value;
   }
 
-  return offset + byteLength
+  return value
+    .replace(SINGLE_QUOTE_CASE_PATTERN, '=$1 $2')
+    .replace(SINGLE_QUOTE_PATTERN, '=$1$2')
+    .replace(DOUBLE_QUOTE_CASE_PATTERN, '=$1 $2')
+    .replace(DOUBLE_QUOTE_PATTERN, '=$1$2');
 }
 
-Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
-  this[offset] = (value & 0xff)
-  return offset + 1
-}
+function tidyRules(rules, removeUnsupported, adjacentSpace, format, warnings) {
+  var list = [];
+  var repeated = [];
 
-Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
-  this[offset] = (value & 0xff)
-  this[offset + 1] = (value >>> 8)
-  return offset + 2
-}
+  function removeHTMLComment(rule, match) {
+    warnings.push('HTML comment \'' + match + '\' at ' + formatPosition(rule[2][0]) + '. Removing.');
+    return '';
+  }
 
-Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
-  this[offset] = (value >>> 8)
-  this[offset + 1] = (value & 0xff)
-  return offset + 2
-}
+  for (var i = 0, l = rules.length; i < l; i++) {
+    var rule = rules[i];
+    var reduced = rule[1];
 
-Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
-  this[offset + 3] = (value >>> 24)
-  this[offset + 2] = (value >>> 16)
-  this[offset + 1] = (value >>> 8)
-  this[offset] = (value & 0xff)
-  return offset + 4
-}
+    reduced = reduced.replace(HTML_COMMENT_PATTERN, removeHTMLComment.bind(null, rule));
 
-Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
-  this[offset] = (value >>> 24)
-  this[offset + 1] = (value >>> 16)
-  this[offset + 2] = (value >>> 8)
-  this[offset + 3] = (value & 0xff)
-  return offset + 4
-}
+    if (hasInvalidCharacters(reduced)) {
+      warnings.push('Invalid selector \'' + rule[1] + '\' at ' + formatPosition(rule[2][0]) + '. Ignoring.');
+      continue;
+    }
 
-Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    var limit = Math.pow(2, (8 * byteLength) - 1)
+    reduced = removeWhitespace(reduced, format);
+    reduced = removeQuotes(reduced);
 
-    checkInt(this, value, offset, byteLength, limit - 1, -limit)
-  }
+    if (adjacentSpace && reduced.indexOf('nav') > 0) {
+      reduced = reduced.replace(/\+nav(\S|$)/, '+ nav$1');
+    }
 
-  var i = 0
-  var mul = 1
-  var sub = 0
-  this[offset] = value & 0xFF
-  while (++i < byteLength && (mul *= 0x100)) {
-    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
-      sub = 1
+    if (removeUnsupported && reduced.indexOf(ASTERISK_PLUS_HTML_HACK) > -1) {
+      continue;
     }
-    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
-  }
 
-  return offset + byteLength
-}
+    if (removeUnsupported && reduced.indexOf(ASTERISK_FIRST_CHILD_PLUS_HTML_HACK) > -1) {
+      continue;
+    }
 
-Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    var limit = Math.pow(2, (8 * byteLength) - 1)
+    if (reduced.indexOf('*') > -1) {
+      reduced = reduced
+        .replace(/\*([:#\.\[])/g, '$1')
+        .replace(/^(\:first\-child)?\+html/, '*$1+html');
+    }
 
-    checkInt(this, value, offset, byteLength, limit - 1, -limit)
+    if (repeated.indexOf(reduced) > -1) {
+      continue;
+    }
+
+    rule[1] = reduced;
+    repeated.push(reduced);
+    list.push(rule);
   }
 
-  var i = byteLength - 1
-  var mul = 1
-  var sub = 0
-  this[offset + i] = value & 0xFF
-  while (--i >= 0 && (mul *= 0x100)) {
-    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
-      sub = 1
-    }
-    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+  if (list.length == 1 && list[0][1].length === 0) {
+    warnings.push('Empty selector \'' + list[0][1] + '\' at ' + formatPosition(list[0][2][0]) + '. Ignoring.');
+    list = [];
   }
 
-  return offset + byteLength
+  return list;
 }
 
-Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
-  if (value < 0) value = 0xff + value + 1
-  this[offset] = (value & 0xff)
-  return offset + 1
-}
+module.exports = tidyRules;
 
-Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
-  this[offset] = (value & 0xff)
-  this[offset + 1] = (value >>> 8)
-  return offset + 2
-}
+},{"../../options/format":56,"../../tokenizer/marker":78,"../../utils/format-position":82}],13:[function(require,module,exports){
+var InvalidPropertyError = require('./invalid-property-error');
 
-Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
-  this[offset] = (value >>> 8)
-  this[offset + 1] = (value & 0xff)
-  return offset + 2
-}
+var wrapSingle = require('../wrap-for-optimizing').single;
 
-Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
-  this[offset] = (value & 0xff)
-  this[offset + 1] = (value >>> 8)
-  this[offset + 2] = (value >>> 16)
-  this[offset + 3] = (value >>> 24)
-  return offset + 4
-}
+var Token = require('../../tokenizer/token');
+var Marker = require('../../tokenizer/marker');
 
-Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
-  if (value < 0) value = 0xffffffff + value + 1
-  this[offset] = (value >>> 24)
-  this[offset + 1] = (value >>> 16)
-  this[offset + 2] = (value >>> 8)
-  this[offset + 3] = (value & 0xff)
-  return offset + 4
-}
+var formatPosition = require('../../utils/format-position');
 
-function checkIEEE754 (buf, value, offset, ext, max, min) {
-  if (offset + ext > buf.length) throw new RangeError('Index out of range')
-  if (offset < 0) throw new RangeError('Index out of range')
-}
+function _anyIsInherit(values) {
+  var i, l;
 
-function writeFloat (buf, value, offset, littleEndian, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
+  for (i = 0, l = values.length; i < l; i++) {
+    if (values[i][1] == 'inherit') {
+      return true;
+    }
   }
-  ieee754.write(buf, value, offset, littleEndian, 23, 4)
-  return offset + 4
-}
 
-Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
-  return writeFloat(this, value, offset, true, noAssert)
+  return false;
 }
 
-Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
-  return writeFloat(this, value, offset, false, noAssert)
+function _colorFilter(validator) {
+  return function (value) {
+    return value[1] == 'invert' || validator.isColor(value[1]) || validator.isPrefixed(value[1]);
+  };
 }
 
-function writeDouble (buf, value, offset, littleEndian, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
-  }
-  ieee754.write(buf, value, offset, littleEndian, 52, 8)
-  return offset + 8
+function _styleFilter(validator) {
+  return function (value) {
+    return value[1] != 'inherit' && validator.isStyleKeyword(value[1]) && !validator.isColorFunction(value[1]);
+  };
 }
 
-Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
-  return writeDouble(this, value, offset, true, noAssert)
+function _wrapDefault(name, property, compactable) {
+  var descriptor = compactable[name];
+  if (descriptor.doubleValues && descriptor.defaultValue.length == 2) {
+    return wrapSingle([
+      Token.PROPERTY,
+      [Token.PROPERTY_NAME, name],
+      [Token.PROPERTY_VALUE, descriptor.defaultValue[0]],
+      [Token.PROPERTY_VALUE, descriptor.defaultValue[1]]
+    ]);
+  } else if (descriptor.doubleValues && descriptor.defaultValue.length == 1) {
+    return wrapSingle([
+      Token.PROPERTY,
+      [Token.PROPERTY_NAME, name],
+      [Token.PROPERTY_VALUE, descriptor.defaultValue[0]]
+    ]);
+  } else {
+    return wrapSingle([
+      Token.PROPERTY,
+      [Token.PROPERTY_NAME, name],
+      [Token.PROPERTY_VALUE, descriptor.defaultValue]
+    ]);
+  }
 }
 
-Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
-  return writeDouble(this, value, offset, false, noAssert)
+function _widthFilter(validator) {
+  return function (value) {
+    return value[1] != 'inherit' &&
+      (validator.isWidth(value[1]) || validator.isUnit(value[1]) && !validator.isDynamicUnit(value[1])) &&
+      !validator.isStyleKeyword(value[1]) &&
+      !validator.isColorFunction(value[1]);
+  };
 }
 
-// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
-Buffer.prototype.copy = function copy (target, targetStart, start, end) {
-  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')
-  if (!start) start = 0
-  if (!end && end !== 0) end = this.length
-  if (targetStart >= target.length) targetStart = target.length
-  if (!targetStart) targetStart = 0
-  if (end > 0 && end < start) end = start
-
-  // Copy 0 bytes; we're done
-  if (end === start) return 0
-  if (target.length === 0 || this.length === 0) return 0
+function animation(property, compactable, validator) {
+  var duration = _wrapDefault(property.name + '-duration', property, compactable);
+  var timing = _wrapDefault(property.name + '-timing-function', property, compactable);
+  var delay = _wrapDefault(property.name + '-delay', property, compactable);
+  var iteration = _wrapDefault(property.name + '-iteration-count', property, compactable);
+  var direction = _wrapDefault(property.name + '-direction', property, compactable);
+  var fill = _wrapDefault(property.name + '-fill-mode', property, compactable);
+  var play = _wrapDefault(property.name + '-play-state', property, compactable);
+  var name = _wrapDefault(property.name + '-name', property, compactable);
+  var components = [duration, timing, delay, iteration, direction, fill, play, name];
+  var values = property.value;
+  var value;
+  var durationSet = false;
+  var timingSet = false;
+  var delaySet = false;
+  var iterationSet = false;
+  var directionSet = false;
+  var fillSet = false;
+  var playSet = false;
+  var nameSet = false;
+  var i;
+  var l;
 
-  // Fatal error conditions
-  if (targetStart < 0) {
-    throw new RangeError('targetStart out of bounds')
+  if (property.value.length == 1 && property.value[0][1] == 'inherit') {
+    duration.value = timing.value = delay.value = iteration.value = direction.value = fill.value = play.value = name.value = property.value;
+    return components;
   }
-  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')
-  if (end < 0) throw new RangeError('sourceEnd out of bounds')
 
-  // Are we oob?
-  if (end > this.length) end = this.length
-  if (target.length - targetStart < end - start) {
-    end = target.length - targetStart + start
+  if (values.length > 1 && _anyIsInherit(values)) {
+    throw new InvalidPropertyError('Invalid animation values at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
   }
 
-  var len = end - start
+  for (i = 0, l = values.length; i < l; i++) {
+    value = values[i];
 
-  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {
-    // Use built-in when available, missing from IE11
-    this.copyWithin(targetStart, start, end)
-  } else if (this === target && start < targetStart && targetStart < end) {
-    // descending copy from end
-    for (var i = len - 1; i >= 0; --i) {
-      target[i + targetStart] = this[i + start]
-    }
-  } else {
-    Uint8Array.prototype.set.call(
-      target,
-      this.subarray(start, end),
-      targetStart
-    )
+    if (validator.isTime(value[1]) && !durationSet) {
+      duration.value = [value];
+      durationSet = true;
+    } else if (validator.isTime(value[1]) && !delaySet) {
+      delay.value = [value];
+      delaySet = true;
+    } else if ((validator.isGlobal(value[1]) || validator.isTimingFunction(value[1])) && !timingSet) {
+      timing.value = [value];
+      timingSet = true;
+    } else if ((validator.isAnimationIterationCountKeyword(value[1]) || validator.isPositiveNumber(value[1])) && !iterationSet) {
+      iteration.value = [value];
+      iterationSet = true;
+    } else if (validator.isAnimationDirectionKeyword(value[1]) && !directionSet) {
+      direction.value = [value];
+      directionSet = true;
+    } else if (validator.isAnimationFillModeKeyword(value[1]) && !fillSet) {
+      fill.value = [value];
+      fillSet = true;
+    } else if (validator.isAnimationPlayStateKeyword(value[1]) && !playSet) {
+      play.value = [value];
+      playSet = true;
+    } else if ((validator.isAnimationNameKeyword(value[1]) || validator.isIdentifier(value[1])) && !nameSet) {
+      name.value = [value];
+      nameSet = true;
+    } else {
+      throw new InvalidPropertyError('Invalid animation value at ' + formatPosition(value[2][0]) + '. Ignoring.');
+    }
   }
 
-  return len
+  return components;
 }
 
-// Usage:
-//    buffer.fill(number[, offset[, end]])
-//    buffer.fill(buffer[, offset[, end]])
-//    buffer.fill(string[, offset[, end]][, encoding])
-Buffer.prototype.fill = function fill (val, start, end, encoding) {
-  // Handle string cases:
-  if (typeof val === 'string') {
-    if (typeof start === 'string') {
-      encoding = start
-      start = 0
-      end = this.length
-    } else if (typeof end === 'string') {
-      encoding = end
-      end = this.length
-    }
-    if (encoding !== undefined && typeof encoding !== 'string') {
-      throw new TypeError('encoding must be a string')
-    }
-    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
-      throw new TypeError('Unknown encoding: ' + encoding)
-    }
-    if (val.length === 1) {
-      var code = val.charCodeAt(0)
-      if ((encoding === 'utf8' && code < 128) ||
-          encoding === 'latin1') {
-        // Fast path: If `val` fits into a single byte, use that numeric value.
-        val = code
-      }
-    }
-  } else if (typeof val === 'number') {
-    val = val & 255
-  }
+function background(property, compactable, validator) {
+  var image = _wrapDefault('background-image', property, compactable);
+  var position = _wrapDefault('background-position', property, compactable);
+  var size = _wrapDefault('background-size', property, compactable);
+  var repeat = _wrapDefault('background-repeat', property, compactable);
+  var attachment = _wrapDefault('background-attachment', property, compactable);
+  var origin = _wrapDefault('background-origin', property, compactable);
+  var clip = _wrapDefault('background-clip', property, compactable);
+  var color = _wrapDefault('background-color', property, compactable);
+  var components = [image, position, size, repeat, attachment, origin, clip, color];
+  var values = property.value;
 
-  // Invalid ranges are not set to a default, so can range check early.
-  if (start < 0 || this.length < start || this.length < end) {
-    throw new RangeError('Out of range index')
+  var positionSet = false;
+  var clipSet = false;
+  var originSet = false;
+  var repeatSet = false;
+
+  var anyValueSet = false;
+
+  if (property.value.length == 1 && property.value[0][1] == 'inherit') {
+    // NOTE: 'inherit' is not a valid value for background-attachment
+    color.value = image.value =  repeat.value = position.value = size.value = origin.value = clip.value = property.value;
+    return components;
   }
 
-  if (end <= start) {
-    return this
+  if (property.value.length == 1 && property.value[0][1] == '0 0') {
+    return components;
   }
 
-  start = start >>> 0
-  end = end === undefined ? this.length : end >>> 0
+  for (var i = values.length - 1; i >= 0; i--) {
+    var value = values[i];
 
-  if (!val) val = 0
+    if (validator.isBackgroundAttachmentKeyword(value[1])) {
+      attachment.value = [value];
+      anyValueSet = true;
+    } else if (validator.isBackgroundClipKeyword(value[1]) || validator.isBackgroundOriginKeyword(value[1])) {
+      if (clipSet) {
+        origin.value = [value];
+        originSet = true;
+      } else {
+        clip.value = [value];
+        clipSet = true;
+      }
+      anyValueSet = true;
+    } else if (validator.isBackgroundRepeatKeyword(value[1])) {
+      if (repeatSet) {
+        repeat.value.unshift(value);
+      } else {
+        repeat.value = [value];
+        repeatSet = true;
+      }
+      anyValueSet = true;
+    } else if (validator.isBackgroundPositionKeyword(value[1]) || validator.isBackgroundSizeKeyword(value[1]) || validator.isUnit(value[1]) || validator.isDynamicUnit(value[1])) {
+      if (i > 0) {
+        var previousValue = values[i - 1];
 
-  var i
-  if (typeof val === 'number') {
-    for (i = start; i < end; ++i) {
-      this[i] = val
-    }
-  } else {
-    var bytes = Buffer.isBuffer(val)
-      ? val
-      : Buffer.from(val, encoding)
-    var len = bytes.length
-    if (len === 0) {
-      throw new TypeError('The value "' + val +
-        '" is invalid for argument "value"')
-    }
-    for (i = 0; i < end - start; ++i) {
-      this[i + start] = bytes[i % len]
-    }
-  }
+        if (previousValue[1] == Marker.FORWARD_SLASH) {
+          size.value = [value];
+        } else if (i > 1 && values[i - 2][1] == Marker.FORWARD_SLASH) {
+          size.value = [previousValue, value];
+          i -= 2;
+        } else {
+          if (!positionSet)
+            position.value = [];
 
-  return this
-}
+          position.value.unshift(value);
+          positionSet = true;
+        }
+      } else {
+        if (!positionSet)
+          position.value = [];
 
-// HELPER FUNCTIONS
-// ================
+        position.value.unshift(value);
+        positionSet = true;
+      }
+      anyValueSet = true;
+    } else if ((color.value[0][1] == compactable[color.name].defaultValue || color.value[0][1] == 'none') && (validator.isColor(value[1]) || validator.isPrefixed(value[1]))) {
+      color.value = [value];
+      anyValueSet = true;
+    } else if (validator.isUrl(value[1]) || validator.isFunction(value[1])) {
+      image.value = [value];
+      anyValueSet = true;
+    }
+  }
 
-var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
+  if (clipSet && !originSet)
+    origin.value = clip.value.slice(0);
 
-function base64clean (str) {
-  // Node takes equal signs as end of the Base64 encoding
-  str = str.split('=')[0]
-  // Node strips out invalid characters like \n and \t from the string, base64-js does not
-  str = str.trim().replace(INVALID_BASE64_RE, '')
-  // Node converts strings with length < 2 to ''
-  if (str.length < 2) return ''
-  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
-  while (str.length % 4 !== 0) {
-    str = str + '='
+  if (!anyValueSet) {
+    throw new InvalidPropertyError('Invalid background value at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
   }
-  return str
-}
 
-function toHex (n) {
-  if (n < 16) return '0' + n.toString(16)
-  return n.toString(16)
+  return components;
 }
 
-function utf8ToBytes (string, units) {
-  units = units || Infinity
-  var codePoint
-  var length = string.length
-  var leadSurrogate = null
-  var bytes = []
+function borderRadius(property, compactable) {
+  var values = property.value;
+  var splitAt = -1;
 
-  for (var i = 0; i < length; ++i) {
-    codePoint = string.charCodeAt(i)
+  for (var i = 0, l = values.length; i < l; i++) {
+    if (values[i][1] == Marker.FORWARD_SLASH) {
+      splitAt = i;
+      break;
+    }
+  }
 
-    // is surrogate component
-    if (codePoint > 0xD7FF && codePoint < 0xE000) {
-      // last char was a lead
-      if (!leadSurrogate) {
-        // no lead yet
-        if (codePoint > 0xDBFF) {
-          // unexpected trail
-          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-          continue
-        } else if (i + 1 === length) {
-          // unpaired lead
-          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-          continue
-        }
+  if (splitAt === 0 || splitAt === values.length - 1) {
+    throw new InvalidPropertyError('Invalid border-radius value at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
+  }
 
-        // valid lead
-        leadSurrogate = codePoint
+  var target = _wrapDefault(property.name, property, compactable);
+  target.value = splitAt > -1 ?
+    values.slice(0, splitAt) :
+    values.slice(0);
+  target.components = fourValues(target, compactable);
 
-        continue
-      }
+  var remainder = _wrapDefault(property.name, property, compactable);
+  remainder.value = splitAt > -1 ?
+    values.slice(splitAt + 1) :
+    values.slice(0);
+  remainder.components = fourValues(remainder, compactable);
 
-      // 2 leads in a row
-      if (codePoint < 0xDC00) {
-        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-        leadSurrogate = codePoint
-        continue
-      }
+  for (var j = 0; j < 4; j++) {
+    target.components[j].multiplex = true;
+    target.components[j].value = target.components[j].value.concat(remainder.components[j].value);
+  }
 
-      // valid surrogate pair
-      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
-    } else if (leadSurrogate) {
-      // valid bmp char, but last char was a lead
-      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-    }
+  return target.components;
+}
 
-    leadSurrogate = null
+function font(property, compactable, validator) {
+  var style = _wrapDefault('font-style', property, compactable);
+  var variant = _wrapDefault('font-variant', property, compactable);
+  var weight = _wrapDefault('font-weight', property, compactable);
+  var stretch = _wrapDefault('font-stretch', property, compactable);
+  var size = _wrapDefault('font-size', property, compactable);
+  var height = _wrapDefault('line-height', property, compactable);
+  var family = _wrapDefault('font-family', property, compactable);
+  var components = [style, variant, weight, stretch, size, height, family];
+  var values = property.value;
+  var fuzzyMatched = 4; // style, variant, weight, and stretch
+  var index = 0;
+  var isStretchSet = false;
+  var isStretchValid;
+  var isStyleSet = false;
+  var isStyleValid;
+  var isVariantSet = false;
+  var isVariantValid;
+  var isWeightSet = false;
+  var isWeightValid;
+  var isSizeSet = false;
+  var appendableFamilyName = false;
 
-    // encode utf8
-    if (codePoint < 0x80) {
-      if ((units -= 1) < 0) break
-      bytes.push(codePoint)
-    } else if (codePoint < 0x800) {
-      if ((units -= 2) < 0) break
-      bytes.push(
-        codePoint >> 0x6 | 0xC0,
-        codePoint & 0x3F | 0x80
-      )
-    } else if (codePoint < 0x10000) {
-      if ((units -= 3) < 0) break
-      bytes.push(
-        codePoint >> 0xC | 0xE0,
-        codePoint >> 0x6 & 0x3F | 0x80,
-        codePoint & 0x3F | 0x80
-      )
-    } else if (codePoint < 0x110000) {
-      if ((units -= 4) < 0) break
-      bytes.push(
-        codePoint >> 0x12 | 0xF0,
-        codePoint >> 0xC & 0x3F | 0x80,
-        codePoint >> 0x6 & 0x3F | 0x80,
-        codePoint & 0x3F | 0x80
-      )
-    } else {
-      throw new Error('Invalid code point')
-    }
+  if (!values[index]) {
+    throw new InvalidPropertyError('Missing font values at ' + formatPosition(property.all[property.position][1][2][0]) + '. Ignoring.');
   }
 
-  return bytes
-}
+  if (values.length == 1 && values[0][1] == 'inherit') {
+    style.value = variant.value = weight.value = stretch.value = size.value = height.value = family.value = values;
+    return components;
+  }
 
-function asciiToBytes (str) {
-  var byteArray = []
-  for (var i = 0; i < str.length; ++i) {
-    // Node's code seems to be doing this and not & 0x7F..
-    byteArray.push(str.charCodeAt(i) & 0xFF)
+  if (values.length == 1 && (validator.isFontKeyword(values[0][1]) || validator.isGlobal(values[0][1]) || validator.isPrefixed(values[0][1]))) {
+    values[0][1] = Marker.INTERNAL + values[0][1];
+    style.value = variant.value = weight.value = stretch.value = size.value = height.value = family.value = values;
+    return components;
   }
-  return byteArray
-}
 
-function utf16leToBytes (str, units) {
-  var c, hi, lo
-  var byteArray = []
-  for (var i = 0; i < str.length; ++i) {
-    if ((units -= 2) < 0) break
+  if (values.length < 2 || !_anyIsFontSize(values, validator) || !_anyIsFontFamily(values, validator)) {
+    throw new InvalidPropertyError('Invalid font values at ' + formatPosition(property.all[property.position][1][2][0]) + '. Ignoring.');
+  }
 
-    c = str.charCodeAt(i)
-    hi = c >> 8
-    lo = c % 256
-    byteArray.push(lo)
-    byteArray.push(hi)
+  if (values.length > 1 && _anyIsInherit(values)) {
+    throw new InvalidPropertyError('Invalid font values at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
   }
 
-  return byteArray
-}
+  // fuzzy match style, variant, weight, and stretch on first elements
+  while (index < fuzzyMatched) {
+    isStretchValid = validator.isFontStretchKeyword(values[index][1]) || validator.isGlobal(values[index][1]);
+    isStyleValid = validator.isFontStyleKeyword(values[index][1]) || validator.isGlobal(values[index][1]);
+    isVariantValid = validator.isFontVariantKeyword(values[index][1]) || validator.isGlobal(values[index][1]);
+    isWeightValid = validator.isFontWeightKeyword(values[index][1]) || validator.isGlobal(values[index][1]);
 
-function base64ToBytes (str) {
-  return base64.toByteArray(base64clean(str))
-}
+    if (isStyleValid && !isStyleSet) {
+      style.value = [values[index]];
+      isStyleSet = true;
+    } else if (isVariantValid && !isVariantSet) {
+      variant.value = [values[index]];
+      isVariantSet = true;
+    } else if (isWeightValid && !isWeightSet) {
+      weight.value = [values[index]];
+      isWeightSet = true;
+    } else if (isStretchValid && !isStretchSet) {
+      stretch.value = [values[index]];
+      isStretchSet = true;
+    } else if (isStyleValid && isStyleSet || isVariantValid && isVariantSet || isWeightValid && isWeightSet || isStretchValid && isStretchSet) {
+      throw new InvalidPropertyError('Invalid font style / variant / weight / stretch value at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
+    } else {
+      break;
+    }
 
-function blitBuffer (src, dst, offset, length) {
-  for (var i = 0; i < length; ++i) {
-    if ((i + offset >= dst.length) || (i >= src.length)) break
-    dst[i + offset] = src[i]
+    index++;
   }
-  return i
-}
 
-// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass
-// the `instanceof` check but they should be treated as of that type.
-// See: https://github.com/feross/buffer/issues/166
-function isInstance (obj, type) {
-  return obj instanceof type ||
-    (obj != null && obj.constructor != null && obj.constructor.name != null &&
-      obj.constructor.name === type.name)
-}
-function numberIsNaN (obj) {
-  // For IE11 support
-  return obj !== obj // eslint-disable-line no-self-compare
-}
+  // now comes font-size ...
+  if (validator.isFontSizeKeyword(values[index][1]) || validator.isUnit(values[index][1]) && !validator.isDynamicUnit(values[index][1])) {
+    size.value = [values[index]];
+    isSizeSet = true;
+    index++;
+  } else {
+    throw new InvalidPropertyError('Missing font size at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
+  }
 
-},{"base64-js":1,"ieee754":105}],5:[function(require,module,exports){
-module.exports = {
-  "100": "Continue",
-  "101": "Switching Protocols",
-  "102": "Processing",
-  "200": "OK",
-  "201": "Created",
-  "202": "Accepted",
-  "203": "Non-Authoritative Information",
-  "204": "No Content",
-  "205": "Reset Content",
-  "206": "Partial Content",
-  "207": "Multi-Status",
-  "208": "Already Reported",
-  "226": "IM Used",
-  "300": "Multiple Choices",
-  "301": "Moved Permanently",
-  "302": "Found",
-  "303": "See Other",
-  "304": "Not Modified",
-  "305": "Use Proxy",
-  "307": "Temporary Redirect",
-  "308": "Permanent Redirect",
-  "400": "Bad Request",
-  "401": "Unauthorized",
-  "402": "Payment Required",
-  "403": "Forbidden",
-  "404": "Not Found",
-  "405": "Method Not Allowed",
-  "406": "Not Acceptable",
-  "407": "Proxy Authentication Required",
-  "408": "Request Timeout",
-  "409": "Conflict",
-  "410": "Gone",
-  "411": "Length Required",
-  "412": "Precondition Failed",
-  "413": "Payload Too Large",
-  "414": "URI Too Long",
-  "415": "Unsupported Media Type",
-  "416": "Range Not Satisfiable",
-  "417": "Expectation Failed",
-  "418": "I'm a teapot",
-  "421": "Misdirected Request",
-  "422": "Unprocessable Entity",
-  "423": "Locked",
-  "424": "Failed Dependency",
-  "425": "Unordered Collection",
-  "426": "Upgrade Required",
-  "428": "Precondition Required",
-  "429": "Too Many Requests",
-  "431": "Request Header Fields Too Large",
-  "451": "Unavailable For Legal Reasons",
-  "500": "Internal Server Error",
-  "501": "Not Implemented",
-  "502": "Bad Gateway",
-  "503": "Service Unavailable",
-  "504": "Gateway Timeout",
-  "505": "HTTP Version Not Supported",
-  "506": "Variant Also Negotiates",
-  "507": "Insufficient Storage",
-  "508": "Loop Detected",
-  "509": "Bandwidth Limit Exceeded",
-  "510": "Not Extended",
-  "511": "Network Authentication Required"
-}
+  if (!values[index]) {
+    throw new InvalidPropertyError('Missing font family at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
+  }
 
-},{}],6:[function(require,module,exports){
-module.exports = require('./lib/clean');
+  // ... and perhaps line-height
+  if (isSizeSet && values[index] && values[index][1] == Marker.FORWARD_SLASH && values[index + 1] && (validator.isLineHeightKeyword(values[index + 1][1]) || validator.isUnit(values[index + 1][1]) || validator.isNumber(values[index + 1][1]))) {
+    height.value = [values[index + 1]];
+    index++;
+    index++;
+  }
 
-},{"./lib/clean":7}],7:[function(require,module,exports){
-(function (process){
-/**
- * Clean-css - https://github.com/jakubpawlowicz/clean-css
- * Released under the terms of MIT license
- *
- * Copyright (C) 2017 JakubPawlowicz.com
- */
+  // ... and whatever comes next is font-family
+  family.value = [];
 
-var level0Optimize = require('./optimizer/level-0/optimize');
-var level1Optimize = require('./optimizer/level-1/optimize');
-var level2Optimize = require('./optimizer/level-2/optimize');
-var validator = require('./optimizer/validator');
+  while (values[index]) {
+    if (values[index][1] == Marker.COMMA) {
+      appendableFamilyName = false;
+    } else {
+      if (appendableFamilyName) {
+        family.value[family.value.length - 1][1] += Marker.SPACE + values[index][1];
+      } else {
+        family.value.push(values[index]);
+      }
 
-var compatibilityFrom = require('./options/compatibility');
-var fetchFrom = require('./options/fetch');
-var formatFrom = require('./options/format').formatFrom;
-var inlineFrom = require('./options/inline');
-var inlineRequestFrom = require('./options/inline-request');
-var inlineTimeoutFrom = require('./options/inline-timeout');
-var OptimizationLevel = require('./options/optimization-level').OptimizationLevel;
-var optimizationLevelFrom = require('./options/optimization-level').optimizationLevelFrom;
-var rebaseFrom = require('./options/rebase');
-var rebaseToFrom = require('./options/rebase-to');
+      appendableFamilyName = true;
+    }
 
-var inputSourceMapTracker = require('./reader/input-source-map-tracker');
-var readSources = require('./reader/read-sources');
+    index++;
+  }
 
-var serializeStyles = require('./writer/simple');
-var serializeStylesAndSourceMap = require('./writer/source-maps');
+  if (family.value.length === 0) {
+    throw new InvalidPropertyError('Missing font family at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
+  }
 
-var CleanCSS = module.exports = function CleanCSS(options) {
-  options = options || {};
-
-  this.options = {
-    compatibility: compatibilityFrom(options.compatibility),
-    fetch: fetchFrom(options.fetch),
-    format: formatFrom(options.format),
-    inline: inlineFrom(options.inline),
-    inlineRequest: inlineRequestFrom(options.inlineRequest),
-    inlineTimeout: inlineTimeoutFrom(options.inlineTimeout),
-    level: optimizationLevelFrom(options.level),
-    rebase: rebaseFrom(options.rebase),
-    rebaseTo: rebaseToFrom(options.rebaseTo),
-    returnPromise: !!options.returnPromise,
-    sourceMap: !!options.sourceMap,
-    sourceMapInlineSources: !!options.sourceMapInlineSources
-  };
-};
+  return components;
+}
 
+function _anyIsFontSize(values, validator) {
+  var value;
+  var i, l;
 
-// for compatibility with optimize-css-assets-webpack-plugin
-CleanCSS.process = function (input, opts) {
-  var cleanCss;
-  var optsTo = opts.to;
+  for (i = 0, l = values.length; i < l; i++) {
+    value = values[i];
 
-  delete opts.to;
-  cleanCss = new CleanCSS(Object.assign({ returnPromise: true, rebaseTo: optsTo }, opts));
+    if (validator.isFontSizeKeyword(value[1]) || validator.isUnit(value[1]) && !validator.isDynamicUnit(value[1]) || validator.isFunction(value[1])) {
+      return true;
+    }
+  }
 
-  return cleanCss.minify(input)
-    .then(function(output) {
-      return { css: output.styles };
-    });
-};
+  return false;
+}
 
+function _anyIsFontFamily(values, validator) {
+  var value;
+  var i, l;
 
-CleanCSS.prototype.minify = function (input, maybeSourceMap, maybeCallback) {
-  var options = this.options;
+  for (i = 0, l = values.length; i < l; i++) {
+    value = values[i];
 
-  if (options.returnPromise) {
-    return new Promise(function (resolve, reject) {
-      minify(input, options, maybeSourceMap, function (errors, output) {
-        return errors ?
-          reject(errors) :
-          resolve(output);
-      });
-    });
-  } else {
-    return minify(input, options, maybeSourceMap, maybeCallback);
+    if (validator.isIdentifier(value[1])) {
+      return true;
+    }
   }
-};
 
-function minify(input, options, maybeSourceMap, maybeCallback) {
-  var sourceMap = typeof maybeSourceMap != 'function' ?
-    maybeSourceMap :
-    null;
-  var callback = typeof maybeCallback == 'function' ?
-    maybeCallback :
-    (typeof maybeSourceMap == 'function' ? maybeSourceMap : null);
-  var context = {
-    stats: {
-      efficiency: 0,
-      minifiedSize: 0,
-      originalSize: 0,
-      startedAt: Date.now(),
-      timeSpent: 0
-    },
-    cache: {
-      specificity: {}
-    },
-    errors: [],
-    inlinedStylesheets: [],
-    inputSourceMapTracker: inputSourceMapTracker(),
-    localOnly: !callback,
-    options: options,
-    source: null,
-    sourcesContent: {},
-    validator: validator(options.compatibility),
-    warnings: []
-  };
+  return false;
+}
 
-  if (sourceMap) {
-    context.inputSourceMapTracker.track(undefined, sourceMap);
-  }
+function fourValues(property, compactable) {
+  var componentNames = compactable[property.name].components;
+  var components = [];
+  var value = property.value;
 
-  return runner(context.localOnly)(function () {
-    return readSources(input, context, function (tokens) {
-      var serialize = context.options.sourceMap ?
-        serializeStylesAndSourceMap :
-        serializeStyles;
+  if (value.length < 1)
+    return [];
 
-      var optimizedTokens = optimize(tokens, context);
-      var optimizedStyles = serialize(optimizedTokens, context);
-      var output = withMetadata(optimizedStyles, context);
+  if (value.length < 2)
+    value[1] = value[0].slice(0);
+  if (value.length < 3)
+    value[2] = value[0].slice(0);
+  if (value.length < 4)
+    value[3] = value[1].slice(0);
 
-      return callback ?
-        callback(context.errors.length > 0 ? context.errors : null, output) :
-        output;
-    });
-  });
-}
+  for (var i = componentNames.length - 1; i >= 0; i--) {
+    var component = wrapSingle([
+      Token.PROPERTY,
+      [Token.PROPERTY_NAME, componentNames[i]]
+    ]);
+    component.value = [value[i]];
+    components.unshift(component);
+  }
 
-function runner(localOnly) {
-  // to always execute code asynchronously when a callback is given
-  // more at blog.izs.me/post/59142742143/designing-apis-for-asynchrony
-  return localOnly ?
-    function (callback) { return callback(); } :
-    process.nextTick;
+  return components;
 }
 
-function optimize(tokens, context) {
-  var optimized;
+function multiplex(splitWith) {
+  return function (property, compactable, validator) {
+    var splitsAt = [];
+    var values = property.value;
+    var i, j, l, m;
 
-  optimized = level0Optimize(tokens, context);
-  optimized = OptimizationLevel.One in context.options.level ?
-    level1Optimize(tokens, context) :
-    tokens;
-  optimized = OptimizationLevel.Two in context.options.level ?
-    level2Optimize(tokens, context, true) :
-    optimized;
+    // find split commas
+    for (i = 0, l = values.length; i < l; i++) {
+      if (values[i][1] == ',')
+        splitsAt.push(i);
+    }
 
-  return optimized;
-}
+    if (splitsAt.length === 0)
+      return splitWith(property, compactable, validator);
 
-function withMetadata(output, context) {
-  output.stats = calculateStatsFrom(output.styles, context);
-  output.errors = context.errors;
-  output.inlinedStylesheets = context.inlinedStylesheets;
-  output.warnings = context.warnings;
+    var splitComponents = [];
 
-  return output;
-}
+    // split over commas, and into components
+    for (i = 0, l = splitsAt.length; i <= l; i++) {
+      var from = i === 0 ? 0 : splitsAt[i - 1] + 1;
+      var to = i < l ? splitsAt[i] : values.length;
 
-function calculateStatsFrom(styles, context) {
-  var finishedAt = Date.now();
-  var timeSpent = finishedAt - context.stats.startedAt;
+      var _property = _wrapDefault(property.name, property, compactable);
+      _property.value = values.slice(from, to);
 
-  delete context.stats.startedAt;
-  context.stats.timeSpent = timeSpent;
-  context.stats.efficiency = 1 - styles.length / context.stats.originalSize;
-  context.stats.minifiedSize = styles.length;
+      splitComponents.push(splitWith(_property, compactable, validator));
+    }
 
-  return context.stats;
-}
+    var components = splitComponents[0];
 
-}).call(this,require('_process'))
-},{"./optimizer/level-0/optimize":9,"./optimizer/level-1/optimize":10,"./optimizer/level-2/optimize":29,"./optimizer/validator":57,"./options/compatibility":59,"./options/fetch":60,"./options/format":61,"./options/inline":64,"./options/inline-request":62,"./options/inline-timeout":63,"./options/optimization-level":65,"./options/rebase":67,"./options/rebase-to":66,"./reader/input-source-map-tracker":71,"./reader/read-sources":77,"./writer/simple":99,"./writer/source-maps":100,"_process":112}],8:[function(require,module,exports){
-var Hack = {
-  ASTERISK: 'asterisk',
-  BANG: 'bang',
-  BACKSLASH: 'backslash',
-  UNDERSCORE: 'underscore'
-};
+    // group component values from each split
+    for (i = 0, l = components.length; i < l; i++) {
+      components[i].multiplex = true;
 
-module.exports = Hack;
+      for (j = 1, m = splitComponents.length; j < m; j++) {
+        components[i].value.push([Token.PROPERTY_VALUE, Marker.COMMA]);
+        Array.prototype.push.apply(components[i].value, splitComponents[j][i].value);
+      }
+    }
 
-},{}],9:[function(require,module,exports){
-function level0Optimize(tokens) {
-  // noop as level 0 means no optimizations!
-  return tokens;
+    return components;
+  };
 }
 
-module.exports = level0Optimize;
+function listStyle(property, compactable, validator) {
+  var type = _wrapDefault('list-style-type', property, compactable);
+  var position = _wrapDefault('list-style-position', property, compactable);
+  var image = _wrapDefault('list-style-image', property, compactable);
+  var components = [type, position, image];
 
-},{}],10:[function(require,module,exports){
-var shortenHex = require('./shorten-hex');
-var shortenHsl = require('./shorten-hsl');
-var shortenRgb = require('./shorten-rgb');
-var sortSelectors = require('./sort-selectors');
-var tidyRules = require('./tidy-rules');
-var tidyBlock = require('./tidy-block');
-var tidyAtRule = require('./tidy-at-rule');
+  if (property.value.length == 1 && property.value[0][1] == 'inherit') {
+    type.value = position.value = image.value = [property.value[0]];
+    return components;
+  }
 
-var Hack = require('../hack');
-var removeUnused = require('../remove-unused');
-var restoreFromOptimizing = require('../restore-from-optimizing');
-var wrapForOptimizing = require('../wrap-for-optimizing').all;
+  var values = property.value.slice(0);
+  var total = values.length;
+  var index = 0;
 
-var OptimizationLevel = require('../../options/optimization-level').OptimizationLevel;
+  // `image` first...
+  for (index = 0, total = values.length; index < total; index++) {
+    if (validator.isUrl(values[index][1]) || values[index][1] == '0') {
+      image.value = [values[index]];
+      values.splice(index, 1);
+      break;
+    }
+  }
 
-var Token = require('../../tokenizer/token');
-var Marker = require('../../tokenizer/marker');
+  // ... then `position`
+  for (index = 0, total = values.length; index < total; index++) {
+    if (validator.isListStylePositionKeyword(values[index][1])) {
+      position.value = [values[index]];
+      values.splice(index, 1);
+      break;
+    }
+  }
 
-var formatPosition = require('../../utils/format-position');
-var split = require('../../utils/split');
+  // ... and what's left is a `type`
+  if (values.length > 0 && (validator.isListStyleTypeKeyword(values[0][1]) || validator.isIdentifier(values[0][1]))) {
+    type.value = [values[0]];
+  }
 
-var serializeRules = require('../../writer/one-time').rules;
+  return components;
+}
 
-var IgnoreProperty = 'ignore-property';
-
-var CHARSET_TOKEN = '@charset';
-var CHARSET_REGEXP = new RegExp('^' + CHARSET_TOKEN, 'i');
-
-var DEFAULT_ROUNDING_PRECISION = require('../../options/rounding-precision').DEFAULT;
+function transition(property, compactable, validator) {
+  var prop = _wrapDefault(property.name + '-property', property, compactable);
+  var duration = _wrapDefault(property.name + '-duration', property, compactable);
+  var timing = _wrapDefault(property.name + '-timing-function', property, compactable);
+  var delay = _wrapDefault(property.name + '-delay', property, compactable);
+  var components = [prop, duration, timing, delay];
+  var values = property.value;
+  var value;
+  var durationSet = false;
+  var delaySet = false;
+  var propSet = false;
+  var timingSet = false;
+  var i;
+  var l;
 
-var WHOLE_PIXEL_VALUE = /(?:^|\s|\()(-?\d+)px/;
-var TIME_VALUE = /^(\-?[\d\.]+)(m?s)$/;
+  if (property.value.length == 1 && property.value[0][1] == 'inherit') {
+    prop.value = duration.value = timing.value = delay.value = property.value;
+    return components;
+  }
 
-var HEX_VALUE_PATTERN = /[0-9a-f]/i;
-var PROPERTY_NAME_PATTERN = /^(?:\-chrome\-|\-[\w\-]+\w|\w[\w\-]+\w|\-\-\S+)$/;
-var IMPORT_PREFIX_PATTERN = /^@import/i;
-var QUOTED_PATTERN = /^('.*'|".*")$/;
-var QUOTED_BUT_SAFE_PATTERN = /^['"][a-zA-Z][a-zA-Z\d\-_]+['"]$/;
-var URL_PREFIX_PATTERN = /^url\(/i;
-var VARIABLE_NAME_PATTERN = /^--\S+$/;
+  if (values.length > 1 && _anyIsInherit(values)) {
+    throw new InvalidPropertyError('Invalid animation values at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
+  }
 
-function isNegative(value) {
-  return value && value[1][0] == '-' && parseFloat(value[1]) < 0;
-}
+  for (i = 0, l = values.length; i < l; i++) {
+    value = values[i];
 
-function isQuoted(value) {
-  return QUOTED_PATTERN.test(value);
-}
+    if (validator.isTime(value[1]) && !durationSet) {
+      duration.value = [value];
+      durationSet = true;
+    } else if (validator.isTime(value[1]) && !delaySet) {
+      delay.value = [value];
+      delaySet = true;
+    } else if ((validator.isGlobal(value[1]) || validator.isTimingFunction(value[1])) && !timingSet) {
+      timing.value = [value];
+      timingSet = true;
+    } else if (validator.isIdentifier(value[1]) && !propSet) {
+      prop.value = [value];
+      propSet = true;
+    } else {
+      throw new InvalidPropertyError('Invalid animation value at ' + formatPosition(value[2][0]) + '. Ignoring.');
+    }
+  }
 
-function isUrl(value) {
-  return URL_PREFIX_PATTERN.test(value);
+  return components;
 }
 
-function normalizeUrl(value) {
-  return value
-    .replace(URL_PREFIX_PATTERN, 'url(')
-    .replace(/\\?\n|\\?\r\n/g, '');
-}
+function widthStyleColor(property, compactable, validator) {
+  var descriptor = compactable[property.name];
+  var components = [
+    _wrapDefault(descriptor.components[0], property, compactable),
+    _wrapDefault(descriptor.components[1], property, compactable),
+    _wrapDefault(descriptor.components[2], property, compactable)
+  ];
+  var color, style, width;
 
-function optimizeBackground(property) {
-  var values = property.value;
+  for (var i = 0; i < 3; i++) {
+    var component = components[i];
 
-  if (values.length == 1 && values[0][1] == 'none') {
-    values[0][1] = '0 0';
+    if (component.name.indexOf('color') > 0)
+      color = component;
+    else if (component.name.indexOf('style') > 0)
+      style = component;
+    else
+      width = component;
   }
 
-  if (values.length == 1 && values[0][1] == 'transparent') {
-    values[0][1] = '0 0';
+  if ((property.value.length == 1 && property.value[0][1] == 'inherit') ||
+      (property.value.length == 3 && property.value[0][1] == 'inherit' && property.value[1][1] == 'inherit' && property.value[2][1] == 'inherit')) {
+    color.value = style.value = width.value = [property.value[0]];
+    return components;
   }
-}
 
-function optimizeBorderRadius(property) {
-  var values = property.value;
-  var spliceAt;
+  var values = property.value.slice(0);
+  var match, matches;
 
-  if (values.length == 3 && values[1][1] == '/' && values[0][1] == values[2][1]) {
-    spliceAt = 1;
-  } else if (values.length == 5 && values[2][1] == '/' && values[0][1] == values[3][1] && values[1][1] == values[4][1]) {
-    spliceAt = 2;
-  } else if (values.length == 7 && values[3][1] == '/' && values[0][1] == values[4][1] && values[1][1] == values[5][1] && values[2][1] == values[6][1]) {
-    spliceAt = 3;
-  } else if (values.length == 9 && values[4][1] == '/' && values[0][1] == values[5][1] && values[1][1] == values[6][1] && values[2][1] == values[7][1] && values[3][1] == values[8][1]) {
-    spliceAt = 4;
+  // NOTE: usually users don't follow the required order of parts in this shorthand,
+  // so we'll try to parse it caring as little about order as possible
+
+  if (values.length > 0) {
+    matches = values.filter(_widthFilter(validator));
+    match = matches.length > 1 && (matches[0][1] == 'none' || matches[0][1] == 'auto') ? matches[1] : matches[0];
+    if (match) {
+      width.value = [match];
+      values.splice(values.indexOf(match), 1);
+    }
   }
 
-  if (spliceAt) {
-    property.value.splice(spliceAt);
-    property.dirty = true;
+  if (values.length > 0) {
+    match = values.filter(_styleFilter(validator))[0];
+    if (match) {
+      style.value = [match];
+      values.splice(values.indexOf(match), 1);
+    }
   }
-}
 
-function optimizeColors(name, value, compatibility) {
-  if (value.indexOf('#') === -1 && value.indexOf('rgb') == -1 && value.indexOf('hsl') == -1) {
-    return shortenHex(value);
+  if (values.length > 0) {
+    match = values.filter(_colorFilter(validator))[0];
+    if (match) {
+      color.value = [match];
+      values.splice(values.indexOf(match), 1);
+    }
   }
 
-  value = value
-    .replace(/rgb\((\-?\d+),(\-?\d+),(\-?\d+)\)/g, function (match, red, green, blue) {
-      return shortenRgb(red, green, blue);
-    })
-    .replace(/hsl\((-?\d+),(-?\d+)%?,(-?\d+)%?\)/g, function (match, hue, saturation, lightness) {
-      return shortenHsl(hue, saturation, lightness);
-    })
-    .replace(/(^|[^='"])#([0-9a-f]{6})/gi, function (match, prefix, color, at, inputValue) {
-      var suffix = inputValue[at + match.length];
+  return components;
+}
 
-      if (suffix && HEX_VALUE_PATTERN.test(suffix)) {
-        return match;
-      } else if (color[0] == color[1] && color[2] == color[3] && color[4] == color[5]) {
-        return (prefix + '#' + color[0] + color[2] + color[4]).toLowerCase();
-      } else {
-        return (prefix + '#' + color).toLowerCase();
-      }
-    })
-    .replace(/(^|[^='"])#([0-9a-f]{3})/gi, function (match, prefix, color) {
-      return prefix + '#' + color.toLowerCase();
-    })
-    .replace(/(rgb|rgba|hsl|hsla)\(([^\)]+)\)/g, function (match, colorFunction, colorDef) {
-      var tokens = colorDef.split(',');
-      var applies = (colorFunction == 'hsl' && tokens.length == 3) ||
-        (colorFunction == 'hsla' && tokens.length == 4) ||
-        (colorFunction == 'rgb' && tokens.length == 3 && colorDef.indexOf('%') > 0) ||
-        (colorFunction == 'rgba' && tokens.length == 4 && colorDef.indexOf('%') > 0);
+module.exports = {
+  animation: animation,
+  background: background,
+  border: widthStyleColor,
+  borderRadius: borderRadius,
+  font: font,
+  fourValues: fourValues,
+  listStyle: listStyle,
+  multiplex: multiplex,
+  outline: widthStyleColor,
+  transition: transition
+};
 
-      if (!applies) {
-        return match;
-      }
+},{"../../tokenizer/marker":78,"../../tokenizer/token":79,"../../utils/format-position":82,"../wrap-for-optimizing":53,"./invalid-property-error":18}],14:[function(require,module,exports){
+var understandable = require('./properties/understandable');
 
-      if (tokens[1].indexOf('%') == -1) {
-        tokens[1] += '%';
-      }
+function animationIterationCount(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !(validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2))) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
+  }
 
-      if (tokens[2].indexOf('%') == -1) {
-        tokens[2] += '%';
-      }
+  return validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2);
+}
 
-      return colorFunction + '(' + tokens.join(',') + ')';
-    });
+function animationName(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !(validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2))) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
+  }
 
-  if (compatibility.colors.opacity && name.indexOf('background') == -1) {
-    value = value.replace(/(?:rgba|hsla)\(0,0%?,0%?,0\)/g, function (match) {
-      if (split(value, ',').pop().indexOf('gradient(') > -1) {
-        return match;
-      }
+  return validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2);
+}
 
-      return 'transparent';
-    });
+function areSameFunction(validator, value1, value2) {
+  if (!validator.isFunction(value1) || !validator.isFunction(value2)) {
+    return false;
   }
 
-  return shortenHex(value);
+  var function1Name = value1.substring(0, value1.indexOf('('));
+  var function2Name = value2.substring(0, value2.indexOf('('));
+
+  return function1Name === function2Name;
 }
 
-function optimizeFilter(property) {
-  if (property.value.length == 1) {
-    property.value[0][1] = property.value[0][1].replace(/progid:DXImageTransform\.Microsoft\.(Alpha|Chroma)(\W)/, function (match, filter, suffix) {
-      return filter.toLowerCase() + suffix;
-    });
+function backgroundPosition(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !(validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2))) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
+  } else if (validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2)) {
+    return true;
   }
 
-  property.value[0][1] = property.value[0][1]
-    .replace(/,(\S)/g, ', $1')
-    .replace(/ ?= ?/g, '=');
+  return unit(validator, value1, value2);
 }
 
-function optimizeFontWeight(property, atIndex) {
-  var value = property.value[atIndex][1];
-
-  if (value == 'normal') {
-    value = '400';
-  } else if (value == 'bold') {
-    value = '700';
+function backgroundSize(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !(validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2))) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
+  } else if (validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2)) {
+    return true;
   }
 
-  property.value[atIndex][1] = value;
+  return unit(validator, value1, value2);
 }
 
-function optimizeMultipleZeros(property) {
-  var values = property.value;
-  var spliceAt;
-
-  if (values.length == 4 && values[0][1] === '0' && values[1][1] === '0' && values[2][1] === '0' && values[3][1] === '0') {
-    if (property.name.indexOf('box-shadow') > -1) {
-      spliceAt = 2;
-    } else {
-      spliceAt = 1;
-    }
+function color(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !validator.isColor(value2)) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
+  } else if (!validator.colorOpacity && (validator.isRgbColor(value1) || validator.isHslColor(value1))) {
+    return false;
+  } else if (!validator.colorOpacity && (validator.isRgbColor(value2) || validator.isHslColor(value2))) {
+    return false;
+  } else if (validator.isColor(value1) && validator.isColor(value2)) {
+    return true;
   }
 
-  if (spliceAt) {
-    property.value.splice(spliceAt);
-    property.dirty = true;
-  }
+  return sameFunctionOrValue(validator, value1, value2);
 }
 
-function optimizeOutline(property) {
-  var values = property.value;
+function components(overrideCheckers) {
+  return function (validator, value1, value2, position) {
+    return overrideCheckers[position](validator, value1, value2);
+  };
+}
 
-  if (values.length == 1 && values[0][1] == 'none') {
-    values[0][1] = '0';
-  }
+function fontFamily(validator, value1, value2) {
+  return understandable(validator, value1, value2, 0, true);
 }
 
-function optimizePixelLengths(_, value, compatibility) {
-  if (!WHOLE_PIXEL_VALUE.test(value)) {
-    return value;
+function image(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !validator.isImage(value2)) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
+  } else if (validator.isImage(value2)) {
+    return true;
+  } else if (validator.isImage(value1)) {
+    return false;
   }
 
-  return value.replace(WHOLE_PIXEL_VALUE, function (match, val) {
-    var newValue;
-    var intVal = parseInt(val);
-
-    if (intVal === 0) {
-      return match;
-    }
-
-    if (compatibility.properties.shorterLengthUnits && compatibility.units.pt && intVal * 3 % 4 === 0) {
-      newValue = intVal * 3 / 4 + 'pt';
-    }
+  return sameFunctionOrValue(validator, value1, value2);
+}
 
-    if (compatibility.properties.shorterLengthUnits && compatibility.units.pc && intVal % 16 === 0) {
-      newValue = intVal / 16 + 'pc';
+function keyword(propertyName) {
+  return function(validator, value1, value2) {
+    if (!understandable(validator, value1, value2, 0, true) && !validator.isKeyword(propertyName)(value2)) {
+      return false;
+    } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+      return true;
     }
 
-    if (compatibility.properties.shorterLengthUnits && compatibility.units.in && intVal % 96 === 0) {
-      newValue = intVal / 96 + 'in';
-    }
+    return validator.isKeyword(propertyName)(value2);
+  };
+}
 
-    if (newValue) {
-      newValue = match.substring(0, match.indexOf(val)) + newValue;
+function keywordWithGlobal(propertyName) {
+  return function(validator, value1, value2) {
+    if (!understandable(validator, value1, value2, 0, true) && !(validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2))) {
+      return false;
+    } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+      return true;
     }
 
-    return newValue && newValue.length < match.length ? newValue : match;
-  });
+    return validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2);
+  };
 }
 
-function optimizePrecision(_, value, precisionOptions) {
-  if (!precisionOptions.enabled || value.indexOf('.') === -1) {
-    return value;
+function propertyName(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !validator.isIdentifier(value2)) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
   }
 
-  return value
-    .replace(precisionOptions.decimalPointMatcher, '$1$2$3')
-    .replace(precisionOptions.zeroMatcher, function (match, integerPart, fractionPart, unit) {
-      var multiplier = precisionOptions.units[unit].multiplier;
-      var parsedInteger = parseInt(integerPart);
-      var integer = isNaN(parsedInteger) ? 0 : parsedInteger;
-      var fraction = parseFloat(fractionPart);
-
-      return Math.round((integer + fraction) * multiplier) / multiplier + unit;
-    });
+  return validator.isIdentifier(value2);
 }
 
-function optimizeTimeUnits(_, value) {
-  if (!TIME_VALUE.test(value))
-    return value;
-
-  return value.replace(TIME_VALUE, function (match, val, unit) {
-    var newValue;
-
-    if (unit == 'ms') {
-      newValue = parseInt(val) / 1000 + 's';
-    } else if (unit == 's') {
-      newValue = parseFloat(val) * 1000 + 'ms';
-    }
-
-    return newValue.length < match.length ? newValue : match;
-  });
+function sameFunctionOrValue(validator, value1, value2) {
+  return areSameFunction(validator, value1, value2) ?
+    true :
+    value1 === value2;
 }
 
-function optimizeUnits(name, value, unitsRegexp) {
-  if (/^(?:\-moz\-calc|\-webkit\-calc|calc|rgb|hsl|rgba|hsla)\(/.test(value)) {
-    return value;
+function textShadow(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !(validator.isUnit(value2) || validator.isColor(value2) || validator.isGlobal(value2))) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
   }
 
-  if (name == 'flex' || name == '-ms-flex' || name == '-webkit-flex' || name == 'flex-basis' || name == '-webkit-flex-basis') {
-    return value;
-  }
+  return validator.isUnit(value2) || validator.isColor(value2) || validator.isGlobal(value2);
+}
 
-  if (value.indexOf('%') > 0 && (name == 'height' || name == 'max-height' || name == 'width' || name == 'max-width')) {
-    return value;
+function time(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !validator.isTime(value2)) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
+  } else if (validator.isTime(value1) && !validator.isTime(value2)) {
+    return false;
+  } else if (validator.isTime(value2)) {
+    return true;
+  } else if (validator.isTime(value1)) {
+    return false;
+  } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {
+    return true;
   }
 
-  return value
-    .replace(unitsRegexp, '$1' + '0' + '$2')
-    .replace(unitsRegexp, '$1' + '0' + '$2');
+  return sameFunctionOrValue(validator, value1, value2);
 }
 
-function optimizeWhitespace(name, value) {
-  if (name.indexOf('filter') > -1 || value.indexOf(' ') == -1 || value.indexOf('expression') === 0) {
-    return value;
-  }
-
-  if (value.indexOf(Marker.SINGLE_QUOTE) > -1 || value.indexOf(Marker.DOUBLE_QUOTE) > -1) {
-    return value;
+function timingFunction(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !(validator.isTimingFunction(value2) || validator.isGlobal(value2))) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
   }
 
-  value = value.replace(/\s+/g, ' ');
+  return validator.isTimingFunction(value2) || validator.isGlobal(value2);
+}
 
-  if (value.indexOf('calc') > -1) {
-    value = value.replace(/\) ?\/ ?/g, ')/ ');
+function unit(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !validator.isUnit(value2)) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
+  } else if (validator.isUnit(value1) && !validator.isUnit(value2)) {
+    return false;
+  } else if (validator.isUnit(value2)) {
+    return true;
+  } else if (validator.isUnit(value1)) {
+    return false;
+  } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {
+    return true;
   }
 
-  return value
-    .replace(/(\(;?)\s+/g, '$1')
-    .replace(/\s+(;?\))/g, '$1')
-    .replace(/, /g, ',');
+  return sameFunctionOrValue(validator, value1, value2);
 }
 
-function optimizeZeroDegUnit(_, value) {
-  if (value.indexOf('0deg') == -1) {
-    return value;
-  }
+function unitOrKeywordWithGlobal(propertyName) {
+  var byKeyword = keywordWithGlobal(propertyName);
 
-  return value.replace(/\(0deg\)/g, '(0)');
+  return function(validator, value1, value2) {
+    return unit(validator, value1, value2) || byKeyword(validator, value1, value2);
+  };
 }
 
-function optimizeZeroUnits(name, value) {
-  if (value.indexOf('0') == -1) {
-    return value;
-  }
-
-  if (value.indexOf('-') > -1) {
-    value = value
-      .replace(/([^\w\d\-]|^)\-0([^\.]|$)/g, '$10$2')
-      .replace(/([^\w\d\-]|^)\-0([^\.]|$)/g, '$10$2');
+function unitOrNumber(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !(validator.isUnit(value2) || validator.isNumber(value2))) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
+  } else if ((validator.isUnit(value1) || validator.isNumber(value1)) && !(validator.isUnit(value2) || validator.isNumber(value2))) {
+    return false;
+  } else if (validator.isUnit(value2) || validator.isNumber(value2)) {
+    return true;
+  } else if (validator.isUnit(value1) || validator.isNumber(value1)) {
+    return false;
+  } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {
+    return true;
   }
 
-  return value
-    .replace(/(^|\s)0+([1-9])/g, '$1$2')
-    .replace(/(^|\D)\.0+(\D|$)/g, '$10$2')
-    .replace(/(^|\D)\.0+(\D|$)/g, '$10$2')
-    .replace(/\.([1-9]*)0+(\D|$)/g, function (match, nonZeroPart, suffix) {
-      return (nonZeroPart.length > 0 ? '.' : '') + nonZeroPart + suffix;
-    })
-    .replace(/(^|\D)0\.(\d)/g, '$1.$2');
+  return sameFunctionOrValue(validator, value1, value2);
 }
 
-function removeQuotes(name, value) {
-  if (name == 'content' || name.indexOf('font-variation-settings') > -1 || name.indexOf('font-feature-settings') > -1 || name.indexOf('grid-') > -1) {
-    return value;
+function zIndex(validator, value1, value2) {
+  if (!understandable(validator, value1, value2, 0, true) && !validator.isZIndex(value2)) {
+    return false;
+  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
+    return true;
   }
 
-  return QUOTED_BUT_SAFE_PATTERN.test(value) ?
-    value.substring(1, value.length - 1) :
-    value;
-}
-
-function removeUrlQuotes(value) {
-  return /^url\(['"].+['"]\)$/.test(value) && !/^url\(['"].*[\*\s\(\)'"].*['"]\)$/.test(value) && !/^url\(['"]data:[^;]+;charset/.test(value) ?
-    value.replace(/["']/g, '') :
-    value;
+  return validator.isZIndex(value2);
 }
 
-function transformValue(propertyName, propertyValue, rule, transformCallback) {
-  var selector = serializeRules(rule);
-  var transformedValue = transformCallback(propertyName, propertyValue, selector);
-
-  if (transformedValue === undefined) {
-    return propertyValue;
-  } else if (transformedValue === false) {
-    return IgnoreProperty;
-  } else {
-    return transformedValue;
+module.exports = {
+  generic: {
+    color: color,
+    components: components,
+    image: image,
+    propertyName: propertyName,
+    time: time,
+    timingFunction: timingFunction,
+    unit: unit,
+    unitOrNumber: unitOrNumber
+  },
+  property: {
+    animationDirection: keywordWithGlobal('animation-direction'),
+    animationFillMode: keyword('animation-fill-mode'),
+    animationIterationCount: animationIterationCount,
+    animationName: animationName,
+    animationPlayState: keywordWithGlobal('animation-play-state'),
+    backgroundAttachment: keyword('background-attachment'),
+    backgroundClip: keywordWithGlobal('background-clip'),
+    backgroundOrigin: keyword('background-origin'),
+    backgroundPosition: backgroundPosition,
+    backgroundRepeat: keyword('background-repeat'),
+    backgroundSize: backgroundSize,
+    bottom: unitOrKeywordWithGlobal('bottom'),
+    borderCollapse: keyword('border-collapse'),
+    borderStyle: keywordWithGlobal('*-style'),
+    clear: keywordWithGlobal('clear'),
+    cursor: keywordWithGlobal('cursor'),
+    display: keywordWithGlobal('display'),
+    float: keywordWithGlobal('float'),
+    left: unitOrKeywordWithGlobal('left'),
+    fontFamily: fontFamily,
+    fontStretch: keywordWithGlobal('font-stretch'),
+    fontStyle: keywordWithGlobal('font-style'),
+    fontVariant: keywordWithGlobal('font-variant'),
+    fontWeight: keywordWithGlobal('font-weight'),
+    listStyleType: keywordWithGlobal('list-style-type'),
+    listStylePosition: keywordWithGlobal('list-style-position'),
+    outlineStyle: keywordWithGlobal('*-style'),
+    overflow: keywordWithGlobal('overflow'),
+    position: keywordWithGlobal('position'),
+    right: unitOrKeywordWithGlobal('right'),
+    textAlign: keywordWithGlobal('text-align'),
+    textDecoration: keywordWithGlobal('text-decoration'),
+    textOverflow: keywordWithGlobal('text-overflow'),
+    textShadow: textShadow,
+    top: unitOrKeywordWithGlobal('top'),
+    transform: sameFunctionOrValue,
+    verticalAlign: unitOrKeywordWithGlobal('vertical-align'),
+    visibility: keywordWithGlobal('visibility'),
+    whiteSpace: keywordWithGlobal('white-space'),
+    zIndex: zIndex
   }
-}
-
-//
-
-function optimizeBody(rule, properties, context) {
-  var options = context.options;
-  var levelOptions = options.level[OptimizationLevel.One];
-  var property, name, type, value;
-  var valueIsUrl;
-  var propertyToken;
-  var _properties = wrapForOptimizing(properties, true);
-
-  propertyLoop:
-  for (var i = 0, l = _properties.length; i < l; i++) {
-    property = _properties[i];
-    name = property.name;
-
-    if (!PROPERTY_NAME_PATTERN.test(name)) {
-      propertyToken = property.all[property.position];
-      context.warnings.push('Invalid property name \'' + name + '\' at ' + formatPosition(propertyToken[1][2][0]) + '. Ignoring.');
-      property.unused = true;
-    }
-
-    if (property.value.length === 0) {
-      propertyToken = property.all[property.position];
-      context.warnings.push('Empty property \'' + name + '\' at ' + formatPosition(propertyToken[1][2][0]) + '. Ignoring.');
-      property.unused = true;
-    }
-
-    if (property.hack && (
-        (property.hack[0] == Hack.ASTERISK || property.hack[0] == Hack.UNDERSCORE) && !options.compatibility.properties.iePrefixHack ||
-        property.hack[0] == Hack.BACKSLASH && !options.compatibility.properties.ieSuffixHack ||
-        property.hack[0] == Hack.BANG && !options.compatibility.properties.ieBangHack)) {
-      property.unused = true;
-    }
-
-    if (levelOptions.removeNegativePaddings && name.indexOf('padding') === 0 && (isNegative(property.value[0]) || isNegative(property.value[1]) || isNegative(property.value[2]) || isNegative(property.value[3]))) {
-      property.unused = true;
-    }
-
-    if (!options.compatibility.properties.ieFilters && isLegacyFilter(property)) {
-      property.unused = true;
-    }
-
-    if (property.unused) {
-      continue;
-    }
-
-    if (property.block) {
-      optimizeBody(rule, property.value[0][1], context);
-      continue;
-    }
-
-    if (VARIABLE_NAME_PATTERN.test(name)) {
-      continue;
-    }
-
-    for (var j = 0, m = property.value.length; j < m; j++) {
-      type = property.value[j][0];
-      value = property.value[j][1];
-      valueIsUrl = isUrl(value);
-
-      if (type == Token.PROPERTY_BLOCK) {
-        property.unused = true;
-        context.warnings.push('Invalid value token at ' + formatPosition(value[0][1][2][0]) + '. Ignoring.');
-        break;
-      }
-
-      if (valueIsUrl && !context.validator.isUrl(value)) {
-        property.unused = true;
-        context.warnings.push('Broken URL \'' + value + '\' at ' + formatPosition(property.value[j][2][0]) + '. Ignoring.');
-        break;
-      }
-
-      if (valueIsUrl) {
-        value = levelOptions.normalizeUrls ?
-          normalizeUrl(value) :
-          value;
-        value = !options.compatibility.properties.urlQuotes ?
-          removeUrlQuotes(value) :
-          value;
-      } else if (isQuoted(value)) {
-        value = levelOptions.removeQuotes ?
-          removeQuotes(name, value) :
-          value;
-      } else {
-        value = levelOptions.removeWhitespace ?
-          optimizeWhitespace(name, value) :
-          value;
-        value = optimizePrecision(name, value, options.precision);
-        value = optimizePixelLengths(name, value, options.compatibility);
-        value = levelOptions.replaceTimeUnits ?
-          optimizeTimeUnits(name, value) :
-          value;
-        value = levelOptions.replaceZeroUnits ?
-          optimizeZeroUnits(name, value) :
-          value;
-
-        if (options.compatibility.properties.zeroUnits) {
-          value = optimizeZeroDegUnit(name, value);
-          value = optimizeUnits(name, value, options.unitsRegexp);
-        }
-
-        if (options.compatibility.properties.colors) {
-          value = optimizeColors(name, value, options.compatibility);
-        }
-      }
-
-      value = transformValue(name, value, rule, levelOptions.transform);
-
-      if (value === IgnoreProperty) {
-        property.unused = true;
-        continue propertyLoop;
-      }
+};
 
-      property.value[j][1] = value;
-    }
+},{"./properties/understandable":35}],15:[function(require,module,exports){
+var wrapSingle = require('../wrap-for-optimizing').single;
 
-    if (levelOptions.replaceMultipleZeros) {
-      optimizeMultipleZeros(property);
-    }
+var Token = require('../../tokenizer/token');
 
-    if (name == 'background' && levelOptions.optimizeBackground) {
-      optimizeBackground(property);
-    } else if (name.indexOf('border') === 0 && name.indexOf('radius') > 0 && levelOptions.optimizeBorderRadius) {
-      optimizeBorderRadius(property);
-    } else if (name == 'filter'&& levelOptions.optimizeFilter && options.compatibility.properties.ieFilters) {
-      optimizeFilter(property);
-    } else if (name == 'font-weight' && levelOptions.optimizeFontWeight) {
-      optimizeFontWeight(property, 0);
-    } else if (name == 'outline' && levelOptions.optimizeOutline) {
-      optimizeOutline(property);
-    }
+function deep(property) {
+  var cloned = shallow(property);
+  for (var i = property.components.length - 1; i >= 0; i--) {
+    var component = shallow(property.components[i]);
+    component.value = property.components[i].value.slice(0);
+    cloned.components.unshift(component);
   }
 
-  restoreFromOptimizing(_properties);
-  removeUnused(_properties);
-  removeComments(properties, options);
-}
-
-function removeComments(tokens, options) {
-  var token;
-  var i;
-
-  for (i = 0; i < tokens.length; i++) {
-    token = tokens[i];
-
-    if (token[0] != Token.COMMENT) {
-      continue;
-    }
-
-    optimizeComment(token, options);
+  cloned.dirty = true;
+  cloned.value = property.value.slice(0);
 
-    if (token[1].length === 0) {
-      tokens.splice(i, 1);
-      i--;
-    }
-  }
+  return cloned;
 }
 
-function optimizeComment(token, options) {
-  if (token[1][2] == Marker.EXCLAMATION && (options.level[OptimizationLevel.One].specialComments == 'all' || options.commentsKept < options.level[OptimizationLevel.One].specialComments)) {
-    options.commentsKept++;
-    return;
-  }
-
-  token[1] = [];
+function shallow(property) {
+  var cloned = wrapSingle([
+    Token.PROPERTY,
+    [Token.PROPERTY_NAME, property.name]
+  ]);
+  cloned.important = property.important;
+  cloned.hack = property.hack;
+  cloned.unused = false;
+  return cloned;
 }
 
-function cleanupCharsets(tokens) {
-  var hasCharset = false;
+module.exports = {
+  deep: deep,
+  shallow: shallow
+};
 
-  for (var i = 0, l = tokens.length; i < l; i++) {
-    var token = tokens[i];
+},{"../../tokenizer/token":79,"../wrap-for-optimizing":53}],16:[function(require,module,exports){
+// Contains the interpretation of CSS properties, as used by the property optimizer
 
-    if (token[0] != Token.AT_RULE)
-      continue;
+var breakUp = require('./break-up');
+var canOverride = require('./can-override');
+var restore = require('./restore');
 
-    if (!CHARSET_REGEXP.test(token[1]))
-      continue;
-
-    if (hasCharset || token[1].indexOf(CHARSET_TOKEN) == -1) {
-      tokens.splice(i, 1);
-      i--;
-      l--;
-    } else {
-      hasCharset = true;
-      tokens.splice(i, 1);
-      tokens.unshift([Token.AT_RULE, token[1].replace(CHARSET_REGEXP, CHARSET_TOKEN)]);
-    }
-  }
-}
-
-function buildUnitRegexp(options) {
-  var units = ['px', 'em', 'ex', 'cm', 'mm', 'in', 'pt', 'pc', '%'];
-  var otherUnits = ['ch', 'rem', 'vh', 'vm', 'vmax', 'vmin', 'vw'];
-
-  otherUnits.forEach(function (unit) {
-    if (options.compatibility.units[unit]) {
-      units.push(unit);
-    }
-  });
-
-  return new RegExp('(^|\\s|\\(|,)0(?:' + units.join('|') + ')(\\W|$)', 'g');
-}
-
-function buildPrecisionOptions(roundingPrecision) {
-  var precisionOptions = {
-    matcher: null,
-    units: {},
-  };
-  var optimizable = [];
-  var unit;
-  var value;
-
-  for (unit in roundingPrecision) {
-    value = roundingPrecision[unit];
-
-    if (value != DEFAULT_ROUNDING_PRECISION) {
-      precisionOptions.units[unit] = {};
-      precisionOptions.units[unit].value = value;
-      precisionOptions.units[unit].multiplier = Math.pow(10, value);
-
-      optimizable.push(unit);
-    }
-  }
-
-  if (optimizable.length > 0) {
-    precisionOptions.enabled = true;
-    precisionOptions.decimalPointMatcher = new RegExp('(\\d)\\.($|' + optimizable.join('|') + ')($|\W)', 'g');
-    precisionOptions.zeroMatcher = new RegExp('(\\d*)(\\.\\d+)(' + optimizable.join('|') + ')', 'g');
-  }
-
-  return precisionOptions;
-}
-
-function isImport(token) {
-  return IMPORT_PREFIX_PATTERN.test(token[1]);
-}
-
-function isLegacyFilter(property) {
-  var value;
-
-  if (property.name == 'filter' || property.name == '-ms-filter') {
-    value = property.value[0][1];
-
-    return value.indexOf('progid') > -1 ||
-      value.indexOf('alpha') === 0 ||
-      value.indexOf('chroma') === 0;
-  } else {
-    return false;
-  }
-}
-
-function level1Optimize(tokens, context) {
-  var options = context.options;
-  var levelOptions = options.level[OptimizationLevel.One];
-  var ie7Hack = options.compatibility.selectors.ie7Hack;
-  var adjacentSpace = options.compatibility.selectors.adjacentSpace;
-  var spaceAfterClosingBrace = options.compatibility.properties.spaceAfterClosingBrace;
-  var format = options.format;
-  var mayHaveCharset = false;
-  var afterRules = false;
-
-  options.unitsRegexp = options.unitsRegexp || buildUnitRegexp(options);
-  options.precision = options.precision || buildPrecisionOptions(levelOptions.roundingPrecision);
-  options.commentsKept = options.commentsKept || 0;
-
-  for (var i = 0, l = tokens.length; i < l; i++) {
-    var token = tokens[i];
-
-    switch (token[0]) {
-      case Token.AT_RULE:
-        token[1] = isImport(token) && afterRules ? '' : token[1];
-        token[1] = levelOptions.tidyAtRules ? tidyAtRule(token[1]) : token[1];
-        mayHaveCharset = true;
-        break;
-      case Token.AT_RULE_BLOCK:
-        optimizeBody(token[1], token[2], context);
-        afterRules = true;
-        break;
-      case Token.NESTED_BLOCK:
-        token[1] = levelOptions.tidyBlockScopes ? tidyBlock(token[1], spaceAfterClosingBrace) : token[1];
-        level1Optimize(token[2], context);
-        afterRules = true;
-        break;
-      case Token.COMMENT:
-        optimizeComment(token, options);
-        break;
-      case Token.RULE:
-        token[1] = levelOptions.tidySelectors ? tidyRules(token[1], !ie7Hack, adjacentSpace, format, context.warnings) : token[1];
-        token[1] = token[1].length > 1 ? sortSelectors(token[1], levelOptions.selectorsSortingMethod) : token[1];
-        optimizeBody(token[1], token[2], context);
-        afterRules = true;
-        break;
-    }
-
-    if (token[0] == Token.COMMENT && token[1].length === 0 || levelOptions.removeEmpty && (token[1].length === 0 || (token[2] && token[2].length === 0))) {
-      tokens.splice(i, 1);
-      i--;
-      l--;
-    }
-  }
-
-  if (levelOptions.cleanupCharsets && mayHaveCharset) {
-    cleanupCharsets(tokens);
-  }
-
-  return tokens;
-}
-
-module.exports = level1Optimize;
-
-},{"../../options/optimization-level":65,"../../options/rounding-precision":68,"../../tokenizer/marker":83,"../../tokenizer/token":84,"../../utils/format-position":87,"../../utils/split":96,"../../writer/one-time":98,"../hack":8,"../remove-unused":55,"../restore-from-optimizing":56,"../wrap-for-optimizing":58,"./shorten-hex":11,"./shorten-hsl":12,"./shorten-rgb":13,"./sort-selectors":14,"./tidy-at-rule":15,"./tidy-block":16,"./tidy-rules":17}],11:[function(require,module,exports){
-var COLORS = {
-  aliceblue: '#f0f8ff',
-  antiquewhite: '#faebd7',
-  aqua: '#0ff',
-  aquamarine: '#7fffd4',
-  azure: '#f0ffff',
-  beige: '#f5f5dc',
-  bisque: '#ffe4c4',
-  black: '#000',
-  blanchedalmond: '#ffebcd',
-  blue: '#00f',
-  blueviolet: '#8a2be2',
-  brown: '#a52a2a',
-  burlywood: '#deb887',
-  cadetblue: '#5f9ea0',
-  chartreuse: '#7fff00',
-  chocolate: '#d2691e',
-  coral: '#ff7f50',
-  cornflowerblue: '#6495ed',
-  cornsilk: '#fff8dc',
-  crimson: '#dc143c',
-  cyan: '#0ff',
-  darkblue: '#00008b',
-  darkcyan: '#008b8b',
-  darkgoldenrod: '#b8860b',
-  darkgray: '#a9a9a9',
-  darkgreen: '#006400',
-  darkgrey: '#a9a9a9',
-  darkkhaki: '#bdb76b',
-  darkmagenta: '#8b008b',
-  darkolivegreen: '#556b2f',
-  darkorange: '#ff8c00',
-  darkorchid: '#9932cc',
-  darkred: '#8b0000',
-  darksalmon: '#e9967a',
-  darkseagreen: '#8fbc8f',
-  darkslateblue: '#483d8b',
-  darkslategray: '#2f4f4f',
-  darkslategrey: '#2f4f4f',
-  darkturquoise: '#00ced1',
-  darkviolet: '#9400d3',
-  deeppink: '#ff1493',
-  deepskyblue: '#00bfff',
-  dimgray: '#696969',
-  dimgrey: '#696969',
-  dodgerblue: '#1e90ff',
-  firebrick: '#b22222',
-  floralwhite: '#fffaf0',
-  forestgreen: '#228b22',
-  fuchsia: '#f0f',
-  gainsboro: '#dcdcdc',
-  ghostwhite: '#f8f8ff',
-  gold: '#ffd700',
-  goldenrod: '#daa520',
-  gray: '#808080',
-  green: '#008000',
-  greenyellow: '#adff2f',
-  grey: '#808080',
-  honeydew: '#f0fff0',
-  hotpink: '#ff69b4',
-  indianred: '#cd5c5c',
-  indigo: '#4b0082',
-  ivory: '#fffff0',
-  khaki: '#f0e68c',
-  lavender: '#e6e6fa',
-  lavenderblush: '#fff0f5',
-  lawngreen: '#7cfc00',
-  lemonchiffon: '#fffacd',
-  lightblue: '#add8e6',
-  lightcoral: '#f08080',
-  lightcyan: '#e0ffff',
-  lightgoldenrodyellow: '#fafad2',
-  lightgray: '#d3d3d3',
-  lightgreen: '#90ee90',
-  lightgrey: '#d3d3d3',
-  lightpink: '#ffb6c1',
-  lightsalmon: '#ffa07a',
-  lightseagreen: '#20b2aa',
-  lightskyblue: '#87cefa',
-  lightslategray: '#778899',
-  lightslategrey: '#778899',
-  lightsteelblue: '#b0c4de',
-  lightyellow: '#ffffe0',
-  lime: '#0f0',
-  limegreen: '#32cd32',
-  linen: '#faf0e6',
-  magenta: '#ff00ff',
-  maroon: '#800000',
-  mediumaquamarine: '#66cdaa',
-  mediumblue: '#0000cd',
-  mediumorchid: '#ba55d3',
-  mediumpurple: '#9370db',
-  mediumseagreen: '#3cb371',
-  mediumslateblue: '#7b68ee',
-  mediumspringgreen: '#00fa9a',
-  mediumturquoise: '#48d1cc',
-  mediumvioletred: '#c71585',
-  midnightblue: '#191970',
-  mintcream: '#f5fffa',
-  mistyrose: '#ffe4e1',
-  moccasin: '#ffe4b5',
-  navajowhite: '#ffdead',
-  navy: '#000080',
-  oldlace: '#fdf5e6',
-  olive: '#808000',
-  olivedrab: '#6b8e23',
-  orange: '#ffa500',
-  orangered: '#ff4500',
-  orchid: '#da70d6',
-  palegoldenrod: '#eee8aa',
-  palegreen: '#98fb98',
-  paleturquoise: '#afeeee',
-  palevioletred: '#db7093',
-  papayawhip: '#ffefd5',
-  peachpuff: '#ffdab9',
-  peru: '#cd853f',
-  pink: '#ffc0cb',
-  plum: '#dda0dd',
-  powderblue: '#b0e0e6',
-  purple: '#800080',
-  rebeccapurple: '#663399',
-  red: '#f00',
-  rosybrown: '#bc8f8f',
-  royalblue: '#4169e1',
-  saddlebrown: '#8b4513',
-  salmon: '#fa8072',
-  sandybrown: '#f4a460',
-  seagreen: '#2e8b57',
-  seashell: '#fff5ee',
-  sienna: '#a0522d',
-  silver: '#c0c0c0',
-  skyblue: '#87ceeb',
-  slateblue: '#6a5acd',
-  slategray: '#708090',
-  slategrey: '#708090',
-  snow: '#fffafa',
-  springgreen: '#00ff7f',
-  steelblue: '#4682b4',
-  tan: '#d2b48c',
-  teal: '#008080',
-  thistle: '#d8bfd8',
-  tomato: '#ff6347',
-  turquoise: '#40e0d0',
-  violet: '#ee82ee',
-  wheat: '#f5deb3',
-  white: '#fff',
-  whitesmoke: '#f5f5f5',
-  yellow: '#ff0',
-  yellowgreen: '#9acd32'
-};
-
-var toHex = {};
-var toName = {};
-
-for (var name in COLORS) {
-  var hex = COLORS[name];
-
-  if (name.length < hex.length) {
-    toName[hex] = name;
-  } else {
-    toHex[name] = hex;
-  }
-}
-
-var toHexPattern = new RegExp('(^| |,|\\))(' + Object.keys(toHex).join('|') + ')( |,|\\)|$)', 'ig');
-var toNamePattern = new RegExp('(' + Object.keys(toName).join('|') + ')([^a-f0-9]|$)', 'ig');
-
-function hexConverter(match, prefix, colorValue, suffix) {
-  return prefix + toHex[colorValue.toLowerCase()] + suffix;
-}
-
-function nameConverter(match, colorValue, suffix) {
-  return toName[colorValue.toLowerCase()] + suffix;
-}
-
-function shortenHex(value) {
-  var hasHex = value.indexOf('#') > -1;
-  var shortened = value.replace(toHexPattern, hexConverter);
-
-  if (shortened != value) {
-    shortened = shortened.replace(toHexPattern, hexConverter);
-  }
-
-  return hasHex ?
-    shortened.replace(toNamePattern, nameConverter) :
-    shortened;
-}
-
-module.exports = shortenHex;
-
-},{}],12:[function(require,module,exports){
-// HSL to RGB converter. Both methods adapted from:
-// http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript
-
-function hslToRgb(h, s, l) {
-  var r, g, b;
-
-  // normalize hue orientation b/w 0 and 360 degrees
-  h = h % 360;
-  if (h < 0)
-    h += 360;
-  h = ~~h / 360;
-
-  if (s < 0)
-    s = 0;
-  else if (s > 100)
-    s = 100;
-  s = ~~s / 100;
-
-  if (l < 0)
-    l = 0;
-  else if (l > 100)
-    l = 100;
-  l = ~~l / 100;
-
-  if (s === 0) {
-    r = g = b = l; // achromatic
-  } else {
-    var q = l < 0.5 ?
-      l * (1 + s) :
-      l + s - l * s;
-    var p = 2 * l - q;
-    r = hueToRgb(p, q, h + 1/3);
-    g = hueToRgb(p, q, h);
-    b = hueToRgb(p, q, h - 1/3);
-  }
-
-  return [~~(r * 255), ~~(g * 255), ~~(b * 255)];
-}
-
-function hueToRgb(p, q, t) {
-  if (t < 0) t += 1;
-  if (t > 1) t -= 1;
-  if (t < 1/6) return p + (q - p) * 6 * t;
-  if (t < 1/2) return q;
-  if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;
-  return p;
-}
-
-function shortenHsl(hue, saturation, lightness) {
-  var asRgb = hslToRgb(hue, saturation, lightness);
-  var redAsHex = asRgb[0].toString(16);
-  var greenAsHex = asRgb[1].toString(16);
-  var blueAsHex = asRgb[2].toString(16);
-
-  return '#' +
-    ((redAsHex.length == 1 ? '0' : '') + redAsHex) +
-    ((greenAsHex.length == 1 ? '0' : '') + greenAsHex) +
-    ((blueAsHex.length == 1 ? '0' : '') + blueAsHex);
-}
-
-module.exports = shortenHsl;
-
-},{}],13:[function(require,module,exports){
-function shortenRgb(red, green, blue) {
-  var normalizedRed = Math.max(0, Math.min(parseInt(red), 255));
-  var normalizedGreen = Math.max(0, Math.min(parseInt(green), 255));
-  var normalizedBlue = Math.max(0, Math.min(parseInt(blue), 255));
-
-  // Credit: Asen  http://jsbin.com/UPUmaGOc/2/edit?js,console
-  return '#' + ('00000' + (normalizedRed << 16 | normalizedGreen << 8 | normalizedBlue).toString(16)).slice(-6);
-}
-
-module.exports = shortenRgb;
-
-},{}],14:[function(require,module,exports){
-var naturalCompare = require('../../utils/natural-compare');
-
-function naturalSorter(scope1, scope2) {
-  return naturalCompare(scope1[1], scope2[1]);
-}
-
-function standardSorter(scope1, scope2) {
-  return scope1[1] > scope2[1] ? 1 : -1;
-}
-
-function sortSelectors(selectors, method) {
-  switch (method) {
-    case 'natural':
-      return selectors.sort(naturalSorter);
-    case 'standard':
-      return selectors.sort(standardSorter);
-    case 'none':
-    case false:
-      return selectors;
-  }
-}
-
-module.exports = sortSelectors;
-
-},{"../../utils/natural-compare":94}],15:[function(require,module,exports){
-function tidyAtRule(value) {
-  return value
-    .replace(/\s+/g, ' ')
-    .replace(/url\(\s+/g, 'url(')
-    .replace(/\s+\)/g, ')')
-    .trim();
-}
-
-module.exports = tidyAtRule;
-
-},{}],16:[function(require,module,exports){
-var SUPPORTED_COMPACT_BLOCK_MATCHER = /^@media\W/;
-
-function tidyBlock(values, spaceAfterClosingBrace) {
-  var withoutSpaceAfterClosingBrace;
-  var i;
-
-  for (i = values.length - 1; i >= 0; i--) {
-    withoutSpaceAfterClosingBrace = !spaceAfterClosingBrace && SUPPORTED_COMPACT_BLOCK_MATCHER.test(values[i][1]);
-
-    values[i][1] = values[i][1]
-      .replace(/\n|\r\n/g, ' ')
-      .replace(/\s+/g, ' ')
-      .replace(/(,|:|\() /g, '$1')
-      .replace(/ \)/g, ')')
-      .replace(/'([a-zA-Z][a-zA-Z\d\-_]+)'/, '$1')
-      .replace(/"([a-zA-Z][a-zA-Z\d\-_]+)"/, '$1')
-      .replace(withoutSpaceAfterClosingBrace ? /\) /g : null, ')');
-  }
-
-  return values;
-}
-
-module.exports = tidyBlock;
-
-},{}],17:[function(require,module,exports){
-var Spaces = require('../../options/format').Spaces;
-var Marker = require('../../tokenizer/marker');
-var formatPosition = require('../../utils/format-position');
-
-var CASE_ATTRIBUTE_PATTERN = /[\s"'][iI]\s*\]/;
-var CASE_RESTORE_PATTERN = /([\d\w])([iI])\]/g;
-var DOUBLE_QUOTE_CASE_PATTERN = /="([a-zA-Z][a-zA-Z\d\-_]+)"([iI])/g;
-var DOUBLE_QUOTE_PATTERN = /="([a-zA-Z][a-zA-Z\d\-_]+)"(\s|\])/g;
-var HTML_COMMENT_PATTERN = /^(?:(?:<!--|-->)\s*)+/;
-var SINGLE_QUOTE_CASE_PATTERN = /='([a-zA-Z][a-zA-Z\d\-_]+)'([iI])/g;
-var SINGLE_QUOTE_PATTERN = /='([a-zA-Z][a-zA-Z\d\-_]+)'(\s|\])/g;
-var RELATION_PATTERN = /[>\+~]/;
-var WHITESPACE_PATTERN = /\s/;
-
-var ASTERISK_PLUS_HTML_HACK = '*+html ';
-var ASTERISK_FIRST_CHILD_PLUS_HTML_HACK = '*:first-child+html ';
-var LESS_THAN = '<';
-
-function hasInvalidCharacters(value) {
-  var isEscaped;
-  var isInvalid = false;
-  var character;
-  var isQuote = false;
-  var i, l;
-
-  for (i = 0, l = value.length; i < l; i++) {
-    character = value[i];
-
-    if (isEscaped) {
-      // continue as always
-    } else if (character == Marker.SINGLE_QUOTE || character == Marker.DOUBLE_QUOTE) {
-      isQuote = !isQuote;
-    } else if (!isQuote && (character == Marker.CLOSE_CURLY_BRACKET || character == Marker.EXCLAMATION || character == LESS_THAN || character == Marker.SEMICOLON)) {
-      isInvalid = true;
-      break;
-    } else if (!isQuote && i === 0 && RELATION_PATTERN.test(character)) {
-      isInvalid = true;
-      break;
-    }
-
-    isEscaped = character == Marker.BACK_SLASH;
-  }
-
-  return isInvalid;
-}
-
-function removeWhitespace(value, format) {
-  var stripped = [];
-  var character;
-  var isNewLineNix;
-  var isNewLineWin;
-  var isEscaped;
-  var wasEscaped;
-  var isQuoted;
-  var isSingleQuoted;
-  var isDoubleQuoted;
-  var isAttribute;
-  var isRelation;
-  var isWhitespace;
-  var roundBracketLevel = 0;
-  var wasRelation = false;
-  var wasWhitespace = false;
-  var withCaseAttribute = CASE_ATTRIBUTE_PATTERN.test(value);
-  var spaceAroundRelation = format && format.spaces[Spaces.AroundSelectorRelation];
-  var i, l;
-
-  for (i = 0, l = value.length; i < l; i++) {
-    character = value[i];
-
-    isNewLineNix = character == Marker.NEW_LINE_NIX;
-    isNewLineWin = character == Marker.NEW_LINE_NIX && value[i - 1] == Marker.CARRIAGE_RETURN;
-    isQuoted = isSingleQuoted || isDoubleQuoted;
-    isRelation = !isAttribute && !isEscaped && roundBracketLevel === 0 && RELATION_PATTERN.test(character);
-    isWhitespace = WHITESPACE_PATTERN.test(character);
-
-    if (wasEscaped && isQuoted && isNewLineWin) {
-      // swallow escaped new windows lines in comments
-      stripped.pop();
-      stripped.pop();
-    } else if (isEscaped && isQuoted && isNewLineNix) {
-      // swallow escaped new *nix lines in comments
-      stripped.pop();
-    } else if (isEscaped) {
-      stripped.push(character);
-    } else if (character == Marker.OPEN_SQUARE_BRACKET && !isQuoted) {
-      stripped.push(character);
-      isAttribute = true;
-    } else if (character == Marker.CLOSE_SQUARE_BRACKET && !isQuoted) {
-      stripped.push(character);
-      isAttribute = false;
-    } else if (character == Marker.OPEN_ROUND_BRACKET && !isQuoted) {
-      stripped.push(character);
-      roundBracketLevel++;
-    } else if (character == Marker.CLOSE_ROUND_BRACKET && !isQuoted) {
-      stripped.push(character);
-      roundBracketLevel--;
-    } else if (character == Marker.SINGLE_QUOTE && !isQuoted) {
-      stripped.push(character);
-      isSingleQuoted = true;
-    } else if (character == Marker.DOUBLE_QUOTE && !isQuoted) {
-      stripped.push(character);
-      isDoubleQuoted = true;
-    } else if (character == Marker.SINGLE_QUOTE && isQuoted) {
-      stripped.push(character);
-      isSingleQuoted = false;
-    } else if (character == Marker.DOUBLE_QUOTE && isQuoted) {
-      stripped.push(character);
-      isDoubleQuoted = false;
-    } else if (isWhitespace && wasRelation && !spaceAroundRelation) {
-      continue;
-    } else if (!isWhitespace && wasRelation && spaceAroundRelation) {
-      stripped.push(Marker.SPACE);
-      stripped.push(character);
-    } else if (isWhitespace && (isAttribute || roundBracketLevel > 0) && !isQuoted) {
-      // skip space
-    } else if (isWhitespace && wasWhitespace && !isQuoted) {
-      // skip extra space
-    } else if ((isNewLineWin || isNewLineNix) && (isAttribute || roundBracketLevel > 0) && isQuoted) {
-      // skip newline
-    } else if (isRelation && wasWhitespace && !spaceAroundRelation) {
-      stripped.pop();
-      stripped.push(character);
-    } else if (isRelation && !wasWhitespace && spaceAroundRelation) {
-      stripped.push(Marker.SPACE);
-      stripped.push(character);
-    } else if (isWhitespace) {
-      stripped.push(Marker.SPACE);
-    } else {
-      stripped.push(character);
-    }
-
-    wasEscaped = isEscaped;
-    isEscaped = character == Marker.BACK_SLASH;
-    wasRelation = isRelation;
-    wasWhitespace = isWhitespace;
-  }
-
-  return withCaseAttribute ?
-    stripped.join('').replace(CASE_RESTORE_PATTERN, '$1 $2]') :
-    stripped.join('');
-}
-
-function removeQuotes(value) {
-  if (value.indexOf('\'') == -1 && value.indexOf('"') == -1) {
-    return value;
-  }
-
-  return value
-    .replace(SINGLE_QUOTE_CASE_PATTERN, '=$1 $2')
-    .replace(SINGLE_QUOTE_PATTERN, '=$1$2')
-    .replace(DOUBLE_QUOTE_CASE_PATTERN, '=$1 $2')
-    .replace(DOUBLE_QUOTE_PATTERN, '=$1$2');
-}
-
-function tidyRules(rules, removeUnsupported, adjacentSpace, format, warnings) {
-  var list = [];
-  var repeated = [];
-
-  function removeHTMLComment(rule, match) {
-    warnings.push('HTML comment \'' + match + '\' at ' + formatPosition(rule[2][0]) + '. Removing.');
-    return '';
-  }
-
-  for (var i = 0, l = rules.length; i < l; i++) {
-    var rule = rules[i];
-    var reduced = rule[1];
-
-    reduced = reduced.replace(HTML_COMMENT_PATTERN, removeHTMLComment.bind(null, rule));
-
-    if (hasInvalidCharacters(reduced)) {
-      warnings.push('Invalid selector \'' + rule[1] + '\' at ' + formatPosition(rule[2][0]) + '. Ignoring.');
-      continue;
-    }
-
-    reduced = removeWhitespace(reduced, format);
-    reduced = removeQuotes(reduced);
-
-    if (adjacentSpace && reduced.indexOf('nav') > 0) {
-      reduced = reduced.replace(/\+nav(\S|$)/, '+ nav$1');
-    }
-
-    if (removeUnsupported && reduced.indexOf(ASTERISK_PLUS_HTML_HACK) > -1) {
-      continue;
-    }
-
-    if (removeUnsupported && reduced.indexOf(ASTERISK_FIRST_CHILD_PLUS_HTML_HACK) > -1) {
-      continue;
-    }
-
-    if (reduced.indexOf('*') > -1) {
-      reduced = reduced
-        .replace(/\*([:#\.\[])/g, '$1')
-        .replace(/^(\:first\-child)?\+html/, '*$1+html');
-    }
-
-    if (repeated.indexOf(reduced) > -1) {
-      continue;
-    }
-
-    rule[1] = reduced;
-    repeated.push(reduced);
-    list.push(rule);
-  }
-
-  if (list.length == 1 && list[0][1].length === 0) {
-    warnings.push('Empty selector \'' + list[0][1] + '\' at ' + formatPosition(list[0][2][0]) + '. Ignoring.');
-    list = [];
-  }
-
-  return list;
-}
-
-module.exports = tidyRules;
-
-},{"../../options/format":61,"../../tokenizer/marker":83,"../../utils/format-position":87}],18:[function(require,module,exports){
-var InvalidPropertyError = require('./invalid-property-error');
-
-var wrapSingle = require('../wrap-for-optimizing').single;
-
-var Token = require('../../tokenizer/token');
-var Marker = require('../../tokenizer/marker');
-
-var formatPosition = require('../../utils/format-position');
-
-function _anyIsInherit(values) {
-  var i, l;
-
-  for (i = 0, l = values.length; i < l; i++) {
-    if (values[i][1] == 'inherit') {
-      return true;
-    }
-  }
-
-  return false;
-}
-
-function _colorFilter(validator) {
-  return function (value) {
-    return value[1] == 'invert' || validator.isColor(value[1]) || validator.isPrefixed(value[1]);
-  };
-}
-
-function _styleFilter(validator) {
-  return function (value) {
-    return value[1] != 'inherit' && validator.isStyleKeyword(value[1]) && !validator.isColorFunction(value[1]);
-  };
-}
-
-function _wrapDefault(name, property, compactable) {
-  var descriptor = compactable[name];
-  if (descriptor.doubleValues && descriptor.defaultValue.length == 2) {
-    return wrapSingle([
-      Token.PROPERTY,
-      [Token.PROPERTY_NAME, name],
-      [Token.PROPERTY_VALUE, descriptor.defaultValue[0]],
-      [Token.PROPERTY_VALUE, descriptor.defaultValue[1]]
-    ]);
-  } else if (descriptor.doubleValues && descriptor.defaultValue.length == 1) {
-    return wrapSingle([
-      Token.PROPERTY,
-      [Token.PROPERTY_NAME, name],
-      [Token.PROPERTY_VALUE, descriptor.defaultValue[0]]
-    ]);
-  } else {
-    return wrapSingle([
-      Token.PROPERTY,
-      [Token.PROPERTY_NAME, name],
-      [Token.PROPERTY_VALUE, descriptor.defaultValue]
-    ]);
-  }
-}
-
-function _widthFilter(validator) {
-  return function (value) {
-    return value[1] != 'inherit' &&
-      (validator.isWidth(value[1]) || validator.isUnit(value[1]) && !validator.isDynamicUnit(value[1])) &&
-      !validator.isStyleKeyword(value[1]) &&
-      !validator.isColorFunction(value[1]);
-  };
-}
-
-function animation(property, compactable, validator) {
-  var duration = _wrapDefault(property.name + '-duration', property, compactable);
-  var timing = _wrapDefault(property.name + '-timing-function', property, compactable);
-  var delay = _wrapDefault(property.name + '-delay', property, compactable);
-  var iteration = _wrapDefault(property.name + '-iteration-count', property, compactable);
-  var direction = _wrapDefault(property.name + '-direction', property, compactable);
-  var fill = _wrapDefault(property.name + '-fill-mode', property, compactable);
-  var play = _wrapDefault(property.name + '-play-state', property, compactable);
-  var name = _wrapDefault(property.name + '-name', property, compactable);
-  var components = [duration, timing, delay, iteration, direction, fill, play, name];
-  var values = property.value;
-  var value;
-  var durationSet = false;
-  var timingSet = false;
-  var delaySet = false;
-  var iterationSet = false;
-  var directionSet = false;
-  var fillSet = false;
-  var playSet = false;
-  var nameSet = false;
-  var i;
-  var l;
-
-  if (property.value.length == 1 && property.value[0][1] == 'inherit') {
-    duration.value = timing.value = delay.value = iteration.value = direction.value = fill.value = play.value = name.value = property.value;
-    return components;
-  }
-
-  if (values.length > 1 && _anyIsInherit(values)) {
-    throw new InvalidPropertyError('Invalid animation values at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
-  }
-
-  for (i = 0, l = values.length; i < l; i++) {
-    value = values[i];
-
-    if (validator.isTime(value[1]) && !durationSet) {
-      duration.value = [value];
-      durationSet = true;
-    } else if (validator.isTime(value[1]) && !delaySet) {
-      delay.value = [value];
-      delaySet = true;
-    } else if ((validator.isGlobal(value[1]) || validator.isTimingFunction(value[1])) && !timingSet) {
-      timing.value = [value];
-      timingSet = true;
-    } else if ((validator.isAnimationIterationCountKeyword(value[1]) || validator.isPositiveNumber(value[1])) && !iterationSet) {
-      iteration.value = [value];
-      iterationSet = true;
-    } else if (validator.isAnimationDirectionKeyword(value[1]) && !directionSet) {
-      direction.value = [value];
-      directionSet = true;
-    } else if (validator.isAnimationFillModeKeyword(value[1]) && !fillSet) {
-      fill.value = [value];
-      fillSet = true;
-    } else if (validator.isAnimationPlayStateKeyword(value[1]) && !playSet) {
-      play.value = [value];
-      playSet = true;
-    } else if ((validator.isAnimationNameKeyword(value[1]) || validator.isIdentifier(value[1])) && !nameSet) {
-      name.value = [value];
-      nameSet = true;
-    } else {
-      throw new InvalidPropertyError('Invalid animation value at ' + formatPosition(value[2][0]) + '. Ignoring.');
-    }
-  }
-
-  return components;
-}
-
-function background(property, compactable, validator) {
-  var image = _wrapDefault('background-image', property, compactable);
-  var position = _wrapDefault('background-position', property, compactable);
-  var size = _wrapDefault('background-size', property, compactable);
-  var repeat = _wrapDefault('background-repeat', property, compactable);
-  var attachment = _wrapDefault('background-attachment', property, compactable);
-  var origin = _wrapDefault('background-origin', property, compactable);
-  var clip = _wrapDefault('background-clip', property, compactable);
-  var color = _wrapDefault('background-color', property, compactable);
-  var components = [image, position, size, repeat, attachment, origin, clip, color];
-  var values = property.value;
-
-  var positionSet = false;
-  var clipSet = false;
-  var originSet = false;
-  var repeatSet = false;
-
-  var anyValueSet = false;
-
-  if (property.value.length == 1 && property.value[0][1] == 'inherit') {
-    // NOTE: 'inherit' is not a valid value for background-attachment
-    color.value = image.value =  repeat.value = position.value = size.value = origin.value = clip.value = property.value;
-    return components;
-  }
-
-  if (property.value.length == 1 && property.value[0][1] == '0 0') {
-    return components;
-  }
-
-  for (var i = values.length - 1; i >= 0; i--) {
-    var value = values[i];
-
-    if (validator.isBackgroundAttachmentKeyword(value[1])) {
-      attachment.value = [value];
-      anyValueSet = true;
-    } else if (validator.isBackgroundClipKeyword(value[1]) || validator.isBackgroundOriginKeyword(value[1])) {
-      if (clipSet) {
-        origin.value = [value];
-        originSet = true;
-      } else {
-        clip.value = [value];
-        clipSet = true;
-      }
-      anyValueSet = true;
-    } else if (validator.isBackgroundRepeatKeyword(value[1])) {
-      if (repeatSet) {
-        repeat.value.unshift(value);
-      } else {
-        repeat.value = [value];
-        repeatSet = true;
-      }
-      anyValueSet = true;
-    } else if (validator.isBackgroundPositionKeyword(value[1]) || validator.isBackgroundSizeKeyword(value[1]) || validator.isUnit(value[1]) || validator.isDynamicUnit(value[1])) {
-      if (i > 0) {
-        var previousValue = values[i - 1];
-
-        if (previousValue[1] == Marker.FORWARD_SLASH) {
-          size.value = [value];
-        } else if (i > 1 && values[i - 2][1] == Marker.FORWARD_SLASH) {
-          size.value = [previousValue, value];
-          i -= 2;
-        } else {
-          if (!positionSet)
-            position.value = [];
-
-          position.value.unshift(value);
-          positionSet = true;
-        }
-      } else {
-        if (!positionSet)
-          position.value = [];
-
-        position.value.unshift(value);
-        positionSet = true;
-      }
-      anyValueSet = true;
-    } else if ((color.value[0][1] == compactable[color.name].defaultValue || color.value[0][1] == 'none') && (validator.isColor(value[1]) || validator.isPrefixed(value[1]))) {
-      color.value = [value];
-      anyValueSet = true;
-    } else if (validator.isUrl(value[1]) || validator.isFunction(value[1])) {
-      image.value = [value];
-      anyValueSet = true;
-    }
-  }
-
-  if (clipSet && !originSet)
-    origin.value = clip.value.slice(0);
-
-  if (!anyValueSet) {
-    throw new InvalidPropertyError('Invalid background value at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
-  }
-
-  return components;
-}
-
-function borderRadius(property, compactable) {
-  var values = property.value;
-  var splitAt = -1;
-
-  for (var i = 0, l = values.length; i < l; i++) {
-    if (values[i][1] == Marker.FORWARD_SLASH) {
-      splitAt = i;
-      break;
-    }
-  }
-
-  if (splitAt === 0 || splitAt === values.length - 1) {
-    throw new InvalidPropertyError('Invalid border-radius value at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
-  }
-
-  var target = _wrapDefault(property.name, property, compactable);
-  target.value = splitAt > -1 ?
-    values.slice(0, splitAt) :
-    values.slice(0);
-  target.components = fourValues(target, compactable);
-
-  var remainder = _wrapDefault(property.name, property, compactable);
-  remainder.value = splitAt > -1 ?
-    values.slice(splitAt + 1) :
-    values.slice(0);
-  remainder.components = fourValues(remainder, compactable);
-
-  for (var j = 0; j < 4; j++) {
-    target.components[j].multiplex = true;
-    target.components[j].value = target.components[j].value.concat(remainder.components[j].value);
-  }
-
-  return target.components;
-}
-
-function font(property, compactable, validator) {
-  var style = _wrapDefault('font-style', property, compactable);
-  var variant = _wrapDefault('font-variant', property, compactable);
-  var weight = _wrapDefault('font-weight', property, compactable);
-  var stretch = _wrapDefault('font-stretch', property, compactable);
-  var size = _wrapDefault('font-size', property, compactable);
-  var height = _wrapDefault('line-height', property, compactable);
-  var family = _wrapDefault('font-family', property, compactable);
-  var components = [style, variant, weight, stretch, size, height, family];
-  var values = property.value;
-  var fuzzyMatched = 4; // style, variant, weight, and stretch
-  var index = 0;
-  var isStretchSet = false;
-  var isStretchValid;
-  var isStyleSet = false;
-  var isStyleValid;
-  var isVariantSet = false;
-  var isVariantValid;
-  var isWeightSet = false;
-  var isWeightValid;
-  var isSizeSet = false;
-  var appendableFamilyName = false;
-
-  if (!values[index]) {
-    throw new InvalidPropertyError('Missing font values at ' + formatPosition(property.all[property.position][1][2][0]) + '. Ignoring.');
-  }
-
-  if (values.length == 1 && values[0][1] == 'inherit') {
-    style.value = variant.value = weight.value = stretch.value = size.value = height.value = family.value = values;
-    return components;
-  }
-
-  if (values.length == 1 && (validator.isFontKeyword(values[0][1]) || validator.isGlobal(values[0][1]) || validator.isPrefixed(values[0][1]))) {
-    values[0][1] = Marker.INTERNAL + values[0][1];
-    style.value = variant.value = weight.value = stretch.value = size.value = height.value = family.value = values;
-    return components;
-  }
-
-  if (values.length < 2 || !_anyIsFontSize(values, validator) || !_anyIsFontFamily(values, validator)) {
-    throw new InvalidPropertyError('Invalid font values at ' + formatPosition(property.all[property.position][1][2][0]) + '. Ignoring.');
-  }
-
-  if (values.length > 1 && _anyIsInherit(values)) {
-    throw new InvalidPropertyError('Invalid font values at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
-  }
-
-  // fuzzy match style, variant, weight, and stretch on first elements
-  while (index < fuzzyMatched) {
-    isStretchValid = validator.isFontStretchKeyword(values[index][1]) || validator.isGlobal(values[index][1]);
-    isStyleValid = validator.isFontStyleKeyword(values[index][1]) || validator.isGlobal(values[index][1]);
-    isVariantValid = validator.isFontVariantKeyword(values[index][1]) || validator.isGlobal(values[index][1]);
-    isWeightValid = validator.isFontWeightKeyword(values[index][1]) || validator.isGlobal(values[index][1]);
-
-    if (isStyleValid && !isStyleSet) {
-      style.value = [values[index]];
-      isStyleSet = true;
-    } else if (isVariantValid && !isVariantSet) {
-      variant.value = [values[index]];
-      isVariantSet = true;
-    } else if (isWeightValid && !isWeightSet) {
-      weight.value = [values[index]];
-      isWeightSet = true;
-    } else if (isStretchValid && !isStretchSet) {
-      stretch.value = [values[index]];
-      isStretchSet = true;
-    } else if (isStyleValid && isStyleSet || isVariantValid && isVariantSet || isWeightValid && isWeightSet || isStretchValid && isStretchSet) {
-      throw new InvalidPropertyError('Invalid font style / variant / weight / stretch value at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
-    } else {
-      break;
-    }
-
-    index++;
-  }
-
-  // now comes font-size ...
-  if (validator.isFontSizeKeyword(values[index][1]) || validator.isUnit(values[index][1]) && !validator.isDynamicUnit(values[index][1])) {
-    size.value = [values[index]];
-    isSizeSet = true;
-    index++;
-  } else {
-    throw new InvalidPropertyError('Missing font size at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
-  }
-
-  if (!values[index]) {
-    throw new InvalidPropertyError('Missing font family at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
-  }
-
-  // ... and perhaps line-height
-  if (isSizeSet && values[index] && values[index][1] == Marker.FORWARD_SLASH && values[index + 1] && (validator.isLineHeightKeyword(values[index + 1][1]) || validator.isUnit(values[index + 1][1]) || validator.isNumber(values[index + 1][1]))) {
-    height.value = [values[index + 1]];
-    index++;
-    index++;
-  }
-
-  // ... and whatever comes next is font-family
-  family.value = [];
-
-  while (values[index]) {
-    if (values[index][1] == Marker.COMMA) {
-      appendableFamilyName = false;
-    } else {
-      if (appendableFamilyName) {
-        family.value[family.value.length - 1][1] += Marker.SPACE + values[index][1];
-      } else {
-        family.value.push(values[index]);
-      }
-
-      appendableFamilyName = true;
-    }
-
-    index++;
-  }
-
-  if (family.value.length === 0) {
-    throw new InvalidPropertyError('Missing font family at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
-  }
-
-  return components;
-}
-
-function _anyIsFontSize(values, validator) {
-  var value;
-  var i, l;
-
-  for (i = 0, l = values.length; i < l; i++) {
-    value = values[i];
-
-    if (validator.isFontSizeKeyword(value[1]) || validator.isUnit(value[1]) && !validator.isDynamicUnit(value[1]) || validator.isFunction(value[1])) {
-      return true;
-    }
-  }
-
-  return false;
-}
-
-function _anyIsFontFamily(values, validator) {
-  var value;
-  var i, l;
-
-  for (i = 0, l = values.length; i < l; i++) {
-    value = values[i];
-
-    if (validator.isIdentifier(value[1])) {
-      return true;
-    }
-  }
-
-  return false;
-}
-
-function fourValues(property, compactable) {
-  var componentNames = compactable[property.name].components;
-  var components = [];
-  var value = property.value;
-
-  if (value.length < 1)
-    return [];
-
-  if (value.length < 2)
-    value[1] = value[0].slice(0);
-  if (value.length < 3)
-    value[2] = value[0].slice(0);
-  if (value.length < 4)
-    value[3] = value[1].slice(0);
-
-  for (var i = componentNames.length - 1; i >= 0; i--) {
-    var component = wrapSingle([
-      Token.PROPERTY,
-      [Token.PROPERTY_NAME, componentNames[i]]
-    ]);
-    component.value = [value[i]];
-    components.unshift(component);
-  }
-
-  return components;
-}
-
-function multiplex(splitWith) {
-  return function (property, compactable, validator) {
-    var splitsAt = [];
-    var values = property.value;
-    var i, j, l, m;
-
-    // find split commas
-    for (i = 0, l = values.length; i < l; i++) {
-      if (values[i][1] == ',')
-        splitsAt.push(i);
-    }
-
-    if (splitsAt.length === 0)
-      return splitWith(property, compactable, validator);
-
-    var splitComponents = [];
-
-    // split over commas, and into components
-    for (i = 0, l = splitsAt.length; i <= l; i++) {
-      var from = i === 0 ? 0 : splitsAt[i - 1] + 1;
-      var to = i < l ? splitsAt[i] : values.length;
-
-      var _property = _wrapDefault(property.name, property, compactable);
-      _property.value = values.slice(from, to);
-
-      splitComponents.push(splitWith(_property, compactable, validator));
-    }
-
-    var components = splitComponents[0];
-
-    // group component values from each split
-    for (i = 0, l = components.length; i < l; i++) {
-      components[i].multiplex = true;
-
-      for (j = 1, m = splitComponents.length; j < m; j++) {
-        components[i].value.push([Token.PROPERTY_VALUE, Marker.COMMA]);
-        Array.prototype.push.apply(components[i].value, splitComponents[j][i].value);
-      }
-    }
-
-    return components;
-  };
-}
-
-function listStyle(property, compactable, validator) {
-  var type = _wrapDefault('list-style-type', property, compactable);
-  var position = _wrapDefault('list-style-position', property, compactable);
-  var image = _wrapDefault('list-style-image', property, compactable);
-  var components = [type, position, image];
-
-  if (property.value.length == 1 && property.value[0][1] == 'inherit') {
-    type.value = position.value = image.value = [property.value[0]];
-    return components;
-  }
-
-  var values = property.value.slice(0);
-  var total = values.length;
-  var index = 0;
-
-  // `image` first...
-  for (index = 0, total = values.length; index < total; index++) {
-    if (validator.isUrl(values[index][1]) || values[index][1] == '0') {
-      image.value = [values[index]];
-      values.splice(index, 1);
-      break;
-    }
-  }
-
-  // ... then `position`
-  for (index = 0, total = values.length; index < total; index++) {
-    if (validator.isListStylePositionKeyword(values[index][1])) {
-      position.value = [values[index]];
-      values.splice(index, 1);
-      break;
-    }
-  }
-
-  // ... and what's left is a `type`
-  if (values.length > 0 && (validator.isListStyleTypeKeyword(values[0][1]) || validator.isIdentifier(values[0][1]))) {
-    type.value = [values[0]];
-  }
-
-  return components;
-}
-
-function transition(property, compactable, validator) {
-  var prop = _wrapDefault(property.name + '-property', property, compactable);
-  var duration = _wrapDefault(property.name + '-duration', property, compactable);
-  var timing = _wrapDefault(property.name + '-timing-function', property, compactable);
-  var delay = _wrapDefault(property.name + '-delay', property, compactable);
-  var components = [prop, duration, timing, delay];
-  var values = property.value;
-  var value;
-  var durationSet = false;
-  var delaySet = false;
-  var propSet = false;
-  var timingSet = false;
-  var i;
-  var l;
-
-  if (property.value.length == 1 && property.value[0][1] == 'inherit') {
-    prop.value = duration.value = timing.value = delay.value = property.value;
-    return components;
-  }
-
-  if (values.length > 1 && _anyIsInherit(values)) {
-    throw new InvalidPropertyError('Invalid animation values at ' + formatPosition(values[0][2][0]) + '. Ignoring.');
-  }
-
-  for (i = 0, l = values.length; i < l; i++) {
-    value = values[i];
-
-    if (validator.isTime(value[1]) && !durationSet) {
-      duration.value = [value];
-      durationSet = true;
-    } else if (validator.isTime(value[1]) && !delaySet) {
-      delay.value = [value];
-      delaySet = true;
-    } else if ((validator.isGlobal(value[1]) || validator.isTimingFunction(value[1])) && !timingSet) {
-      timing.value = [value];
-      timingSet = true;
-    } else if (validator.isIdentifier(value[1]) && !propSet) {
-      prop.value = [value];
-      propSet = true;
-    } else {
-      throw new InvalidPropertyError('Invalid animation value at ' + formatPosition(value[2][0]) + '. Ignoring.');
-    }
-  }
-
-  return components;
-}
-
-function widthStyleColor(property, compactable, validator) {
-  var descriptor = compactable[property.name];
-  var components = [
-    _wrapDefault(descriptor.components[0], property, compactable),
-    _wrapDefault(descriptor.components[1], property, compactable),
-    _wrapDefault(descriptor.components[2], property, compactable)
-  ];
-  var color, style, width;
-
-  for (var i = 0; i < 3; i++) {
-    var component = components[i];
-
-    if (component.name.indexOf('color') > 0)
-      color = component;
-    else if (component.name.indexOf('style') > 0)
-      style = component;
-    else
-      width = component;
-  }
-
-  if ((property.value.length == 1 && property.value[0][1] == 'inherit') ||
-      (property.value.length == 3 && property.value[0][1] == 'inherit' && property.value[1][1] == 'inherit' && property.value[2][1] == 'inherit')) {
-    color.value = style.value = width.value = [property.value[0]];
-    return components;
-  }
-
-  var values = property.value.slice(0);
-  var match, matches;
-
-  // NOTE: usually users don't follow the required order of parts in this shorthand,
-  // so we'll try to parse it caring as little about order as possible
-
-  if (values.length > 0) {
-    matches = values.filter(_widthFilter(validator));
-    match = matches.length > 1 && (matches[0][1] == 'none' || matches[0][1] == 'auto') ? matches[1] : matches[0];
-    if (match) {
-      width.value = [match];
-      values.splice(values.indexOf(match), 1);
-    }
-  }
-
-  if (values.length > 0) {
-    match = values.filter(_styleFilter(validator))[0];
-    if (match) {
-      style.value = [match];
-      values.splice(values.indexOf(match), 1);
-    }
-  }
-
-  if (values.length > 0) {
-    match = values.filter(_colorFilter(validator))[0];
-    if (match) {
-      color.value = [match];
-      values.splice(values.indexOf(match), 1);
-    }
-  }
-
-  return components;
-}
-
-module.exports = {
-  animation: animation,
-  background: background,
-  border: widthStyleColor,
-  borderRadius: borderRadius,
-  font: font,
-  fourValues: fourValues,
-  listStyle: listStyle,
-  multiplex: multiplex,
-  outline: widthStyleColor,
-  transition: transition
-};
-
-},{"../../tokenizer/marker":83,"../../tokenizer/token":84,"../../utils/format-position":87,"../wrap-for-optimizing":58,"./invalid-property-error":23}],19:[function(require,module,exports){
-var understandable = require('./properties/understandable');
-
-function animationIterationCount(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !(validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2))) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  }
-
-  return validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2);
-}
-
-function animationName(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !(validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2))) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  }
-
-  return validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2);
-}
-
-function areSameFunction(validator, value1, value2) {
-  if (!validator.isFunction(value1) || !validator.isFunction(value2)) {
-    return false;
-  }
-
-  var function1Name = value1.substring(0, value1.indexOf('('));
-  var function2Name = value2.substring(0, value2.indexOf('('));
-
-  return function1Name === function2Name;
-}
-
-function backgroundPosition(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !(validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2))) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  } else if (validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2)) {
-    return true;
-  }
-
-  return unit(validator, value1, value2);
-}
-
-function backgroundSize(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !(validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2))) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  } else if (validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2)) {
-    return true;
-  }
-
-  return unit(validator, value1, value2);
-}
-
-function color(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !validator.isColor(value2)) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  } else if (!validator.colorOpacity && (validator.isRgbColor(value1) || validator.isHslColor(value1))) {
-    return false;
-  } else if (!validator.colorOpacity && (validator.isRgbColor(value2) || validator.isHslColor(value2))) {
-    return false;
-  } else if (validator.isColor(value1) && validator.isColor(value2)) {
-    return true;
-  }
-
-  return sameFunctionOrValue(validator, value1, value2);
-}
-
-function components(overrideCheckers) {
-  return function (validator, value1, value2, position) {
-    return overrideCheckers[position](validator, value1, value2);
-  };
-}
-
-function fontFamily(validator, value1, value2) {
-  return understandable(validator, value1, value2, 0, true);
-}
-
-function image(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !validator.isImage(value2)) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  } else if (validator.isImage(value2)) {
-    return true;
-  } else if (validator.isImage(value1)) {
-    return false;
-  }
-
-  return sameFunctionOrValue(validator, value1, value2);
-}
-
-function keyword(propertyName) {
-  return function(validator, value1, value2) {
-    if (!understandable(validator, value1, value2, 0, true) && !validator.isKeyword(propertyName)(value2)) {
-      return false;
-    } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-      return true;
-    }
-
-    return validator.isKeyword(propertyName)(value2);
-  };
-}
-
-function keywordWithGlobal(propertyName) {
-  return function(validator, value1, value2) {
-    if (!understandable(validator, value1, value2, 0, true) && !(validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2))) {
-      return false;
-    } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-      return true;
-    }
-
-    return validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2);
-  };
-}
-
-function propertyName(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !validator.isIdentifier(value2)) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  }
-
-  return validator.isIdentifier(value2);
-}
-
-function sameFunctionOrValue(validator, value1, value2) {
-  return areSameFunction(validator, value1, value2) ?
-    true :
-    value1 === value2;
-}
-
-function textShadow(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !(validator.isUnit(value2) || validator.isColor(value2) || validator.isGlobal(value2))) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  }
-
-  return validator.isUnit(value2) || validator.isColor(value2) || validator.isGlobal(value2);
-}
-
-function time(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !validator.isTime(value2)) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  } else if (validator.isTime(value1) && !validator.isTime(value2)) {
-    return false;
-  } else if (validator.isTime(value2)) {
-    return true;
-  } else if (validator.isTime(value1)) {
-    return false;
-  } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {
-    return true;
-  }
-
-  return sameFunctionOrValue(validator, value1, value2);
-}
-
-function timingFunction(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !(validator.isTimingFunction(value2) || validator.isGlobal(value2))) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  }
-
-  return validator.isTimingFunction(value2) || validator.isGlobal(value2);
-}
-
-function unit(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !validator.isUnit(value2)) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  } else if (validator.isUnit(value1) && !validator.isUnit(value2)) {
-    return false;
-  } else if (validator.isUnit(value2)) {
-    return true;
-  } else if (validator.isUnit(value1)) {
-    return false;
-  } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {
-    return true;
-  }
-
-  return sameFunctionOrValue(validator, value1, value2);
-}
-
-function unitOrKeywordWithGlobal(propertyName) {
-  var byKeyword = keywordWithGlobal(propertyName);
-
-  return function(validator, value1, value2) {
-    return unit(validator, value1, value2) || byKeyword(validator, value1, value2);
-  };
-}
-
-function unitOrNumber(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !(validator.isUnit(value2) || validator.isNumber(value2))) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  } else if ((validator.isUnit(value1) || validator.isNumber(value1)) && !(validator.isUnit(value2) || validator.isNumber(value2))) {
-    return false;
-  } else if (validator.isUnit(value2) || validator.isNumber(value2)) {
-    return true;
-  } else if (validator.isUnit(value1) || validator.isNumber(value1)) {
-    return false;
-  } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {
-    return true;
-  }
-
-  return sameFunctionOrValue(validator, value1, value2);
-}
-
-function zIndex(validator, value1, value2) {
-  if (!understandable(validator, value1, value2, 0, true) && !validator.isZIndex(value2)) {
-    return false;
-  } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
-    return true;
-  }
-
-  return validator.isZIndex(value2);
-}
-
-module.exports = {
-  generic: {
-    color: color,
-    components: components,
-    image: image,
-    propertyName: propertyName,
-    time: time,
-    timingFunction: timingFunction,
-    unit: unit,
-    unitOrNumber: unitOrNumber
-  },
-  property: {
-    animationDirection: keywordWithGlobal('animation-direction'),
-    animationFillMode: keyword('animation-fill-mode'),
-    animationIterationCount: animationIterationCount,
-    animationName: animationName,
-    animationPlayState: keywordWithGlobal('animation-play-state'),
-    backgroundAttachment: keyword('background-attachment'),
-    backgroundClip: keywordWithGlobal('background-clip'),
-    backgroundOrigin: keyword('background-origin'),
-    backgroundPosition: backgroundPosition,
-    backgroundRepeat: keyword('background-repeat'),
-    backgroundSize: backgroundSize,
-    bottom: unitOrKeywordWithGlobal('bottom'),
-    borderCollapse: keyword('border-collapse'),
-    borderStyle: keywordWithGlobal('*-style'),
-    clear: keywordWithGlobal('clear'),
-    cursor: keywordWithGlobal('cursor'),
-    display: keywordWithGlobal('display'),
-    float: keywordWithGlobal('float'),
-    left: unitOrKeywordWithGlobal('left'),
-    fontFamily: fontFamily,
-    fontStretch: keywordWithGlobal('font-stretch'),
-    fontStyle: keywordWithGlobal('font-style'),
-    fontVariant: keywordWithGlobal('font-variant'),
-    fontWeight: keywordWithGlobal('font-weight'),
-    listStyleType: keywordWithGlobal('list-style-type'),
-    listStylePosition: keywordWithGlobal('list-style-position'),
-    outlineStyle: keywordWithGlobal('*-style'),
-    overflow: keywordWithGlobal('overflow'),
-    position: keywordWithGlobal('position'),
-    right: unitOrKeywordWithGlobal('right'),
-    textAlign: keywordWithGlobal('text-align'),
-    textDecoration: keywordWithGlobal('text-decoration'),
-    textOverflow: keywordWithGlobal('text-overflow'),
-    textShadow: textShadow,
-    top: unitOrKeywordWithGlobal('top'),
-    transform: sameFunctionOrValue,
-    verticalAlign: unitOrKeywordWithGlobal('vertical-align'),
-    visibility: keywordWithGlobal('visibility'),
-    whiteSpace: keywordWithGlobal('white-space'),
-    zIndex: zIndex
-  }
-};
-
-},{"./properties/understandable":40}],20:[function(require,module,exports){
-var wrapSingle = require('../wrap-for-optimizing').single;
-
-var Token = require('../../tokenizer/token');
-
-function deep(property) {
-  var cloned = shallow(property);
-  for (var i = property.components.length - 1; i >= 0; i--) {
-    var component = shallow(property.components[i]);
-    component.value = property.components[i].value.slice(0);
-    cloned.components.unshift(component);
-  }
-
-  cloned.dirty = true;
-  cloned.value = property.value.slice(0);
-
-  return cloned;
-}
-
-function shallow(property) {
-  var cloned = wrapSingle([
-    Token.PROPERTY,
-    [Token.PROPERTY_NAME, property.name]
-  ]);
-  cloned.important = property.important;
-  cloned.hack = property.hack;
-  cloned.unused = false;
-  return cloned;
-}
-
-module.exports = {
-  deep: deep,
-  shallow: shallow
-};
-
-},{"../../tokenizer/token":84,"../wrap-for-optimizing":58}],21:[function(require,module,exports){
-// Contains the interpretation of CSS properties, as used by the property optimizer
-
-var breakUp = require('./break-up');
-var canOverride = require('./can-override');
-var restore = require('./restore');
-
-var override = require('../../utils/override');
+var override = require('../../utils/override');
 
 // Properties to process
 // Extend this object in order to add support for more properties in the optimizer.
@@ -5454,7 +3473,7 @@ for (var propertyName in compactable) {
 
 module.exports = override(compactable, vendorPrefixedCompactable);
 
-},{"../../utils/override":95,"./break-up":18,"./can-override":19,"./restore":49}],22:[function(require,module,exports){
+},{"../../utils/override":90,"./break-up":13,"./can-override":14,"./restore":44}],17:[function(require,module,exports){
 // This extractor is used in level 2 optimizations
 // IMPORTANT: Mind Token class and this code is not related!
 // Properties will be tokenized in one step, see #429
@@ -5529,7 +3548,7 @@ function findNameRoot(name) {
 
 module.exports = extractProperties;
 
-},{"../../tokenizer/token":84,"../../writer/one-time":98}],23:[function(require,module,exports){
+},{"../../tokenizer/token":79,"../../writer/one-time":93}],18:[function(require,module,exports){
 function InvalidPropertyError(message) {
   this.name = 'InvalidPropertyError';
   this.message = message;
@@ -5541,7 +3560,7 @@ InvalidPropertyError.prototype.constructor = InvalidPropertyError;
 
 module.exports = InvalidPropertyError;
 
-},{}],24:[function(require,module,exports){
+},{}],19:[function(require,module,exports){
 var Marker = require('../../tokenizer/marker');
 var split = require('../../utils/split');
 
@@ -5802,7 +3821,7 @@ function isPseudoElement(pseudo) {
 
 module.exports = isMergeable;
 
-},{"../../tokenizer/marker":83,"../../utils/split":96}],25:[function(require,module,exports){
+},{"../../tokenizer/marker":78,"../../utils/split":91}],20:[function(require,module,exports){
 var isMergeable = require('./is-mergeable');
 
 var optimizeProperties = require('./properties/optimize');
@@ -5854,7 +3873,7 @@ function mergeAdjacent(tokens, context) {
 
 module.exports = mergeAdjacent;
 
-},{"../../options/optimization-level":65,"../../tokenizer/token":84,"../../writer/one-time":98,"../level-1/sort-selectors":14,"../level-1/tidy-rules":17,"./is-mergeable":24,"./properties/optimize":36}],26:[function(require,module,exports){
+},{"../../options/optimization-level":60,"../../tokenizer/token":79,"../../writer/one-time":93,"../level-1/sort-selectors":9,"../level-1/tidy-rules":12,"./is-mergeable":19,"./properties/optimize":31}],21:[function(require,module,exports){
 var canReorder = require('./reorderable').canReorder;
 var canReorderSingle = require('./reorderable').canReorderSingle;
 var extractProperties = require('./extract-properties');
@@ -5959,7 +3978,7 @@ function allSameRulePropertiesCanBeReordered(movedProperties, traversedPropertie
 
 module.exports = mergeMediaQueries;
 
-},{"../../options/optimization-level":65,"../../tokenizer/token":84,"../../writer/one-time":98,"./extract-properties":22,"./reorderable":47,"./rules-overlap":51}],27:[function(require,module,exports){
+},{"../../options/optimization-level":60,"../../tokenizer/token":79,"../../writer/one-time":93,"./extract-properties":17,"./reorderable":42,"./rules-overlap":46}],22:[function(require,module,exports){
 var isMergeable = require('./is-mergeable');
 
 var sortSelectors = require('../level-1/sort-selectors');
@@ -6041,7 +4060,7 @@ function mergeNonAdjacentByBody(tokens, context) {
 
 module.exports = mergeNonAdjacentByBody;
 
-},{"../../options/optimization-level":65,"../../tokenizer/token":84,"../../writer/one-time":98,"../level-1/sort-selectors":14,"../level-1/tidy-rules":17,"./is-mergeable":24}],28:[function(require,module,exports){
+},{"../../options/optimization-level":60,"../../tokenizer/token":79,"../../writer/one-time":93,"../level-1/sort-selectors":9,"../level-1/tidy-rules":12,"./is-mergeable":19}],23:[function(require,module,exports){
 var canReorder = require('./reorderable').canReorder;
 var extractProperties = require('./extract-properties');
 
@@ -6121,7 +4140,7 @@ function mergeNonAdjacentBySelector(tokens, context) {
 
 module.exports = mergeNonAdjacentBySelector;
 
-},{"../../tokenizer/token":84,"../../writer/one-time":98,"./extract-properties":22,"./properties/optimize":36,"./reorderable":47}],29:[function(require,module,exports){
+},{"../../tokenizer/token":79,"../../writer/one-time":93,"./extract-properties":17,"./properties/optimize":31,"./reorderable":42}],24:[function(require,module,exports){
 var mergeAdjacent = require('./merge-adjacent');
 var mergeMediaQueries = require('./merge-media-queries');
 var mergeNonAdjacentByBody = require('./merge-non-adjacent-by-body');
@@ -6257,7 +4276,7 @@ function level2Optimize(tokens, context, withRestructuring) {
 
 module.exports = level2Optimize;
 
-},{"../../options/optimization-level":65,"../../tokenizer/token":84,"./merge-adjacent":25,"./merge-media-queries":26,"./merge-non-adjacent-by-body":27,"./merge-non-adjacent-by-selector":28,"./properties/optimize":36,"./reduce-non-adjacent":42,"./remove-duplicate-font-at-rules":43,"./remove-duplicate-media-queries":44,"./remove-duplicates":45,"./remove-unused-at-rules":46,"./restructure":50}],30:[function(require,module,exports){
+},{"../../options/optimization-level":60,"../../tokenizer/token":79,"./merge-adjacent":20,"./merge-media-queries":21,"./merge-non-adjacent-by-body":22,"./merge-non-adjacent-by-selector":23,"./properties/optimize":31,"./reduce-non-adjacent":37,"./remove-duplicate-font-at-rules":38,"./remove-duplicate-media-queries":39,"./remove-duplicates":40,"./remove-unused-at-rules":41,"./restructure":45}],25:[function(require,module,exports){
 var Marker = require('../../../tokenizer/marker');
 
 function everyValuesPair(fn, left, right) {
@@ -6287,7 +4306,7 @@ function everyValuesPair(fn, left, right) {
 
 module.exports = everyValuesPair;
 
-},{"../../../tokenizer/marker":83}],31:[function(require,module,exports){
+},{"../../../tokenizer/marker":78}],26:[function(require,module,exports){
 var compactable = require('../compactable');
 
 function findComponentIn(shorthand, longhand) {
@@ -6329,7 +4348,7 @@ function findInSubComponents(shorthand, comparator) {
 
 module.exports = findComponentIn;
 
-},{"../compactable":21}],32:[function(require,module,exports){
+},{"../compactable":16}],27:[function(require,module,exports){
 function hasInherit(property) {
   for (var i = property.value.length - 1; i >= 0; i--) {
     if (property.value[i][1] == 'inherit')
@@ -6341,7 +4360,7 @@ function hasInherit(property) {
 
 module.exports = hasInherit;
 
-},{}],33:[function(require,module,exports){
+},{}],28:[function(require,module,exports){
 var compactable = require('../compactable');
 
 function isComponentOf(property1, property2, shallow) {
@@ -6365,7 +4384,7 @@ function isSubComponentOf(property1, property2) {
 
 module.exports = isComponentOf;
 
-},{"../compactable":21}],34:[function(require,module,exports){
+},{"../compactable":16}],29:[function(require,module,exports){
 var Marker = require('../../../tokenizer/marker');
 
 function isMergeableShorthand(shorthand) {
@@ -6378,7 +4397,7 @@ function isMergeableShorthand(shorthand) {
 
 module.exports = isMergeableShorthand;
 
-},{"../../../tokenizer/marker":83}],35:[function(require,module,exports){
+},{"../../../tokenizer/marker":78}],30:[function(require,module,exports){
 var everyValuesPair = require('./every-values-pair');
 var hasInherit = require('./has-inherit');
 var populateComponents = require('./populate-components');
@@ -6825,7 +4844,7 @@ function replaceWithShorthand(properties, candidateComponents, shorthandName, va
 
 module.exports = mergeIntoShorthands;
 
-},{"../../../tokenizer/token":84,"../../../writer/one-time":98,"../../restore-from-optimizing":56,"../../wrap-for-optimizing":58,"../clone":20,"../compactable":21,"../restore-with-components":48,"./every-values-pair":30,"./has-inherit":32,"./populate-components":39}],36:[function(require,module,exports){
+},{"../../../tokenizer/token":79,"../../../writer/one-time":93,"../../restore-from-optimizing":51,"../../wrap-for-optimizing":53,"../clone":15,"../compactable":16,"../restore-with-components":43,"./every-values-pair":25,"./has-inherit":27,"./populate-components":34}],31:[function(require,module,exports){
 var mergeIntoShorthands = require('./merge-into-shorthands');
 var overrideProperties = require('./override-properties');
 var populateComponents = require('./populate-components');
@@ -6867,7 +4886,7 @@ function optimizeProperties(properties, withOverriding, withMerging, context) {
 
 module.exports = optimizeProperties;
 
-},{"../../../options/optimization-level":65,"../../remove-unused":55,"../../restore-from-optimizing":56,"../../wrap-for-optimizing":58,"../restore-with-components":48,"./merge-into-shorthands":35,"./override-properties":37,"./populate-components":39}],37:[function(require,module,exports){
+},{"../../../options/optimization-level":60,"../../remove-unused":50,"../../restore-from-optimizing":51,"../../wrap-for-optimizing":53,"../restore-with-components":43,"./merge-into-shorthands":30,"./override-properties":32,"./populate-components":34}],32:[function(require,module,exports){
 var hasInherit = require('./has-inherit');
 var everyValuesPair = require('./every-values-pair');
 var findComponentIn = require('./find-component-in');
@@ -7353,7 +5372,7 @@ function overrideProperties(properties, withMerging, compatibility, validator) {
 
 module.exports = overrideProperties;
 
-},{"../../../tokenizer/marker":83,"../../../tokenizer/token":84,"../../../writer/one-time":98,"../../restore-from-optimizing":56,"../clone":20,"../compactable":21,"../restore-with-components":48,"./every-values-pair":30,"./find-component-in":31,"./has-inherit":32,"./is-component-of":33,"./is-mergeable-shorthand":34,"./overrides-non-component-shorthand":38,"./vendor-prefixes":41}],38:[function(require,module,exports){
+},{"../../../tokenizer/marker":78,"../../../tokenizer/token":79,"../../../writer/one-time":93,"../../restore-from-optimizing":51,"../clone":15,"../compactable":16,"../restore-with-components":43,"./every-values-pair":25,"./find-component-in":26,"./has-inherit":27,"./is-component-of":28,"./is-mergeable-shorthand":29,"./overrides-non-component-shorthand":33,"./vendor-prefixes":36}],33:[function(require,module,exports){
 var compactable = require('../compactable');
 
 function overridesNonComponentShorthand(property1, property2) {
@@ -7364,7 +5383,7 @@ function overridesNonComponentShorthand(property1, property2) {
 
 module.exports = overridesNonComponentShorthand;
 
-},{"../compactable":21}],39:[function(require,module,exports){
+},{"../compactable":16}],34:[function(require,module,exports){
 var compactable = require('../compactable');
 var InvalidPropertyError = require('../invalid-property-error');
 
@@ -7408,7 +5427,7 @@ function populateComponents(properties, validator, warnings) {
 
 module.exports = populateComponents;
 
-},{"../compactable":21,"../invalid-property-error":23}],40:[function(require,module,exports){
+},{"../compactable":16,"../invalid-property-error":18}],35:[function(require,module,exports){
 var sameVendorPrefixes = require('./vendor-prefixes').same;
 
 function understandable(validator, value1, value2, _position, isPaired) {
@@ -7425,7 +5444,7 @@ function understandable(validator, value1, value2, _position, isPaired) {
 
 module.exports = understandable;
 
-},{"./vendor-prefixes":41}],41:[function(require,module,exports){
+},{"./vendor-prefixes":36}],36:[function(require,module,exports){
 var VENDOR_PREFIX_PATTERN = /(?:^|\W)(\-\w+\-)/g;
 
 function unique(value) {
@@ -7450,7 +5469,7 @@ module.exports = {
   same: same
 };
 
-},{}],42:[function(require,module,exports){
+},{}],37:[function(require,module,exports){
 var isMergeable = require('./is-mergeable');
 
 var optimizeProperties = require('./properties/optimize');
@@ -7632,7 +5651,7 @@ function reduceSelector(tokens, data, context, options, outerContext) {
 
 module.exports = reduceNonAdjacent;
 
-},{"../../tokenizer/token":84,"../../utils/clone-array":86,"../../writer/one-time":98,"./is-mergeable":24,"./properties/optimize":36}],43:[function(require,module,exports){
+},{"../../tokenizer/token":79,"../../utils/clone-array":81,"../../writer/one-time":93,"./is-mergeable":19,"./properties/optimize":31}],38:[function(require,module,exports){
 var Token = require('../../tokenizer/token');
 
 var serializeAll = require('../../writer/one-time').all;
@@ -7664,7 +5683,7 @@ function removeDuplicateFontAtRules(tokens) {
 
 module.exports = removeDuplicateFontAtRules;
 
-},{"../../tokenizer/token":84,"../../writer/one-time":98}],44:[function(require,module,exports){
+},{"../../tokenizer/token":79,"../../writer/one-time":93}],39:[function(require,module,exports){
 var Token = require('../../tokenizer/token');
 
 var serializeAll = require('../../writer/one-time').all;
@@ -7696,7 +5715,7 @@ function removeDuplicateMediaQueries(tokens) {
 
 module.exports = removeDuplicateMediaQueries;
 
-},{"../../tokenizer/token":84,"../../writer/one-time":98}],45:[function(require,module,exports){
+},{"../../tokenizer/token":79,"../../writer/one-time":93}],40:[function(require,module,exports){
 var Token = require('../../tokenizer/token');
 
 var serializeBody = require('../../writer/one-time').body;
@@ -7741,7 +5760,7 @@ function removeDuplicates(tokens) {
 
 module.exports = removeDuplicates;
 
-},{"../../tokenizer/token":84,"../../writer/one-time":98}],46:[function(require,module,exports){
+},{"../../tokenizer/token":79,"../../writer/one-time":93}],41:[function(require,module,exports){
 var populateComponents = require('./properties/populate-components');
 
 var wrapForOptimizing = require('../wrap-for-optimizing').single;
@@ -7992,7 +6011,7 @@ function markNamespacesAsUsed(atRules) {
 
 module.exports = removeUnusedAtRules;
 
-},{"../../tokenizer/token":84,"../restore-from-optimizing":56,"../wrap-for-optimizing":58,"./properties/populate-components":39}],47:[function(require,module,exports){
+},{"../../tokenizer/token":79,"../restore-from-optimizing":51,"../wrap-for-optimizing":53,"./properties/populate-components":34}],42:[function(require,module,exports){
 // TODO: it'd be great to merge it with the other canReorder functionality
 
 var rulesOverlap = require('./rules-overlap');
@@ -8087,7 +6106,7 @@ module.exports = {
   canReorderSingle: canReorderSingle
 };
 
-},{"./rules-overlap":51,"./specificities-overlap":52}],48:[function(require,module,exports){
+},{"./rules-overlap":46,"./specificities-overlap":47}],43:[function(require,module,exports){
 var compactable = require('./compactable');
 
 function restoreWithComponents(property) {
@@ -8102,7 +6121,7 @@ function restoreWithComponents(property) {
 
 module.exports = restoreWithComponents;
 
-},{"./compactable":21}],49:[function(require,module,exports){
+},{"./compactable":16}],44:[function(require,module,exports){
 var shallowClone = require('./clone').shallow;
 
 var Token = require('../../tokenizer/token');
@@ -8407,7 +6426,7 @@ module.exports = {
   withoutDefaults: withoutDefaults
 };
 
-},{"../../tokenizer/marker":83,"../../tokenizer/token":84,"./clone":20}],50:[function(require,module,exports){
+},{"../../tokenizer/marker":78,"../../tokenizer/token":79,"./clone":15}],45:[function(require,module,exports){
 var canReorderSingle = require('./reorderable').canReorderSingle;
 var extractProperties = require('./extract-properties');
 var isMergeable = require('./is-mergeable');
@@ -8798,7 +6817,7 @@ function restructure(tokens, context) {
 
 module.exports = restructure;
 
-},{"../../tokenizer/token":84,"../../utils/clone-array":86,"../../writer/one-time":98,"./extract-properties":22,"./is-mergeable":24,"./reorderable":47,"./tidy-rule-duplicates":54}],51:[function(require,module,exports){
+},{"../../tokenizer/token":79,"../../utils/clone-array":81,"../../writer/one-time":93,"./extract-properties":17,"./is-mergeable":19,"./reorderable":42,"./tidy-rule-duplicates":49}],46:[function(require,module,exports){
 var MODIFIER_PATTERN = /\-\-.+$/;
 
 function rulesOverlap(rule1, rule2, bemMode) {
@@ -8832,7 +6851,7 @@ function withoutModifiers(scope) {
 
 module.exports = rulesOverlap;
 
-},{}],52:[function(require,module,exports){
+},{}],47:[function(require,module,exports){
 var specificity = require('./specificity');
 
 function specificitiesOverlap(selector1, selector2, cache) {
@@ -8868,7 +6887,7 @@ function findSpecificity(selector, cache) {
 
 module.exports = specificitiesOverlap;
 
-},{"./specificity":53}],53:[function(require,module,exports){
+},{"./specificity":48}],48:[function(require,module,exports){
 var Marker = require('../../tokenizer/marker');
 
 var Selector = {
@@ -8947,7 +6966,7 @@ function isNotPseudoClass(selector, index) {
 
 module.exports = specificity;
 
-},{"../../tokenizer/marker":83}],54:[function(require,module,exports){
+},{"../../tokenizer/marker":78}],49:[function(require,module,exports){
 function ruleSorter(s1, s2) {
   return s1[1] > s2[1] ? 1 : -1;
 }
@@ -8970,7 +6989,7 @@ function tidyRuleDuplicates(rules) {
 
 module.exports = tidyRuleDuplicates;
 
-},{}],55:[function(require,module,exports){
+},{}],50:[function(require,module,exports){
 function removeUnused(properties) {
   for (var i = properties.length - 1; i >= 0; i--) {
     var property = properties[i];
@@ -8983,7 +7002,7 @@ function removeUnused(properties) {
 
 module.exports = removeUnused;
 
-},{}],56:[function(require,module,exports){
+},{}],51:[function(require,module,exports){
 var Hack = require('./hack');
 
 var Marker = require('../tokenizer/marker');
@@ -9054,7 +7073,7 @@ function restoreHack(property) {
 
 module.exports = restoreFromOptimizing;
 
-},{"../tokenizer/marker":83,"./hack":8}],57:[function(require,module,exports){
+},{"../tokenizer/marker":78,"./hack":3}],52:[function(require,module,exports){
 var functionNoVendorRegexStr = '[A-Z]+(\\-|[A-Z]|[0-9])+\\(.*?\\)';
 var functionVendorRegexStr = '\\-(\\-|[A-Z]|[0-9])+\\(.*?\\)';
 var variableRegexStr = 'var\\(\\-\\-[^\\)]+\\)';
@@ -9383,6380 +7402,9372 @@ var Keywords = {
   ]
 };
 
-var Units = [
-  '%',
-  'ch',
-  'cm',
-  'em',
-  'ex',
-  'in',
-  'mm',
-  'pc',
-  'pt',
-  'px',
-  'rem',
-  'vh',
-  'vm',
-  'vmax',
-  'vmin',
-  'vw'
-];
+var Units = [
+  '%',
+  'ch',
+  'cm',
+  'em',
+  'ex',
+  'in',
+  'mm',
+  'pc',
+  'pt',
+  'px',
+  'rem',
+  'vh',
+  'vm',
+  'vmax',
+  'vmin',
+  'vw'
+];
+
+function isColor(value) {
+  return value != 'auto' &&
+    (
+      isKeyword('color')(value) ||
+      isHexColor(value) ||
+      isColorFunction(value) ||
+      isNamedEntity(value)
+    );
+}
+
+function isColorFunction(value) {
+  return isRgbColor(value) || isHslColor(value);
+}
+
+function isDynamicUnit(value) {
+  return calcRegex.test(value);
+}
+
+function isFunction(value) {
+  return functionAnyRegex.test(value);
+}
+
+function isHexColor(value) {
+  return threeValueColorRegex.test(value) || fourValueColorRegex.test(value) || sixValueColorRegex.test(value) || eightValueColorRegex.test(value);
+}
+
+function isHslColor(value) {
+  return hslColorRegex.test(value);
+}
+
+function isIdentifier(value) {
+  return identifierRegex.test(value);
+}
+
+function isImage(value) {
+  return value == 'none' || value == 'inherit' || isUrl(value);
+}
+
+function isKeyword(propertyName) {
+  return function(value) {
+    return Keywords[propertyName].indexOf(value) > -1;
+  };
+}
+
+function isNamedEntity(value) {
+  return namedEntityRegex.test(value);
+}
+
+function isNumber(value) {
+  return scanForNumber(value) == value.length;
+}
+
+function isRgbColor(value) {
+  return rgbColorRegex.test(value);
+}
+
+function isPrefixed(value) {
+  return prefixRegex.test(value);
+}
+
+function isPositiveNumber(value) {
+  return isNumber(value) &&
+    parseFloat(value) >= 0;
+}
+
+function isVariable(value) {
+  return variableRegex.test(value);
+}
+
+function isTime(value) {
+  var numberUpTo = scanForNumber(value);
+
+  return numberUpTo == value.length && parseInt(value) === 0 ||
+    numberUpTo > -1 && validTimeUnits.indexOf(value.slice(numberUpTo + 1)) > -1;
+}
+
+function isTimingFunction() {
+  var isTimingFunctionKeyword = isKeyword('*-timing-function');
+
+  return function (value) {
+    return isTimingFunctionKeyword(value) || timingFunctionRegex.test(value);
+  };
+}
+
+function isUnit(validUnits, value) {
+  var numberUpTo = scanForNumber(value);
+
+  return numberUpTo == value.length && parseInt(value) === 0 ||
+    numberUpTo > -1 && validUnits.indexOf(value.slice(numberUpTo + 1)) > -1 ||
+    value == 'auto' ||
+    value == 'inherit';
+}
+
+function isUrl(value) {
+  return urlRegex.test(value);
+}
+
+function isZIndex(value) {
+  return value == 'auto' ||
+    isNumber(value) ||
+    isKeyword('^')(value);
+}
+
+function scanForNumber(value) {
+  var hasDot = false;
+  var hasSign = false;
+  var character;
+  var i, l;
+
+  for (i = 0, l = value.length; i < l; i++) {
+    character = value[i];
+
+    if (i === 0 && (character == PLUS_SIGN || character == MINUS_SIGN)) {
+      hasSign = true;
+    } else if (i > 0 && hasSign && (character == PLUS_SIGN || character == MINUS_SIGN)) {
+      return i - 1;
+    } else if (character == DECIMAL_DOT && !hasDot) {
+      hasDot = true;
+    } else if (character == DECIMAL_DOT && hasDot) {
+      return i - 1;
+    } else if (decimalRegex.test(character)) {
+      continue;
+    } else {
+      return i - 1;
+    }
+  }
+
+  return i;
+}
+
+function validator(compatibility) {
+  var validUnits = Units.slice(0).filter(function (value) {
+    return !(value in compatibility.units) || compatibility.units[value] === true;
+  });
+
+  return {
+    colorOpacity: compatibility.colors.opacity,
+    isAnimationDirectionKeyword: isKeyword('animation-direction'),
+    isAnimationFillModeKeyword: isKeyword('animation-fill-mode'),
+    isAnimationIterationCountKeyword: isKeyword('animation-iteration-count'),
+    isAnimationNameKeyword: isKeyword('animation-name'),
+    isAnimationPlayStateKeyword: isKeyword('animation-play-state'),
+    isTimingFunction: isTimingFunction(),
+    isBackgroundAttachmentKeyword: isKeyword('background-attachment'),
+    isBackgroundClipKeyword: isKeyword('background-clip'),
+    isBackgroundOriginKeyword: isKeyword('background-origin'),
+    isBackgroundPositionKeyword: isKeyword('background-position'),
+    isBackgroundRepeatKeyword: isKeyword('background-repeat'),
+    isBackgroundSizeKeyword: isKeyword('background-size'),
+    isColor: isColor,
+    isColorFunction: isColorFunction,
+    isDynamicUnit: isDynamicUnit,
+    isFontKeyword: isKeyword('font'),
+    isFontSizeKeyword: isKeyword('font-size'),
+    isFontStretchKeyword: isKeyword('font-stretch'),
+    isFontStyleKeyword: isKeyword('font-style'),
+    isFontVariantKeyword: isKeyword('font-variant'),
+    isFontWeightKeyword: isKeyword('font-weight'),
+    isFunction: isFunction,
+    isGlobal: isKeyword('^'),
+    isHslColor: isHslColor,
+    isIdentifier: isIdentifier,
+    isImage: isImage,
+    isKeyword: isKeyword,
+    isLineHeightKeyword: isKeyword('line-height'),
+    isListStylePositionKeyword: isKeyword('list-style-position'),
+    isListStyleTypeKeyword: isKeyword('list-style-type'),
+    isNumber: isNumber,
+    isPrefixed: isPrefixed,
+    isPositiveNumber: isPositiveNumber,
+    isRgbColor: isRgbColor,
+    isStyleKeyword: isKeyword('*-style'),
+    isTime: isTime,
+    isUnit: isUnit.bind(null, validUnits),
+    isUrl: isUrl,
+    isVariable: isVariable,
+    isWidth: isKeyword('width'),
+    isZIndex: isZIndex
+  };
+}
+
+module.exports = validator;
+
+},{}],53:[function(require,module,exports){
+var Hack = require('./hack');
+
+var Marker = require('../tokenizer/marker');
+var Token = require('../tokenizer/token');
+
+var Match = {
+  ASTERISK: '*',
+  BACKSLASH: '\\',
+  BANG: '!',
+  BANG_SUFFIX_PATTERN: /!\w+$/,
+  IMPORTANT_TOKEN: '!important',
+  IMPORTANT_TOKEN_PATTERN: new RegExp('!important$', 'i'),
+  IMPORTANT_WORD: 'important',
+  IMPORTANT_WORD_PATTERN: new RegExp('important$', 'i'),
+  SUFFIX_BANG_PATTERN: /!$/,
+  UNDERSCORE: '_',
+  VARIABLE_REFERENCE_PATTERN: /var\(--.+\)$/
+};
+
+function wrapAll(properties, includeVariable, skipProperties) {
+  var wrapped = [];
+  var single;
+  var property;
+  var i;
+
+  for (i = properties.length - 1; i >= 0; i--) {
+    property = properties[i];
+
+    if (property[0] != Token.PROPERTY) {
+      continue;
+    }
+
+    if (!includeVariable && someVariableReferences(property)) {
+      continue;
+    }
+
+    if (skipProperties && skipProperties.indexOf(property[1][1]) > -1) {
+      continue;
+    }
+
+    single = wrapSingle(property);
+    single.all = properties;
+    single.position = i;
+    wrapped.unshift(single);
+  }
+
+  return wrapped;
+}
+
+function someVariableReferences(property) {
+  var i, l;
+  var value;
+
+  // skipping `property` and property name tokens
+  for (i = 2, l = property.length; i < l; i++) {
+    value = property[i];
+
+    if (value[0] != Token.PROPERTY_VALUE) {
+      continue;
+    }
+
+    if (isVariableReference(value[1])) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
+function isVariableReference(value) {
+  return Match.VARIABLE_REFERENCE_PATTERN.test(value);
+}
+
+function isMultiplex(property) {
+  var value;
+  var i, l;
+
+  for (i = 3, l = property.length; i < l; i++) {
+    value = property[i];
+
+    if (value[0] == Token.PROPERTY_VALUE && (value[1] == Marker.COMMA || value[1] == Marker.FORWARD_SLASH)) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
+function hackFrom(property) {
+  var match = false;
+  var name = property[1][1];
+  var lastValue = property[property.length - 1];
+
+  if (name[0] == Match.UNDERSCORE) {
+    match = [Hack.UNDERSCORE];
+  } else if (name[0] == Match.ASTERISK) {
+    match = [Hack.ASTERISK];
+  } else if (lastValue[1][0] == Match.BANG && !lastValue[1].match(Match.IMPORTANT_WORD_PATTERN)) {
+    match = [Hack.BANG];
+  } else if (lastValue[1].indexOf(Match.BANG) > 0 && !lastValue[1].match(Match.IMPORTANT_WORD_PATTERN) && Match.BANG_SUFFIX_PATTERN.test(lastValue[1])) {
+    match = [Hack.BANG];
+  } else if (lastValue[1].indexOf(Match.BACKSLASH) > 0 && lastValue[1].indexOf(Match.BACKSLASH) == lastValue[1].length - Match.BACKSLASH.length - 1) {
+    match = [Hack.BACKSLASH, lastValue[1].substring(lastValue[1].indexOf(Match.BACKSLASH) + 1)];
+  } else if (lastValue[1].indexOf(Match.BACKSLASH) === 0 && lastValue[1].length == 2) {
+    match = [Hack.BACKSLASH, lastValue[1].substring(1)];
+  }
+
+  return match;
+}
+
+function isImportant(property) {
+  if (property.length < 3)
+    return false;
+
+  var lastValue = property[property.length - 1];
+  if (Match.IMPORTANT_TOKEN_PATTERN.test(lastValue[1])) {
+    return true;
+  } else if (Match.IMPORTANT_WORD_PATTERN.test(lastValue[1]) && Match.SUFFIX_BANG_PATTERN.test(property[property.length - 2][1])) {
+    return true;
+  }
+
+  return false;
+}
+
+function stripImportant(property) {
+  var lastValue = property[property.length - 1];
+  var oneButLastValue = property[property.length - 2];
+
+  if (Match.IMPORTANT_TOKEN_PATTERN.test(lastValue[1])) {
+    lastValue[1] = lastValue[1].replace(Match.IMPORTANT_TOKEN_PATTERN, '');
+  } else {
+    lastValue[1] = lastValue[1].replace(Match.IMPORTANT_WORD_PATTERN, '');
+    oneButLastValue[1] = oneButLastValue[1].replace(Match.SUFFIX_BANG_PATTERN, '');
+  }
+
+  if (lastValue[1].length === 0) {
+    property.pop();
+  }
+
+  if (oneButLastValue[1].length === 0) {
+    property.pop();
+  }
+}
+
+function stripPrefixHack(property) {
+  property[1][1] = property[1][1].substring(1);
+}
+
+function stripSuffixHack(property, hackFrom) {
+  var lastValue = property[property.length - 1];
+  lastValue[1] = lastValue[1]
+    .substring(0, lastValue[1].indexOf(hackFrom[0] == Hack.BACKSLASH ? Match.BACKSLASH : Match.BANG))
+    .trim();
+
+  if (lastValue[1].length === 0) {
+    property.pop();
+  }
+}
+
+function wrapSingle(property) {
+  var importantProperty = isImportant(property);
+  if (importantProperty) {
+    stripImportant(property);
+  }
+
+  var whichHack = hackFrom(property);
+  if (whichHack[0] == Hack.ASTERISK || whichHack[0] == Hack.UNDERSCORE) {
+    stripPrefixHack(property);
+  } else if (whichHack[0] == Hack.BACKSLASH || whichHack[0] == Hack.BANG) {
+    stripSuffixHack(property, whichHack);
+  }
+
+  return {
+    block: property[2] && property[2][0] == Token.PROPERTY_BLOCK,
+    components: [],
+    dirty: false,
+    hack: whichHack,
+    important: importantProperty,
+    name: property[1][1],
+    multiplex: property.length > 3 ? isMultiplex(property) : false,
+    position: 0,
+    shorthand: false,
+    unused: false,
+    value: property.slice(2)
+  };
+}
+
+module.exports = {
+  all: wrapAll,
+  single: wrapSingle
+};
+
+},{"../tokenizer/marker":78,"../tokenizer/token":79,"./hack":3}],54:[function(require,module,exports){
+var DEFAULTS = {
+  '*': {
+    colors: {
+      opacity: true // rgba / hsla
+    },
+    properties: {
+      backgroundClipMerging: true, // background-clip to shorthand
+      backgroundOriginMerging: true, // background-origin to shorthand
+      backgroundSizeMerging: true, // background-size to shorthand
+      colors: true, // any kind of color transformations, like `#ff00ff` to `#f0f` or `#fff` into `red`
+      ieBangHack: false, // !ie suffix hacks on IE<8
+      ieFilters: false, // whether to preserve `filter` and `-ms-filter` properties
+      iePrefixHack: false, // underscore / asterisk prefix hacks on IE
+      ieSuffixHack: false, // \9 suffix hacks on IE6-9
+      merging: true, // merging properties into one
+      shorterLengthUnits: false, // optimize pixel units into `pt`, `pc` or `in` units
+      spaceAfterClosingBrace: true, // 'url() no-repeat' to 'url()no-repeat'
+      urlQuotes: false, // whether to wrap content of `url()` into quotes or not
+      zeroUnits: true // 0[unit] -> 0
+    },
+    selectors: {
+      adjacentSpace: false, // div+ nav Android stock browser hack
+      ie7Hack: false, // *+html hack
+      mergeablePseudoClasses: [
+        ':active',
+        ':after',
+        ':before',
+        ':empty',
+        ':checked',
+        ':disabled',
+        ':empty',
+        ':enabled',
+        ':first-child',
+        ':first-letter',
+        ':first-line',
+        ':first-of-type',
+        ':focus',
+        ':hover',
+        ':lang',
+        ':last-child',
+        ':last-of-type',
+        ':link',
+        ':not',
+        ':nth-child',
+        ':nth-last-child',
+        ':nth-last-of-type',
+        ':nth-of-type',
+        ':only-child',
+        ':only-of-type',
+        ':root',
+        ':target',
+        ':visited'
+      ], // selectors with these pseudo-classes can be merged as these are universally supported
+      mergeablePseudoElements: [
+        '::after',
+        '::before',
+        '::first-letter',
+        '::first-line'
+      ], // selectors with these pseudo-elements can be merged as these are universally supported
+      mergeLimit: 8191, // number of rules that can be safely merged together
+      multiplePseudoMerging: true
+    },
+    units: {
+      ch: true,
+      in: true,
+      pc: true,
+      pt: true,
+      rem: true,
+      vh: true,
+      vm: true, // vm is vmin on IE9+ see https://developer.mozilla.org/en-US/docs/Web/CSS/length
+      vmax: true,
+      vmin: true,
+      vw: true
+    }
+  }
+};
+
+DEFAULTS.ie11 = DEFAULTS['*'];
+
+DEFAULTS.ie10 = DEFAULTS['*'];
+
+DEFAULTS.ie9 = merge(DEFAULTS['*'], {
+  properties: {
+    ieFilters: true,
+    ieSuffixHack: true
+  }
+});
+
+DEFAULTS.ie8 = merge(DEFAULTS.ie9, {
+  colors: {
+    opacity: false
+  },
+  properties: {
+    backgroundClipMerging: false,
+    backgroundOriginMerging: false,
+    backgroundSizeMerging: false,
+    iePrefixHack: true,
+    merging: false
+  },
+  selectors: {
+    mergeablePseudoClasses: [
+      ':after',
+      ':before',
+      ':first-child',
+      ':first-letter',
+      ':focus',
+      ':hover',
+      ':visited'
+    ],
+    mergeablePseudoElements: []
+  },
+  units: {
+    ch: false,
+    rem: false,
+    vh: false,
+    vm: false,
+    vmax: false,
+    vmin: false,
+    vw: false
+  }
+});
+
+DEFAULTS.ie7 = merge(DEFAULTS.ie8, {
+  properties: {
+    ieBangHack: true
+  },
+  selectors: {
+    ie7Hack: true,
+    mergeablePseudoClasses: [
+      ':first-child',
+      ':first-letter',
+      ':hover',
+      ':visited'
+    ]
+  },
+});
+
+function compatibilityFrom(source) {
+  return merge(DEFAULTS['*'], calculateSource(source));
+}
+
+function merge(source, target) {
+  for (var key in source) {
+    var value = source[key];
+
+    if (typeof value === 'object' && !Array.isArray(value)) {
+      target[key] = merge(value, target[key] || {});
+    } else {
+      target[key] = key in target ? target[key] : value;
+    }
+  }
+
+  return target;
+}
+
+function calculateSource(source) {
+  if (typeof source == 'object')
+    return source;
+
+  if (!/[,\+\-]/.test(source))
+    return DEFAULTS[source] || DEFAULTS['*'];
+
+  var parts = source.split(',');
+  var template = parts[0] in DEFAULTS ?
+    DEFAULTS[parts.shift()] :
+    DEFAULTS['*'];
+
+  source = {};
+
+  parts.forEach(function (part) {
+    var isAdd = part[0] == '+';
+    var key = part.substring(1).split('.');
+    var group = key[0];
+    var option = key[1];
+
+    source[group] = source[group] || {};
+    source[group][option] = isAdd;
+  });
+
+  return merge(template, source);
+}
+
+module.exports = compatibilityFrom;
+
+},{}],55:[function(require,module,exports){
+var loadRemoteResource = require('../reader/load-remote-resource');
+
+function fetchFrom(callback) {
+  return callback || loadRemoteResource;
+}
+
+module.exports = fetchFrom;
+
+},{"../reader/load-remote-resource":69}],56:[function(require,module,exports){
+var systemLineBreak = require('os').EOL;
+
+var override = require('../utils/override');
+
+var Breaks = {
+  AfterAtRule: 'afterAtRule',
+  AfterBlockBegins: 'afterBlockBegins',
+  AfterBlockEnds: 'afterBlockEnds',
+  AfterComment: 'afterComment',
+  AfterProperty: 'afterProperty',
+  AfterRuleBegins: 'afterRuleBegins',
+  AfterRuleEnds: 'afterRuleEnds',
+  BeforeBlockEnds: 'beforeBlockEnds',
+  BetweenSelectors: 'betweenSelectors'
+};
+
+var BreakWith = {
+  CarriageReturnLineFeed: '\r\n',
+  LineFeed: '\n',
+  System: systemLineBreak
+};
+
+var IndentWith = {
+  Space: ' ',
+  Tab: '\t'
+};
+
+var Spaces = {
+  AroundSelectorRelation: 'aroundSelectorRelation',
+  BeforeBlockBegins: 'beforeBlockBegins',
+  BeforeValue: 'beforeValue'
+};
+
+var DEFAULTS = {
+  breaks: breaks(false),
+  breakWith: BreakWith.System,
+  indentBy: 0,
+  indentWith: IndentWith.Space,
+  spaces: spaces(false),
+  wrapAt: false,
+  semicolonAfterLastProperty: false
+};
+
+var BEAUTIFY_ALIAS = 'beautify';
+var KEEP_BREAKS_ALIAS = 'keep-breaks';
+
+var OPTION_SEPARATOR = ';';
+var OPTION_NAME_VALUE_SEPARATOR = ':';
+var HASH_VALUES_OPTION_SEPARATOR = ',';
+var HASH_VALUES_NAME_VALUE_SEPARATOR = '=';
+
+var FALSE_KEYWORD_1 = 'false';
+var FALSE_KEYWORD_2 = 'off';
+var TRUE_KEYWORD_1 = 'true';
+var TRUE_KEYWORD_2 = 'on';
+
+function breaks(value) {
+  var breakOptions = {};
+
+  breakOptions[Breaks.AfterAtRule] = value;
+  breakOptions[Breaks.AfterBlockBegins] = value;
+  breakOptions[Breaks.AfterBlockEnds] = value;
+  breakOptions[Breaks.AfterComment] = value;
+  breakOptions[Breaks.AfterProperty] = value;
+  breakOptions[Breaks.AfterRuleBegins] = value;
+  breakOptions[Breaks.AfterRuleEnds] = value;
+  breakOptions[Breaks.BeforeBlockEnds] = value;
+  breakOptions[Breaks.BetweenSelectors] = value;
+
+  return breakOptions;
+}
+
+function spaces(value) {
+  var spaceOptions = {};
+
+  spaceOptions[Spaces.AroundSelectorRelation] = value;
+  spaceOptions[Spaces.BeforeBlockBegins] = value;
+  spaceOptions[Spaces.BeforeValue] = value;
+
+  return spaceOptions;
+}
+
+function formatFrom(source) {
+  if (source === undefined || source === false) {
+    return false;
+  }
+
+  if (typeof source == 'object' && 'breakWith' in source) {
+    source = override(source, { breakWith: mapBreakWith(source.breakWith) });
+  }
+
+  if (typeof source == 'object' && 'indentBy' in source) {
+    source = override(source, { indentBy: parseInt(source.indentBy) });
+  }
+
+  if (typeof source == 'object' && 'indentWith' in source) {
+    source = override(source, { indentWith: mapIndentWith(source.indentWith) });
+  }
+
+  if (typeof source == 'object') {
+    return override(DEFAULTS, source);
+  }
+
+  if (typeof source == 'object') {
+    return override(DEFAULTS, source);
+  }
+
+  if (typeof source == 'string' && source == BEAUTIFY_ALIAS) {
+    return override(DEFAULTS, {
+      breaks: breaks(true),
+      indentBy: 2,
+      spaces: spaces(true)
+    });
+  }
+
+  if (typeof source == 'string' && source == KEEP_BREAKS_ALIAS) {
+    return override(DEFAULTS, {
+      breaks: {
+        afterAtRule: true,
+        afterBlockBegins: true,
+        afterBlockEnds: true,
+        afterComment: true,
+        afterRuleEnds: true,
+        beforeBlockEnds: true
+      }
+    });
+  }
+
+  if (typeof source == 'string') {
+    return override(DEFAULTS, toHash(source));
+  }
+
+  return DEFAULTS;
+}
+
+function toHash(string) {
+  return string
+    .split(OPTION_SEPARATOR)
+    .reduce(function (accumulator, directive) {
+      var parts = directive.split(OPTION_NAME_VALUE_SEPARATOR);
+      var name = parts[0];
+      var value = parts[1];
+
+      if (name == 'breaks' || name == 'spaces') {
+        accumulator[name] = hashValuesToHash(value);
+      } else if (name == 'indentBy' || name == 'wrapAt') {
+        accumulator[name] = parseInt(value);
+      } else if (name == 'indentWith') {
+        accumulator[name] = mapIndentWith(value);
+      } else if (name == 'breakWith') {
+        accumulator[name] = mapBreakWith(value);
+      }
+
+      return accumulator;
+    }, {});
+}
+
+function hashValuesToHash(string) {
+  return string
+    .split(HASH_VALUES_OPTION_SEPARATOR)
+    .reduce(function (accumulator, directive) {
+      var parts = directive.split(HASH_VALUES_NAME_VALUE_SEPARATOR);
+      var name = parts[0];
+      var value = parts[1];
+
+      accumulator[name] = normalizeValue(value);
+
+      return accumulator;
+    }, {});
+}
+
+
+function normalizeValue(value) {
+  switch (value) {
+    case FALSE_KEYWORD_1:
+    case FALSE_KEYWORD_2:
+      return false;
+    case TRUE_KEYWORD_1:
+    case TRUE_KEYWORD_2:
+      return true;
+    default:
+      return value;
+  }
+}
+
+function mapBreakWith(value) {
+  switch (value) {
+    case 'windows':
+    case 'crlf':
+    case BreakWith.CarriageReturnLineFeed:
+      return BreakWith.CarriageReturnLineFeed;
+    case 'unix':
+    case 'lf':
+    case BreakWith.LineFeed:
+      return BreakWith.LineFeed;
+    default:
+      return systemLineBreak;
+  }
+}
+
+function mapIndentWith(value) {
+  switch (value) {
+    case 'space':
+      return IndentWith.Space;
+    case 'tab':
+      return IndentWith.Tab;
+    default:
+      return value;
+  }
+}
+
+module.exports = {
+  Breaks: Breaks,
+  Spaces: Spaces,
+  formatFrom: formatFrom
+};
+
+},{"../utils/override":90,"os":121}],57:[function(require,module,exports){
+(function (process){
+var url = require('url');
+
+var override = require('../utils/override');
+
+function inlineRequestFrom(option) {
+  return override(
+    /* jshint camelcase: false */
+    proxyOptionsFrom(process.env.HTTP_PROXY || process.env.http_proxy),
+    option || {}
+  );
+}
+
+function proxyOptionsFrom(httpProxy) {
+  return httpProxy ?
+    {
+      hostname: url.parse(httpProxy).hostname,
+      port: parseInt(url.parse(httpProxy).port)
+    } :
+    {};
+}
+
+module.exports = inlineRequestFrom;
+
+}).call(this,require('_process'))
+},{"../utils/override":90,"_process":124,"url":175}],58:[function(require,module,exports){
+var DEFAULT_TIMEOUT = 5000;
+
+function inlineTimeoutFrom(option) {
+  return option || DEFAULT_TIMEOUT;
+}
+
+module.exports = inlineTimeoutFrom;
+
+},{}],59:[function(require,module,exports){
+function inlineOptionsFrom(rules) {
+  if (Array.isArray(rules)) {
+    return rules;
+  }
+
+  if (rules === false) {
+    return ['none'];
+  }
+
+  return undefined === rules ?
+    ['local'] :
+    rules.split(',');
+}
+
+module.exports = inlineOptionsFrom;
+
+},{}],60:[function(require,module,exports){
+var roundingPrecisionFrom = require('./rounding-precision').roundingPrecisionFrom;
+
+var override = require('../utils/override');
+
+var OptimizationLevel = {
+  Zero: '0',
+  One: '1',
+  Two: '2'
+};
+
+var DEFAULTS = {};
+
+DEFAULTS[OptimizationLevel.Zero] = {};
+DEFAULTS[OptimizationLevel.One] = {
+  cleanupCharsets: true,
+  normalizeUrls: true,
+  optimizeBackground: true,
+  optimizeBorderRadius: true,
+  optimizeFilter: true,
+  optimizeFontWeight: true,
+  optimizeOutline: true,
+  removeEmpty: true,
+  removeNegativePaddings: true,
+  removeQuotes: true,
+  removeWhitespace: true,
+  replaceMultipleZeros: true,
+  replaceTimeUnits: true,
+  replaceZeroUnits: true,
+  roundingPrecision: roundingPrecisionFrom(undefined),
+  selectorsSortingMethod: 'standard',
+  specialComments: 'all',
+  tidyAtRules: true,
+  tidyBlockScopes: true,
+  tidySelectors: true,
+  transform: noop
+};
+DEFAULTS[OptimizationLevel.Two] = {
+  mergeAdjacentRules: true,
+  mergeIntoShorthands: true,
+  mergeMedia: true,
+  mergeNonAdjacentRules: true,
+  mergeSemantically: false,
+  overrideProperties: true,
+  removeEmpty: true,
+  reduceNonAdjacentRules: true,
+  removeDuplicateFontRules: true,
+  removeDuplicateMediaBlocks: true,
+  removeDuplicateRules: true,
+  removeUnusedAtRules: false,
+  restructureRules: false,
+  skipProperties: []
+};
+
+var ALL_KEYWORD_1 = '*';
+var ALL_KEYWORD_2 = 'all';
+var FALSE_KEYWORD_1 = 'false';
+var FALSE_KEYWORD_2 = 'off';
+var TRUE_KEYWORD_1 = 'true';
+var TRUE_KEYWORD_2 = 'on';
+
+var LIST_VALUE_SEPARATOR = ',';
+var OPTION_SEPARATOR = ';';
+var OPTION_VALUE_SEPARATOR = ':';
+
+function noop() {}
+
+function optimizationLevelFrom(source) {
+  var level = override(DEFAULTS, {});
+  var Zero = OptimizationLevel.Zero;
+  var One = OptimizationLevel.One;
+  var Two = OptimizationLevel.Two;
+
+
+  if (undefined === source) {
+    delete level[Two];
+    return level;
+  }
+
+  if (typeof source == 'string') {
+    source = parseInt(source);
+  }
+
+  if (typeof source == 'number' && source === parseInt(Two)) {
+    return level;
+  }
+
+  if (typeof source == 'number' && source === parseInt(One)) {
+    delete level[Two];
+    return level;
+  }
+
+  if (typeof source == 'number' && source === parseInt(Zero)) {
+    delete level[Two];
+    delete level[One];
+    return level;
+  }
+
+  if (typeof source == 'object') {
+    source = covertValuesToHashes(source);
+  }
+
+  if (One in source && 'roundingPrecision' in source[One]) {
+    source[One].roundingPrecision = roundingPrecisionFrom(source[One].roundingPrecision);
+  }
+
+  if (Two in source && 'skipProperties' in source[Two] && typeof(source[Two].skipProperties) == 'string') {
+    source[Two].skipProperties = source[Two].skipProperties.split(LIST_VALUE_SEPARATOR);
+  }
+
+  if (Zero in source || One in source || Two in source) {
+    level[Zero] = override(level[Zero], source[Zero]);
+  }
+
+  if (One in source && ALL_KEYWORD_1 in source[One]) {
+    level[One] = override(level[One], defaults(One, normalizeValue(source[One][ALL_KEYWORD_1])));
+    delete source[One][ALL_KEYWORD_1];
+  }
+
+  if (One in source && ALL_KEYWORD_2 in source[One]) {
+    level[One] = override(level[One], defaults(One, normalizeValue(source[One][ALL_KEYWORD_2])));
+    delete source[One][ALL_KEYWORD_2];
+  }
+
+  if (One in source || Two in source) {
+    level[One] = override(level[One], source[One]);
+  } else {
+    delete level[One];
+  }
+
+  if (Two in source && ALL_KEYWORD_1 in source[Two]) {
+    level[Two] = override(level[Two], defaults(Two, normalizeValue(source[Two][ALL_KEYWORD_1])));
+    delete source[Two][ALL_KEYWORD_1];
+  }
+
+  if (Two in source && ALL_KEYWORD_2 in source[Two]) {
+    level[Two] = override(level[Two], defaults(Two, normalizeValue(source[Two][ALL_KEYWORD_2])));
+    delete source[Two][ALL_KEYWORD_2];
+  }
+
+  if (Two in source) {
+    level[Two] = override(level[Two], source[Two]);
+  } else {
+    delete level[Two];
+  }
+
+  return level;
+}
+
+function defaults(level, value) {
+  var options = override(DEFAULTS[level], {});
+  var key;
+
+  for (key in options) {
+    if (typeof options[key] == 'boolean') {
+      options[key] = value;
+    }
+  }
+
+  return options;
+}
+
+function normalizeValue(value) {
+  switch (value) {
+    case FALSE_KEYWORD_1:
+    case FALSE_KEYWORD_2:
+      return false;
+    case TRUE_KEYWORD_1:
+    case TRUE_KEYWORD_2:
+      return true;
+    default:
+      return value;
+  }
+}
+
+function covertValuesToHashes(source) {
+  var clonedSource = override(source, {});
+  var level;
+  var i;
+
+  for (i = 0; i <= 2; i++) {
+    level = '' + i;
+
+    if (level in clonedSource && (clonedSource[level] === undefined || clonedSource[level] === false)) {
+      delete clonedSource[level];
+    }
+
+    if (level in clonedSource && clonedSource[level] === true) {
+      clonedSource[level] = {};
+    }
+
+    if (level in clonedSource && typeof clonedSource[level] == 'string') {
+      clonedSource[level] = covertToHash(clonedSource[level], level);
+    }
+  }
+
+  return clonedSource;
+}
+
+function covertToHash(asString, level) {
+  return asString
+    .split(OPTION_SEPARATOR)
+    .reduce(function (accumulator, directive) {
+      var parts = directive.split(OPTION_VALUE_SEPARATOR);
+      var name = parts[0];
+      var value = parts[1];
+      var normalizedValue = normalizeValue(value);
+
+      if (ALL_KEYWORD_1 == name || ALL_KEYWORD_2 == name) {
+        accumulator = override(accumulator, defaults(level, normalizedValue));
+      } else {
+        accumulator[name] = normalizedValue;
+      }
+
+      return accumulator;
+    }, {});
+}
+
+module.exports = {
+  OptimizationLevel: OptimizationLevel,
+  optimizationLevelFrom: optimizationLevelFrom,
+};
+
+},{"../utils/override":90,"./rounding-precision":63}],61:[function(require,module,exports){
+(function (process){
+var path = require('path');
+
+function rebaseToFrom(option) {
+  return option ? path.resolve(option) : process.cwd();
+}
+
+module.exports = rebaseToFrom;
+
+}).call(this,require('_process'))
+},{"_process":124,"path":122}],62:[function(require,module,exports){
+function rebaseFrom(rebaseOption) {
+  return undefined === rebaseOption ? true : !!rebaseOption;
+}
+
+module.exports = rebaseFrom;
+
+},{}],63:[function(require,module,exports){
+var override = require('../utils/override');
+
+var INTEGER_PATTERN = /^\d+$/;
+
+var ALL_UNITS = ['*', 'all'];
+var DEFAULT_PRECISION = 'off'; // all precision changes are disabled
+var DIRECTIVES_SEPARATOR = ','; // e.g. *=5,px=3
+var DIRECTIVE_VALUE_SEPARATOR = '='; // e.g. *=5
+
+function roundingPrecisionFrom(source) {
+  return override(defaults(DEFAULT_PRECISION), buildPrecisionFrom(source));
+}
+
+function defaults(value) {
+  return {
+    'ch': value,
+    'cm': value,
+    'em': value,
+    'ex': value,
+    'in': value,
+    'mm': value,
+    'pc': value,
+    'pt': value,
+    'px': value,
+    'q': value,
+    'rem': value,
+    'vh': value,
+    'vmax': value,
+    'vmin': value,
+    'vw': value,
+    '%': value
+  };
+}
+
+function buildPrecisionFrom(source) {
+  if (source === null || source === undefined) {
+    return {};
+  }
+
+  if (typeof source == 'boolean') {
+    return {};
+  }
+
+  if (typeof source == 'number' && source == -1) {
+    return defaults(DEFAULT_PRECISION);
+  }
+
+  if (typeof source == 'number') {
+    return defaults(source);
+  }
+
+  if (typeof source == 'string' && INTEGER_PATTERN.test(source)) {
+    return defaults(parseInt(source));
+  }
+
+  if (typeof source == 'string' && source == DEFAULT_PRECISION) {
+    return defaults(DEFAULT_PRECISION);
+  }
+
+  if (typeof source == 'object') {
+    return source;
+  }
+
+  return source
+    .split(DIRECTIVES_SEPARATOR)
+    .reduce(function (accumulator, directive) {
+      var directiveParts = directive.split(DIRECTIVE_VALUE_SEPARATOR);
+      var name = directiveParts[0];
+      var value = parseInt(directiveParts[1]);
+
+      if (isNaN(value) || value == -1) {
+        value = DEFAULT_PRECISION;
+      }
+
+      if (ALL_UNITS.indexOf(name) > -1) {
+        accumulator = override(accumulator, defaults(value));
+      } else {
+        accumulator[name] = value;
+      }
+
+      return accumulator;
+    }, {});
+}
+
+module.exports = {
+  DEFAULT: DEFAULT_PRECISION,
+  roundingPrecisionFrom: roundingPrecisionFrom
+};
+
+},{"../utils/override":90}],64:[function(require,module,exports){
+(function (global,Buffer){
+var fs = require('fs');
+var path = require('path');
+
+var isAllowedResource = require('./is-allowed-resource');
+var matchDataUri = require('./match-data-uri');
+var rebaseLocalMap = require('./rebase-local-map');
+var rebaseRemoteMap = require('./rebase-remote-map');
+
+var Token = require('../tokenizer/token');
+var hasProtocol = require('../utils/has-protocol');
+var isDataUriResource = require('../utils/is-data-uri-resource');
+var isRemoteResource = require('../utils/is-remote-resource');
+
+var MAP_MARKER_PATTERN = /^\/\*# sourceMappingURL=(\S+) \*\/$/;
+
+function applySourceMaps(tokens, context, callback) {
+  var applyContext = {
+    callback: callback,
+    fetch: context.options.fetch,
+    index: 0,
+    inline: context.options.inline,
+    inlineRequest: context.options.inlineRequest,
+    inlineTimeout: context.options.inlineTimeout,
+    inputSourceMapTracker: context.inputSourceMapTracker,
+    localOnly: context.localOnly,
+    processedTokens: [],
+    rebaseTo: context.options.rebaseTo,
+    sourceTokens: tokens,
+    warnings: context.warnings
+  };
+
+  return context.options.sourceMap && tokens.length > 0 ?
+    doApplySourceMaps(applyContext) :
+    callback(tokens);
+}
+
+function doApplySourceMaps(applyContext) {
+  var singleSourceTokens = [];
+  var lastSource = findTokenSource(applyContext.sourceTokens[0]);
+  var source;
+  var token;
+  var l;
+
+  for (l = applyContext.sourceTokens.length; applyContext.index < l; applyContext.index++) {
+    token = applyContext.sourceTokens[applyContext.index];
+    source = findTokenSource(token);
+
+    if (source != lastSource) {
+      singleSourceTokens = [];
+      lastSource = source;
+    }
+
+    singleSourceTokens.push(token);
+    applyContext.processedTokens.push(token);
+
+    if (token[0] == Token.COMMENT && MAP_MARKER_PATTERN.test(token[1])) {
+      return fetchAndApplySourceMap(token[1], source, singleSourceTokens, applyContext);
+    }
+  }
+
+  return applyContext.callback(applyContext.processedTokens);
+}
+
+function findTokenSource(token) {
+  var scope;
+  var metadata;
+
+  if (token[0] == Token.AT_RULE || token[0] == Token.COMMENT) {
+    metadata = token[2][0];
+  } else {
+    scope = token[1][0];
+    metadata = scope[2][0];
+  }
+
+  return metadata[2];
+}
+
+function fetchAndApplySourceMap(sourceMapComment, source, singleSourceTokens, applyContext) {
+  return extractInputSourceMapFrom(sourceMapComment, applyContext, function (inputSourceMap) {
+    if (inputSourceMap) {
+      applyContext.inputSourceMapTracker.track(source, inputSourceMap);
+      applySourceMapRecursively(singleSourceTokens, applyContext.inputSourceMapTracker);
+    }
+
+    applyContext.index++;
+    return doApplySourceMaps(applyContext);
+  });
+}
+
+function extractInputSourceMapFrom(sourceMapComment, applyContext, whenSourceMapReady) {
+  var uri = MAP_MARKER_PATTERN.exec(sourceMapComment)[1];
+  var absoluteUri;
+  var sourceMap;
+  var rebasedMap;
+
+  if (isDataUriResource(uri)) {
+    sourceMap = extractInputSourceMapFromDataUri(uri);
+    return whenSourceMapReady(sourceMap);
+  } else if (isRemoteResource(uri)) {
+    return loadInputSourceMapFromRemoteUri(uri, applyContext, function (sourceMap) {
+      var parsedMap;
+
+      if (sourceMap) {
+        parsedMap = JSON.parse(sourceMap);
+        rebasedMap = rebaseRemoteMap(parsedMap, uri);
+        whenSourceMapReady(rebasedMap);
+      } else {
+        whenSourceMapReady(null);
+      }
+    });
+  } else {
+    // at this point `uri` is already rebased, see lib/reader/rebase.js#rebaseSourceMapComment
+    // it is rebased to be consistent with rebasing other URIs
+    // however here we need to resolve it back to read it from disk
+    absoluteUri = path.resolve(applyContext.rebaseTo, uri);
+    sourceMap = loadInputSourceMapFromLocalUri(absoluteUri, applyContext);
+
+    if (sourceMap) {
+      rebasedMap = rebaseLocalMap(sourceMap, absoluteUri, applyContext.rebaseTo);
+      return whenSourceMapReady(rebasedMap);
+    } else {
+      return whenSourceMapReady(null);
+    }
+  }
+}
+
+function extractInputSourceMapFromDataUri(uri) {
+  var dataUriMatch = matchDataUri(uri);
+  var charset = dataUriMatch[2] ? dataUriMatch[2].split(/[=;]/)[2] : 'us-ascii';
+  var encoding = dataUriMatch[3] ? dataUriMatch[3].split(';')[1] : 'utf8';
+  var data = encoding == 'utf8' ? global.unescape(dataUriMatch[4]) : dataUriMatch[4];
+
+  var buffer = new Buffer(data, encoding);
+  buffer.charset = charset;
+
+  return JSON.parse(buffer.toString());
+}
+
+function loadInputSourceMapFromRemoteUri(uri, applyContext, whenLoaded) {
+  var isAllowed = isAllowedResource(uri, true, applyContext.inline);
+  var isRuntimeResource = !hasProtocol(uri);
+
+  if (applyContext.localOnly) {
+    applyContext.warnings.push('Cannot fetch remote resource from "' + uri + '" as no callback given.');
+    return whenLoaded(null);
+  } else if (isRuntimeResource) {
+    applyContext.warnings.push('Cannot fetch "' + uri + '" as no protocol given.');
+    return whenLoaded(null);
+  } else if (!isAllowed) {
+    applyContext.warnings.push('Cannot fetch "' + uri + '" as resource is not allowed.');
+    return whenLoaded(null);
+  }
+
+  applyContext.fetch(uri, applyContext.inlineRequest, applyContext.inlineTimeout, function (error, body) {
+    if (error) {
+      applyContext.warnings.push('Missing source map at "' + uri + '" - ' + error);
+      return whenLoaded(null);
+    }
+
+    whenLoaded(body);
+  });
+}
+
+function loadInputSourceMapFromLocalUri(uri, applyContext) {
+  var isAllowed = isAllowedResource(uri, false, applyContext.inline);
+  var sourceMap;
+
+  if (!fs.existsSync(uri) || !fs.statSync(uri).isFile()) {
+    applyContext.warnings.push('Ignoring local source map at "' + uri + '" as resource is missing.');
+    return null;
+  } else if (!isAllowed) {
+    applyContext.warnings.push('Cannot fetch "' + uri + '" as resource is not allowed.');
+    return null;
+  }
+
+  sourceMap = fs.readFileSync(uri, 'utf-8');
+  return JSON.parse(sourceMap);
+}
+
+function applySourceMapRecursively(tokens, inputSourceMapTracker) {
+  var token;
+  var i, l;
+
+  for (i = 0, l = tokens.length; i < l; i++) {
+    token = tokens[i];
+
+    switch (token[0]) {
+      case Token.AT_RULE:
+        applySourceMapTo(token, inputSourceMapTracker);
+        break;
+      case Token.AT_RULE_BLOCK:
+        applySourceMapRecursively(token[1], inputSourceMapTracker);
+        applySourceMapRecursively(token[2], inputSourceMapTracker);
+        break;
+      case Token.AT_RULE_BLOCK_SCOPE:
+        applySourceMapTo(token, inputSourceMapTracker);
+        break;
+      case Token.NESTED_BLOCK:
+        applySourceMapRecursively(token[1], inputSourceMapTracker);
+        applySourceMapRecursively(token[2], inputSourceMapTracker);
+        break;
+      case Token.NESTED_BLOCK_SCOPE:
+        applySourceMapTo(token, inputSourceMapTracker);
+        break;
+      case Token.COMMENT:
+        applySourceMapTo(token, inputSourceMapTracker);
+        break;
+      case Token.PROPERTY:
+        applySourceMapRecursively(token, inputSourceMapTracker);
+        break;
+      case Token.PROPERTY_BLOCK:
+        applySourceMapRecursively(token[1], inputSourceMapTracker);
+        break;
+      case Token.PROPERTY_NAME:
+        applySourceMapTo(token, inputSourceMapTracker);
+        break;
+      case Token.PROPERTY_VALUE:
+        applySourceMapTo(token, inputSourceMapTracker);
+        break;
+      case Token.RULE:
+        applySourceMapRecursively(token[1], inputSourceMapTracker);
+        applySourceMapRecursively(token[2], inputSourceMapTracker);
+        break;
+      case Token.RULE_SCOPE:
+        applySourceMapTo(token, inputSourceMapTracker);
+    }
+  }
+
+  return tokens;
+}
+
+function applySourceMapTo(token, inputSourceMapTracker) {
+  var value = token[1];
+  var metadata = token[2];
+  var newMetadata = [];
+  var i, l;
+
+  for (i = 0, l = metadata.length; i < l; i++) {
+    newMetadata.push(inputSourceMapTracker.originalPositionFor(metadata[i], value.length));
+  }
+
+  token[2] = newMetadata;
+}
+
+module.exports = applySourceMaps;
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
+},{"../tokenizer/token":79,"../utils/has-protocol":83,"../utils/is-data-uri-resource":84,"../utils/is-remote-resource":88,"./is-allowed-resource":67,"./match-data-uri":70,"./rebase-local-map":73,"./rebase-remote-map":74,"buffer":111,"fs":110,"path":122}],65:[function(require,module,exports){
+var split = require('../utils/split');
+
+var BRACE_PREFIX = /^\(/;
+var BRACE_SUFFIX = /\)$/;
+var IMPORT_PREFIX_PATTERN = /^@import/i;
+var QUOTE_PREFIX_PATTERN = /['"]\s*/;
+var QUOTE_SUFFIX_PATTERN = /\s*['"]/;
+var URL_PREFIX_PATTERN = /^url\(\s*/i;
+var URL_SUFFIX_PATTERN = /\s*\)/i;
+
+function extractImportUrlAndMedia(atRuleValue) {
+  var uri;
+  var mediaQuery;
+  var stripped;
+  var parts;
+
+  stripped = atRuleValue
+    .replace(IMPORT_PREFIX_PATTERN, '')
+    .trim()
+    .replace(URL_PREFIX_PATTERN, '(')
+    .replace(URL_SUFFIX_PATTERN, ')')
+    .replace(QUOTE_PREFIX_PATTERN, '')
+    .replace(QUOTE_SUFFIX_PATTERN, '');
+
+  parts = split(stripped, ' ');
+
+  uri = parts[0]
+    .replace(BRACE_PREFIX, '')
+    .replace(BRACE_SUFFIX, '');
+  mediaQuery = parts.slice(1).join(' ');
+
+  return [uri, mediaQuery];
+}
 
-function isColor(value) {
-  return value != 'auto' &&
-    (
-      isKeyword('color')(value) ||
-      isHexColor(value) ||
-      isColorFunction(value) ||
-      isNamedEntity(value)
-    );
+module.exports = extractImportUrlAndMedia;
+
+},{"../utils/split":91}],66:[function(require,module,exports){
+var SourceMapConsumer = require('source-map').SourceMapConsumer;
+
+function inputSourceMapTracker() {
+  var maps = {};
+
+  return {
+    all: all.bind(null, maps),
+    isTracking: isTracking.bind(null, maps),
+    originalPositionFor: originalPositionFor.bind(null, maps),
+    track: track.bind(null, maps)
+  };
 }
 
-function isColorFunction(value) {
-  return isRgbColor(value) || isHslColor(value);
+function all(maps) {
+  return maps;
+}
+
+function isTracking(maps, source) {
+  return source in maps;
+}
+
+function originalPositionFor(maps, metadata, range, selectorFallbacks) {
+  var line = metadata[0];
+  var column = metadata[1];
+  var source = metadata[2];
+  var position = {
+    line: line,
+    column: column + range
+  };
+  var originalPosition;
+
+  while (!originalPosition && position.column > column) {
+    position.column--;
+    originalPosition = maps[source].originalPositionFor(position);
+  }
+
+  if (!originalPosition || originalPosition.column < 0) {
+    return metadata;
+  }
+
+  if (originalPosition.line === null && line > 1 && selectorFallbacks > 0) {
+    return originalPositionFor(maps, [line - 1, column, source], range, selectorFallbacks - 1);
+  }
+
+  return originalPosition.line !== null ?
+    toMetadata(originalPosition) :
+    metadata;
+}
+
+function toMetadata(asHash) {
+  return [asHash.line, asHash.column, asHash.source];
+}
+
+function track(maps, source, data) {
+  maps[source] = new SourceMapConsumer(data);
+}
+
+module.exports = inputSourceMapTracker;
+
+},{"source-map":106}],67:[function(require,module,exports){
+var path = require('path');
+var url = require('url');
+
+var isRemoteResource = require('../utils/is-remote-resource');
+var hasProtocol = require('../utils/has-protocol');
+
+var HTTP_PROTOCOL = 'http:';
+
+function isAllowedResource(uri, isRemote, rules) {
+  var match;
+  var absoluteUri;
+  var allowed = isRemote ? false : true;
+  var rule;
+  var isNegated;
+  var normalizedRule;
+  var i;
+
+  if (rules.length === 0) {
+    return false;
+  }
+
+  if (isRemote && !hasProtocol(uri)) {
+    uri = HTTP_PROTOCOL + uri;
+  }
+
+  match = isRemote ?
+    url.parse(uri).host :
+    uri;
+
+  absoluteUri = isRemote ?
+    uri :
+    path.resolve(uri);
+
+  for (i = 0; i < rules.length; i++) {
+    rule = rules[i];
+    isNegated = rule[0] == '!';
+    normalizedRule = rule.substring(1);
+
+    if (isNegated && isRemote && isRemoteRule(normalizedRule)) {
+      allowed = allowed && !isAllowedResource(uri, true, [normalizedRule]);
+    } else if (isNegated && !isRemote && !isRemoteRule(normalizedRule)) {
+      allowed = allowed && !isAllowedResource(uri, false, [normalizedRule]);
+    } else if (isNegated) {
+      allowed = allowed && true;
+    } else if (rule == 'all') {
+      allowed = true;
+    } else if (isRemote && rule == 'local') {
+      allowed = allowed || false;
+    } else if (isRemote && rule == 'remote') {
+      allowed = true;
+    } else if (!isRemote && rule == 'remote') {
+      allowed = false;
+    } else if (!isRemote && rule == 'local') {
+      allowed = true;
+    } else if (rule === match) {
+      allowed = true;
+    } else if (rule === uri) {
+      allowed = true;
+    } else if (isRemote && absoluteUri.indexOf(rule) === 0) {
+      allowed = true;
+    } else if (!isRemote && absoluteUri.indexOf(path.resolve(rule)) === 0) {
+      allowed = true;
+    } else if (isRemote != isRemoteRule(normalizedRule)) {
+      allowed = allowed && true;
+    } else {
+      allowed = false;
+    }
+  }
+
+  return allowed;
+}
+
+function isRemoteRule(rule) {
+  return isRemoteResource(rule) || url.parse(HTTP_PROTOCOL + '//' + rule).host == rule;
+}
+
+module.exports = isAllowedResource;
+
+},{"../utils/has-protocol":83,"../utils/is-remote-resource":88,"path":122,"url":175}],68:[function(require,module,exports){
+var fs = require('fs');
+var path = require('path');
+
+var isAllowedResource = require('./is-allowed-resource');
+
+var hasProtocol = require('../utils/has-protocol');
+var isRemoteResource = require('../utils/is-remote-resource');
+
+function loadOriginalSources(context, callback) {
+  var loadContext = {
+    callback: callback,
+    fetch: context.options.fetch,
+    index: 0,
+    inline: context.options.inline,
+    inlineRequest: context.options.inlineRequest,
+    inlineTimeout: context.options.inlineTimeout,
+    localOnly: context.localOnly,
+    rebaseTo: context.options.rebaseTo,
+    sourcesContent: context.sourcesContent,
+    uriToSource: uriToSourceMapping(context.inputSourceMapTracker.all()),
+    warnings: context.warnings
+  };
+
+  return context.options.sourceMap && context.options.sourceMapInlineSources ?
+    doLoadOriginalSources(loadContext) :
+    callback();
+}
+
+function uriToSourceMapping(allSourceMapConsumers) {
+  var mapping = {};
+  var consumer;
+  var uri;
+  var source;
+  var i, l;
+
+  for (source in allSourceMapConsumers) {
+    consumer = allSourceMapConsumers[source];
+
+    for (i = 0, l = consumer.sources.length; i < l; i++) {
+      uri = consumer.sources[i];
+      source = consumer.sourceContentFor(uri, true);
+
+      mapping[uri] = source;
+    }
+  }
+
+  return mapping;
+}
+
+function doLoadOriginalSources(loadContext) {
+  var uris = Object.keys(loadContext.uriToSource);
+  var uri;
+  var source;
+  var total;
+
+  for (total = uris.length; loadContext.index < total; loadContext.index++) {
+    uri = uris[loadContext.index];
+    source = loadContext.uriToSource[uri];
+
+    if (source) {
+      loadContext.sourcesContent[uri] = source;
+    } else {
+      return loadOriginalSource(uri, loadContext);
+    }
+  }
+
+  return loadContext.callback();
+}
+
+function loadOriginalSource(uri, loadContext) {
+  var content;
+
+  if (isRemoteResource(uri)) {
+    return loadOriginalSourceFromRemoteUri(uri, loadContext, function (content) {
+      loadContext.index++;
+      loadContext.sourcesContent[uri] = content;
+      return doLoadOriginalSources(loadContext);
+    });
+  } else {
+    content = loadOriginalSourceFromLocalUri(uri, loadContext);
+    loadContext.index++;
+    loadContext.sourcesContent[uri] = content;
+    return doLoadOriginalSources(loadContext);
+  }
 }
 
-function isDynamicUnit(value) {
-  return calcRegex.test(value);
-}
+function loadOriginalSourceFromRemoteUri(uri, loadContext, whenLoaded) {
+  var isAllowed = isAllowedResource(uri, true, loadContext.inline);
+  var isRuntimeResource = !hasProtocol(uri);
+
+  if (loadContext.localOnly) {
+    loadContext.warnings.push('Cannot fetch remote resource from "' + uri + '" as no callback given.');
+    return whenLoaded(null);
+  } else if (isRuntimeResource) {
+    loadContext.warnings.push('Cannot fetch "' + uri + '" as no protocol given.');
+    return whenLoaded(null);
+  } else if (!isAllowed) {
+    loadContext.warnings.push('Cannot fetch "' + uri + '" as resource is not allowed.');
+    return whenLoaded(null);
+  }
 
-function isFunction(value) {
-  return functionAnyRegex.test(value);
-}
+  loadContext.fetch(uri, loadContext.inlineRequest, loadContext.inlineTimeout, function (error, content) {
+    if (error) {
+      loadContext.warnings.push('Missing original source at "' + uri + '" - ' + error);
+    }
 
-function isHexColor(value) {
-  return threeValueColorRegex.test(value) || fourValueColorRegex.test(value) || sixValueColorRegex.test(value) || eightValueColorRegex.test(value);
+    whenLoaded(content);
+  });
 }
 
-function isHslColor(value) {
-  return hslColorRegex.test(value);
-}
+function loadOriginalSourceFromLocalUri(relativeUri, loadContext) {
+  var isAllowed = isAllowedResource(relativeUri, false, loadContext.inline);
+  var absoluteUri = path.resolve(loadContext.rebaseTo, relativeUri);
 
-function isIdentifier(value) {
-  return identifierRegex.test(value);
-}
+  if (!fs.existsSync(absoluteUri) || !fs.statSync(absoluteUri).isFile()) {
+    loadContext.warnings.push('Ignoring local source map at "' + absoluteUri + '" as resource is missing.');
+    return null;
+  } else if (!isAllowed) {
+    loadContext.warnings.push('Cannot fetch "' + absoluteUri + '" as resource is not allowed.');
+    return null;
+  }
 
-function isImage(value) {
-  return value == 'none' || value == 'inherit' || isUrl(value);
+  return fs.readFileSync(absoluteUri, 'utf8');
 }
 
-function isKeyword(propertyName) {
-  return function(value) {
-    return Keywords[propertyName].indexOf(value) > -1;
-  };
-}
+module.exports = loadOriginalSources;
 
-function isNamedEntity(value) {
-  return namedEntityRegex.test(value);
-}
+},{"../utils/has-protocol":83,"../utils/is-remote-resource":88,"./is-allowed-resource":67,"fs":110,"path":122}],69:[function(require,module,exports){
+var http = require('http');
+var https = require('https');
+var url = require('url');
 
-function isNumber(value) {
-  return scanForNumber(value) == value.length;
-}
+var isHttpResource = require('../utils/is-http-resource');
+var isHttpsResource = require('../utils/is-https-resource');
+var override = require('../utils/override');
 
-function isRgbColor(value) {
-  return rgbColorRegex.test(value);
-}
+var HTTP_PROTOCOL = 'http:';
 
-function isPrefixed(value) {
-  return prefixRegex.test(value);
-}
+function loadRemoteResource(uri, inlineRequest, inlineTimeout, callback) {
+  var proxyProtocol = inlineRequest.protocol || inlineRequest.hostname;
+  var errorHandled = false;
+  var requestOptions;
+  var fetch;
 
-function isPositiveNumber(value) {
-  return isNumber(value) &&
-    parseFloat(value) >= 0;
-}
+  requestOptions = override(
+    url.parse(uri),
+    inlineRequest || {}
+  );
 
-function isVariable(value) {
-  return variableRegex.test(value);
-}
+  if (inlineRequest.hostname !== undefined) {
+    // overwrite as we always expect a http proxy currently
+    requestOptions.protocol = inlineRequest.protocol || HTTP_PROTOCOL;
+    requestOptions.path = requestOptions.href;
+  }
 
-function isTime(value) {
-  var numberUpTo = scanForNumber(value);
+  fetch = (proxyProtocol && !isHttpsResource(proxyProtocol)) || isHttpResource(uri) ?
+    http.get :
+    https.get;
 
-  return numberUpTo == value.length && parseInt(value) === 0 ||
-    numberUpTo > -1 && validTimeUnits.indexOf(value.slice(numberUpTo + 1)) > -1;
-}
+  fetch(requestOptions, function (res) {
+    var chunks = [];
+    var movedUri;
 
-function isTimingFunction() {
-  var isTimingFunctionKeyword = isKeyword('*-timing-function');
+    if (errorHandled) {
+      return;
+    }
 
-  return function (value) {
-    return isTimingFunctionKeyword(value) || timingFunctionRegex.test(value);
-  };
-}
+    if (res.statusCode < 200 || res.statusCode > 399) {
+      return callback(res.statusCode, null);
+    } else if (res.statusCode > 299) {
+      movedUri = url.resolve(uri, res.headers.location);
+      return loadRemoteResource(movedUri, inlineRequest, inlineTimeout, callback);
+    }
 
-function isUnit(validUnits, value) {
-  var numberUpTo = scanForNumber(value);
+    res.on('data', function (chunk) {
+      chunks.push(chunk.toString());
+    });
+    res.on('end', function () {
+      var body = chunks.join('');
+      callback(null, body);
+    });
+  })
+  .on('error', function (res) {
+    if (errorHandled) {
+      return;
+    }
 
-  return numberUpTo == value.length && parseInt(value) === 0 ||
-    numberUpTo > -1 && validUnits.indexOf(value.slice(numberUpTo + 1)) > -1 ||
-    value == 'auto' ||
-    value == 'inherit';
-}
+    errorHandled = true;
+    callback(res.message, null);
+  })
+  .on('timeout', function () {
+    if (errorHandled) {
+      return;
+    }
 
-function isUrl(value) {
-  return urlRegex.test(value);
+    errorHandled = true;
+    callback('timeout', null);
+  })
+  .setTimeout(inlineTimeout);
 }
 
-function isZIndex(value) {
-  return value == 'auto' ||
-    isNumber(value) ||
-    isKeyword('^')(value);
-}
+module.exports = loadRemoteResource;
 
-function scanForNumber(value) {
-  var hasDot = false;
-  var hasSign = false;
-  var character;
-  var i, l;
+},{"../utils/is-http-resource":85,"../utils/is-https-resource":86,"../utils/override":90,"http":156,"https":116,"url":175}],70:[function(require,module,exports){
+var DATA_URI_PATTERN = /^data:(\S*?)?(;charset=[^;]+)?(;[^,]+?)?,(.+)/;
 
-  for (i = 0, l = value.length; i < l; i++) {
-    character = value[i];
+function matchDataUri(uri) {
+  return DATA_URI_PATTERN.exec(uri);
+}
 
-    if (i === 0 && (character == PLUS_SIGN || character == MINUS_SIGN)) {
-      hasSign = true;
-    } else if (i > 0 && hasSign && (character == PLUS_SIGN || character == MINUS_SIGN)) {
-      return i - 1;
-    } else if (character == DECIMAL_DOT && !hasDot) {
-      hasDot = true;
-    } else if (character == DECIMAL_DOT && hasDot) {
-      return i - 1;
-    } else if (decimalRegex.test(character)) {
-      continue;
-    } else {
-      return i - 1;
-    }
-  }
+module.exports = matchDataUri;
 
-  return i;
+},{}],71:[function(require,module,exports){
+var UNIX_SEPARATOR = '/';
+var WINDOWS_SEPARATOR_PATTERN = /\\/g;
+
+function normalizePath(path) {
+  return path.replace(WINDOWS_SEPARATOR_PATTERN, UNIX_SEPARATOR);
 }
 
-function validator(compatibility) {
-  var validUnits = Units.slice(0).filter(function (value) {
-    return !(value in compatibility.units) || compatibility.units[value] === true;
-  });
+module.exports = normalizePath;
 
-  return {
-    colorOpacity: compatibility.colors.opacity,
-    isAnimationDirectionKeyword: isKeyword('animation-direction'),
-    isAnimationFillModeKeyword: isKeyword('animation-fill-mode'),
-    isAnimationIterationCountKeyword: isKeyword('animation-iteration-count'),
-    isAnimationNameKeyword: isKeyword('animation-name'),
-    isAnimationPlayStateKeyword: isKeyword('animation-play-state'),
-    isTimingFunction: isTimingFunction(),
-    isBackgroundAttachmentKeyword: isKeyword('background-attachment'),
-    isBackgroundClipKeyword: isKeyword('background-clip'),
-    isBackgroundOriginKeyword: isKeyword('background-origin'),
-    isBackgroundPositionKeyword: isKeyword('background-position'),
-    isBackgroundRepeatKeyword: isKeyword('background-repeat'),
-    isBackgroundSizeKeyword: isKeyword('background-size'),
-    isColor: isColor,
-    isColorFunction: isColorFunction,
-    isDynamicUnit: isDynamicUnit,
-    isFontKeyword: isKeyword('font'),
-    isFontSizeKeyword: isKeyword('font-size'),
-    isFontStretchKeyword: isKeyword('font-stretch'),
-    isFontStyleKeyword: isKeyword('font-style'),
-    isFontVariantKeyword: isKeyword('font-variant'),
-    isFontWeightKeyword: isKeyword('font-weight'),
-    isFunction: isFunction,
-    isGlobal: isKeyword('^'),
-    isHslColor: isHslColor,
-    isIdentifier: isIdentifier,
-    isImage: isImage,
-    isKeyword: isKeyword,
-    isLineHeightKeyword: isKeyword('line-height'),
-    isListStylePositionKeyword: isKeyword('list-style-position'),
-    isListStyleTypeKeyword: isKeyword('list-style-type'),
-    isNumber: isNumber,
-    isPrefixed: isPrefixed,
-    isPositiveNumber: isPositiveNumber,
-    isRgbColor: isRgbColor,
-    isStyleKeyword: isKeyword('*-style'),
-    isTime: isTime,
-    isUnit: isUnit.bind(null, validUnits),
-    isUrl: isUrl,
-    isVariable: isVariable,
-    isWidth: isKeyword('width'),
-    isZIndex: isZIndex
-  };
-}
+},{}],72:[function(require,module,exports){
+(function (Buffer,process){
+var fs = require('fs');
+var path = require('path');
 
-module.exports = validator;
+var applySourceMaps = require('./apply-source-maps');
+var extractImportUrlAndMedia = require('./extract-import-url-and-media');
+var isAllowedResource = require('./is-allowed-resource');
+var loadOriginalSources = require('./load-original-sources');
+var normalizePath = require('./normalize-path');
+var rebase = require('./rebase');
+var rebaseLocalMap = require('./rebase-local-map');
+var rebaseRemoteMap = require('./rebase-remote-map');
+var restoreImport = require('./restore-import');
 
-},{}],58:[function(require,module,exports){
-var Hack = require('./hack');
+var tokenize = require('../tokenizer/tokenize');
+var Token = require('../tokenizer/token');
+var Marker = require('../tokenizer/marker');
+var hasProtocol = require('../utils/has-protocol');
+var isImport = require('../utils/is-import');
+var isRemoteResource = require('../utils/is-remote-resource');
+
+var UNKNOWN_URI = 'uri:unknown';
 
-var Marker = require('../tokenizer/marker');
-var Token = require('../tokenizer/token');
+function readSources(input, context, callback) {
+  return doReadSources(input, context, function (tokens) {
+    return applySourceMaps(tokens, context, function () {
+      return loadOriginalSources(context, function () { return callback(tokens); });
+    });
+  });
+}
 
-var Match = {
-  ASTERISK: '*',
-  BACKSLASH: '\\',
-  BANG: '!',
-  BANG_SUFFIX_PATTERN: /!\w+$/,
-  IMPORTANT_TOKEN: '!important',
-  IMPORTANT_TOKEN_PATTERN: new RegExp('!important$', 'i'),
-  IMPORTANT_WORD: 'important',
-  IMPORTANT_WORD_PATTERN: new RegExp('important$', 'i'),
-  SUFFIX_BANG_PATTERN: /!$/,
-  UNDERSCORE: '_',
-  VARIABLE_REFERENCE_PATTERN: /var\(--.+\)$/
-};
+function doReadSources(input, context, callback) {
+  if (typeof input == 'string') {
+    return fromString(input, context, callback);
+  } else if (Buffer.isBuffer(input)) {
+    return fromString(input.toString(), context, callback);
+  } else if (Array.isArray(input)) {
+    return fromArray(input, context, callback);
+  } else if (typeof input == 'object') {
+    return fromHash(input, context, callback);
+  }
+}
 
-function wrapAll(properties, includeVariable, skipProperties) {
-  var wrapped = [];
-  var single;
-  var property;
-  var i;
+function fromString(input, context, callback) {
+  context.source = undefined;
+  context.sourcesContent[undefined] = input;
+  context.stats.originalSize += input.length;
 
-  for (i = properties.length - 1; i >= 0; i--) {
-    property = properties[i];
+  return fromStyles(input, context, { inline: context.options.inline }, callback);
+}
 
-    if (property[0] != Token.PROPERTY) {
-      continue;
+function fromArray(input, context, callback) {
+  var inputAsImports = input.reduce(function (accumulator, uriOrHash) {
+    if (typeof uriOrHash === 'string') {
+      return addStringSource(uriOrHash, accumulator);
+    } else {
+      return addHashSource(uriOrHash, context, accumulator);
     }
 
-    if (!includeVariable && someVariableReferences(property)) {
-      continue;
-    }
+  }, []);
 
-    if (skipProperties && skipProperties.indexOf(property[1][1]) > -1) {
-      continue;
-    }
+  return fromStyles(inputAsImports.join(''), context, { inline: ['all'] }, callback);
+}
 
-    single = wrapSingle(property);
-    single.all = properties;
-    single.position = i;
-    wrapped.unshift(single);
-  }
+function fromHash(input, context, callback) {
+  var inputAsImports = addHashSource(input, context, []);
+  return fromStyles(inputAsImports.join(''), context, { inline: ['all'] }, callback);
+}
 
-  return wrapped;
+function addStringSource(input, imports) {
+  imports.push(restoreAsImport(normalizeUri(input)));
+  return imports;
 }
 
-function someVariableReferences(property) {
-  var i, l;
-  var value;
+function addHashSource(input, context, imports) {
+  var uri;
+  var normalizedUri;
+  var source;
 
-  // skipping `property` and property name tokens
-  for (i = 2, l = property.length; i < l; i++) {
-    value = property[i];
+  for (uri in input) {
+    source = input[uri];
+    normalizedUri = normalizeUri(uri);
 
-    if (value[0] != Token.PROPERTY_VALUE) {
-      continue;
-    }
+    imports.push(restoreAsImport(normalizedUri));
 
-    if (isVariableReference(value[1])) {
-      return true;
+    context.sourcesContent[normalizedUri] = source.styles;
+
+    if (source.sourceMap) {
+      trackSourceMap(source.sourceMap, normalizedUri, context);
     }
   }
 
-  return false;
+  return imports;
 }
 
-function isVariableReference(value) {
-  return Match.VARIABLE_REFERENCE_PATTERN.test(value);
+function normalizeUri(uri) {
+  var currentPath = path.resolve('');
+  var absoluteUri;
+  var relativeToCurrentPath;
+  var normalizedUri;
+
+  if (isRemoteResource(uri)) {
+    return uri;
+  }
+
+  absoluteUri = path.isAbsolute(uri) ?
+    uri :
+    path.resolve(uri);
+  relativeToCurrentPath = path.relative(currentPath, absoluteUri);
+  normalizedUri = normalizePath(relativeToCurrentPath);
+
+  return normalizedUri;
 }
 
-function isMultiplex(property) {
-  var value;
-  var i, l;
+function trackSourceMap(sourceMap, uri, context) {
+  var parsedMap = typeof sourceMap == 'string' ?
+      JSON.parse(sourceMap) :
+      sourceMap;
+  var rebasedMap = isRemoteResource(uri) ?
+    rebaseRemoteMap(parsedMap, uri) :
+    rebaseLocalMap(parsedMap, uri || UNKNOWN_URI, context.options.rebaseTo);
 
-  for (i = 3, l = property.length; i < l; i++) {
-    value = property[i];
+  context.inputSourceMapTracker.track(uri, rebasedMap);
+}
 
-    if (value[0] == Token.PROPERTY_VALUE && (value[1] == Marker.COMMA || value[1] == Marker.FORWARD_SLASH)) {
-      return true;
-    }
+function restoreAsImport(uri) {
+  return restoreImport('url(' + uri + ')', '') + Marker.SEMICOLON;
+}
+
+function fromStyles(styles, context, parentInlinerContext, callback) {
+  var tokens;
+  var rebaseConfig = {};
+
+  if (!context.source) {
+    rebaseConfig.fromBase = path.resolve('');
+    rebaseConfig.toBase = context.options.rebaseTo;
+  } else if (isRemoteResource(context.source)) {
+    rebaseConfig.fromBase = context.source;
+    rebaseConfig.toBase = context.source;
+  } else if (path.isAbsolute(context.source)) {
+    rebaseConfig.fromBase = path.dirname(context.source);
+    rebaseConfig.toBase = context.options.rebaseTo;
+  } else {
+    rebaseConfig.fromBase = path.dirname(path.resolve(context.source));
+    rebaseConfig.toBase = context.options.rebaseTo;
   }
 
-  return false;
+  tokens = tokenize(styles, context);
+  tokens = rebase(tokens, context.options.rebase, context.validator, rebaseConfig);
+
+  return allowsAnyImports(parentInlinerContext.inline) ?
+    inline(tokens, context, parentInlinerContext, callback) :
+    callback(tokens);
 }
 
-function hackFrom(property) {
-  var match = false;
-  var name = property[1][1];
-  var lastValue = property[property.length - 1];
+function allowsAnyImports(inline) {
+  return !(inline.length == 1 && inline[0] == 'none');
+}
 
-  if (name[0] == Match.UNDERSCORE) {
-    match = [Hack.UNDERSCORE];
-  } else if (name[0] == Match.ASTERISK) {
-    match = [Hack.ASTERISK];
-  } else if (lastValue[1][0] == Match.BANG && !lastValue[1].match(Match.IMPORTANT_WORD_PATTERN)) {
-    match = [Hack.BANG];
-  } else if (lastValue[1].indexOf(Match.BANG) > 0 && !lastValue[1].match(Match.IMPORTANT_WORD_PATTERN) && Match.BANG_SUFFIX_PATTERN.test(lastValue[1])) {
-    match = [Hack.BANG];
-  } else if (lastValue[1].indexOf(Match.BACKSLASH) > 0 && lastValue[1].indexOf(Match.BACKSLASH) == lastValue[1].length - Match.BACKSLASH.length - 1) {
-    match = [Hack.BACKSLASH, lastValue[1].substring(lastValue[1].indexOf(Match.BACKSLASH) + 1)];
-  } else if (lastValue[1].indexOf(Match.BACKSLASH) === 0 && lastValue[1].length == 2) {
-    match = [Hack.BACKSLASH, lastValue[1].substring(1)];
-  }
+function inline(tokens, externalContext, parentInlinerContext, callback) {
+  var inlinerContext = {
+    afterContent: false,
+    callback: callback,
+    errors: externalContext.errors,
+    externalContext: externalContext,
+    fetch: externalContext.options.fetch,
+    inlinedStylesheets: parentInlinerContext.inlinedStylesheets || externalContext.inlinedStylesheets,
+    inline: parentInlinerContext.inline,
+    inlineRequest: externalContext.options.inlineRequest,
+    inlineTimeout: externalContext.options.inlineTimeout,
+    isRemote: parentInlinerContext.isRemote || false,
+    localOnly: externalContext.localOnly,
+    outputTokens: [],
+    rebaseTo: externalContext.options.rebaseTo,
+    sourceTokens: tokens,
+    warnings: externalContext.warnings
+  };
 
-  return match;
+  return doInlineImports(inlinerContext);
 }
 
-function isImportant(property) {
-  if (property.length < 3)
-    return false;
+function doInlineImports(inlinerContext) {
+  var token;
+  var i, l;
 
-  var lastValue = property[property.length - 1];
-  if (Match.IMPORTANT_TOKEN_PATTERN.test(lastValue[1])) {
-    return true;
-  } else if (Match.IMPORTANT_WORD_PATTERN.test(lastValue[1]) && Match.SUFFIX_BANG_PATTERN.test(property[property.length - 2][1])) {
-    return true;
+  for (i = 0, l = inlinerContext.sourceTokens.length; i < l; i++) {
+    token = inlinerContext.sourceTokens[i];
+
+    if (token[0] == Token.AT_RULE && isImport(token[1])) {
+      inlinerContext.sourceTokens.splice(0, i);
+      return inlineStylesheet(token, inlinerContext);
+    } else if (token[0] == Token.AT_RULE || token[0] == Token.COMMENT) {
+      inlinerContext.outputTokens.push(token);
+    } else {
+      inlinerContext.outputTokens.push(token);
+      inlinerContext.afterContent = true;
+    }
   }
 
-  return false;
+  inlinerContext.sourceTokens = [];
+  return inlinerContext.callback(inlinerContext.outputTokens);
 }
 
-function stripImportant(property) {
-  var lastValue = property[property.length - 1];
-  var oneButLastValue = property[property.length - 2];
+function inlineStylesheet(token, inlinerContext) {
+  var uriAndMediaQuery = extractImportUrlAndMedia(token[1]);
+  var uri = uriAndMediaQuery[0];
+  var mediaQuery = uriAndMediaQuery[1];
+  var metadata = token[2];
 
-  if (Match.IMPORTANT_TOKEN_PATTERN.test(lastValue[1])) {
-    lastValue[1] = lastValue[1].replace(Match.IMPORTANT_TOKEN_PATTERN, '');
-  } else {
-    lastValue[1] = lastValue[1].replace(Match.IMPORTANT_WORD_PATTERN, '');
-    oneButLastValue[1] = oneButLastValue[1].replace(Match.SUFFIX_BANG_PATTERN, '');
-  }
+  return isRemoteResource(uri) ?
+    inlineRemoteStylesheet(uri, mediaQuery, metadata, inlinerContext) :
+    inlineLocalStylesheet(uri, mediaQuery, metadata, inlinerContext);
+}
 
-  if (lastValue[1].length === 0) {
-    property.pop();
-  }
+function inlineRemoteStylesheet(uri, mediaQuery, metadata, inlinerContext) {
+  var isAllowed = isAllowedResource(uri, true, inlinerContext.inline);
+  var originalUri = uri;
+  var isLoaded = uri in inlinerContext.externalContext.sourcesContent;
+  var isRuntimeResource = !hasProtocol(uri);
 
-  if (oneButLastValue[1].length === 0) {
-    property.pop();
+  if (inlinerContext.inlinedStylesheets.indexOf(uri) > -1) {
+    inlinerContext.warnings.push('Ignoring remote @import of "' + uri + '" as it has already been imported.');
+    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
+    return doInlineImports(inlinerContext);
+  } else if (inlinerContext.localOnly && inlinerContext.afterContent) {
+    inlinerContext.warnings.push('Ignoring remote @import of "' + uri + '" as no callback given and after other content.');
+    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
+    return doInlineImports(inlinerContext);
+  } else if (isRuntimeResource) {
+    inlinerContext.warnings.push('Skipping remote @import of "' + uri + '" as no protocol given.');
+    inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));
+    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
+    return doInlineImports(inlinerContext);
+  } else if (inlinerContext.localOnly && !isLoaded) {
+    inlinerContext.warnings.push('Skipping remote @import of "' + uri + '" as no callback given.');
+    inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));
+    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
+    return doInlineImports(inlinerContext);
+  } else if (!isAllowed && inlinerContext.afterContent) {
+    inlinerContext.warnings.push('Ignoring remote @import of "' + uri + '" as resource is not allowed and after other content.');
+    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
+    return doInlineImports(inlinerContext);
+  } else if (!isAllowed) {
+    inlinerContext.warnings.push('Skipping remote @import of "' + uri + '" as resource is not allowed.');
+    inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));
+    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
+    return doInlineImports(inlinerContext);
   }
-}
 
-function stripPrefixHack(property) {
-  property[1][1] = property[1][1].substring(1);
-}
+  inlinerContext.inlinedStylesheets.push(uri);
 
-function stripSuffixHack(property, hackFrom) {
-  var lastValue = property[property.length - 1];
-  lastValue[1] = lastValue[1]
-    .substring(0, lastValue[1].indexOf(hackFrom[0] == Hack.BACKSLASH ? Match.BACKSLASH : Match.BANG))
-    .trim();
+  function whenLoaded(error, importedStyles) {
+    if (error) {
+      inlinerContext.errors.push('Broken @import declaration of "' + uri + '" - ' + error);
 
-  if (lastValue[1].length === 0) {
-    property.pop();
-  }
-}
+      return process.nextTick(function () {
+        inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));
+        inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
+        doInlineImports(inlinerContext);
+      });
+    }
 
-function wrapSingle(property) {
-  var importantProperty = isImportant(property);
-  if (importantProperty) {
-    stripImportant(property);
-  }
+    inlinerContext.inline = inlinerContext.externalContext.options.inline;
+    inlinerContext.isRemote = true;
 
-  var whichHack = hackFrom(property);
-  if (whichHack[0] == Hack.ASTERISK || whichHack[0] == Hack.UNDERSCORE) {
-    stripPrefixHack(property);
-  } else if (whichHack[0] == Hack.BACKSLASH || whichHack[0] == Hack.BANG) {
-    stripSuffixHack(property, whichHack);
-  }
+    inlinerContext.externalContext.source = originalUri;
+    inlinerContext.externalContext.sourcesContent[uri] = importedStyles;
+    inlinerContext.externalContext.stats.originalSize += importedStyles.length;
 
-  return {
-    block: property[2] && property[2][0] == Token.PROPERTY_BLOCK,
-    components: [],
-    dirty: false,
-    hack: whichHack,
-    important: importantProperty,
-    name: property[1][1],
-    multiplex: property.length > 3 ? isMultiplex(property) : false,
-    position: 0,
-    shorthand: false,
-    unused: false,
-    value: property.slice(2)
-  };
-}
+    return fromStyles(importedStyles, inlinerContext.externalContext, inlinerContext, function (importedTokens) {
+      importedTokens = wrapInMedia(importedTokens, mediaQuery, metadata);
 
-module.exports = {
-  all: wrapAll,
-  single: wrapSingle
-};
+      inlinerContext.outputTokens = inlinerContext.outputTokens.concat(importedTokens);
+      inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
 
-},{"../tokenizer/marker":83,"../tokenizer/token":84,"./hack":8}],59:[function(require,module,exports){
-var DEFAULTS = {
-  '*': {
-    colors: {
-      opacity: true // rgba / hsla
-    },
-    properties: {
-      backgroundClipMerging: true, // background-clip to shorthand
-      backgroundOriginMerging: true, // background-origin to shorthand
-      backgroundSizeMerging: true, // background-size to shorthand
-      colors: true, // any kind of color transformations, like `#ff00ff` to `#f0f` or `#fff` into `red`
-      ieBangHack: false, // !ie suffix hacks on IE<8
-      ieFilters: false, // whether to preserve `filter` and `-ms-filter` properties
-      iePrefixHack: false, // underscore / asterisk prefix hacks on IE
-      ieSuffixHack: false, // \9 suffix hacks on IE6-9
-      merging: true, // merging properties into one
-      shorterLengthUnits: false, // optimize pixel units into `pt`, `pc` or `in` units
-      spaceAfterClosingBrace: true, // 'url() no-repeat' to 'url()no-repeat'
-      urlQuotes: false, // whether to wrap content of `url()` into quotes or not
-      zeroUnits: true // 0[unit] -> 0
-    },
-    selectors: {
-      adjacentSpace: false, // div+ nav Android stock browser hack
-      ie7Hack: false, // *+html hack
-      mergeablePseudoClasses: [
-        ':active',
-        ':after',
-        ':before',
-        ':empty',
-        ':checked',
-        ':disabled',
-        ':empty',
-        ':enabled',
-        ':first-child',
-        ':first-letter',
-        ':first-line',
-        ':first-of-type',
-        ':focus',
-        ':hover',
-        ':lang',
-        ':last-child',
-        ':last-of-type',
-        ':link',
-        ':not',
-        ':nth-child',
-        ':nth-last-child',
-        ':nth-last-of-type',
-        ':nth-of-type',
-        ':only-child',
-        ':only-of-type',
-        ':root',
-        ':target',
-        ':visited'
-      ], // selectors with these pseudo-classes can be merged as these are universally supported
-      mergeablePseudoElements: [
-        '::after',
-        '::before',
-        '::first-letter',
-        '::first-line'
-      ], // selectors with these pseudo-elements can be merged as these are universally supported
-      mergeLimit: 8191, // number of rules that can be safely merged together
-      multiplePseudoMerging: true
-    },
-    units: {
-      ch: true,
-      in: true,
-      pc: true,
-      pt: true,
-      rem: true,
-      vh: true,
-      vm: true, // vm is vmin on IE9+ see https://developer.mozilla.org/en-US/docs/Web/CSS/length
-      vmax: true,
-      vmin: true,
-      vw: true
-    }
+      return doInlineImports(inlinerContext);
+    });
   }
-};
 
-DEFAULTS.ie11 = DEFAULTS['*'];
+  return isLoaded ?
+    whenLoaded(null, inlinerContext.externalContext.sourcesContent[uri]) :
+    inlinerContext.fetch(uri, inlinerContext.inlineRequest, inlinerContext.inlineTimeout, whenLoaded);
+}
 
-DEFAULTS.ie10 = DEFAULTS['*'];
+function inlineLocalStylesheet(uri, mediaQuery, metadata, inlinerContext) {
+  var currentPath = path.resolve('');
+  var absoluteUri = path.isAbsolute(uri) ?
+    path.resolve(currentPath, uri[0] == '/' ? uri.substring(1) : uri) :
+    path.resolve(inlinerContext.rebaseTo, uri);
+  var relativeToCurrentPath = path.relative(currentPath, absoluteUri);
+  var importedStyles;
+  var isAllowed = isAllowedResource(uri, false, inlinerContext.inline);
+  var normalizedPath = normalizePath(relativeToCurrentPath);
+  var isLoaded = normalizedPath in inlinerContext.externalContext.sourcesContent;
 
-DEFAULTS.ie9 = merge(DEFAULTS['*'], {
-  properties: {
-    ieFilters: true,
-    ieSuffixHack: true
-  }
-});
+  if (inlinerContext.inlinedStylesheets.indexOf(absoluteUri) > -1) {
+    inlinerContext.warnings.push('Ignoring local @import of "' + uri + '" as it has already been imported.');
+  } else if (!isLoaded && (!fs.existsSync(absoluteUri) || !fs.statSync(absoluteUri).isFile())) {
+    inlinerContext.errors.push('Ignoring local @import of "' + uri + '" as resource is missing.');
+  } else if (!isAllowed && inlinerContext.afterContent) {
+    inlinerContext.warnings.push('Ignoring local @import of "' + uri + '" as resource is not allowed and after other content.');
+  } else if (inlinerContext.afterContent) {
+    inlinerContext.warnings.push('Ignoring local @import of "' + uri + '" as after other content.');
+  } else if (!isAllowed) {
+    inlinerContext.warnings.push('Skipping local @import of "' + uri + '" as resource is not allowed.');
+    inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));
+  } else {
+    importedStyles = isLoaded ?
+      inlinerContext.externalContext.sourcesContent[normalizedPath] :
+      fs.readFileSync(absoluteUri, 'utf-8');
 
-DEFAULTS.ie8 = merge(DEFAULTS.ie9, {
-  colors: {
-    opacity: false
-  },
-  properties: {
-    backgroundClipMerging: false,
-    backgroundOriginMerging: false,
-    backgroundSizeMerging: false,
-    iePrefixHack: true,
-    merging: false
-  },
-  selectors: {
-    mergeablePseudoClasses: [
-      ':after',
-      ':before',
-      ':first-child',
-      ':first-letter',
-      ':focus',
-      ':hover',
-      ':visited'
-    ],
-    mergeablePseudoElements: []
-  },
-  units: {
-    ch: false,
-    rem: false,
-    vh: false,
-    vm: false,
-    vmax: false,
-    vmin: false,
-    vw: false
-  }
-});
+    inlinerContext.inlinedStylesheets.push(absoluteUri);
+    inlinerContext.inline = inlinerContext.externalContext.options.inline;
 
-DEFAULTS.ie7 = merge(DEFAULTS.ie8, {
-  properties: {
-    ieBangHack: true
-  },
-  selectors: {
-    ie7Hack: true,
-    mergeablePseudoClasses: [
-      ':first-child',
-      ':first-letter',
-      ':hover',
-      ':visited'
-    ]
-  },
-});
+    inlinerContext.externalContext.source = normalizedPath;
+    inlinerContext.externalContext.sourcesContent[normalizedPath] = importedStyles;
+    inlinerContext.externalContext.stats.originalSize += importedStyles.length;
 
-function compatibilityFrom(source) {
-  return merge(DEFAULTS['*'], calculateSource(source));
-}
+    return fromStyles(importedStyles, inlinerContext.externalContext, inlinerContext, function (importedTokens) {
+      importedTokens = wrapInMedia(importedTokens, mediaQuery, metadata);
 
-function merge(source, target) {
-  for (var key in source) {
-    var value = source[key];
+      inlinerContext.outputTokens = inlinerContext.outputTokens.concat(importedTokens);
+      inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
 
-    if (typeof value === 'object' && !Array.isArray(value)) {
-      target[key] = merge(value, target[key] || {});
-    } else {
-      target[key] = key in target ? target[key] : value;
-    }
+      return doInlineImports(inlinerContext);
+    });
   }
 
-  return target;
-}
+  inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
 
-function calculateSource(source) {
-  if (typeof source == 'object')
-    return source;
+  return doInlineImports(inlinerContext);
+}
 
-  if (!/[,\+\-]/.test(source))
-    return DEFAULTS[source] || DEFAULTS['*'];
+function wrapInMedia(tokens, mediaQuery, metadata) {
+  if (mediaQuery) {
+    return [[Token.NESTED_BLOCK, [[Token.NESTED_BLOCK_SCOPE, '@media ' + mediaQuery, metadata]], tokens]];
+  } else {
+    return tokens;
+  }
+}
 
-  var parts = source.split(',');
-  var template = parts[0] in DEFAULTS ?
-    DEFAULTS[parts.shift()] :
-    DEFAULTS['*'];
+module.exports = readSources;
 
-  source = {};
+}).call(this,{"isBuffer":require("../../../../is-buffer/index.js")},require('_process'))
+},{"../../../../is-buffer/index.js":119,"../tokenizer/marker":78,"../tokenizer/token":79,"../tokenizer/tokenize":80,"../utils/has-protocol":83,"../utils/is-import":87,"../utils/is-remote-resource":88,"./apply-source-maps":64,"./extract-import-url-and-media":65,"./is-allowed-resource":67,"./load-original-sources":68,"./normalize-path":71,"./rebase":75,"./rebase-local-map":73,"./rebase-remote-map":74,"./restore-import":76,"_process":124,"fs":110,"path":122}],73:[function(require,module,exports){
+var path = require('path');
 
-  parts.forEach(function (part) {
-    var isAdd = part[0] == '+';
-    var key = part.substring(1).split('.');
-    var group = key[0];
-    var option = key[1];
+function rebaseLocalMap(sourceMap, sourceUri, rebaseTo) {
+  var currentPath = path.resolve('');
+  var absoluteUri = path.resolve(currentPath, sourceUri);
+  var absoluteUriDirectory = path.dirname(absoluteUri);
 
-    source[group] = source[group] || {};
-    source[group][option] = isAdd;
+  sourceMap.sources = sourceMap.sources.map(function(source) {
+    return path.relative(rebaseTo, path.resolve(absoluteUriDirectory, source));
   });
 
-  return merge(template, source);
+  return sourceMap;
 }
 
-module.exports = compatibilityFrom;
+module.exports = rebaseLocalMap;
 
-},{}],60:[function(require,module,exports){
-var loadRemoteResource = require('../reader/load-remote-resource');
+},{"path":122}],74:[function(require,module,exports){
+var path = require('path');
+var url = require('url');
 
-function fetchFrom(callback) {
-  return callback || loadRemoteResource;
-}
+function rebaseRemoteMap(sourceMap, sourceUri) {
+  var sourceDirectory = path.dirname(sourceUri);
 
-module.exports = fetchFrom;
+  sourceMap.sources = sourceMap.sources.map(function(source) {
+    return url.resolve(sourceDirectory, source);
+  });
 
-},{"../reader/load-remote-resource":74}],61:[function(require,module,exports){
-var systemLineBreak = require('os').EOL;
+  return sourceMap;
+}
 
-var override = require('../utils/override');
+module.exports = rebaseRemoteMap;
 
-var Breaks = {
-  AfterAtRule: 'afterAtRule',
-  AfterBlockBegins: 'afterBlockBegins',
-  AfterBlockEnds: 'afterBlockEnds',
-  AfterComment: 'afterComment',
-  AfterProperty: 'afterProperty',
-  AfterRuleBegins: 'afterRuleBegins',
-  AfterRuleEnds: 'afterRuleEnds',
-  BeforeBlockEnds: 'beforeBlockEnds',
-  BetweenSelectors: 'betweenSelectors'
-};
+},{"path":122,"url":175}],75:[function(require,module,exports){
+var extractImportUrlAndMedia = require('./extract-import-url-and-media');
+var restoreImport = require('./restore-import');
+var rewriteUrl = require('./rewrite-url');
 
-var BreakWith = {
-  CarriageReturnLineFeed: '\r\n',
-  LineFeed: '\n',
-  System: systemLineBreak
-};
+var Token = require('../tokenizer/token');
+var isImport = require('../utils/is-import');
 
-var IndentWith = {
-  Space: ' ',
-  Tab: '\t'
-};
+var SOURCE_MAP_COMMENT_PATTERN = /^\/\*# sourceMappingURL=(\S+) \*\/$/;
 
-var Spaces = {
-  AroundSelectorRelation: 'aroundSelectorRelation',
-  BeforeBlockBegins: 'beforeBlockBegins',
-  BeforeValue: 'beforeValue'
-};
+function rebase(tokens, rebaseAll, validator, rebaseConfig) {
+  return rebaseAll ?
+    rebaseEverything(tokens, validator, rebaseConfig) :
+    rebaseAtRules(tokens, validator, rebaseConfig);
+}
 
-var DEFAULTS = {
-  breaks: breaks(false),
-  breakWith: BreakWith.System,
-  indentBy: 0,
-  indentWith: IndentWith.Space,
-  spaces: spaces(false),
-  wrapAt: false,
-  semicolonAfterLastProperty: false
-};
+function rebaseEverything(tokens, validator, rebaseConfig) {
+  var token;
+  var i, l;
 
-var BEAUTIFY_ALIAS = 'beautify';
-var KEEP_BREAKS_ALIAS = 'keep-breaks';
+  for (i = 0, l = tokens.length; i < l; i++) {
+    token = tokens[i];
 
-var OPTION_SEPARATOR = ';';
-var OPTION_NAME_VALUE_SEPARATOR = ':';
-var HASH_VALUES_OPTION_SEPARATOR = ',';
-var HASH_VALUES_NAME_VALUE_SEPARATOR = '=';
+    switch (token[0]) {
+      case Token.AT_RULE:
+        rebaseAtRule(token, validator, rebaseConfig);
+        break;
+      case Token.AT_RULE_BLOCK:
+        rebaseProperties(token[2], validator, rebaseConfig);
+        break;
+      case Token.COMMENT:
+        rebaseSourceMapComment(token, rebaseConfig);
+        break;
+      case Token.NESTED_BLOCK:
+        rebaseEverything(token[2], validator, rebaseConfig);
+        break;
+      case Token.RULE:
+        rebaseProperties(token[2], validator, rebaseConfig);
+        break;
+    }
+  }
 
-var FALSE_KEYWORD_1 = 'false';
-var FALSE_KEYWORD_2 = 'off';
-var TRUE_KEYWORD_1 = 'true';
-var TRUE_KEYWORD_2 = 'on';
+  return tokens;
+}
 
-function breaks(value) {
-  var breakOptions = {};
+function rebaseAtRules(tokens, validator, rebaseConfig) {
+  var token;
+  var i, l;
 
-  breakOptions[Breaks.AfterAtRule] = value;
-  breakOptions[Breaks.AfterBlockBegins] = value;
-  breakOptions[Breaks.AfterBlockEnds] = value;
-  breakOptions[Breaks.AfterComment] = value;
-  breakOptions[Breaks.AfterProperty] = value;
-  breakOptions[Breaks.AfterRuleBegins] = value;
-  breakOptions[Breaks.AfterRuleEnds] = value;
-  breakOptions[Breaks.BeforeBlockEnds] = value;
-  breakOptions[Breaks.BetweenSelectors] = value;
+  for (i = 0, l = tokens.length; i < l; i++) {
+    token = tokens[i];
 
-  return breakOptions;
+    switch (token[0]) {
+      case Token.AT_RULE:
+        rebaseAtRule(token, validator, rebaseConfig);
+        break;
+    }
+  }
+
+  return tokens;
 }
 
-function spaces(value) {
-  var spaceOptions = {};
+function rebaseAtRule(token, validator, rebaseConfig) {
+  if (!isImport(token[1])) {
+    return;
+  }
 
-  spaceOptions[Spaces.AroundSelectorRelation] = value;
-  spaceOptions[Spaces.BeforeBlockBegins] = value;
-  spaceOptions[Spaces.BeforeValue] = value;
+  var uriAndMediaQuery = extractImportUrlAndMedia(token[1]);
+  var newUrl = rewriteUrl(uriAndMediaQuery[0], rebaseConfig);
+  var mediaQuery = uriAndMediaQuery[1];
 
-  return spaceOptions;
+  token[1] = restoreImport(newUrl, mediaQuery);
 }
 
-function formatFrom(source) {
-  if (source === undefined || source === false) {
-    return false;
-  }
+function rebaseSourceMapComment(token, rebaseConfig) {
+  var matches = SOURCE_MAP_COMMENT_PATTERN.exec(token[1]);
 
-  if (typeof source == 'object' && 'breakWith' in source) {
-    source = override(source, { breakWith: mapBreakWith(source.breakWith) });
+  if (matches && matches[1].indexOf('data:') === -1) {
+    token[1] = token[1].replace(matches[1], rewriteUrl(matches[1], rebaseConfig, true));
   }
+}
 
-  if (typeof source == 'object' && 'indentBy' in source) {
-    source = override(source, { indentBy: parseInt(source.indentBy) });
-  }
+function rebaseProperties(properties, validator, rebaseConfig) {
+  var property;
+  var value;
+  var i, l;
+  var j, m;
 
-  if (typeof source == 'object' && 'indentWith' in source) {
-    source = override(source, { indentWith: mapIndentWith(source.indentWith) });
+  for (i = 0, l = properties.length; i < l; i++) {
+    property = properties[i];
+
+    for (j = 2 /* 0 is Token.PROPERTY, 1 is name */, m = property.length; j < m; j++) {
+      value = property[j][1];
+
+      if (validator.isUrl(value)) {
+        property[j][1] = rewriteUrl(value, rebaseConfig);
+      }
+    }
   }
+}
 
-  if (typeof source == 'object') {
-    return override(DEFAULTS, source);
+module.exports = rebase;
+
+},{"../tokenizer/token":79,"../utils/is-import":87,"./extract-import-url-and-media":65,"./restore-import":76,"./rewrite-url":77}],76:[function(require,module,exports){
+function restoreImport(uri, mediaQuery) {
+  return ('@import ' + uri + ' ' + mediaQuery).trim();
+}
+
+module.exports = restoreImport;
+
+},{}],77:[function(require,module,exports){
+(function (process){
+var path = require('path');
+var url = require('url');
+
+var DOUBLE_QUOTE = '"';
+var SINGLE_QUOTE = '\'';
+var URL_PREFIX = 'url(';
+var URL_SUFFIX = ')';
+
+var QUOTE_PREFIX_PATTERN = /^["']/;
+var QUOTE_SUFFIX_PATTERN = /["']$/;
+var ROUND_BRACKETS_PATTERN = /[\(\)]/;
+var URL_PREFIX_PATTERN = /^url\(/i;
+var URL_SUFFIX_PATTERN = /\)$/;
+var WHITESPACE_PATTERN = /\s/;
+
+var isWindows = process.platform == 'win32';
+
+function rebase(uri, rebaseConfig) {
+  if (!rebaseConfig) {
+    return uri;
   }
 
-  if (typeof source == 'object') {
-    return override(DEFAULTS, source);
+  if (isAbsolute(uri) && !isRemote(rebaseConfig.toBase)) {
+    return uri;
   }
 
-  if (typeof source == 'string' && source == BEAUTIFY_ALIAS) {
-    return override(DEFAULTS, {
-      breaks: breaks(true),
-      indentBy: 2,
-      spaces: spaces(true)
-    });
+  if (isRemote(uri) || isSVGMarker(uri) || isInternal(uri)) {
+    return uri;
   }
 
-  if (typeof source == 'string' && source == KEEP_BREAKS_ALIAS) {
-    return override(DEFAULTS, {
-      breaks: {
-        afterAtRule: true,
-        afterBlockBegins: true,
-        afterBlockEnds: true,
-        afterComment: true,
-        afterRuleEnds: true,
-        beforeBlockEnds: true
-      }
-    });
+  if (isData(uri)) {
+    return '\'' + uri + '\'';
   }
 
-  if (typeof source == 'string') {
-    return override(DEFAULTS, toHash(source));
+  if (isRemote(rebaseConfig.toBase)) {
+    return url.resolve(rebaseConfig.toBase, uri);
   }
 
-  return DEFAULTS;
+  return rebaseConfig.absolute ?
+    normalize(absolute(uri, rebaseConfig)) :
+    normalize(relative(uri, rebaseConfig));
 }
 
-function toHash(string) {
-  return string
-    .split(OPTION_SEPARATOR)
-    .reduce(function (accumulator, directive) {
-      var parts = directive.split(OPTION_NAME_VALUE_SEPARATOR);
-      var name = parts[0];
-      var value = parts[1];
+function isAbsolute(uri) {
+  return path.isAbsolute(uri);
+}
 
-      if (name == 'breaks' || name == 'spaces') {
-        accumulator[name] = hashValuesToHash(value);
-      } else if (name == 'indentBy' || name == 'wrapAt') {
-        accumulator[name] = parseInt(value);
-      } else if (name == 'indentWith') {
-        accumulator[name] = mapIndentWith(value);
-      } else if (name == 'breakWith') {
-        accumulator[name] = mapBreakWith(value);
-      }
+function isSVGMarker(uri) {
+  return uri[0] == '#';
+}
 
-      return accumulator;
-    }, {});
+function isInternal(uri) {
+  return /^\w+:\w+/.test(uri);
 }
 
-function hashValuesToHash(string) {
-  return string
-    .split(HASH_VALUES_OPTION_SEPARATOR)
-    .reduce(function (accumulator, directive) {
-      var parts = directive.split(HASH_VALUES_NAME_VALUE_SEPARATOR);
-      var name = parts[0];
-      var value = parts[1];
+function isRemote(uri) {
+  return /^[^:]+?:\/\//.test(uri) || uri.indexOf('//') === 0;
+}
 
-      accumulator[name] = normalizeValue(value);
+function isData(uri) {
+  return uri.indexOf('data:') === 0;
+}
 
-      return accumulator;
-    }, {});
+function absolute(uri, rebaseConfig) {
+  return path
+    .resolve(path.join(rebaseConfig.fromBase || '', uri))
+    .replace(rebaseConfig.toBase, '');
 }
 
+function relative(uri, rebaseConfig) {
+  return path.relative(rebaseConfig.toBase, path.join(rebaseConfig.fromBase || '', uri));
+}
 
-function normalizeValue(value) {
-  switch (value) {
-    case FALSE_KEYWORD_1:
-    case FALSE_KEYWORD_2:
-      return false;
-    case TRUE_KEYWORD_1:
-    case TRUE_KEYWORD_2:
-      return true;
-    default:
-      return value;
-  }
+function normalize(uri) {
+  return isWindows ? uri.replace(/\\/g, '/') : uri;
 }
 
-function mapBreakWith(value) {
-  switch (value) {
-    case 'windows':
-    case 'crlf':
-    case BreakWith.CarriageReturnLineFeed:
-      return BreakWith.CarriageReturnLineFeed;
-    case 'unix':
-    case 'lf':
-    case BreakWith.LineFeed:
-      return BreakWith.LineFeed;
-    default:
-      return systemLineBreak;
+function quoteFor(unquotedUrl) {
+  if (unquotedUrl.indexOf(SINGLE_QUOTE) > -1) {
+    return DOUBLE_QUOTE;
+  } else if (unquotedUrl.indexOf(DOUBLE_QUOTE) > -1) {
+    return SINGLE_QUOTE;
+  } else if (hasWhitespace(unquotedUrl) || hasRoundBrackets(unquotedUrl)) {
+    return SINGLE_QUOTE;
+  } else {
+    return '';
   }
 }
 
-function mapIndentWith(value) {
-  switch (value) {
-    case 'space':
-      return IndentWith.Space;
-    case 'tab':
-      return IndentWith.Tab;
-    default:
-      return value;
-  }
+function hasWhitespace(url) {
+  return WHITESPACE_PATTERN.test(url);
 }
 
-module.exports = {
-  Breaks: Breaks,
-  Spaces: Spaces,
-  formatFrom: formatFrom
-};
+function hasRoundBrackets(url) {
+  return ROUND_BRACKETS_PATTERN.test(url);
+}
 
-},{"../utils/override":95,"os":109}],62:[function(require,module,exports){
-(function (process){
-var url = require('url');
+function rewriteUrl(originalUrl, rebaseConfig, pathOnly) {
+  var strippedUrl = originalUrl
+    .replace(URL_PREFIX_PATTERN, '')
+    .replace(URL_SUFFIX_PATTERN, '')
+    .trim();
 
-var override = require('../utils/override');
+  var unquotedUrl = strippedUrl
+    .replace(QUOTE_PREFIX_PATTERN, '')
+    .replace(QUOTE_SUFFIX_PATTERN, '')
+    .trim();
 
-function inlineRequestFrom(option) {
-  return override(
-    /* jshint camelcase: false */
-    proxyOptionsFrom(process.env.HTTP_PROXY || process.env.http_proxy),
-    option || {}
-  );
-}
+  var quote = strippedUrl[0] == SINGLE_QUOTE || strippedUrl[0] == DOUBLE_QUOTE ?
+    strippedUrl[0] :
+    quoteFor(unquotedUrl);
 
-function proxyOptionsFrom(httpProxy) {
-  return httpProxy ?
-    {
-      hostname: url.parse(httpProxy).hostname,
-      port: parseInt(url.parse(httpProxy).port)
-    } :
-    {};
+  return pathOnly ?
+    rebase(unquotedUrl, rebaseConfig) :
+    URL_PREFIX + quote + rebase(unquotedUrl, rebaseConfig) + quote + URL_SUFFIX;
 }
 
-module.exports = inlineRequestFrom;
+module.exports = rewriteUrl;
 
 }).call(this,require('_process'))
-},{"../utils/override":95,"_process":112,"url":162}],63:[function(require,module,exports){
-var DEFAULT_TIMEOUT = 5000;
+},{"_process":124,"path":122,"url":175}],78:[function(require,module,exports){
+var Marker = {
+  ASTERISK: '*',
+  AT: '@',
+  BACK_SLASH: '\\',
+  CARRIAGE_RETURN: '\r',
+  CLOSE_CURLY_BRACKET: '}',
+  CLOSE_ROUND_BRACKET: ')',
+  CLOSE_SQUARE_BRACKET: ']',
+  COLON: ':',
+  COMMA: ',',
+  DOUBLE_QUOTE: '"',
+  EXCLAMATION: '!',
+  FORWARD_SLASH: '/',
+  INTERNAL: '-clean-css-',
+  NEW_LINE_NIX: '\n',
+  OPEN_CURLY_BRACKET: '{',
+  OPEN_ROUND_BRACKET: '(',
+  OPEN_SQUARE_BRACKET: '[',
+  SEMICOLON: ';',
+  SINGLE_QUOTE: '\'',
+  SPACE: ' ',
+  TAB: '\t',
+  UNDERSCORE: '_'
+};
 
-function inlineTimeoutFrom(option) {
-  return option || DEFAULT_TIMEOUT;
-}
+module.exports = Marker;
 
-module.exports = inlineTimeoutFrom;
+},{}],79:[function(require,module,exports){
+var Token = {
+  AT_RULE: 'at-rule', // e.g. `@import`, `@charset`
+  AT_RULE_BLOCK: 'at-rule-block', // e.g. `@font-face{...}`
+  AT_RULE_BLOCK_SCOPE: 'at-rule-block-scope', // e.g. `@font-face`
+  COMMENT: 'comment', // e.g. `/* comment */`
+  NESTED_BLOCK: 'nested-block', // e.g. `@media screen{...}`, `@keyframes animation {...}`
+  NESTED_BLOCK_SCOPE: 'nested-block-scope', // e.g. `@media`, `@keyframes`
+  PROPERTY: 'property', // e.g. `color:red`
+  PROPERTY_BLOCK: 'property-block', // e.g. `--var:{color:red}`
+  PROPERTY_NAME: 'property-name', // e.g. `color`
+  PROPERTY_VALUE: 'property-value', // e.g. `red`
+  RAW: 'raw', // e.g. anything between /* clean-css ignore:start */ and /* clean-css ignore:end */ comments
+  RULE: 'rule', // e.g `div > a{...}`
+  RULE_SCOPE: 'rule-scope' // e.g `div > a`
+};
 
-},{}],64:[function(require,module,exports){
-function inlineOptionsFrom(rules) {
-  if (Array.isArray(rules)) {
-    return rules;
-  }
+module.exports = Token;
 
-  if (rules === false) {
-    return ['none'];
-  }
+},{}],80:[function(require,module,exports){
+var assert = require('assert'); // Nick
+var Marker = require('./marker');
+var Token = require('./token');
 
-  return undefined === rules ?
-    ['local'] :
-    rules.split(',');
-}
+var formatPosition = require('../utils/format-position');
 
-module.exports = inlineOptionsFrom;
+var Level = {
+  BLOCK: 'block',
+  COMMENT: 'comment',
+  DOUBLE_QUOTE: 'double-quote',
+  RULE: 'rule',
+  SINGLE_QUOTE: 'single-quote'
+};
 
-},{}],65:[function(require,module,exports){
-var roundingPrecisionFrom = require('./rounding-precision').roundingPrecisionFrom;
+var AT_RULES = [
+  '@charset',
+  '@import'
+];
 
-var override = require('../utils/override');
+var BLOCK_RULES = [
+  '@-moz-document',
+  '@document',
+  '@-moz-keyframes',
+  '@-ms-keyframes',
+  '@-o-keyframes',
+  '@-webkit-keyframes',
+  '@keyframes',
+  '@media',
+  '@supports'
+];
 
-var OptimizationLevel = {
-  Zero: '0',
-  One: '1',
-  Two: '2'
-};
+var IGNORE_END_COMMENT_PATTERN = /\/\* clean\-css ignore:end \*\/$/;
+var IGNORE_START_COMMENT_PATTERN = /^\/\* clean\-css ignore:start \*\//;
 
-var DEFAULTS = {};
+var PAGE_MARGIN_BOXES = [
+  '@bottom-center',
+  '@bottom-left',
+  '@bottom-left-corner',
+  '@bottom-right',
+  '@bottom-right-corner',
+  '@left-bottom',
+  '@left-middle',
+  '@left-top',
+  '@right-bottom',
+  '@right-middle',
+  '@right-top',
+  '@top-center',
+  '@top-left',
+  '@top-left-corner',
+  '@top-right',
+  '@top-right-corner'
+];
 
-DEFAULTS[OptimizationLevel.Zero] = {};
-DEFAULTS[OptimizationLevel.One] = {
-  cleanupCharsets: true,
-  normalizeUrls: true,
-  optimizeBackground: true,
-  optimizeBorderRadius: true,
-  optimizeFilter: true,
-  optimizeFontWeight: true,
-  optimizeOutline: true,
-  removeEmpty: true,
-  removeNegativePaddings: true,
-  removeQuotes: true,
-  removeWhitespace: true,
-  replaceMultipleZeros: true,
-  replaceTimeUnits: true,
-  replaceZeroUnits: true,
-  roundingPrecision: roundingPrecisionFrom(undefined),
-  selectorsSortingMethod: 'standard',
-  specialComments: 'all',
-  tidyAtRules: true,
-  tidyBlockScopes: true,
-  tidySelectors: true,
-  transform: noop
-};
-DEFAULTS[OptimizationLevel.Two] = {
-  mergeAdjacentRules: true,
-  mergeIntoShorthands: true,
-  mergeMedia: true,
-  mergeNonAdjacentRules: true,
-  mergeSemantically: false,
-  overrideProperties: true,
-  removeEmpty: true,
-  reduceNonAdjacentRules: true,
-  removeDuplicateFontRules: true,
-  removeDuplicateMediaBlocks: true,
-  removeDuplicateRules: true,
-  removeUnusedAtRules: false,
-  restructureRules: false,
-  skipProperties: []
-};
+var EXTRA_PAGE_BOXES = [
+  '@footnote',
+  '@footnotes',
+  '@left',
+  '@page-float-bottom',
+  '@page-float-top',
+  '@right'
+];
 
-var ALL_KEYWORD_1 = '*';
-var ALL_KEYWORD_2 = 'all';
-var FALSE_KEYWORD_1 = 'false';
-var FALSE_KEYWORD_2 = 'off';
-var TRUE_KEYWORD_1 = 'true';
-var TRUE_KEYWORD_2 = 'on';
+var REPEAT_PATTERN = /^\[\s{0,31}\d+\s{0,31}\]$/;
+var RULE_WORD_SEPARATOR_PATTERN = /[\s\(]/;
+var TAIL_BROKEN_VALUE_PATTERN = /[\s|\}]*$/;
 
-var LIST_VALUE_SEPARATOR = ',';
-var OPTION_SEPARATOR = ';';
-var OPTION_VALUE_SEPARATOR = ':';
+function tokenize(source, externalContext) {
+  var internalContext = {
+    level: Level.BLOCK,
+    position: {
+      source: externalContext.source || undefined,
+      line: 1,
+      column: 0,
+      index: //Nick 0
+        externalContext.embeddedStart == -1 ?
+          0 :
+          externalContext.embeddedStart
+    }
+  };
 
-function noop() {}
+  return intoTokens(source, externalContext, internalContext, false);
+}
 
-function optimizationLevelFrom(source) {
-  var level = override(DEFAULTS, {});
-  var Zero = OptimizationLevel.Zero;
-  var One = OptimizationLevel.One;
-  var Two = OptimizationLevel.Two;
+function intoTokens(source, externalContext, internalContext, isNested) {
+  var allTokens = [];
+  var newTokens = allTokens;
+  var lastToken;
+  var ruleToken;
+  var ruleTokens = [];
+  var propertyToken;
+  var metadata;
+  var metadatas = [];
+  var level = internalContext.level;
+  var levels = [];
+  var buffer = [];
+  var buffers = [];
+  var serializedBuffer;
+  var serializedBufferPart;
+  var roundBracketLevel = 0;
+  var isQuoted;
+  var isSpace;
+  var isNewLineNix;
+  var isNewLineWin;
+  var isCarriageReturn;
+  var isCommentStart;
+  var wasCommentStart = false;
+  var isCommentEnd;
+  var wasCommentEnd = false;
+  var isCommentEndMarker;
+  var isEscaped;
+  var wasEscaped = false;
+  var isRaw = false;
+  var seekingValue = false;
+  var seekingPropertyBlockClosing = false;
+  var position = internalContext.position;
+  var lastCommentStartAt;
 
+  for (; position.index < source.length; position.index++) {
+    var character = source[position.index];
 
-  if (undefined === source) {
-    delete level[Two];
-    return level;
-  }
+    isQuoted = level == Level.SINGLE_QUOTE || level == Level.DOUBLE_QUOTE;
+    isSpace = character == Marker.SPACE || character == Marker.TAB;
+    isNewLineNix = character == Marker.NEW_LINE_NIX;
+    isNewLineWin = character == Marker.NEW_LINE_NIX && source[position.index - 1] == Marker.CARRIAGE_RETURN;
+    isCarriageReturn = character == Marker.CARRIAGE_RETURN && source[position.index + 1] && source[position.index + 1] != Marker.NEW_LINE_NIX;
+    isCommentStart = !wasCommentEnd && level != Level.COMMENT && !isQuoted && character == Marker.ASTERISK && source[position.index - 1] == Marker.FORWARD_SLASH;
+    isCommentEndMarker = !wasCommentStart && !isQuoted && character == Marker.FORWARD_SLASH && source[position.index - 1] == Marker.ASTERISK;
+    isCommentEnd = level == Level.COMMENT && isCommentEndMarker;
+    roundBracketLevel = Math.max(roundBracketLevel, 0);
 
-  if (typeof source == 'string') {
-    source = parseInt(source);
-  }
+    metadata = buffer.length === 0 ?
+      [position.line, position.column, position.source] :
+      metadata;
 
-  if (typeof source == 'number' && source === parseInt(Two)) {
-    return level;
-  }
+    if (isEscaped) {
+      // previous character was a backslash
+      buffer.push(character);
+    } else if (!isCommentEnd && level == Level.COMMENT) {
+      buffer.push(character);
+    } else if (!isCommentStart && !isCommentEnd && isRaw) {
+      buffer.push(character);
+    } else if (isCommentStart && (level == Level.BLOCK || level == Level.RULE) && buffer.length > 1) {
+      // comment start within block preceded by some content, e.g. div/*<--
+      metadatas.push(metadata);
+      buffer.push(character);
+      buffers.push(buffer.slice(0, buffer.length - 2));
 
-  if (typeof source == 'number' && source === parseInt(One)) {
-    delete level[Two];
-    return level;
-  }
+      buffer = buffer.slice(buffer.length - 2);
+      metadata = [position.line, position.column - 1, position.source];
 
-  if (typeof source == 'number' && source === parseInt(Zero)) {
-    delete level[Two];
-    delete level[One];
-    return level;
-  }
+      levels.push(level);
+      level = Level.COMMENT;
+    } else if (isCommentStart) {
+      // comment start, e.g. /*<--
+      levels.push(level);
+      level = Level.COMMENT;
+      buffer.push(character);
+    } else if (isCommentEnd && isIgnoreStartComment(buffer)) {
+      // ignore:start comment end, e.g. /* clean-css ignore:start */<--
+      serializedBuffer = buffer.join('').trim() + character;
+      lastToken = [Token.COMMENT, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]];
+      newTokens.push(lastToken);
 
-  if (typeof source == 'object') {
-    source = covertValuesToHashes(source);
-  }
+      isRaw = true;
+      metadata = metadatas.pop() || null;
+      buffer = buffers.pop() || [];
+    } else if (isCommentEnd && isIgnoreEndComment(buffer)) {
+      // ignore:start comment end, e.g. /* clean-css ignore:end */<--
+      serializedBuffer = buffer.join('') + character;
+      lastCommentStartAt = serializedBuffer.lastIndexOf(Marker.FORWARD_SLASH + Marker.ASTERISK);
 
-  if (One in source && 'roundingPrecision' in source[One]) {
-    source[One].roundingPrecision = roundingPrecisionFrom(source[One].roundingPrecision);
-  }
+      serializedBufferPart = serializedBuffer.substring(0, lastCommentStartAt);
+      lastToken = [Token.RAW, serializedBufferPart, [originalMetadata(metadata, serializedBufferPart, externalContext)]];
+      newTokens.push(lastToken);
 
-  if (Two in source && 'skipProperties' in source[Two] && typeof(source[Two].skipProperties) == 'string') {
-    source[Two].skipProperties = source[Two].skipProperties.split(LIST_VALUE_SEPARATOR);
-  }
+      serializedBufferPart = serializedBuffer.substring(lastCommentStartAt);
+      metadata = [position.line, position.column - serializedBufferPart.length + 1, position.source];
+      lastToken = [Token.COMMENT, serializedBufferPart, [originalMetadata(metadata, serializedBufferPart, externalContext)]];
+      newTokens.push(lastToken);
 
-  if (Zero in source || One in source || Two in source) {
-    level[Zero] = override(level[Zero], source[Zero]);
-  }
+      isRaw = false;
+      level = levels.pop();
+      metadata = metadatas.pop() || null;
+      buffer = buffers.pop() || [];
+    } else if (isCommentEnd) {
+      // comment end, e.g. /* comment */<--
+      serializedBuffer = buffer.join('').trim() + character;
+      lastToken = [Token.COMMENT, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]];
+      newTokens.push(lastToken);
 
-  if (One in source && ALL_KEYWORD_1 in source[One]) {
-    level[One] = override(level[One], defaults(One, normalizeValue(source[One][ALL_KEYWORD_1])));
-    delete source[One][ALL_KEYWORD_1];
-  }
+      level = levels.pop();
+      metadata = metadatas.pop() || null;
+      buffer = buffers.pop() || [];
+    } else if (isCommentEndMarker && source[position.index + 1] != Marker.ASTERISK) {
+      externalContext.warnings.push('Unexpected \'*/\' at ' + formatPosition([position.line, position.column, position.source]) + '.');
+      buffer = [];
+    } else if (character == Marker.SINGLE_QUOTE && !isQuoted) {
+      // single quotation start, e.g. a[href^='https<--
+      levels.push(level);
+      level = Level.SINGLE_QUOTE;
+      buffer.push(character);
+    } else if (character == Marker.SINGLE_QUOTE && level == Level.SINGLE_QUOTE) {
+      // single quotation end, e.g. a[href^='https'<--
+      level = levels.pop();
+      buffer.push(character);
+    } else if (character == Marker.DOUBLE_QUOTE && !isQuoted) {
+      // double quotation start, e.g. a[href^="<--
+      levels.push(level);
+      level = Level.DOUBLE_QUOTE;
+      buffer.push(character);
+    } else if (character == Marker.DOUBLE_QUOTE && level == Level.DOUBLE_QUOTE) {
+      // double quotation end, e.g. a[href^="https"<--
+      level = levels.pop();
+      buffer.push(character);
+    } else if (!isCommentStart && !isCommentEnd && character != Marker.CLOSE_ROUND_BRACKET && character != Marker.OPEN_ROUND_BRACKET && level != Level.COMMENT && !isQuoted && roundBracketLevel > 0) {
+      // character inside any function, e.g. hsla(.<--
+      buffer.push(character);
+    } else if (character == Marker.OPEN_ROUND_BRACKET && !isQuoted && level != Level.COMMENT && !seekingValue) {
+      // round open bracket, e.g. @import url(<--
+      buffer.push(character);
 
-  if (One in source && ALL_KEYWORD_2 in source[One]) {
-    level[One] = override(level[One], defaults(One, normalizeValue(source[One][ALL_KEYWORD_2])));
-    delete source[One][ALL_KEYWORD_2];
-  }
+      roundBracketLevel++;
+    } else if (character == Marker.CLOSE_ROUND_BRACKET && !isQuoted && level != Level.COMMENT && !seekingValue) {
+      // round open bracket, e.g. @import url(test.css)<--
+      buffer.push(character);
 
-  if (One in source || Two in source) {
-    level[One] = override(level[One], source[One]);
-  } else {
-    delete level[One];
-  }
+      roundBracketLevel--;
+    } else if (character == Marker.SEMICOLON && level == Level.BLOCK && buffer[0] == Marker.AT) {
+      // semicolon ending rule at block level, e.g. @import '...';<--
+      serializedBuffer = buffer.join('').trim();
+      allTokens.push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
 
-  if (Two in source && ALL_KEYWORD_1 in source[Two]) {
-    level[Two] = override(level[Two], defaults(Two, normalizeValue(source[Two][ALL_KEYWORD_1])));
-    delete source[Two][ALL_KEYWORD_1];
-  }
+      buffer = [];
+    } else if (character == Marker.COMMA && level == Level.BLOCK && ruleToken) {
+      // comma separator at block level, e.g. a,div,<--
+      serializedBuffer = buffer.join('').trim();
+      ruleToken[1].push([tokenScopeFrom(ruleToken[0]), serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext, ruleToken[1].length)]]);
 
-  if (Two in source && ALL_KEYWORD_2 in source[Two]) {
-    level[Two] = override(level[Two], defaults(Two, normalizeValue(source[Two][ALL_KEYWORD_2])));
-    delete source[Two][ALL_KEYWORD_2];
-  }
+      buffer = [];
+    } else if (character == Marker.COMMA && level == Level.BLOCK && tokenTypeFrom(buffer) == Token.AT_RULE) {
+      // comma separator at block level, e.g. @import url(...) screen,<--
+      // keep iterating as end semicolon will create the token
+      buffer.push(character);
+    } else if (character == Marker.COMMA && level == Level.BLOCK) {
+      // comma separator at block level, e.g. a,<--
+      ruleToken = [tokenTypeFrom(buffer), [], []];
+      serializedBuffer = buffer.join('').trim();
+      ruleToken[1].push([tokenScopeFrom(ruleToken[0]), serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext, 0)]]);
 
-  if (Two in source) {
-    level[Two] = override(level[Two], source[Two]);
-  } else {
-    delete level[Two];
-  }
+      buffer = [];
+    } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.BLOCK && ruleToken && ruleToken[0] == Token.NESTED_BLOCK) {
+      // open brace opening at-rule at block level, e.g. @media{<--
+      serializedBuffer = buffer.join('').trim();
+      ruleToken[1].push([Token.NESTED_BLOCK_SCOPE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+      allTokens.push(ruleToken);
 
-  return level;
-}
+      levels.push(level);
+      position.column++;
+      position.index++;
+      buffer = [];
 
-function defaults(level, value) {
-  var options = override(DEFAULTS[level], {});
-  var key;
+      ruleToken[2] = intoTokens(source, externalContext, internalContext, true);
+      ruleToken = null;
+    } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.BLOCK && tokenTypeFrom(buffer) == Token.NESTED_BLOCK) {
+      // open brace opening at-rule at block level, e.g. @media{<--
+      serializedBuffer = buffer.join('').trim();
+      ruleToken = ruleToken || [Token.NESTED_BLOCK, [], []];
+      ruleToken[1].push([Token.NESTED_BLOCK_SCOPE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+      allTokens.push(ruleToken);
 
-  for (key in options) {
-    if (typeof options[key] == 'boolean') {
-      options[key] = value;
-    }
-  }
+      levels.push(level);
+      position.column++;
+      position.index++;
+      buffer = [];
 
-  return options;
-}
+      ruleToken[2] = intoTokens(source, externalContext, internalContext, true);
+      ruleToken = null;
+    } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.BLOCK) {
+      // open brace opening rule at block level, e.g. div{<--
+      serializedBuffer = buffer.join('').trim();
+      ruleToken = ruleToken || [tokenTypeFrom(buffer), [], []];
+      ruleToken[1].push([tokenScopeFrom(ruleToken[0]), serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext, ruleToken[1].length)]]);
+      newTokens = ruleToken[2];
+      allTokens.push(ruleToken);
 
-function normalizeValue(value) {
-  switch (value) {
-    case FALSE_KEYWORD_1:
-    case FALSE_KEYWORD_2:
-      return false;
-    case TRUE_KEYWORD_1:
-    case TRUE_KEYWORD_2:
-      return true;
-    default:
-      return value;
-  }
-}
+      levels.push(level);
+      level = Level.RULE;
+      buffer = [];
+    } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.RULE && seekingValue) {
+      // open brace opening rule at rule level, e.g. div{--variable:{<--
+      ruleTokens.push(ruleToken);
+      ruleToken = [Token.PROPERTY_BLOCK, []];
+      propertyToken.push(ruleToken);
+      newTokens = ruleToken[1];
 
-function covertValuesToHashes(source) {
-  var clonedSource = override(source, {});
-  var level;
-  var i;
+      levels.push(level);
+      level = Level.RULE;
+      seekingValue = false;
+    } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.RULE && isPageMarginBox(buffer)) {
+      // open brace opening page-margin box at rule level, e.g. @page{@top-center{<--
+      serializedBuffer = buffer.join('').trim();
+      ruleTokens.push(ruleToken);
+      ruleToken = [Token.AT_RULE_BLOCK, [], []];
+      ruleToken[1].push([Token.AT_RULE_BLOCK_SCOPE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+      newTokens.push(ruleToken);
+      newTokens = ruleToken[2];
 
-  for (i = 0; i <= 2; i++) {
-    level = '' + i;
+      levels.push(level);
+      level = Level.RULE;
+      buffer = [];
+    } else if (character == Marker.COLON && level == Level.RULE && !seekingValue) {
+      // colon at rule level, e.g. a{color:<--
+      serializedBuffer = buffer.join('').trim();
+      propertyToken = [Token.PROPERTY, [Token.PROPERTY_NAME, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]];
+      newTokens.push(propertyToken);
 
-    if (level in clonedSource && (clonedSource[level] === undefined || clonedSource[level] === false)) {
-      delete clonedSource[level];
-    }
+      seekingValue = true;
+      buffer = [];
+    } else if (character == Marker.SEMICOLON && level == Level.RULE && propertyToken && ruleTokens.length > 0 && buffer.length > 0 && buffer[0] == Marker.AT) {
+      // semicolon at rule level for at-rule, e.g. a{--color:{@apply(--other-color);<--
+      serializedBuffer = buffer.join('').trim();
+      ruleToken[1].push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
 
-    if (level in clonedSource && clonedSource[level] === true) {
-      clonedSource[level] = {};
-    }
+      buffer = [];
+    } else if (character == Marker.SEMICOLON && level == Level.RULE && propertyToken && buffer.length > 0) {
+      // semicolon at rule level, e.g. a{color:red;<--
+      serializedBuffer = buffer.join('').trim();
+      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
 
-    if (level in clonedSource && typeof clonedSource[level] == 'string') {
-      clonedSource[level] = covertToHash(clonedSource[level], level);
-    }
-  }
+      propertyToken = null;
+      seekingValue = false;
+      buffer = [];
+    } else if (character == Marker.SEMICOLON && level == Level.RULE && propertyToken && buffer.length === 0) {
+      // semicolon after bracketed value at rule level, e.g. a{color:rgb(...);<--
+      propertyToken = null;
+      seekingValue = false;
+    } else if (character == Marker.SEMICOLON && level == Level.RULE && buffer.length > 0 && buffer[0] == Marker.AT) {
+      // semicolon for at-rule at rule level, e.g. a{@apply(--variable);<--
+      serializedBuffer = buffer.join('');
+      newTokens.push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
 
-  return clonedSource;
-}
+      seekingValue = false;
+      buffer = [];
+    } else if (character == Marker.SEMICOLON && level == Level.RULE && seekingPropertyBlockClosing) {
+      // close brace after a property block at rule level, e.g. a{--custom:{color:red;};<--
+      seekingPropertyBlockClosing = false;
+      buffer = [];
+    } else if (character == Marker.SEMICOLON && level == Level.RULE && buffer.length === 0) {
+      // stray semicolon at rule level, e.g. a{;<--
+      // noop
+    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && seekingValue && buffer.length > 0 && ruleTokens.length > 0) {
+      // close brace at rule level, e.g. a{--color:{color:red}<--
+      serializedBuffer = buffer.join('');
+      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+      propertyToken = null;
+      ruleToken = ruleTokens.pop();
+      newTokens = ruleToken[2];
 
-function covertToHash(asString, level) {
-  return asString
-    .split(OPTION_SEPARATOR)
-    .reduce(function (accumulator, directive) {
-      var parts = directive.split(OPTION_VALUE_SEPARATOR);
-      var name = parts[0];
-      var value = parts[1];
-      var normalizedValue = normalizeValue(value);
+      level = levels.pop();
+      seekingValue = false;
+      buffer = [];
+    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && buffer.length > 0 && buffer[0] == Marker.AT && ruleTokens.length > 0) {
+      // close brace at rule level for at-rule, e.g. a{--color:{@apply(--other-color)}<--
+      serializedBuffer = buffer.join('');
+      ruleToken[1].push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+      propertyToken = null;
+      ruleToken = ruleTokens.pop();
+      newTokens = ruleToken[2];
 
-      if (ALL_KEYWORD_1 == name || ALL_KEYWORD_2 == name) {
-        accumulator = override(accumulator, defaults(level, normalizedValue));
-      } else {
-        accumulator[name] = normalizedValue;
-      }
+      level = levels.pop();
+      seekingValue = false;
+      buffer = [];
+    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && ruleTokens.length > 0) {
+      // close brace at rule level after space, e.g. a{--color:{color:red }<--
+      propertyToken = null;
+      ruleToken = ruleTokens.pop();
+      newTokens = ruleToken[2];
 
-      return accumulator;
-    }, {});
-}
+      level = levels.pop();
+      seekingValue = false;
+    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && buffer.length > 0) {
+      // close brace at rule level, e.g. a{color:red}<--
+      serializedBuffer = buffer.join('');
+      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+      propertyToken = null;
+      ruleToken = ruleTokens.pop();
+      newTokens = allTokens;
 
-module.exports = {
-  OptimizationLevel: OptimizationLevel,
-  optimizationLevelFrom: optimizationLevelFrom,
-};
+      level = levels.pop();
+      seekingValue = false;
+      buffer = [];
+    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && buffer.length > 0 && buffer[0] == Marker.AT) {
+      // close brace after at-rule at rule level, e.g. a{@apply(--variable)}<--
+      propertyToken = null;
+      ruleToken = null;
+      serializedBuffer = buffer.join('').trim();
+      newTokens.push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+      newTokens = allTokens;
 
-},{"../utils/override":95,"./rounding-precision":68}],66:[function(require,module,exports){
-(function (process){
-var path = require('path');
+      level = levels.pop();
+      seekingValue = false;
+      buffer = [];
+    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && levels[levels.length - 1] == Level.RULE) {
+      // close brace after a property block at rule level, e.g. a{--custom:{color:red;}<--
+      propertyToken = null;
+      ruleToken = ruleTokens.pop();
+      newTokens = ruleToken[2];
 
-function rebaseToFrom(option) {
-  return option ? path.resolve(option) : process.cwd();
-}
+      level = levels.pop();
+      seekingValue = false;
+      seekingPropertyBlockClosing = true;
+      buffer = [];
+    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE) {
+      // close brace after a rule, e.g. a{color:red;}<--
+      propertyToken = null;
+      ruleToken = null;
+      newTokens = allTokens;
 
-module.exports = rebaseToFrom;
+      level = levels.pop();
+      seekingValue = false;
+    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.BLOCK && !isNested /*&& position.index <= source.length - 1*/) {
+      assert(position.index <= source.length - 1); // Nick
+      if (externalContext.embeddedStart != -1) {
+        externalContext.embeddedEnd = position.index;
+        break;
+      } 
+      // stray close brace at block level, e.g. a{color:red}color:blue}<--
+      externalContext.warnings.push('Unexpected \'}\' at ' + formatPosition([position.line, position.column, position.source]) + '.');
+      buffer.push(character);
+    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.BLOCK) {
+      // close brace at block level, e.g. @media screen {...}<--
+      break;
+    } else if (character == Marker.OPEN_ROUND_BRACKET && level == Level.RULE && seekingValue) {
+      // round open bracket, e.g. a{color:hsla(<--
+      buffer.push(character);
+      roundBracketLevel++;
+    } else if (character == Marker.CLOSE_ROUND_BRACKET && level == Level.RULE && seekingValue && roundBracketLevel == 1) {
+      // round close bracket, e.g. a{color:hsla(0,0%,0%)<--
+      buffer.push(character);
+      serializedBuffer = buffer.join('').trim();
+      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
 
-}).call(this,require('_process'))
-},{"_process":112,"path":110}],67:[function(require,module,exports){
-function rebaseFrom(rebaseOption) {
-  return undefined === rebaseOption ? true : !!rebaseOption;
-}
+      roundBracketLevel--;
+      buffer = [];
+    } else if (character == Marker.CLOSE_ROUND_BRACKET && level == Level.RULE && seekingValue) {
+      // round close bracket within other brackets, e.g. a{width:calc((10rem / 2)<--
+      buffer.push(character);
+      roundBracketLevel--;
+    } else if (character == Marker.FORWARD_SLASH && source[position.index + 1] != Marker.ASTERISK && level == Level.RULE && seekingValue && buffer.length > 0) {
+      // forward slash within a property, e.g. a{background:url(image.png) 0 0/<--
+      serializedBuffer = buffer.join('').trim();
+      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+      propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);
 
-module.exports = rebaseFrom;
+      buffer = [];
+    } else if (character == Marker.FORWARD_SLASH && source[position.index + 1] != Marker.ASTERISK && level == Level.RULE && seekingValue) {
+      // forward slash within a property after space, e.g. a{background:url(image.png) 0 0 /<--
+      propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);
 
-},{}],68:[function(require,module,exports){
-var override = require('../utils/override');
+      buffer = [];
+    } else if (character == Marker.COMMA && level == Level.RULE && seekingValue && buffer.length > 0) {
+      // comma within a property, e.g. a{background:url(image.png),<--
+      serializedBuffer = buffer.join('').trim();
+      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+      propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);
 
-var INTEGER_PATTERN = /^\d+$/;
+      buffer = [];
+    } else if (character == Marker.COMMA && level == Level.RULE && seekingValue) {
+      // comma within a property after space, e.g. a{background:url(image.png) ,<--
+      propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);
 
-var ALL_UNITS = ['*', 'all'];
-var DEFAULT_PRECISION = 'off'; // all precision changes are disabled
-var DIRECTIVES_SEPARATOR = ','; // e.g. *=5,px=3
-var DIRECTIVE_VALUE_SEPARATOR = '='; // e.g. *=5
+      buffer = [];
+    } else if (character == Marker.CLOSE_SQUARE_BRACKET && propertyToken && propertyToken.length > 1 && buffer.length > 0 && isRepeatToken(buffer)) {
+      buffer.push(character);
+      serializedBuffer = buffer.join('').trim();
+      propertyToken[propertyToken.length - 1][1] += serializedBuffer;
 
-function roundingPrecisionFrom(source) {
-  return override(defaults(DEFAULT_PRECISION), buildPrecisionFrom(source));
-}
+      buffer = [];
+    } else if ((isSpace || (isNewLineNix && !isNewLineWin)) && level == Level.RULE && seekingValue && propertyToken && buffer.length > 0) {
+      // space or *nix newline within property, e.g. a{margin:0 <--
+      serializedBuffer = buffer.join('').trim();
+      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
 
-function defaults(value) {
-  return {
-    'ch': value,
-    'cm': value,
-    'em': value,
-    'ex': value,
-    'in': value,
-    'mm': value,
-    'pc': value,
-    'pt': value,
-    'px': value,
-    'q': value,
-    'rem': value,
-    'vh': value,
-    'vmax': value,
-    'vmin': value,
-    'vw': value,
-    '%': value
-  };
-}
+      buffer = [];
+    } else if (isNewLineWin && level == Level.RULE && seekingValue && propertyToken && buffer.length > 1) {
+      // win newline within property, e.g. a{margin:0\r\n<--
+      serializedBuffer = buffer.join('').trim();
+      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
 
-function buildPrecisionFrom(source) {
-  if (source === null || source === undefined) {
-    return {};
-  }
+      buffer = [];
+    } else if (isNewLineWin && level == Level.RULE && seekingValue) {
+      // win newline
+      buffer = [];
+    } else if (buffer.length == 1 && isNewLineWin) {
+      // ignore windows newline which is composed of two characters
+      buffer.pop();
+    } else if (buffer.length > 0 || !isSpace && !isNewLineNix && !isNewLineWin && !isCarriageReturn) {
+      // any character
+      buffer.push(character);
+    }
 
-  if (typeof source == 'boolean') {
-    return {};
-  }
+    wasEscaped = isEscaped;
+    isEscaped = !wasEscaped && character == Marker.BACK_SLASH;
+    wasCommentStart = isCommentStart;
+    wasCommentEnd = isCommentEnd;
 
-  if (typeof source == 'number' && source == -1) {
-    return defaults(DEFAULT_PRECISION);
+    position.line = (isNewLineWin || isNewLineNix || isCarriageReturn) ? position.line + 1 : position.line;
+    position.column = (isNewLineWin || isNewLineNix || isCarriageReturn) ? 0 : position.column + 1;
   }
 
-  if (typeof source == 'number') {
-    return defaults(source);
+  if (seekingValue) {
+    externalContext.warnings.push('Missing \'}\' at ' + formatPosition([position.line, position.column, position.source]) + '.');
   }
 
-  if (typeof source == 'string' && INTEGER_PATTERN.test(source)) {
-    return defaults(parseInt(source));
-  }
+  if (seekingValue && buffer.length > 0) {
+    serializedBuffer = buffer.join('').replace(TAIL_BROKEN_VALUE_PATTERN, '');
+    propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
 
-  if (typeof source == 'string' && source == DEFAULT_PRECISION) {
-    return defaults(DEFAULT_PRECISION);
+    buffer = [];
   }
 
-  if (typeof source == 'object') {
-    return source;
+  if (buffer.length > 0) {
+    externalContext.warnings.push('Invalid character(s) \'' + buffer.join('') + '\' at ' + formatPosition(metadata) + '. Ignoring.');
   }
 
-  return source
-    .split(DIRECTIVES_SEPARATOR)
-    .reduce(function (accumulator, directive) {
-      var directiveParts = directive.split(DIRECTIVE_VALUE_SEPARATOR);
-      var name = directiveParts[0];
-      var value = parseInt(directiveParts[1]);
-
-      if (isNaN(value) || value == -1) {
-        value = DEFAULT_PRECISION;
-      }
-
-      if (ALL_UNITS.indexOf(name) > -1) {
-        accumulator = override(accumulator, defaults(value));
-      } else {
-        accumulator[name] = value;
-      }
-
-      return accumulator;
-    }, {});
+  return allTokens;
 }
 
-module.exports = {
-  DEFAULT: DEFAULT_PRECISION,
-  roundingPrecisionFrom: roundingPrecisionFrom
-};
-
-},{"../utils/override":95}],69:[function(require,module,exports){
-(function (global,Buffer){
-var fs = require('fs');
-var path = require('path');
-
-var isAllowedResource = require('./is-allowed-resource');
-var matchDataUri = require('./match-data-uri');
-var rebaseLocalMap = require('./rebase-local-map');
-var rebaseRemoteMap = require('./rebase-remote-map');
-
-var Token = require('../tokenizer/token');
-var hasProtocol = require('../utils/has-protocol');
-var isDataUriResource = require('../utils/is-data-uri-resource');
-var isRemoteResource = require('../utils/is-remote-resource');
-
-var MAP_MARKER_PATTERN = /^\/\*# sourceMappingURL=(\S+) \*\/$/;
-
-function applySourceMaps(tokens, context, callback) {
-  var applyContext = {
-    callback: callback,
-    fetch: context.options.fetch,
-    index: 0,
-    inline: context.options.inline,
-    inlineRequest: context.options.inlineRequest,
-    inlineTimeout: context.options.inlineTimeout,
-    inputSourceMapTracker: context.inputSourceMapTracker,
-    localOnly: context.localOnly,
-    processedTokens: [],
-    rebaseTo: context.options.rebaseTo,
-    sourceTokens: tokens,
-    warnings: context.warnings
-  };
-
-  return context.options.sourceMap && tokens.length > 0 ?
-    doApplySourceMaps(applyContext) :
-    callback(tokens);
+function isIgnoreStartComment(buffer) {
+  return IGNORE_START_COMMENT_PATTERN.test(buffer.join('') + Marker.FORWARD_SLASH);
 }
 
-function doApplySourceMaps(applyContext) {
-  var singleSourceTokens = [];
-  var lastSource = findTokenSource(applyContext.sourceTokens[0]);
-  var source;
-  var token;
-  var l;
-
-  for (l = applyContext.sourceTokens.length; applyContext.index < l; applyContext.index++) {
-    token = applyContext.sourceTokens[applyContext.index];
-    source = findTokenSource(token);
-
-    if (source != lastSource) {
-      singleSourceTokens = [];
-      lastSource = source;
-    }
-
-    singleSourceTokens.push(token);
-    applyContext.processedTokens.push(token);
+function isIgnoreEndComment(buffer) {
+  return IGNORE_END_COMMENT_PATTERN.test(buffer.join('') + Marker.FORWARD_SLASH);
+}
 
-    if (token[0] == Token.COMMENT && MAP_MARKER_PATTERN.test(token[1])) {
-      return fetchAndApplySourceMap(token[1], source, singleSourceTokens, applyContext);
-    }
-  }
+function originalMetadata(metadata, value, externalContext, selectorFallbacks) {
+  var source = metadata[2];
 
-  return applyContext.callback(applyContext.processedTokens);
+  return externalContext.inputSourceMapTracker.isTracking(source) ?
+    externalContext.inputSourceMapTracker.originalPositionFor(metadata, value.length, selectorFallbacks) :
+    metadata;
 }
 
-function findTokenSource(token) {
-  var scope;
-  var metadata;
+function tokenTypeFrom(buffer) {
+  var isAtRule = buffer[0] == Marker.AT || buffer[0] == Marker.UNDERSCORE;
+  var ruleWord = buffer.join('').split(RULE_WORD_SEPARATOR_PATTERN)[0];
 
-  if (token[0] == Token.AT_RULE || token[0] == Token.COMMENT) {
-    metadata = token[2][0];
+  if (isAtRule && BLOCK_RULES.indexOf(ruleWord) > -1) {
+    return Token.NESTED_BLOCK;
+  } else if (isAtRule && AT_RULES.indexOf(ruleWord) > -1) {
+    return Token.AT_RULE;
+  } else if (isAtRule) {
+    return Token.AT_RULE_BLOCK;
   } else {
-    scope = token[1][0];
-    metadata = scope[2][0];
+    return Token.RULE;
   }
+}
 
-  return metadata[2];
+function tokenScopeFrom(tokenType) {
+  if (tokenType == Token.RULE) {
+    return Token.RULE_SCOPE;
+  } else if (tokenType == Token.NESTED_BLOCK) {
+    return Token.NESTED_BLOCK_SCOPE;
+  } else if (tokenType == Token.AT_RULE_BLOCK) {
+    return Token.AT_RULE_BLOCK_SCOPE;
+  }
 }
 
-function fetchAndApplySourceMap(sourceMapComment, source, singleSourceTokens, applyContext) {
-  return extractInputSourceMapFrom(sourceMapComment, applyContext, function (inputSourceMap) {
-    if (inputSourceMap) {
-      applyContext.inputSourceMapTracker.track(source, inputSourceMap);
-      applySourceMapRecursively(singleSourceTokens, applyContext.inputSourceMapTracker);
-    }
+function isPageMarginBox(buffer) {
+  var serializedBuffer = buffer.join('').trim();
 
-    applyContext.index++;
-    return doApplySourceMaps(applyContext);
-  });
+  return PAGE_MARGIN_BOXES.indexOf(serializedBuffer) > -1 || EXTRA_PAGE_BOXES.indexOf(serializedBuffer) > -1;
 }
 
-function extractInputSourceMapFrom(sourceMapComment, applyContext, whenSourceMapReady) {
-  var uri = MAP_MARKER_PATTERN.exec(sourceMapComment)[1];
-  var absoluteUri;
-  var sourceMap;
-  var rebasedMap;
+function isRepeatToken(buffer) {
+  return REPEAT_PATTERN.test(buffer.join('') + Marker.CLOSE_SQUARE_BRACKET);
+}
 
-  if (isDataUriResource(uri)) {
-    sourceMap = extractInputSourceMapFromDataUri(uri);
-    return whenSourceMapReady(sourceMap);
-  } else if (isRemoteResource(uri)) {
-    return loadInputSourceMapFromRemoteUri(uri, applyContext, function (sourceMap) {
-      var parsedMap;
+module.exports = tokenize;
 
-      if (sourceMap) {
-        parsedMap = JSON.parse(sourceMap);
-        rebasedMap = rebaseRemoteMap(parsedMap, uri);
-        whenSourceMapReady(rebasedMap);
-      } else {
-        whenSourceMapReady(null);
-      }
-    });
-  } else {
-    // at this point `uri` is already rebased, see lib/reader/rebase.js#rebaseSourceMapComment
-    // it is rebased to be consistent with rebasing other URIs
-    // however here we need to resolve it back to read it from disk
-    absoluteUri = path.resolve(applyContext.rebaseTo, uri);
-    sourceMap = loadInputSourceMapFromLocalUri(absoluteUri, applyContext);
+},{"../utils/format-position":82,"./marker":78,"./token":79,"assert":107}],81:[function(require,module,exports){
+function cloneArray(array) {
+  var cloned = array.slice(0);
 
-    if (sourceMap) {
-      rebasedMap = rebaseLocalMap(sourceMap, absoluteUri, applyContext.rebaseTo);
-      return whenSourceMapReady(rebasedMap);
-    } else {
-      return whenSourceMapReady(null);
-    }
+  for (var i = 0, l = cloned.length; i < l; i++) {
+    if (Array.isArray(cloned[i]))
+      cloned[i] = cloneArray(cloned[i]);
   }
+
+  return cloned;
 }
 
-function extractInputSourceMapFromDataUri(uri) {
-  var dataUriMatch = matchDataUri(uri);
-  var charset = dataUriMatch[2] ? dataUriMatch[2].split(/[=;]/)[2] : 'us-ascii';
-  var encoding = dataUriMatch[3] ? dataUriMatch[3].split(';')[1] : 'utf8';
-  var data = encoding == 'utf8' ? global.unescape(dataUriMatch[4]) : dataUriMatch[4];
+module.exports = cloneArray;
 
-  var buffer = new Buffer(data, encoding);
-  buffer.charset = charset;
+},{}],82:[function(require,module,exports){
+function formatPosition(metadata) {
+  var line = metadata[0];
+  var column = metadata[1];
+  var source = metadata[2];
 
-  return JSON.parse(buffer.toString());
+  return source ?
+    source + ':' + line + ':' + column :
+    line + ':' + column;
 }
 
-function loadInputSourceMapFromRemoteUri(uri, applyContext, whenLoaded) {
-  var isAllowed = isAllowedResource(uri, true, applyContext.inline);
-  var isRuntimeResource = !hasProtocol(uri);
-
-  if (applyContext.localOnly) {
-    applyContext.warnings.push('Cannot fetch remote resource from "' + uri + '" as no callback given.');
-    return whenLoaded(null);
-  } else if (isRuntimeResource) {
-    applyContext.warnings.push('Cannot fetch "' + uri + '" as no protocol given.');
-    return whenLoaded(null);
-  } else if (!isAllowed) {
-    applyContext.warnings.push('Cannot fetch "' + uri + '" as resource is not allowed.');
-    return whenLoaded(null);
-  }
+module.exports = formatPosition;
 
-  applyContext.fetch(uri, applyContext.inlineRequest, applyContext.inlineTimeout, function (error, body) {
-    if (error) {
-      applyContext.warnings.push('Missing source map at "' + uri + '" - ' + error);
-      return whenLoaded(null);
-    }
+},{}],83:[function(require,module,exports){
+var NO_PROTOCOL_RESOURCE_PATTERN = /^\/\//;
 
-    whenLoaded(body);
-  });
+function hasProtocol(uri) {
+  return !NO_PROTOCOL_RESOURCE_PATTERN.test(uri);
 }
 
-function loadInputSourceMapFromLocalUri(uri, applyContext) {
-  var isAllowed = isAllowedResource(uri, false, applyContext.inline);
-  var sourceMap;
+module.exports = hasProtocol;
 
-  if (!fs.existsSync(uri) || !fs.statSync(uri).isFile()) {
-    applyContext.warnings.push('Ignoring local source map at "' + uri + '" as resource is missing.');
-    return null;
-  } else if (!isAllowed) {
-    applyContext.warnings.push('Cannot fetch "' + uri + '" as resource is not allowed.');
-    return null;
-  }
+},{}],84:[function(require,module,exports){
+var DATA_URI_PATTERN = /^data:(\S*?)?(;charset=[^;]+)?(;[^,]+?)?,(.+)/;
 
-  sourceMap = fs.readFileSync(uri, 'utf-8');
-  return JSON.parse(sourceMap);
+function isDataUriResource(uri) {
+  return DATA_URI_PATTERN.test(uri);
 }
 
-function applySourceMapRecursively(tokens, inputSourceMapTracker) {
-  var token;
-  var i, l;
-
-  for (i = 0, l = tokens.length; i < l; i++) {
-    token = tokens[i];
+module.exports = isDataUriResource;
 
-    switch (token[0]) {
-      case Token.AT_RULE:
-        applySourceMapTo(token, inputSourceMapTracker);
-        break;
-      case Token.AT_RULE_BLOCK:
-        applySourceMapRecursively(token[1], inputSourceMapTracker);
-        applySourceMapRecursively(token[2], inputSourceMapTracker);
-        break;
-      case Token.AT_RULE_BLOCK_SCOPE:
-        applySourceMapTo(token, inputSourceMapTracker);
-        break;
-      case Token.NESTED_BLOCK:
-        applySourceMapRecursively(token[1], inputSourceMapTracker);
-        applySourceMapRecursively(token[2], inputSourceMapTracker);
-        break;
-      case Token.NESTED_BLOCK_SCOPE:
-        applySourceMapTo(token, inputSourceMapTracker);
-        break;
-      case Token.COMMENT:
-        applySourceMapTo(token, inputSourceMapTracker);
-        break;
-      case Token.PROPERTY:
-        applySourceMapRecursively(token, inputSourceMapTracker);
-        break;
-      case Token.PROPERTY_BLOCK:
-        applySourceMapRecursively(token[1], inputSourceMapTracker);
-        break;
-      case Token.PROPERTY_NAME:
-        applySourceMapTo(token, inputSourceMapTracker);
-        break;
-      case Token.PROPERTY_VALUE:
-        applySourceMapTo(token, inputSourceMapTracker);
-        break;
-      case Token.RULE:
-        applySourceMapRecursively(token[1], inputSourceMapTracker);
-        applySourceMapRecursively(token[2], inputSourceMapTracker);
-        break;
-      case Token.RULE_SCOPE:
-        applySourceMapTo(token, inputSourceMapTracker);
-    }
-  }
+},{}],85:[function(require,module,exports){
+var HTTP_RESOURCE_PATTERN = /^http:\/\//;
 
-  return tokens;
+function isHttpResource(uri) {
+  return HTTP_RESOURCE_PATTERN.test(uri);
 }
 
-function applySourceMapTo(token, inputSourceMapTracker) {
-  var value = token[1];
-  var metadata = token[2];
-  var newMetadata = [];
-  var i, l;
+module.exports = isHttpResource;
 
-  for (i = 0, l = metadata.length; i < l; i++) {
-    newMetadata.push(inputSourceMapTracker.originalPositionFor(metadata[i], value.length));
-  }
+},{}],86:[function(require,module,exports){
+var HTTPS_RESOURCE_PATTERN = /^https:\/\//;
 
-  token[2] = newMetadata;
+function isHttpsResource(uri) {
+  return HTTPS_RESOURCE_PATTERN.test(uri);
 }
 
-module.exports = applySourceMaps;
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
-},{"../tokenizer/token":84,"../utils/has-protocol":88,"../utils/is-data-uri-resource":89,"../utils/is-remote-resource":93,"./is-allowed-resource":72,"./match-data-uri":75,"./rebase-local-map":78,"./rebase-remote-map":79,"buffer":4,"fs":3,"path":110}],70:[function(require,module,exports){
-var split = require('../utils/split');
+module.exports = isHttpsResource;
 
-var BRACE_PREFIX = /^\(/;
-var BRACE_SUFFIX = /\)$/;
+},{}],87:[function(require,module,exports){
 var IMPORT_PREFIX_PATTERN = /^@import/i;
-var QUOTE_PREFIX_PATTERN = /['"]\s*/;
-var QUOTE_SUFFIX_PATTERN = /\s*['"]/;
-var URL_PREFIX_PATTERN = /^url\(\s*/i;
-var URL_SUFFIX_PATTERN = /\s*\)/i;
-
-function extractImportUrlAndMedia(atRuleValue) {
-  var uri;
-  var mediaQuery;
-  var stripped;
-  var parts;
 
-  stripped = atRuleValue
-    .replace(IMPORT_PREFIX_PATTERN, '')
-    .trim()
-    .replace(URL_PREFIX_PATTERN, '(')
-    .replace(URL_SUFFIX_PATTERN, ')')
-    .replace(QUOTE_PREFIX_PATTERN, '')
-    .replace(QUOTE_SUFFIX_PATTERN, '');
+function isImport(value) {
+  return IMPORT_PREFIX_PATTERN.test(value);
+}
 
-  parts = split(stripped, ' ');
+module.exports = isImport;
 
-  uri = parts[0]
-    .replace(BRACE_PREFIX, '')
-    .replace(BRACE_SUFFIX, '');
-  mediaQuery = parts.slice(1).join(' ');
+},{}],88:[function(require,module,exports){
+var REMOTE_RESOURCE_PATTERN = /^(\w+:\/\/|\/\/)/;
 
-  return [uri, mediaQuery];
+function isRemoteResource(uri) {
+  return REMOTE_RESOURCE_PATTERN.test(uri);
 }
 
-module.exports = extractImportUrlAndMedia;
+module.exports = isRemoteResource;
 
-},{"../utils/split":96}],71:[function(require,module,exports){
-var SourceMapConsumer = require('source-map').SourceMapConsumer;
+},{}],89:[function(require,module,exports){
+// adapted from http://nedbatchelder.com/blog/200712.html#e20071211T054956
 
-function inputSourceMapTracker() {
-  var maps = {};
+var NUMBER_PATTERN = /([0-9]+)/;
+
+function naturalCompare(value1, value2) {
+  var keys1 = ('' + value1).split(NUMBER_PATTERN).map(tryParseInt);
+  var keys2 = ('' + value2).split(NUMBER_PATTERN).map(tryParseInt);
+  var key1;
+  var key2;
+  var compareFirst = Math.min(keys1.length, keys2.length);
+  var i, l;
+
+  for (i = 0, l = compareFirst; i < l; i++) {
+    key1 = keys1[i];
+    key2 = keys2[i];
 
-  return {
-    all: all.bind(null, maps),
-    isTracking: isTracking.bind(null, maps),
-    originalPositionFor: originalPositionFor.bind(null, maps),
-    track: track.bind(null, maps)
-  };
-}
+    if (key1 != key2) {
+      return key1 > key2 ? 1 : -1;
+    }
+  }
 
-function all(maps) {
-  return maps;
+  return keys1.length > keys2.length ? 1 : (keys1.length == keys2.length ? 0 : -1);
 }
 
-function isTracking(maps, source) {
-  return source in maps;
+function tryParseInt(value) {
+  return ('' + parseInt(value)) == value ?
+    parseInt(value) :
+    value;
 }
 
-function originalPositionFor(maps, metadata, range, selectorFallbacks) {
-  var line = metadata[0];
-  var column = metadata[1];
-  var source = metadata[2];
-  var position = {
-    line: line,
-    column: column + range
-  };
-  var originalPosition;
+module.exports = naturalCompare;
 
-  while (!originalPosition && position.column > column) {
-    position.column--;
-    originalPosition = maps[source].originalPositionFor(position);
-  }
+},{}],90:[function(require,module,exports){
+function override(source1, source2) {
+  var target = {};
+  var key1;
+  var key2;
+  var item;
 
-  if (!originalPosition || originalPosition.column < 0) {
-    return metadata;
+  for (key1 in source1) {
+    item = source1[key1];
+
+    if (Array.isArray(item)) {
+      target[key1] = item.slice(0);
+    } else if (typeof item == 'object' && item !== null) {
+      target[key1] = override(item, {});
+    } else {
+      target[key1] = item;
+    }
   }
 
-  if (originalPosition.line === null && line > 1 && selectorFallbacks > 0) {
-    return originalPositionFor(maps, [line - 1, column, source], range, selectorFallbacks - 1);
+  for (key2 in source2) {
+    item = source2[key2];
+
+    if (key2 in target && Array.isArray(item)) {
+      target[key2] = item.slice(0);
+    } else if (key2 in target && typeof item == 'object' && item !== null) {
+      target[key2] = override(target[key2], item);
+    } else {
+      target[key2] = item;
+    }
   }
 
-  return originalPosition.line !== null ?
-    toMetadata(originalPosition) :
-    metadata;
+  return target;
 }
 
-function toMetadata(asHash) {
-  return [asHash.line, asHash.column, asHash.source];
-}
+module.exports = override;
 
-function track(maps, source, data) {
-  maps[source] = new SourceMapConsumer(data);
-}
+},{}],91:[function(require,module,exports){
+var Marker = require('../tokenizer/marker');
 
-module.exports = inputSourceMapTracker;
+function split(value, separator) {
+  var openLevel = Marker.OPEN_ROUND_BRACKET;
+  var closeLevel = Marker.CLOSE_ROUND_BRACKET;
+  var level = 0;
+  var cursor = 0;
+  var lastStart = 0;
+  var lastValue;
+  var lastCharacter;
+  var len = value.length;
+  var parts = [];
 
-},{"source-map":154}],72:[function(require,module,exports){
-var path = require('path');
-var url = require('url');
+  if (value.indexOf(separator) == -1) {
+    return [value];
+  }
 
-var isRemoteResource = require('../utils/is-remote-resource');
-var hasProtocol = require('../utils/has-protocol');
+  if (value.indexOf(openLevel) == -1) {
+    return value.split(separator);
+  }
 
-var HTTP_PROTOCOL = 'http:';
+  while (cursor < len) {
+    if (value[cursor] == openLevel) {
+      level++;
+    } else if (value[cursor] == closeLevel) {
+      level--;
+    }
 
-function isAllowedResource(uri, isRemote, rules) {
-  var match;
-  var absoluteUri;
-  var allowed = isRemote ? false : true;
-  var rule;
-  var isNegated;
-  var normalizedRule;
-  var i;
+    if (level === 0 && cursor > 0 && cursor + 1 < len && value[cursor] == separator) {
+      parts.push(value.substring(lastStart, cursor));
+      lastStart = cursor + 1;
+    }
 
-  if (rules.length === 0) {
-    return false;
+    cursor++;
   }
 
-  if (isRemote && !hasProtocol(uri)) {
-    uri = HTTP_PROTOCOL + uri;
+  if (lastStart < cursor + 1) {
+    lastValue = value.substring(lastStart);
+    lastCharacter = lastValue[lastValue.length - 1];
+    if (lastCharacter == separator) {
+      lastValue = lastValue.substring(0, lastValue.length - 1);
+    }
+
+    parts.push(lastValue);
   }
 
-  match = isRemote ?
-    url.parse(uri).host :
-    uri;
+  return parts;
+}
 
-  absoluteUri = isRemote ?
-    uri :
-    path.resolve(uri);
+module.exports = split;
 
-  for (i = 0; i < rules.length; i++) {
-    rule = rules[i];
-    isNegated = rule[0] == '!';
-    normalizedRule = rule.substring(1);
+},{"../tokenizer/marker":78}],92:[function(require,module,exports){
+var emptyCharacter = '';
 
-    if (isNegated && isRemote && isRemoteRule(normalizedRule)) {
-      allowed = allowed && !isAllowedResource(uri, true, [normalizedRule]);
-    } else if (isNegated && !isRemote && !isRemoteRule(normalizedRule)) {
-      allowed = allowed && !isAllowedResource(uri, false, [normalizedRule]);
-    } else if (isNegated) {
-      allowed = allowed && true;
-    } else if (rule == 'all') {
-      allowed = true;
-    } else if (isRemote && rule == 'local') {
-      allowed = allowed || false;
-    } else if (isRemote && rule == 'remote') {
-      allowed = true;
-    } else if (!isRemote && rule == 'remote') {
-      allowed = false;
-    } else if (!isRemote && rule == 'local') {
-      allowed = true;
-    } else if (rule === match) {
-      allowed = true;
-    } else if (rule === uri) {
-      allowed = true;
-    } else if (isRemote && absoluteUri.indexOf(rule) === 0) {
-      allowed = true;
-    } else if (!isRemote && absoluteUri.indexOf(path.resolve(rule)) === 0) {
-      allowed = true;
-    } else if (isRemote != isRemoteRule(normalizedRule)) {
-      allowed = allowed && true;
-    } else {
-      allowed = false;
-    }
-  }
+var Breaks = require('../options/format').Breaks;
+var Spaces = require('../options/format').Spaces;
 
-  return allowed;
+var Marker = require('../tokenizer/marker');
+var Token = require('../tokenizer/token');
+
+function supportsAfterClosingBrace(token) {
+  return token[1][1] == 'background' || token[1][1] == 'transform' || token[1][1] == 'src';
 }
 
-function isRemoteRule(rule) {
-  return isRemoteResource(rule) || url.parse(HTTP_PROTOCOL + '//' + rule).host == rule;
+function afterClosingBrace(token, valueIndex) {
+  return token[valueIndex][1][token[valueIndex][1].length - 1] == Marker.CLOSE_ROUND_BRACKET;
 }
 
-module.exports = isAllowedResource;
+function afterComma(token, valueIndex) {
+  return token[valueIndex][1] == Marker.COMMA;
+}
 
-},{"../utils/has-protocol":88,"../utils/is-remote-resource":93,"path":110,"url":162}],73:[function(require,module,exports){
-var fs = require('fs');
-var path = require('path');
+function afterSlash(token, valueIndex) {
+  return token[valueIndex][1] == Marker.FORWARD_SLASH;
+}
 
-var isAllowedResource = require('./is-allowed-resource');
+function beforeComma(token, valueIndex) {
+  return token[valueIndex + 1] && token[valueIndex + 1][1] == Marker.COMMA;
+}
 
-var hasProtocol = require('../utils/has-protocol');
-var isRemoteResource = require('../utils/is-remote-resource');
+function beforeSlash(token, valueIndex) {
+  return token[valueIndex + 1] && token[valueIndex + 1][1] == Marker.FORWARD_SLASH;
+}
 
-function loadOriginalSources(context, callback) {
-  var loadContext = {
-    callback: callback,
-    fetch: context.options.fetch,
-    index: 0,
-    inline: context.options.inline,
-    inlineRequest: context.options.inlineRequest,
-    inlineTimeout: context.options.inlineTimeout,
-    localOnly: context.localOnly,
-    rebaseTo: context.options.rebaseTo,
-    sourcesContent: context.sourcesContent,
-    uriToSource: uriToSourceMapping(context.inputSourceMapTracker.all()),
-    warnings: context.warnings
-  };
+function inFilter(token) {
+  return token[1][1] == 'filter' || token[1][1] == '-ms-filter';
+}
 
-  return context.options.sourceMap && context.options.sourceMapInlineSources ?
-    doLoadOriginalSources(loadContext) :
-    callback();
+function disallowsSpace(context, token, valueIndex) {
+  return !context.spaceAfterClosingBrace && supportsAfterClosingBrace(token) && afterClosingBrace(token, valueIndex) ||
+    beforeSlash(token, valueIndex) ||
+    afterSlash(token, valueIndex) ||
+    beforeComma(token, valueIndex) ||
+    afterComma(token, valueIndex);
 }
 
-function uriToSourceMapping(allSourceMapConsumers) {
-  var mapping = {};
-  var consumer;
-  var uri;
-  var source;
-  var i, l;
+function rules(context, tokens) {
+  var store = context.store;
 
-  for (source in allSourceMapConsumers) {
-    consumer = allSourceMapConsumers[source];
+  for (var i = 0, l = tokens.length; i < l; i++) {
+    store(context, tokens[i]);
+
+    if (i < l - 1) {
+      store(context, comma(context));
+    }
+  }
+}
+
+function body(context, tokens) {
+  var lastPropertyAt = lastPropertyIndex(tokens);
+
+  for (var i = 0, l = tokens.length; i < l; i++) {
+    property(context, tokens, i, lastPropertyAt);
+  }
+}
 
-    for (i = 0, l = consumer.sources.length; i < l; i++) {
-      uri = consumer.sources[i];
-      source = consumer.sourceContentFor(uri, true);
+function lastPropertyIndex(tokens) {
+  var index = tokens.length - 1;
 
-      mapping[uri] = source;
+  for (; index >= 0; index--) {
+    if (tokens[index][0] != Token.COMMENT) {
+      break;
     }
   }
 
-  return mapping;
+  return index;
 }
 
-function doLoadOriginalSources(loadContext) {
-  var uris = Object.keys(loadContext.uriToSource);
-  var uri;
-  var source;
-  var total;
-
-  for (total = uris.length; loadContext.index < total; loadContext.index++) {
-    uri = uris[loadContext.index];
-    source = loadContext.uriToSource[uri];
+function property(context, tokens, position, lastPropertyAt) {
+  var store = context.store;
+  var token = tokens[position];
+  var isPropertyBlock = token[2][0] == Token.PROPERTY_BLOCK;
 
-    if (source) {
-      loadContext.sourcesContent[uri] = source;
+  var needsSemicolon;
+  if ( context.format ) {
+    if ( context.format.semicolonAfterLastProperty || isPropertyBlock ) {
+      needsSemicolon = true;
+    } else if ( position < lastPropertyAt ) {
+      needsSemicolon = true;
     } else {
-      return loadOriginalSource(uri, loadContext);
+      needsSemicolon = false;
     }
+  } else {
+    needsSemicolon = position < lastPropertyAt || isPropertyBlock;
   }
 
-  return loadContext.callback();
+  var isLast = position === lastPropertyAt;
+
+  switch (token[0]) {
+    case Token.AT_RULE:
+      store(context, token);
+      store(context, semicolon(context, Breaks.AfterProperty, false));
+      break;
+    case Token.AT_RULE_BLOCK:
+      rules(context, token[1]);
+      store(context, openBrace(context, Breaks.AfterRuleBegins, true));
+      body(context, token[2]);
+      store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast));
+      break;
+    case Token.COMMENT:
+      store(context, token);
+      break;
+    case Token.PROPERTY:
+      store(context, token[1]);
+      store(context, colon(context));
+      value(context, token);
+      store(context, needsSemicolon ? semicolon(context, Breaks.AfterProperty, isLast) : emptyCharacter);
+      break;
+    case Token.RAW:
+      store(context, token);
+  }
 }
 
-function loadOriginalSource(uri, loadContext) {
-  var content;
+function value(context, token) {
+  var store = context.store;
+  var j, m;
 
-  if (isRemoteResource(uri)) {
-    return loadOriginalSourceFromRemoteUri(uri, loadContext, function (content) {
-      loadContext.index++;
-      loadContext.sourcesContent[uri] = content;
-      return doLoadOriginalSources(loadContext);
-    });
+  if (token[2][0] == Token.PROPERTY_BLOCK) {
+    store(context, openBrace(context, Breaks.AfterBlockBegins, false));
+    body(context, token[2][1]);
+    store(context, closeBrace(context, Breaks.AfterBlockEnds, false, true));
   } else {
-    content = loadOriginalSourceFromLocalUri(uri, loadContext);
-    loadContext.index++;
-    loadContext.sourcesContent[uri] = content;
-    return doLoadOriginalSources(loadContext);
+    for (j = 2, m = token.length; j < m; j++) {
+      store(context, token[j]);
+
+      if (j < m - 1 && (inFilter(token) || !disallowsSpace(context, token, j))) {
+        store(context, Marker.SPACE);
+      }
+    }
   }
 }
 
-function loadOriginalSourceFromRemoteUri(uri, loadContext, whenLoaded) {
-  var isAllowed = isAllowedResource(uri, true, loadContext.inline);
-  var isRuntimeResource = !hasProtocol(uri);
+function allowsBreak(context, where) {
+  return context.format && context.format.breaks[where];
+}
 
-  if (loadContext.localOnly) {
-    loadContext.warnings.push('Cannot fetch remote resource from "' + uri + '" as no callback given.');
-    return whenLoaded(null);
-  } else if (isRuntimeResource) {
-    loadContext.warnings.push('Cannot fetch "' + uri + '" as no protocol given.');
-    return whenLoaded(null);
-  } else if (!isAllowed) {
-    loadContext.warnings.push('Cannot fetch "' + uri + '" as resource is not allowed.');
-    return whenLoaded(null);
+function allowsSpace(context, where) {
+  return context.format && context.format.spaces[where];
+}
+
+function openBrace(context, where, needsPrefixSpace) {
+  if (context.format) {
+    context.indentBy += context.format.indentBy;
+    context.indentWith = context.format.indentWith.repeat(context.indentBy);
+    return (needsPrefixSpace && allowsSpace(context, Spaces.BeforeBlockBegins) ? Marker.SPACE : emptyCharacter) +
+      Marker.OPEN_CURLY_BRACKET +
+      (allowsBreak(context, where) ? context.format.breakWith : emptyCharacter) +
+      context.indentWith;
+  } else {
+    return Marker.OPEN_CURLY_BRACKET;
   }
+}
 
-  loadContext.fetch(uri, loadContext.inlineRequest, loadContext.inlineTimeout, function (error, content) {
-    if (error) {
-      loadContext.warnings.push('Missing original source at "' + uri + '" - ' + error);
-    }
+function closeBrace(context, where, beforeBlockEnd, isLast) {
+  if (context.format) {
+    context.indentBy -= context.format.indentBy;
+    context.indentWith = context.format.indentWith.repeat(context.indentBy);
+    return (allowsBreak(context, Breaks.AfterProperty) || beforeBlockEnd && allowsBreak(context, Breaks.BeforeBlockEnds) ? context.format.breakWith : emptyCharacter) +
+      context.indentWith +
+      Marker.CLOSE_CURLY_BRACKET +
+      (isLast ? emptyCharacter : (allowsBreak(context, where) ? context.format.breakWith : emptyCharacter) + context.indentWith);
+  } else {
+    return Marker.CLOSE_CURLY_BRACKET;
+  }
+}
 
-    whenLoaded(content);
-  });
+function colon(context) {
+  return context.format ?
+    Marker.COLON + (allowsSpace(context, Spaces.BeforeValue) ? Marker.SPACE : emptyCharacter) :
+    Marker.COLON;
 }
 
-function loadOriginalSourceFromLocalUri(relativeUri, loadContext) {
-  var isAllowed = isAllowedResource(relativeUri, false, loadContext.inline);
-  var absoluteUri = path.resolve(loadContext.rebaseTo, relativeUri);
+function semicolon(context, where, isLast) {
+  return context.format ?
+    Marker.SEMICOLON + (isLast || !allowsBreak(context, where) ? emptyCharacter : context.format.breakWith + context.indentWith) :
+    Marker.SEMICOLON;
+}
 
-  if (!fs.existsSync(absoluteUri) || !fs.statSync(absoluteUri).isFile()) {
-    loadContext.warnings.push('Ignoring local source map at "' + absoluteUri + '" as resource is missing.');
-    return null;
-  } else if (!isAllowed) {
-    loadContext.warnings.push('Cannot fetch "' + absoluteUri + '" as resource is not allowed.');
-    return null;
-  }
+function comma(context) {
+  return context.format ?
+    Marker.COMMA + (allowsBreak(context, Breaks.BetweenSelectors) ? context.format.breakWith : emptyCharacter) + context.indentWith :
+    Marker.COMMA;
+}
 
-  return fs.readFileSync(absoluteUri, 'utf8');
+function all(context, tokens) {
+  var store = context.store;
+  var token;
+  var isLast;
+  var i, l;
+
+  for (i = 0, l = tokens.length; i < l; i++) {
+    token = tokens[i];
+    isLast = i == l - 1;
+
+    switch (token[0]) {
+      case Token.AT_RULE:
+        store(context, token);
+        store(context, semicolon(context, Breaks.AfterAtRule, isLast));
+        break;
+      case Token.AT_RULE_BLOCK:
+        rules(context, token[1]);
+        store(context, openBrace(context, Breaks.AfterRuleBegins, true));
+        body(context, token[2]);
+        store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast));
+        break;
+      case Token.NESTED_BLOCK:
+        rules(context, token[1]);
+        store(context, openBrace(context, Breaks.AfterBlockBegins, true));
+        all(context, token[2]);
+        store(context, closeBrace(context, Breaks.AfterBlockEnds, true, isLast));
+        break;
+      case Token.COMMENT:
+        store(context, token);
+        store(context, allowsBreak(context, Breaks.AfterComment) ? context.format.breakWith : emptyCharacter);
+        break;
+      case Token.RAW:
+        store(context, token);
+        break;
+      case Token.RULE:
+        rules(context, token[1]);
+        store(context, openBrace(context, Breaks.AfterRuleBegins, true));
+        body(context, token[2]);
+        store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast));
+        break;
+    }
+  }
 }
 
-module.exports = loadOriginalSources;
+module.exports = {
+  all: all,
+  body: body,
+  property: property,
+  rules: rules,
+  value: value
+};
 
-},{"../utils/has-protocol":88,"../utils/is-remote-resource":93,"./is-allowed-resource":72,"fs":3,"path":110}],74:[function(require,module,exports){
-var http = require('http');
-var https = require('https');
-var url = require('url');
+},{"../options/format":56,"../tokenizer/marker":78,"../tokenizer/token":79}],93:[function(require,module,exports){
+var helpers = require('./helpers');
 
-var isHttpResource = require('../utils/is-http-resource');
-var isHttpsResource = require('../utils/is-https-resource');
-var override = require('../utils/override');
+function store(serializeContext, token) {
+  serializeContext.output.push(typeof token == 'string' ? token : token[1]);
+}
 
-var HTTP_PROTOCOL = 'http:';
+function context() {
+  var newContext = {
+    output: [],
+    store: store
+  };
 
-function loadRemoteResource(uri, inlineRequest, inlineTimeout, callback) {
-  var proxyProtocol = inlineRequest.protocol || inlineRequest.hostname;
-  var errorHandled = false;
-  var requestOptions;
-  var fetch;
+  return newContext;
+}
 
-  requestOptions = override(
-    url.parse(uri),
-    inlineRequest || {}
-  );
+function all(tokens) {
+  var oneTimeContext = context();
+  helpers.all(oneTimeContext, tokens);
+  return oneTimeContext.output.join('');
+}
 
-  if (inlineRequest.hostname !== undefined) {
-    // overwrite as we always expect a http proxy currently
-    requestOptions.protocol = inlineRequest.protocol || HTTP_PROTOCOL;
-    requestOptions.path = requestOptions.href;
-  }
+function body(tokens) {
+  var oneTimeContext = context();
+  helpers.body(oneTimeContext, tokens);
+  return oneTimeContext.output.join('');
+}
 
-  fetch = (proxyProtocol && !isHttpsResource(proxyProtocol)) || isHttpResource(uri) ?
-    http.get :
-    https.get;
+function property(tokens, position) {
+  var oneTimeContext = context();
+  helpers.property(oneTimeContext, tokens, position, true);
+  return oneTimeContext.output.join('');
+}
 
-  fetch(requestOptions, function (res) {
-    var chunks = [];
-    var movedUri;
+function rules(tokens) {
+  var oneTimeContext = context();
+  helpers.rules(oneTimeContext, tokens);
+  return oneTimeContext.output.join('');
+}
 
-    if (errorHandled) {
-      return;
-    }
+function value(tokens) {
+  var oneTimeContext = context();
+  helpers.value(oneTimeContext, tokens);
+  return oneTimeContext.output.join('');
+}
 
-    if (res.statusCode < 200 || res.statusCode > 399) {
-      return callback(res.statusCode, null);
-    } else if (res.statusCode > 299) {
-      movedUri = url.resolve(uri, res.headers.location);
-      return loadRemoteResource(movedUri, inlineRequest, inlineTimeout, callback);
-    }
+module.exports = {
+  all: all,
+  body: body,
+  property: property,
+  rules: rules,
+  value: value
+};
 
-    res.on('data', function (chunk) {
-      chunks.push(chunk.toString());
-    });
-    res.on('end', function () {
-      var body = chunks.join('');
-      callback(null, body);
-    });
-  })
-  .on('error', function (res) {
-    if (errorHandled) {
-      return;
-    }
+},{"./helpers":92}],94:[function(require,module,exports){
+var all = require('./helpers').all;
 
-    errorHandled = true;
-    callback(res.message, null);
-  })
-  .on('timeout', function () {
-    if (errorHandled) {
-      return;
-    }
+function store(serializeContext, token) {
+  var value = typeof token == 'string' ?
+    token :
+    token[1];
+  var wrap = serializeContext.wrap;
 
-    errorHandled = true;
-    callback('timeout', null);
-  })
-  .setTimeout(inlineTimeout);
+  wrap(serializeContext, value);
+  track(serializeContext, value);
+  serializeContext.output.push(value);
 }
 
-module.exports = loadRemoteResource;
+function wrap(serializeContext, value) {
+  if (serializeContext.column + value.length > serializeContext.format.wrapAt) {
+    track(serializeContext, serializeContext.format.breakWith);
+    serializeContext.output.push(serializeContext.format.breakWith);
+  }
+}
 
-},{"../utils/is-http-resource":90,"../utils/is-https-resource":91,"../utils/override":95,"http":155,"https":104,"url":162}],75:[function(require,module,exports){
-var DATA_URI_PATTERN = /^data:(\S*?)?(;charset=[^;]+)?(;[^,]+?)?,(.+)/;
+function track(serializeContext, value) {
+  var parts = value.split('\n');
 
-function matchDataUri(uri) {
-  return DATA_URI_PATTERN.exec(uri);
+  serializeContext.line += parts.length - 1;
+  serializeContext.column = parts.length > 1 ? 0 : (serializeContext.column + parts.pop().length);
 }
 
-module.exports = matchDataUri;
+function serializeStyles(tokens, context) {
+  var serializeContext = {
+    column: 0,
+    format: context.options.format,
+    indentBy: 0,
+    indentWith: '',
+    line: 1,
+    output: [],
+    spaceAfterClosingBrace: context.options.compatibility.properties.spaceAfterClosingBrace,
+    store: store,
+    wrap: context.options.format.wrapAt ?
+      wrap :
+      function () { /* noop */  }
+  };
 
-},{}],76:[function(require,module,exports){
-var UNIX_SEPARATOR = '/';
-var WINDOWS_SEPARATOR_PATTERN = /\\/g;
+  all(serializeContext, tokens);
 
-function normalizePath(path) {
-  return path.replace(WINDOWS_SEPARATOR_PATTERN, UNIX_SEPARATOR);
+  return {
+    styles: serializeContext.output.join('')
+  };
 }
 
-module.exports = normalizePath;
-
-},{}],77:[function(require,module,exports){
-(function (Buffer,process){
-var fs = require('fs');
-var path = require('path');
+module.exports = serializeStyles;
 
-var applySourceMaps = require('./apply-source-maps');
-var extractImportUrlAndMedia = require('./extract-import-url-and-media');
-var isAllowedResource = require('./is-allowed-resource');
-var loadOriginalSources = require('./load-original-sources');
-var normalizePath = require('./normalize-path');
-var rebase = require('./rebase');
-var rebaseLocalMap = require('./rebase-local-map');
-var rebaseRemoteMap = require('./rebase-remote-map');
-var restoreImport = require('./restore-import');
+},{"./helpers":92}],95:[function(require,module,exports){
+(function (process){
+var SourceMapGenerator = require('source-map').SourceMapGenerator;
+var all = require('./helpers').all;
 
-var tokenize = require('../tokenizer/tokenize');
-var Token = require('../tokenizer/token');
-var Marker = require('../tokenizer/marker');
-var hasProtocol = require('../utils/has-protocol');
-var isImport = require('../utils/is-import');
 var isRemoteResource = require('../utils/is-remote-resource');
 
-var UNKNOWN_URI = 'uri:unknown';
+var isWindows = process.platform == 'win32';
 
-function readSources(input, context, callback) {
-  return doReadSources(input, context, function (tokens) {
-    return applySourceMaps(tokens, context, function () {
-      return loadOriginalSources(context, function () { return callback(tokens); });
-    });
-  });
+var NIX_SEPARATOR_PATTERN = /\//g;
+var UNKNOWN_SOURCE = '$stdin';
+var WINDOWS_SEPARATOR = '\\';
+
+function store(serializeContext, element) {
+  var fromString = typeof element == 'string';
+  var value = fromString ? element : element[1];
+  var mappings = fromString ? null : element[2];
+  var wrap = serializeContext.wrap;
+
+  wrap(serializeContext, value);
+  track(serializeContext, value, mappings);
+  serializeContext.output.push(value);
 }
 
-function doReadSources(input, context, callback) {
-  if (typeof input == 'string') {
-    return fromString(input, context, callback);
-  } else if (Buffer.isBuffer(input)) {
-    return fromString(input.toString(), context, callback);
-  } else if (Array.isArray(input)) {
-    return fromArray(input, context, callback);
-  } else if (typeof input == 'object') {
-    return fromHash(input, context, callback);
+function wrap(serializeContext, value) {
+  if (serializeContext.column + value.length > serializeContext.format.wrapAt) {
+    track(serializeContext, serializeContext.format.breakWith, false);
+    serializeContext.output.push(serializeContext.format.breakWith);
   }
 }
 
-function fromString(input, context, callback) {
-  context.source = undefined;
-  context.sourcesContent[undefined] = input;
-  context.stats.originalSize += input.length;
+function track(serializeContext, value, mappings) {
+  var parts = value.split('\n');
 
-  return fromStyles(input, context, { inline: context.options.inline }, callback);
+  if (mappings) {
+    trackAllMappings(serializeContext, mappings);
+  }
+
+  serializeContext.line += parts.length - 1;
+  serializeContext.column = parts.length > 1 ? 0 : (serializeContext.column + parts.pop().length);
 }
 
-function fromArray(input, context, callback) {
-  var inputAsImports = input.reduce(function (accumulator, uriOrHash) {
-    if (typeof uriOrHash === 'string') {
-      return addStringSource(uriOrHash, accumulator);
-    } else {
-      return addHashSource(uriOrHash, context, accumulator);
-    }
+function trackAllMappings(serializeContext, mappings) {
+  for (var i = 0, l = mappings.length; i < l; i++) {
+    trackMapping(serializeContext, mappings[i]);
+  }
+}
 
-  }, []);
+function trackMapping(serializeContext, mapping) {
+  var line = mapping[0];
+  var column = mapping[1];
+  var originalSource = mapping[2];
+  var source = originalSource;
+  var storedSource = source || UNKNOWN_SOURCE;
 
-  return fromStyles(inputAsImports.join(''), context, { inline: ['all'] }, callback);
+  if (isWindows && source && !isRemoteResource(source)) {
+    storedSource = source.replace(NIX_SEPARATOR_PATTERN, WINDOWS_SEPARATOR);
+  }
+
+  serializeContext.outputMap.addMapping({
+    generated: {
+      line: serializeContext.line,
+      column: serializeContext.column
+    },
+    source: storedSource,
+    original: {
+      line: line,
+      column: column
+    }
+  });
+
+  if (serializeContext.inlineSources && (originalSource in serializeContext.sourcesContent)) {
+    serializeContext.outputMap.setSourceContent(storedSource, serializeContext.sourcesContent[originalSource]);
+  }
 }
 
-function fromHash(input, context, callback) {
-  var inputAsImports = addHashSource(input, context, []);
-  return fromStyles(inputAsImports.join(''), context, { inline: ['all'] }, callback);
+function serializeStylesAndSourceMap(tokens, context) {
+  var serializeContext = {
+    column: 0,
+    format: context.options.format,
+    indentBy: 0,
+    indentWith: '',
+    inlineSources: context.options.sourceMapInlineSources,
+    line: 1,
+    output: [],
+    outputMap: new SourceMapGenerator(),
+    sourcesContent: context.sourcesContent,
+    spaceAfterClosingBrace: context.options.compatibility.properties.spaceAfterClosingBrace,
+    store: store,
+    wrap: context.options.format.wrapAt ?
+      wrap :
+      function () { /* noop */  }
+  };
+
+  all(serializeContext, tokens);
+
+  return {
+    sourceMap: serializeContext.outputMap,
+    styles: serializeContext.output.join('')
+  };
 }
 
-function addStringSource(input, imports) {
-  imports.push(restoreAsImport(normalizeUri(input)));
-  return imports;
+module.exports = serializeStylesAndSourceMap;
+
+}).call(this,require('_process'))
+},{"../utils/is-remote-resource":88,"./helpers":92,"_process":124,"source-map":106}],96:[function(require,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 util = require('./util');
+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);
 }
 
-function addHashSource(input, context, imports) {
-  var uri;
-  var normalizedUri;
-  var source;
+/**
+ * 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;
+};
 
-  for (uri in input) {
-    source = input[uri];
-    normalizedUri = normalizeUri(uri);
+/**
+ * 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;
+};
 
-    imports.push(restoreAsImport(normalizedUri));
+/**
+ * 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;
+    }
+  }
+};
 
-    context.sourcesContent[normalizedUri] = source.styles;
+/**
+ * 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);
+  }
+};
 
-    if (source.sourceMap) {
-      trackSourceMap(source.sourceMap, normalizedUri, context);
+/**
+ * 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];
     }
   }
 
-  return imports;
-}
-
-function normalizeUri(uri) {
-  var currentPath = path.resolve('');
-  var absoluteUri;
-  var relativeToCurrentPath;
-  var normalizedUri;
+  throw new Error('"' + aStr + '" is not in the set.');
+};
 
-  if (isRemoteResource(uri)) {
-    return uri;
+/**
+ * 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);
+};
 
-  absoluteUri = path.isAbsolute(uri) ?
-    uri :
-    path.resolve(uri);
-  relativeToCurrentPath = path.relative(currentPath, absoluteUri);
-  normalizedUri = normalizePath(relativeToCurrentPath);
+/**
+ * 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();
+};
 
-  return normalizedUri;
-}
+exports.ArraySet = ArraySet;
 
-function trackSourceMap(sourceMap, uri, context) {
-  var parsedMap = typeof sourceMap == 'string' ?
-      JSON.parse(sourceMap) :
-      sourceMap;
-  var rebasedMap = isRemoteResource(uri) ?
-    rebaseRemoteMap(parsedMap, uri) :
-    rebaseLocalMap(parsedMap, uri || UNKNOWN_URI, context.options.rebaseTo);
+},{"./util":105}],97:[function(require,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
+ *
+ * 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.
+ */
 
-  context.inputSourceMapTracker.track(uri, rebasedMap);
-}
+var base64 = require('./base64');
 
-function restoreAsImport(uri) {
-  return restoreImport('url(' + uri + ')', '') + Marker.SEMICOLON;
-}
+// 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
 
-function fromStyles(styles, context, parentInlinerContext, callback) {
-  var tokens;
-  var rebaseConfig = {};
+var VLQ_BASE_SHIFT = 5;
 
-  if (!context.source) {
-    rebaseConfig.fromBase = path.resolve('');
-    rebaseConfig.toBase = context.options.rebaseTo;
-  } else if (isRemoteResource(context.source)) {
-    rebaseConfig.fromBase = context.source;
-    rebaseConfig.toBase = context.source;
-  } else if (path.isAbsolute(context.source)) {
-    rebaseConfig.fromBase = path.dirname(context.source);
-    rebaseConfig.toBase = context.options.rebaseTo;
-  } else {
-    rebaseConfig.fromBase = path.dirname(path.resolve(context.source));
-    rebaseConfig.toBase = context.options.rebaseTo;
-  }
+// binary: 100000
+var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
 
-  tokens = tokenize(styles, context);
-  tokens = rebase(tokens, context.options.rebase, context.validator, rebaseConfig);
+// binary: 011111
+var VLQ_BASE_MASK = VLQ_BASE - 1;
 
-  return allowsAnyImports(parentInlinerContext.inline) ?
-    inline(tokens, context, parentInlinerContext, callback) :
-    callback(tokens);
-}
+// binary: 100000
+var VLQ_CONTINUATION_BIT = VLQ_BASE;
 
-function allowsAnyImports(inline) {
-  return !(inline.length == 1 && inline[0] == 'none');
+/**
+ * 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;
 }
 
-function inline(tokens, externalContext, parentInlinerContext, callback) {
-  var inlinerContext = {
-    afterContent: false,
-    callback: callback,
-    errors: externalContext.errors,
-    externalContext: externalContext,
-    fetch: externalContext.options.fetch,
-    inlinedStylesheets: parentInlinerContext.inlinedStylesheets || externalContext.inlinedStylesheets,
-    inline: parentInlinerContext.inline,
-    inlineRequest: externalContext.options.inlineRequest,
-    inlineTimeout: externalContext.options.inlineTimeout,
-    isRemote: parentInlinerContext.isRemote || false,
-    localOnly: externalContext.localOnly,
-    outputTokens: [],
-    rebaseTo: externalContext.options.rebaseTo,
-    sourceTokens: tokens,
-    warnings: externalContext.warnings
-  };
-
-  return doInlineImports(inlinerContext);
+/**
+ * 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;
 }
 
-function doInlineImports(inlinerContext) {
-  var token;
-  var i, l;
+/**
+ * Returns the base 64 VLQ encoded value.
+ */
+exports.encode = function base64VLQ_encode(aValue) {
+  var encoded = "";
+  var digit;
 
-  for (i = 0, l = inlinerContext.sourceTokens.length; i < l; i++) {
-    token = inlinerContext.sourceTokens[i];
+  var vlq = toVLQSigned(aValue);
 
-    if (token[0] == Token.AT_RULE && isImport(token[1])) {
-      inlinerContext.sourceTokens.splice(0, i);
-      return inlineStylesheet(token, inlinerContext);
-    } else if (token[0] == Token.AT_RULE || token[0] == Token.COMMENT) {
-      inlinerContext.outputTokens.push(token);
-    } else {
-      inlinerContext.outputTokens.push(token);
-      inlinerContext.afterContent = true;
+  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);
 
-  inlinerContext.sourceTokens = [];
-  return inlinerContext.callback(inlinerContext.outputTokens);
-}
+  return encoded;
+};
 
-function inlineStylesheet(token, inlinerContext) {
-  var uriAndMediaQuery = extractImportUrlAndMedia(token[1]);
-  var uri = uriAndMediaQuery[0];
-  var mediaQuery = uriAndMediaQuery[1];
-  var metadata = token[2];
+/**
+ * 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;
 
-  return isRemoteResource(uri) ?
-    inlineRemoteStylesheet(uri, mediaQuery, metadata, inlinerContext) :
-    inlineLocalStylesheet(uri, mediaQuery, metadata, inlinerContext);
-}
+  do {
+    if (aIndex >= strLen) {
+      throw new Error("Expected more digits in base 64 VLQ value.");
+    }
 
-function inlineRemoteStylesheet(uri, mediaQuery, metadata, inlinerContext) {
-  var isAllowed = isAllowedResource(uri, true, inlinerContext.inline);
-  var originalUri = uri;
-  var isLoaded = uri in inlinerContext.externalContext.sourcesContent;
-  var isRuntimeResource = !hasProtocol(uri);
+    digit = base64.decode(aStr.charCodeAt(aIndex++));
+    if (digit === -1) {
+      throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+    }
 
-  if (inlinerContext.inlinedStylesheets.indexOf(uri) > -1) {
-    inlinerContext.warnings.push('Ignoring remote @import of "' + uri + '" as it has already been imported.');
-    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
-    return doInlineImports(inlinerContext);
-  } else if (inlinerContext.localOnly && inlinerContext.afterContent) {
-    inlinerContext.warnings.push('Ignoring remote @import of "' + uri + '" as no callback given and after other content.');
-    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
-    return doInlineImports(inlinerContext);
-  } else if (isRuntimeResource) {
-    inlinerContext.warnings.push('Skipping remote @import of "' + uri + '" as no protocol given.');
-    inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));
-    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
-    return doInlineImports(inlinerContext);
-  } else if (inlinerContext.localOnly && !isLoaded) {
-    inlinerContext.warnings.push('Skipping remote @import of "' + uri + '" as no callback given.');
-    inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));
-    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
-    return doInlineImports(inlinerContext);
-  } else if (!isAllowed && inlinerContext.afterContent) {
-    inlinerContext.warnings.push('Ignoring remote @import of "' + uri + '" as resource is not allowed and after other content.');
-    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
-    return doInlineImports(inlinerContext);
-  } else if (!isAllowed) {
-    inlinerContext.warnings.push('Skipping remote @import of "' + uri + '" as resource is not allowed.');
-    inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));
-    inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
-    return doInlineImports(inlinerContext);
-  }
+    continuation = !!(digit & VLQ_CONTINUATION_BIT);
+    digit &= VLQ_BASE_MASK;
+    result = result + (digit << shift);
+    shift += VLQ_BASE_SHIFT;
+  } while (continuation);
 
-  inlinerContext.inlinedStylesheets.push(uri);
+  aOutParam.value = fromVLQSigned(result);
+  aOutParam.rest = aIndex;
+};
 
-  function whenLoaded(error, importedStyles) {
-    if (error) {
-      inlinerContext.errors.push('Broken @import declaration of "' + uri + '" - ' + error);
+},{"./base64":98}],98:[function(require,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
+ */
 
-      return process.nextTick(function () {
-        inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));
-        inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
-        doInlineImports(inlinerContext);
-      });
-    }
+var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
 
-    inlinerContext.inline = inlinerContext.externalContext.options.inline;
-    inlinerContext.isRemote = true;
+/**
+ * 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);
+};
 
-    inlinerContext.externalContext.source = originalUri;
-    inlinerContext.externalContext.sourcesContent[uri] = importedStyles;
-    inlinerContext.externalContext.stats.originalSize += importedStyles.length;
+/**
+ * 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'
 
-    return fromStyles(importedStyles, inlinerContext.externalContext, inlinerContext, function (importedTokens) {
-      importedTokens = wrapInMedia(importedTokens, mediaQuery, metadata);
+  var littleA = 97;  // 'a'
+  var littleZ = 122; // 'z'
 
-      inlinerContext.outputTokens = inlinerContext.outputTokens.concat(importedTokens);
-      inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
+  var zero = 48;     // '0'
+  var nine = 57;     // '9'
 
-      return doInlineImports(inlinerContext);
-    });
+  var plus = 43;     // '+'
+  var slash = 47;    // '/'
+
+  var littleOffset = 26;
+  var numberOffset = 52;
+
+  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+  if (bigA <= charCode && charCode <= bigZ) {
+    return (charCode - bigA);
   }
 
-  return isLoaded ?
-    whenLoaded(null, inlinerContext.externalContext.sourcesContent[uri]) :
-    inlinerContext.fetch(uri, inlinerContext.inlineRequest, inlinerContext.inlineTimeout, whenLoaded);
-}
+  // 26 - 51: abcdefghijklmnopqrstuvwxyz
+  if (littleA <= charCode && charCode <= littleZ) {
+    return (charCode - littleA + littleOffset);
+  }
 
-function inlineLocalStylesheet(uri, mediaQuery, metadata, inlinerContext) {
-  var currentPath = path.resolve('');
-  var absoluteUri = path.isAbsolute(uri) ?
-    path.resolve(currentPath, uri[0] == '/' ? uri.substring(1) : uri) :
-    path.resolve(inlinerContext.rebaseTo, uri);
-  var relativeToCurrentPath = path.relative(currentPath, absoluteUri);
-  var importedStyles;
-  var isAllowed = isAllowedResource(uri, false, inlinerContext.inline);
-  var normalizedPath = normalizePath(relativeToCurrentPath);
-  var isLoaded = normalizedPath in inlinerContext.externalContext.sourcesContent;
+  // 52 - 61: 0123456789
+  if (zero <= charCode && charCode <= nine) {
+    return (charCode - zero + numberOffset);
+  }
 
-  if (inlinerContext.inlinedStylesheets.indexOf(absoluteUri) > -1) {
-    inlinerContext.warnings.push('Ignoring local @import of "' + uri + '" as it has already been imported.');
-  } else if (!isLoaded && (!fs.existsSync(absoluteUri) || !fs.statSync(absoluteUri).isFile())) {
-    inlinerContext.errors.push('Ignoring local @import of "' + uri + '" as resource is missing.');
-  } else if (!isAllowed && inlinerContext.afterContent) {
-    inlinerContext.warnings.push('Ignoring local @import of "' + uri + '" as resource is not allowed and after other content.');
-  } else if (inlinerContext.afterContent) {
-    inlinerContext.warnings.push('Ignoring local @import of "' + uri + '" as after other content.');
-  } else if (!isAllowed) {
-    inlinerContext.warnings.push('Skipping local @import of "' + uri + '" as resource is not allowed.');
-    inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));
-  } else {
-    importedStyles = isLoaded ?
-      inlinerContext.externalContext.sourcesContent[normalizedPath] :
-      fs.readFileSync(absoluteUri, 'utf-8');
+  // 62: +
+  if (charCode == plus) {
+    return 62;
+  }
 
-    inlinerContext.inlinedStylesheets.push(absoluteUri);
-    inlinerContext.inline = inlinerContext.externalContext.options.inline;
+  // 63: /
+  if (charCode == slash) {
+    return 63;
+  }
 
-    inlinerContext.externalContext.source = normalizedPath;
-    inlinerContext.externalContext.sourcesContent[normalizedPath] = importedStyles;
-    inlinerContext.externalContext.stats.originalSize += importedStyles.length;
+  // Invalid base64 digit.
+  return -1;
+};
 
-    return fromStyles(importedStyles, inlinerContext.externalContext, inlinerContext, function (importedTokens) {
-      importedTokens = wrapInMedia(importedTokens, mediaQuery, metadata);
+},{}],99:[function(require,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
+ */
 
-      inlinerContext.outputTokens = inlinerContext.outputTokens.concat(importedTokens);
-      inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
+exports.GREATEST_LOWER_BOUND = 1;
+exports.LEAST_UPPER_BOUND = 2;
 
-      return doInlineImports(inlinerContext);
-    });
+/**
+ * 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);
+    }
 
-  inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);
-
-  return doInlineImports(inlinerContext);
-}
+    // 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);
+    }
 
-function wrapInMedia(tokens, mediaQuery, metadata) {
-  if (mediaQuery) {
-    return [[Token.NESTED_BLOCK, [[Token.NESTED_BLOCK_SCOPE, '@media ' + mediaQuery, metadata]], tokens]];
-  } else {
-    return tokens;
+    // 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;
+    }
   }
 }
 
-module.exports = readSources;
+/**
+ * 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;
+  }
 
-}).call(this,{"isBuffer":require("../../../is-buffer/index.js")},require('_process'))
-},{"../../../is-buffer/index.js":107,"../tokenizer/marker":83,"../tokenizer/token":84,"../tokenizer/tokenize":85,"../utils/has-protocol":88,"../utils/is-import":92,"../utils/is-remote-resource":93,"./apply-source-maps":69,"./extract-import-url-and-media":70,"./is-allowed-resource":72,"./load-original-sources":73,"./normalize-path":76,"./rebase":80,"./rebase-local-map":78,"./rebase-remote-map":79,"./restore-import":81,"_process":112,"fs":3,"path":110}],78:[function(require,module,exports){
-var path = require('path');
+  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+  if (index < 0) {
+    return -1;
+  }
 
-function rebaseLocalMap(sourceMap, sourceUri, rebaseTo) {
-  var currentPath = path.resolve('');
-  var absoluteUri = path.resolve(currentPath, sourceUri);
-  var absoluteUriDirectory = path.dirname(absoluteUri);
+  // 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;
+  }
 
-  sourceMap.sources = sourceMap.sources.map(function(source) {
-    return path.relative(rebaseTo, path.resolve(absoluteUriDirectory, source));
-  });
+  return index;
+};
 
-  return sourceMap;
-}
+},{}],100:[function(require,module,exports){
+/* -*- 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
+ */
 
-module.exports = rebaseLocalMap;
+var util = require('./util');
 
-},{"path":110}],79:[function(require,module,exports){
-var path = require('path');
-var url = require('url');
+/**
+ * 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;
+}
 
-function rebaseRemoteMap(sourceMap, sourceUri) {
-  var sourceDirectory = path.dirname(sourceUri);
+/**
+ * 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};
+}
 
-  sourceMap.sources = sourceMap.sources.map(function(source) {
-    return url.resolve(sourceDirectory, source);
-  });
+/**
+ * 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);
+  };
 
-  return sourceMap;
-}
+/**
+ * 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);
+  }
+};
 
-module.exports = rebaseRemoteMap;
+/**
+ * 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;
+};
 
-},{"path":110,"url":162}],80:[function(require,module,exports){
-var extractImportUrlAndMedia = require('./extract-import-url-and-media');
-var restoreImport = require('./restore-import');
-var rewriteUrl = require('./rewrite-url');
+exports.MappingList = MappingList;
 
-var Token = require('../tokenizer/token');
-var isImport = require('../utils/is-import');
+},{"./util":105}],101:[function(require,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 SOURCE_MAP_COMMENT_PATTERN = /^\/\*# sourceMappingURL=(\S+) \*\/$/;
+// 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`.
 
-function rebase(tokens, rebaseAll, validator, rebaseConfig) {
-  return rebaseAll ?
-    rebaseEverything(tokens, validator, rebaseConfig) :
-    rebaseAtRules(tokens, validator, rebaseConfig);
+/**
+ * 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;
 }
 
-function rebaseEverything(tokens, validator, rebaseConfig) {
-  var token;
-  var i, l;
-
-  for (i = 0, l = tokens.length; i < l; i++) {
-    token = tokens[i];
+/**
+ * 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)));
+}
 
-    switch (token[0]) {
-      case Token.AT_RULE:
-        rebaseAtRule(token, validator, rebaseConfig);
-        break;
-      case Token.AT_RULE_BLOCK:
-        rebaseProperties(token[2], validator, rebaseConfig);
-        break;
-      case Token.COMMENT:
-        rebaseSourceMapComment(token, rebaseConfig);
-        break;
-      case Token.NESTED_BLOCK:
-        rebaseEverything(token[2], validator, rebaseConfig);
-        break;
-      case Token.RULE:
-        rebaseProperties(token[2], validator, rebaseConfig);
-        break;
-    }
-  }
+/**
+ * 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.
 
-  return tokens;
-}
+  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.
 
-function rebaseAtRules(tokens, validator, rebaseConfig) {
-  var token;
-  var i, l;
+    // 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;
 
-  for (i = 0, l = tokens.length; i < l; i++) {
-    token = tokens[i];
+    swap(ary, pivotIndex, r);
+    var pivot = ary[r];
 
-    switch (token[0]) {
-      case Token.AT_RULE:
-        rebaseAtRule(token, validator, rebaseConfig);
-        break;
+    // 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);
+      }
     }
-  }
-
-  return tokens;
-}
-
-function rebaseAtRule(token, validator, rebaseConfig) {
-  if (!isImport(token[1])) {
-    return;
-  }
 
-  var uriAndMediaQuery = extractImportUrlAndMedia(token[1]);
-  var newUrl = rewriteUrl(uriAndMediaQuery[0], rebaseConfig);
-  var mediaQuery = uriAndMediaQuery[1];
-
-  token[1] = restoreImport(newUrl, mediaQuery);
-}
+    swap(ary, i + 1, j);
+    var q = i + 1;
 
-function rebaseSourceMapComment(token, rebaseConfig) {
-  var matches = SOURCE_MAP_COMMENT_PATTERN.exec(token[1]);
+    // (2) Recurse on each half.
 
-  if (matches && matches[1].indexOf('data:') === -1) {
-    token[1] = token[1].replace(matches[1], rewriteUrl(matches[1], rebaseConfig, true));
+    doQuickSort(ary, comparator, p, q - 1);
+    doQuickSort(ary, comparator, q + 1, r);
   }
 }
 
-function rebaseProperties(properties, validator, rebaseConfig) {
-  var property;
-  var value;
-  var i, l;
-  var j, m;
+/**
+ * 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);
+};
 
-  for (i = 0, l = properties.length; i < l; i++) {
-    property = properties[i];
+},{}],102:[function(require,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
+ */
 
-    for (j = 2 /* 0 is Token.PROPERTY, 1 is name */, m = property.length; j < m; j++) {
-      value = property[j][1];
+var util = require('./util');
+var binarySearch = require('./binary-search');
+var ArraySet = require('./array-set').ArraySet;
+var base64VLQ = require('./base64-vlq');
+var quickSort = require('./quick-sort').quickSort;
 
-      if (validator.isUrl(value)) {
-        property[j][1] = rewriteUrl(value, rebaseConfig);
-      }
-    }
+function SourceMapConsumer(aSourceMap, aSourceMapURL) {
+  var sourceMap = aSourceMap;
+  if (typeof aSourceMap === 'string') {
+    sourceMap = util.parseSourceMapInput(aSourceMap);
   }
-}
-
-module.exports = rebase;
 
-},{"../tokenizer/token":84,"../utils/is-import":92,"./extract-import-url-and-media":70,"./restore-import":81,"./rewrite-url":82}],81:[function(require,module,exports){
-function restoreImport(uri, mediaQuery) {
-  return ('@import ' + uri + ' ' + mediaQuery).trim();
+  return sourceMap.sections != null
+    ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)
+    : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);
 }
 
-module.exports = restoreImport;
-
-},{}],82:[function(require,module,exports){
-(function (process){
-var path = require('path');
-var url = require('url');
-
-var DOUBLE_QUOTE = '"';
-var SINGLE_QUOTE = '\'';
-var URL_PREFIX = 'url(';
-var URL_SUFFIX = ')';
-
-var QUOTE_PREFIX_PATTERN = /^["']/;
-var QUOTE_SUFFIX_PATTERN = /["']$/;
-var ROUND_BRACKETS_PATTERN = /[\(\)]/;
-var URL_PREFIX_PATTERN = /^url\(/i;
-var URL_SUFFIX_PATTERN = /\)$/;
-var WHITESPACE_PATTERN = /\s/;
+SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {
+  return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);
+}
 
-var isWindows = process.platform == 'win32';
+/**
+ * The version of the source mapping spec that we are consuming.
+ */
+SourceMapConsumer.prototype._version = 3;
 
-function rebase(uri, rebaseConfig) {
-  if (!rebaseConfig) {
-    return uri;
-  }
+// `__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.
 
-  if (isAbsolute(uri) && !isRemote(rebaseConfig.toBase)) {
-    return uri;
-  }
+SourceMapConsumer.prototype.__generatedMappings = null;
+Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+  configurable: true,
+  enumerable: true,
+  get: function () {
+    if (!this.__generatedMappings) {
+      this._parseMappings(this._mappings, this.sourceRoot);
+    }
 
-  if (isRemote(uri) || isSVGMarker(uri) || isInternal(uri)) {
-    return uri;
+    return this.__generatedMappings;
   }
+});
 
-  if (isData(uri)) {
-    return '\'' + uri + '\'';
-  }
+SourceMapConsumer.prototype.__originalMappings = null;
+Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+  configurable: true,
+  enumerable: true,
+  get: function () {
+    if (!this.__originalMappings) {
+      this._parseMappings(this._mappings, this.sourceRoot);
+    }
 
-  if (isRemote(rebaseConfig.toBase)) {
-    return url.resolve(rebaseConfig.toBase, uri);
+    return this.__originalMappings;
   }
+});
 
-  return rebaseConfig.absolute ?
-    normalize(absolute(uri, rebaseConfig)) :
-    normalize(relative(uri, rebaseConfig));
-}
-
-function isAbsolute(uri) {
-  return path.isAbsolute(uri);
-}
+SourceMapConsumer.prototype._charIsMappingSeparator =
+  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+    var c = aStr.charAt(index);
+    return c === ";" || c === ",";
+  };
 
-function isSVGMarker(uri) {
-  return uri[0] == '#';
-}
+/**
+ * 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");
+  };
 
-function isInternal(uri) {
-  return /^\w+:\w+/.test(uri);
-}
+SourceMapConsumer.GENERATED_ORDER = 1;
+SourceMapConsumer.ORIGINAL_ORDER = 2;
 
-function isRemote(uri) {
-  return /^[^:]+?:\/\//.test(uri) || uri.indexOf('//') === 0;
-}
+SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+SourceMapConsumer.LEAST_UPPER_BOUND = 2;
 
-function isData(uri) {
-  return uri.indexOf('data:') === 0;
-}
+/**
+ * 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;
 
-function absolute(uri, rebaseConfig) {
-  return path
-    .resolve(path.join(rebaseConfig.fromBase || '', uri))
-    .replace(rebaseConfig.toBase, '');
-}
+    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.");
+    }
 
-function relative(uri, rebaseConfig) {
-  return path.relative(rebaseConfig.toBase, path.join(rebaseConfig.fromBase || '', uri));
-}
+    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);
+  };
 
-function normalize(uri) {
-  return isWindows ? uri.replace(/\\/g, '/') : uri;
-}
+/**
+ * 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');
 
-function quoteFor(unquotedUrl) {
-  if (unquotedUrl.indexOf(SINGLE_QUOTE) > -1) {
-    return DOUBLE_QUOTE;
-  } else if (unquotedUrl.indexOf(DOUBLE_QUOTE) > -1) {
-    return SINGLE_QUOTE;
-  } else if (hasWhitespace(unquotedUrl) || hasRoundBrackets(unquotedUrl)) {
-    return SINGLE_QUOTE;
-  } else {
-    return '';
-  }
-}
+    // 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)
+    };
 
-function hasWhitespace(url) {
-  return WHITESPACE_PATTERN.test(url);
-}
+    needle.source = this._findSourceIndex(needle.source);
+    if (needle.source < 0) {
+      return [];
+    }
 
-function hasRoundBrackets(url) {
-  return ROUND_BRACKETS_PATTERN.test(url);
-}
+    var mappings = [];
 
-function rewriteUrl(originalUrl, rebaseConfig, pathOnly) {
-  var strippedUrl = originalUrl
-    .replace(URL_PREFIX_PATTERN, '')
-    .replace(URL_SUFFIX_PATTERN, '')
-    .trim();
+    var index = this._findMapping(needle,
+                                  this._originalMappings,
+                                  "originalLine",
+                                  "originalColumn",
+                                  util.compareByOriginalPositions,
+                                  binarySearch.LEAST_UPPER_BOUND);
+    if (index >= 0) {
+      var mapping = this._originalMappings[index];
 
-  var unquotedUrl = strippedUrl
-    .replace(QUOTE_PREFIX_PATTERN, '')
-    .replace(QUOTE_SUFFIX_PATTERN, '')
-    .trim();
+      if (aArgs.column === undefined) {
+        var originalLine = mapping.originalLine;
 
-  var quote = strippedUrl[0] == SINGLE_QUOTE || strippedUrl[0] == DOUBLE_QUOTE ?
-    strippedUrl[0] :
-    quoteFor(unquotedUrl);
+        // 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)
+          });
 
-  return pathOnly ?
-    rebase(unquotedUrl, rebaseConfig) :
-    URL_PREFIX + quote + rebase(unquotedUrl, rebaseConfig) + quote + URL_SUFFIX;
-}
+          mapping = this._originalMappings[++index];
+        }
+      } else {
+        var originalColumn = mapping.originalColumn;
 
-module.exports = rewriteUrl;
+        // 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)
+          });
 
-}).call(this,require('_process'))
-},{"_process":112,"path":110,"url":162}],83:[function(require,module,exports){
-var Marker = {
-  ASTERISK: '*',
-  AT: '@',
-  BACK_SLASH: '\\',
-  CARRIAGE_RETURN: '\r',
-  CLOSE_CURLY_BRACKET: '}',
-  CLOSE_ROUND_BRACKET: ')',
-  CLOSE_SQUARE_BRACKET: ']',
-  COLON: ':',
-  COMMA: ',',
-  DOUBLE_QUOTE: '"',
-  EXCLAMATION: '!',
-  FORWARD_SLASH: '/',
-  INTERNAL: '-clean-css-',
-  NEW_LINE_NIX: '\n',
-  OPEN_CURLY_BRACKET: '{',
-  OPEN_ROUND_BRACKET: '(',
-  OPEN_SQUARE_BRACKET: '[',
-  SEMICOLON: ';',
-  SINGLE_QUOTE: '\'',
-  SPACE: ' ',
-  TAB: '\t',
-  UNDERSCORE: '_'
-};
+          mapping = this._originalMappings[++index];
+        }
+      }
+    }
 
-module.exports = Marker;
+    return mappings;
+  };
 
-},{}],84:[function(require,module,exports){
-var Token = {
-  AT_RULE: 'at-rule', // e.g. `@import`, `@charset`
-  AT_RULE_BLOCK: 'at-rule-block', // e.g. `@font-face{...}`
-  AT_RULE_BLOCK_SCOPE: 'at-rule-block-scope', // e.g. `@font-face`
-  COMMENT: 'comment', // e.g. `/* comment */`
-  NESTED_BLOCK: 'nested-block', // e.g. `@media screen{...}`, `@keyframes animation {...}`
-  NESTED_BLOCK_SCOPE: 'nested-block-scope', // e.g. `@media`, `@keyframes`
-  PROPERTY: 'property', // e.g. `color:red`
-  PROPERTY_BLOCK: 'property-block', // e.g. `--var:{color:red}`
-  PROPERTY_NAME: 'property-name', // e.g. `color`
-  PROPERTY_VALUE: 'property-value', // e.g. `red`
-  RAW: 'raw', // e.g. anything between /* clean-css ignore:start */ and /* clean-css ignore:end */ comments
-  RULE: 'rule', // e.g `div > a{...}`
-  RULE_SCOPE: 'rule-scope' // e.g `div > a`
-};
+exports.SourceMapConsumer = SourceMapConsumer;
 
-module.exports = Token;
+/**
+ * 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);
+  }
 
-},{}],85:[function(require,module,exports){
-var Marker = require('./marker');
-var Token = require('./token');
+  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);
 
-var formatPosition = require('../utils/format-position');
+  // 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);
+  }
 
-var Level = {
-  BLOCK: 'block',
-  COMMENT: 'comment',
-  DOUBLE_QUOTE: 'double-quote',
-  RULE: 'rule',
-  SINGLE_QUOTE: 'single-quote'
-};
+  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;
+    });
 
-var AT_RULES = [
-  '@charset',
-  '@import'
-];
+  // 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);
 
-var BLOCK_RULES = [
-  '@-moz-document',
-  '@document',
-  '@-moz-keyframes',
-  '@-ms-keyframes',
-  '@-o-keyframes',
-  '@-webkit-keyframes',
-  '@keyframes',
-  '@media',
-  '@supports'
-];
+  this._absoluteSources = this._sources.toArray().map(function (s) {
+    return util.computeSourceURL(sourceRoot, s, aSourceMapURL);
+  });
 
-var IGNORE_END_COMMENT_PATTERN = /\/\* clean\-css ignore:end \*\/$/;
-var IGNORE_START_COMMENT_PATTERN = /^\/\* clean\-css ignore:start \*\//;
+  this.sourceRoot = sourceRoot;
+  this.sourcesContent = sourcesContent;
+  this._mappings = mappings;
+  this._sourceMapURL = aSourceMapURL;
+  this.file = file;
+}
 
-var PAGE_MARGIN_BOXES = [
-  '@bottom-center',
-  '@bottom-left',
-  '@bottom-left-corner',
-  '@bottom-right',
-  '@bottom-right-corner',
-  '@left-bottom',
-  '@left-middle',
-  '@left-top',
-  '@right-bottom',
-  '@right-middle',
-  '@right-top',
-  '@top-center',
-  '@top-left',
-  '@top-left-corner',
-  '@top-right',
-  '@top-right-corner'
-];
+BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
 
-var EXTRA_PAGE_BOXES = [
-  '@footnote',
-  '@footnotes',
-  '@left',
-  '@page-float-bottom',
-  '@page-float-top',
-  '@right'
-];
+/**
+ * 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);
+  }
 
-var REPEAT_PATTERN = /^\[\s{0,31}\d+\s{0,31}\]$/;
-var RULE_WORD_SEPARATOR_PATTERN = /[\s\(]/;
-var TAIL_BROKEN_VALUE_PATTERN = /[\s|\}]*$/;
+  if (this._sources.has(relativeSource)) {
+    return this._sources.indexOf(relativeSource);
+  }
 
-function tokenize(source, externalContext) {
-  var internalContext = {
-    level: Level.BLOCK,
-    position: {
-      source: externalContext.source || undefined,
-      line: 1,
-      column: 0,
-      index: 0
+  // 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 intoTokens(source, externalContext, internalContext, false);
-}
+  return -1;
+};
 
-function intoTokens(source, externalContext, internalContext, isNested) {
-  var allTokens = [];
-  var newTokens = allTokens;
-  var lastToken;
-  var ruleToken;
-  var ruleTokens = [];
-  var propertyToken;
-  var metadata;
-  var metadatas = [];
-  var level = internalContext.level;
-  var levels = [];
-  var buffer = [];
-  var buffers = [];
-  var serializedBuffer;
-  var serializedBufferPart;
-  var roundBracketLevel = 0;
-  var isQuoted;
-  var isSpace;
-  var isNewLineNix;
-  var isNewLineWin;
-  var isCarriageReturn;
-  var isCommentStart;
-  var wasCommentStart = false;
-  var isCommentEnd;
-  var wasCommentEnd = false;
-  var isCommentEndMarker;
-  var isEscaped;
-  var wasEscaped = false;
-  var isRaw = false;
-  var seekingValue = false;
-  var seekingPropertyBlockClosing = false;
-  var position = internalContext.position;
-  var lastCommentStartAt;
+/**
+ * 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);
 
-  for (; position.index < source.length; position.index++) {
-    var character = source[position.index];
+    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);
+    });
 
-    isQuoted = level == Level.SINGLE_QUOTE || level == Level.DOUBLE_QUOTE;
-    isSpace = character == Marker.SPACE || character == Marker.TAB;
-    isNewLineNix = character == Marker.NEW_LINE_NIX;
-    isNewLineWin = character == Marker.NEW_LINE_NIX && source[position.index - 1] == Marker.CARRIAGE_RETURN;
-    isCarriageReturn = character == Marker.CARRIAGE_RETURN && source[position.index + 1] && source[position.index + 1] != Marker.NEW_LINE_NIX;
-    isCommentStart = !wasCommentEnd && level != Level.COMMENT && !isQuoted && character == Marker.ASTERISK && source[position.index - 1] == Marker.FORWARD_SLASH;
-    isCommentEndMarker = !wasCommentStart && !isQuoted && character == Marker.FORWARD_SLASH && source[position.index - 1] == Marker.ASTERISK;
-    isCommentEnd = level == Level.COMMENT && isCommentEndMarker;
-    roundBracketLevel = Math.max(roundBracketLevel, 0);
+    // 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.
 
-    metadata = buffer.length === 0 ?
-      [position.line, position.column, position.source] :
-      metadata;
+    var generatedMappings = aSourceMap._mappings.toArray().slice();
+    var destGeneratedMappings = smc.__generatedMappings = [];
+    var destOriginalMappings = smc.__originalMappings = [];
 
-    if (isEscaped) {
-      // previous character was a backslash
-      buffer.push(character);
-    } else if (!isCommentEnd && level == Level.COMMENT) {
-      buffer.push(character);
-    } else if (!isCommentStart && !isCommentEnd && isRaw) {
-      buffer.push(character);
-    } else if (isCommentStart && (level == Level.BLOCK || level == Level.RULE) && buffer.length > 1) {
-      // comment start within block preceded by some content, e.g. div/*<--
-      metadatas.push(metadata);
-      buffer.push(character);
-      buffers.push(buffer.slice(0, buffer.length - 2));
+    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;
 
-      buffer = buffer.slice(buffer.length - 2);
-      metadata = [position.line, position.column - 1, position.source];
+      if (srcMapping.source) {
+        destMapping.source = sources.indexOf(srcMapping.source);
+        destMapping.originalLine = srcMapping.originalLine;
+        destMapping.originalColumn = srcMapping.originalColumn;
 
-      levels.push(level);
-      level = Level.COMMENT;
-    } else if (isCommentStart) {
-      // comment start, e.g. /*<--
-      levels.push(level);
-      level = Level.COMMENT;
-      buffer.push(character);
-    } else if (isCommentEnd && isIgnoreStartComment(buffer)) {
-      // ignore:start comment end, e.g. /* clean-css ignore:start */<--
-      serializedBuffer = buffer.join('').trim() + character;
-      lastToken = [Token.COMMENT, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]];
-      newTokens.push(lastToken);
+        if (srcMapping.name) {
+          destMapping.name = names.indexOf(srcMapping.name);
+        }
 
-      isRaw = true;
-      metadata = metadatas.pop() || null;
-      buffer = buffers.pop() || [];
-    } else if (isCommentEnd && isIgnoreEndComment(buffer)) {
-      // ignore:start comment end, e.g. /* clean-css ignore:end */<--
-      serializedBuffer = buffer.join('') + character;
-      lastCommentStartAt = serializedBuffer.lastIndexOf(Marker.FORWARD_SLASH + Marker.ASTERISK);
+        destOriginalMappings.push(destMapping);
+      }
 
-      serializedBufferPart = serializedBuffer.substring(0, lastCommentStartAt);
-      lastToken = [Token.RAW, serializedBufferPart, [originalMetadata(metadata, serializedBufferPart, externalContext)]];
-      newTokens.push(lastToken);
+      destGeneratedMappings.push(destMapping);
+    }
 
-      serializedBufferPart = serializedBuffer.substring(lastCommentStartAt);
-      metadata = [position.line, position.column - serializedBufferPart.length + 1, position.source];
-      lastToken = [Token.COMMENT, serializedBufferPart, [originalMetadata(metadata, serializedBufferPart, externalContext)]];
-      newTokens.push(lastToken);
+    quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+    return smc;
+  };
+
+/**
+ * The version of the source mapping spec that we are consuming.
+ */
+BasicSourceMapConsumer.prototype._version = 3;
 
-      isRaw = false;
-      level = levels.pop();
-      metadata = metadatas.pop() || null;
-      buffer = buffers.pop() || [];
-    } else if (isCommentEnd) {
-      // comment end, e.g. /* comment */<--
-      serializedBuffer = buffer.join('').trim() + character;
-      lastToken = [Token.COMMENT, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]];
-      newTokens.push(lastToken);
+/**
+ * The list of original sources.
+ */
+Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+  get: function () {
+    return this._absoluteSources.slice();
+  }
+});
 
-      level = levels.pop();
-      metadata = metadatas.pop() || null;
-      buffer = buffers.pop() || [];
-    } else if (isCommentEndMarker && source[position.index + 1] != Marker.ASTERISK) {
-      externalContext.warnings.push('Unexpected \'*/\' at ' + formatPosition([position.line, position.column, position.source]) + '.');
-      buffer = [];
-    } else if (character == Marker.SINGLE_QUOTE && !isQuoted) {
-      // single quotation start, e.g. a[href^='https<--
-      levels.push(level);
-      level = Level.SINGLE_QUOTE;
-      buffer.push(character);
-    } else if (character == Marker.SINGLE_QUOTE && level == Level.SINGLE_QUOTE) {
-      // single quotation end, e.g. a[href^='https'<--
-      level = levels.pop();
-      buffer.push(character);
-    } else if (character == Marker.DOUBLE_QUOTE && !isQuoted) {
-      // double quotation start, e.g. a[href^="<--
-      levels.push(level);
-      level = Level.DOUBLE_QUOTE;
-      buffer.push(character);
-    } else if (character == Marker.DOUBLE_QUOTE && level == Level.DOUBLE_QUOTE) {
-      // double quotation end, e.g. a[href^="https"<--
-      level = levels.pop();
-      buffer.push(character);
-    } else if (!isCommentStart && !isCommentEnd && character != Marker.CLOSE_ROUND_BRACKET && character != Marker.OPEN_ROUND_BRACKET && level != Level.COMMENT && !isQuoted && roundBracketLevel > 0) {
-      // character inside any function, e.g. hsla(.<--
-      buffer.push(character);
-    } else if (character == Marker.OPEN_ROUND_BRACKET && !isQuoted && level != Level.COMMENT && !seekingValue) {
-      // round open bracket, e.g. @import url(<--
-      buffer.push(character);
+/**
+ * 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;
+}
 
-      roundBracketLevel++;
-    } else if (character == Marker.CLOSE_ROUND_BRACKET && !isQuoted && level != Level.COMMENT && !seekingValue) {
-      // round open bracket, e.g. @import url(test.css)<--
-      buffer.push(character);
+/**
+ * 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;
 
-      roundBracketLevel--;
-    } else if (character == Marker.SEMICOLON && level == Level.BLOCK && buffer[0] == Marker.AT) {
-      // semicolon ending rule at block level, e.g. @import '...';<--
-      serializedBuffer = buffer.join('').trim();
-      allTokens.push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+    while (index < length) {
+      if (aStr.charAt(index) === ';') {
+        generatedLine++;
+        index++;
+        previousGeneratedColumn = 0;
+      }
+      else if (aStr.charAt(index) === ',') {
+        index++;
+      }
+      else {
+        mapping = new Mapping();
+        mapping.generatedLine = generatedLine;
 
-      buffer = [];
-    } else if (character == Marker.COMMA && level == Level.BLOCK && ruleToken) {
-      // comma separator at block level, e.g. a,div,<--
-      serializedBuffer = buffer.join('').trim();
-      ruleToken[1].push([tokenScopeFrom(ruleToken[0]), serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext, ruleToken[1].length)]]);
+        // 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);
 
-      buffer = [];
-    } else if (character == Marker.COMMA && level == Level.BLOCK && tokenTypeFrom(buffer) == Token.AT_RULE) {
-      // comma separator at block level, e.g. @import url(...) screen,<--
-      // keep iterating as end semicolon will create the token
-      buffer.push(character);
-    } else if (character == Marker.COMMA && level == Level.BLOCK) {
-      // comma separator at block level, e.g. a,<--
-      ruleToken = [tokenTypeFrom(buffer), [], []];
-      serializedBuffer = buffer.join('').trim();
-      ruleToken[1].push([tokenScopeFrom(ruleToken[0]), serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext, 0)]]);
+        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);
+          }
 
-      buffer = [];
-    } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.BLOCK && ruleToken && ruleToken[0] == Token.NESTED_BLOCK) {
-      // open brace opening at-rule at block level, e.g. @media{<--
-      serializedBuffer = buffer.join('').trim();
-      ruleToken[1].push([Token.NESTED_BLOCK_SCOPE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
-      allTokens.push(ruleToken);
+          if (segment.length === 2) {
+            throw new Error('Found a source, but no line and column');
+          }
 
-      levels.push(level);
-      position.column++;
-      position.index++;
-      buffer = [];
+          if (segment.length === 3) {
+            throw new Error('Found a source and line, but no column');
+          }
 
-      ruleToken[2] = intoTokens(source, externalContext, internalContext, true);
-      ruleToken = null;
-    } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.BLOCK && tokenTypeFrom(buffer) == Token.NESTED_BLOCK) {
-      // open brace opening at-rule at block level, e.g. @media{<--
-      serializedBuffer = buffer.join('').trim();
-      ruleToken = ruleToken || [Token.NESTED_BLOCK, [], []];
-      ruleToken[1].push([Token.NESTED_BLOCK_SCOPE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
-      allTokens.push(ruleToken);
+          cachedSegments[str] = segment;
+        }
 
-      levels.push(level);
-      position.column++;
-      position.index++;
-      buffer = [];
+        // Generated column.
+        mapping.generatedColumn = previousGeneratedColumn + segment[0];
+        previousGeneratedColumn = mapping.generatedColumn;
 
-      ruleToken[2] = intoTokens(source, externalContext, internalContext, true);
-      ruleToken = null;
-    } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.BLOCK) {
-      // open brace opening rule at block level, e.g. div{<--
-      serializedBuffer = buffer.join('').trim();
-      ruleToken = ruleToken || [tokenTypeFrom(buffer), [], []];
-      ruleToken[1].push([tokenScopeFrom(ruleToken[0]), serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext, ruleToken[1].length)]]);
-      newTokens = ruleToken[2];
-      allTokens.push(ruleToken);
+        if (segment.length > 1) {
+          // Original source.
+          mapping.source = previousSource + segment[1];
+          previousSource += segment[1];
 
-      levels.push(level);
-      level = Level.RULE;
-      buffer = [];
-    } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.RULE && seekingValue) {
-      // open brace opening rule at rule level, e.g. div{--variable:{<--
-      ruleTokens.push(ruleToken);
-      ruleToken = [Token.PROPERTY_BLOCK, []];
-      propertyToken.push(ruleToken);
-      newTokens = ruleToken[1];
+          // Original line.
+          mapping.originalLine = previousOriginalLine + segment[2];
+          previousOriginalLine = mapping.originalLine;
+          // Lines are stored 0-based
+          mapping.originalLine += 1;
 
-      levels.push(level);
-      level = Level.RULE;
-      seekingValue = false;
-    } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.RULE && isPageMarginBox(buffer)) {
-      // open brace opening page-margin box at rule level, e.g. @page{@top-center{<--
-      serializedBuffer = buffer.join('').trim();
-      ruleTokens.push(ruleToken);
-      ruleToken = [Token.AT_RULE_BLOCK, [], []];
-      ruleToken[1].push([Token.AT_RULE_BLOCK_SCOPE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
-      newTokens.push(ruleToken);
-      newTokens = ruleToken[2];
+          // Original column.
+          mapping.originalColumn = previousOriginalColumn + segment[3];
+          previousOriginalColumn = mapping.originalColumn;
 
-      levels.push(level);
-      level = Level.RULE;
-      buffer = [];
-    } else if (character == Marker.COLON && level == Level.RULE && !seekingValue) {
-      // colon at rule level, e.g. a{color:<--
-      serializedBuffer = buffer.join('').trim();
-      propertyToken = [Token.PROPERTY, [Token.PROPERTY_NAME, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]];
-      newTokens.push(propertyToken);
+          if (segment.length > 4) {
+            // Original name.
+            mapping.name = previousName + segment[4];
+            previousName += segment[4];
+          }
+        }
 
-      seekingValue = true;
-      buffer = [];
-    } else if (character == Marker.SEMICOLON && level == Level.RULE && propertyToken && ruleTokens.length > 0 && buffer.length > 0 && buffer[0] == Marker.AT) {
-      // semicolon at rule level for at-rule, e.g. a{--color:{@apply(--other-color);<--
-      serializedBuffer = buffer.join('').trim();
-      ruleToken[1].push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+        generatedMappings.push(mapping);
+        if (typeof mapping.originalLine === 'number') {
+          originalMappings.push(mapping);
+        }
+      }
+    }
 
-      buffer = [];
-    } else if (character == Marker.SEMICOLON && level == Level.RULE && propertyToken && buffer.length > 0) {
-      // semicolon at rule level, e.g. a{color:red;<--
-      serializedBuffer = buffer.join('').trim();
-      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+    quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+    this.__generatedMappings = generatedMappings;
 
-      propertyToken = null;
-      seekingValue = false;
-      buffer = [];
-    } else if (character == Marker.SEMICOLON && level == Level.RULE && propertyToken && buffer.length === 0) {
-      // semicolon after bracketed value at rule level, e.g. a{color:rgb(...);<--
-      propertyToken = null;
-      seekingValue = false;
-    } else if (character == Marker.SEMICOLON && level == Level.RULE && buffer.length > 0 && buffer[0] == Marker.AT) {
-      // semicolon for at-rule at rule level, e.g. a{@apply(--variable);<--
-      serializedBuffer = buffer.join('');
-      newTokens.push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+    quickSort(originalMappings, util.compareByOriginalPositions);
+    this.__originalMappings = originalMappings;
+  };
 
-      seekingValue = false;
-      buffer = [];
-    } else if (character == Marker.SEMICOLON && level == Level.RULE && seekingPropertyBlockClosing) {
-      // close brace after a property block at rule level, e.g. a{--custom:{color:red;};<--
-      seekingPropertyBlockClosing = false;
-      buffer = [];
-    } else if (character == Marker.SEMICOLON && level == Level.RULE && buffer.length === 0) {
-      // stray semicolon at rule level, e.g. a{;<--
-      // noop
-    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && seekingValue && buffer.length > 0 && ruleTokens.length > 0) {
-      // close brace at rule level, e.g. a{--color:{color:red}<--
-      serializedBuffer = buffer.join('');
-      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
-      propertyToken = null;
-      ruleToken = ruleTokens.pop();
-      newTokens = ruleToken[2];
+/**
+ * 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.
 
-      level = levels.pop();
-      seekingValue = false;
-      buffer = [];
-    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && buffer.length > 0 && buffer[0] == Marker.AT && ruleTokens.length > 0) {
-      // close brace at rule level for at-rule, e.g. a{--color:{@apply(--other-color)}<--
-      serializedBuffer = buffer.join('');
-      ruleToken[1].push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
-      propertyToken = null;
-      ruleToken = ruleTokens.pop();
-      newTokens = ruleToken[2];
+    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]);
+    }
 
-      level = levels.pop();
-      seekingValue = false;
-      buffer = [];
-    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && ruleTokens.length > 0) {
-      // close brace at rule level after space, e.g. a{--color:{color:red }<--
-      propertyToken = null;
-      ruleToken = ruleTokens.pop();
-      newTokens = ruleToken[2];
+    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+  };
 
-      level = levels.pop();
-      seekingValue = false;
-    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && buffer.length > 0) {
-      // close brace at rule level, e.g. a{color:red}<--
-      serializedBuffer = buffer.join('');
-      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
-      propertyToken = null;
-      ruleToken = ruleTokens.pop();
-      newTokens = allTokens;
+/**
+ * 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];
 
-      level = levels.pop();
-      seekingValue = false;
-      buffer = [];
-    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && buffer.length > 0 && buffer[0] == Marker.AT) {
-      // close brace after at-rule at rule level, e.g. a{@apply(--variable)}<--
-      propertyToken = null;
-      ruleToken = null;
-      serializedBuffer = buffer.join('').trim();
-      newTokens.push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
-      newTokens = allTokens;
+      // 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];
 
-      level = levels.pop();
-      seekingValue = false;
-      buffer = [];
-    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && levels[levels.length - 1] == Level.RULE) {
-      // close brace after a property block at rule level, e.g. a{--custom:{color:red;}<--
-      propertyToken = null;
-      ruleToken = ruleTokens.pop();
-      newTokens = ruleToken[2];
+        if (mapping.generatedLine === nextMapping.generatedLine) {
+          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+          continue;
+        }
+      }
 
-      level = levels.pop();
-      seekingValue = false;
-      seekingPropertyBlockClosing = true;
-      buffer = [];
-    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE) {
-      // close brace after a rule, e.g. a{color:red;}<--
-      propertyToken = null;
-      ruleToken = null;
-      newTokens = allTokens;
+      // The last mapping for each line spans the entire line.
+      mapping.lastGeneratedColumn = Infinity;
+    }
+  };
 
-      level = levels.pop();
-      seekingValue = false;
-    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.BLOCK && !isNested && position.index <= source.length - 1) {
-      // stray close brace at block level, e.g. a{color:red}color:blue}<--
-      externalContext.warnings.push('Unexpected \'}\' at ' + formatPosition([position.line, position.column, position.source]) + '.');
-      buffer.push(character);
-    } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.BLOCK) {
-      // close brace at block level, e.g. @media screen {...}<--
-      break;
-    } else if (character == Marker.OPEN_ROUND_BRACKET && level == Level.RULE && seekingValue) {
-      // round open bracket, e.g. a{color:hsla(<--
-      buffer.push(character);
-      roundBracketLevel++;
-    } else if (character == Marker.CLOSE_ROUND_BRACKET && level == Level.RULE && seekingValue && roundBracketLevel == 1) {
-      // round close bracket, e.g. a{color:hsla(0,0%,0%)<--
-      buffer.push(character);
-      serializedBuffer = buffer.join('').trim();
-      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+/**
+ * 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')
+    };
 
-      roundBracketLevel--;
-      buffer = [];
-    } else if (character == Marker.CLOSE_ROUND_BRACKET && level == Level.RULE && seekingValue) {
-      // round close bracket within other brackets, e.g. a{width:calc((10rem / 2)<--
-      buffer.push(character);
-      roundBracketLevel--;
-    } else if (character == Marker.FORWARD_SLASH && source[position.index + 1] != Marker.ASTERISK && level == Level.RULE && seekingValue && buffer.length > 0) {
-      // forward slash within a property, e.g. a{background:url(image.png) 0 0/<--
-      serializedBuffer = buffer.join('').trim();
-      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
-      propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);
+    var index = this._findMapping(
+      needle,
+      this._generatedMappings,
+      "generatedLine",
+      "generatedColumn",
+      util.compareByGeneratedPositionsDeflated,
+      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+    );
 
-      buffer = [];
-    } else if (character == Marker.FORWARD_SLASH && source[position.index + 1] != Marker.ASTERISK && level == Level.RULE && seekingValue) {
-      // forward slash within a property after space, e.g. a{background:url(image.png) 0 0 /<--
-      propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);
+    if (index >= 0) {
+      var mapping = this._generatedMappings[index];
 
-      buffer = [];
-    } else if (character == Marker.COMMA && level == Level.RULE && seekingValue && buffer.length > 0) {
-      // comma within a property, e.g. a{background:url(image.png),<--
-      serializedBuffer = buffer.join('').trim();
-      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
-      propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);
+      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
+        };
+      }
+    }
 
-      buffer = [];
-    } else if (character == Marker.COMMA && level == Level.RULE && seekingValue) {
-      // comma within a property after space, e.g. a{background:url(image.png) ,<--
-      propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);
+    return {
+      source: null,
+      line: null,
+      column: null,
+      name: null
+    };
+  };
 
-      buffer = [];
-    } else if (character == Marker.CLOSE_SQUARE_BRACKET && propertyToken && propertyToken.length > 1 && buffer.length > 0 && isRepeatToken(buffer)) {
-      buffer.push(character);
-      serializedBuffer = buffer.join('').trim();
-      propertyToken[propertyToken.length - 1][1] += serializedBuffer;
+/**
+ * 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; });
+  };
 
-      buffer = [];
-    } else if ((isSpace || (isNewLineNix && !isNewLineWin)) && level == Level.RULE && seekingValue && propertyToken && buffer.length > 0) {
-      // space or *nix newline within property, e.g. a{margin:0 <--
-      serializedBuffer = buffer.join('').trim();
-      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+/**
+ * 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;
+    }
 
-      buffer = [];
-    } else if (isNewLineWin && level == Level.RULE && seekingValue && propertyToken && buffer.length > 1) {
-      // win newline within property, e.g. a{margin:0\r\n<--
-      serializedBuffer = buffer.join('').trim();
-      propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+    var index = this._findSourceIndex(aSource);
+    if (index >= 0) {
+      return this.sourcesContent[index];
+    }
 
-      buffer = [];
-    } else if (isNewLineWin && level == Level.RULE && seekingValue) {
-      // win newline
-      buffer = [];
-    } else if (buffer.length == 1 && isNewLineWin) {
-      // ignore windows newline which is composed of two characters
-      buffer.pop();
-    } else if (buffer.length > 0 || !isSpace && !isNewLineNix && !isNewLineWin && !isCarriageReturn) {
-      // any character
-      buffer.push(character);
+    var relativeSource = aSource;
+    if (this.sourceRoot != null) {
+      relativeSource = util.relative(this.sourceRoot, relativeSource);
     }
 
-    wasEscaped = isEscaped;
-    isEscaped = !wasEscaped && character == Marker.BACK_SLASH;
-    wasCommentStart = isCommentStart;
-    wasCommentEnd = isCommentEnd;
+    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)]
+      }
 
-    position.line = (isNewLineWin || isNewLineNix || isCarriageReturn) ? position.line + 1 : position.line;
-    position.column = (isNewLineWin || isNewLineNix || isCarriageReturn) ? 0 : position.column + 1;
-  }
+      if ((!url.path || url.path == "/")
+          && this._sources.has("/" + relativeSource)) {
+        return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];
+      }
+    }
 
-  if (seekingValue) {
-    externalContext.warnings.push('Missing \'}\' at ' + formatPosition([position.line, position.column, position.source]) + '.');
-  }
+    // 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.');
+    }
+  };
 
-  if (seekingValue && buffer.length > 0) {
-    serializedBuffer = buffer.join('').replace(TAIL_BROKEN_VALUE_PATTERN, '');
-    propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);
+/**
+ * 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
+      };
+    }
 
-    buffer = [];
-  }
+    var needle = {
+      source: source,
+      originalLine: util.getArg(aArgs, 'line'),
+      originalColumn: util.getArg(aArgs, 'column')
+    };
 
-  if (buffer.length > 0) {
-    externalContext.warnings.push('Invalid character(s) \'' + buffer.join('') + '\' at ' + formatPosition(metadata) + '. Ignoring.');
-  }
+    var index = this._findMapping(
+      needle,
+      this._originalMappings,
+      "originalLine",
+      "originalColumn",
+      util.compareByOriginalPositions,
+      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+    );
 
-  return allTokens;
-}
+    if (index >= 0) {
+      var mapping = this._originalMappings[index];
 
-function isIgnoreStartComment(buffer) {
-  return IGNORE_START_COMMENT_PATTERN.test(buffer.join('') + Marker.FORWARD_SLASH);
-}
+      if (mapping.source === needle.source) {
+        return {
+          line: util.getArg(mapping, 'generatedLine', null),
+          column: util.getArg(mapping, 'generatedColumn', null),
+          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+        };
+      }
+    }
 
-function isIgnoreEndComment(buffer) {
-  return IGNORE_END_COMMENT_PATTERN.test(buffer.join('') + Marker.FORWARD_SLASH);
-}
+    return {
+      line: null,
+      column: null,
+      lastColumn: null
+    };
+  };
 
-function originalMetadata(metadata, value, externalContext, selectorFallbacks) {
-  var source = metadata[2];
+exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
 
-  return externalContext.inputSourceMapTracker.isTracking(source) ?
-    externalContext.inputSourceMapTracker.originalPositionFor(metadata, value.length, selectorFallbacks) :
-    metadata;
-}
+/**
+ * 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);
+  }
 
-function tokenTypeFrom(buffer) {
-  var isAtRule = buffer[0] == Marker.AT || buffer[0] == Marker.UNDERSCORE;
-  var ruleWord = buffer.join('').split(RULE_WORD_SEPARATOR_PATTERN)[0];
+  var version = util.getArg(sourceMap, 'version');
+  var sections = util.getArg(sourceMap, 'sections');
 
-  if (isAtRule && BLOCK_RULES.indexOf(ruleWord) > -1) {
-    return Token.NESTED_BLOCK;
-  } else if (isAtRule && AT_RULES.indexOf(ruleWord) > -1) {
-    return Token.AT_RULE;
-  } else if (isAtRule) {
-    return Token.AT_RULE_BLOCK;
-  } else {
-    return Token.RULE;
+  if (version != this._version) {
+    throw new Error('Unsupported version: ' + version);
   }
-}
 
-function tokenScopeFrom(tokenType) {
-  if (tokenType == Token.RULE) {
-    return Token.RULE_SCOPE;
-  } else if (tokenType == Token.NESTED_BLOCK) {
-    return Token.NESTED_BLOCK_SCOPE;
-  } else if (tokenType == Token.AT_RULE_BLOCK) {
-    return Token.AT_RULE_BLOCK_SCOPE;
-  }
+  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)
+    }
+  });
 }
 
-function isPageMarginBox(buffer) {
-  var serializedBuffer = buffer.join('').trim();
+IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
 
-  return PAGE_MARGIN_BOXES.indexOf(serializedBuffer) > -1 || EXTRA_PAGE_BOXES.indexOf(serializedBuffer) > -1;
-}
+/**
+ * The version of the source mapping spec that we are consuming.
+ */
+IndexedSourceMapConsumer.prototype._version = 3;
 
-function isRepeatToken(buffer) {
-  return REPEAT_PATTERN.test(buffer.join('') + Marker.CLOSE_SQUARE_BRACKET);
-}
+/**
+ * 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;
+  }
+});
 
-module.exports = tokenize;
+/**
+ * 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')
+    };
 
-},{"../utils/format-position":87,"./marker":83,"./token":84}],86:[function(require,module,exports){
-function cloneArray(array) {
-  var cloned = array.slice(0);
+    // 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;
+        }
 
-  for (var i = 0, l = cloned.length; i < l; i++) {
-    if (Array.isArray(cloned[i]))
-      cloned[i] = cloneArray(cloned[i]);
-  }
+        return (needle.generatedColumn -
+                section.generatedOffset.generatedColumn);
+      });
+    var section = this._sections[sectionIndex];
 
-  return cloned;
-}
+    if (!section) {
+      return {
+        source: null,
+        line: null,
+        column: null,
+        name: null
+      };
+    }
 
-module.exports = cloneArray;
+    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
+    });
+  };
 
-},{}],87:[function(require,module,exports){
-function formatPosition(metadata) {
-  var line = metadata[0];
-  var column = metadata[1];
-  var source = metadata[2];
+/**
+ * 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();
+    });
+  };
 
-  return source ?
-    source + ':' + line + ':' + column :
-    line + ':' + column;
-}
+/**
+ * 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];
 
-module.exports = formatPosition;
+      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.');
+    }
+  };
 
-},{}],88:[function(require,module,exports){
-var NO_PROTOCOL_RESOURCE_PATTERN = /^\/\//;
+/**
+ * 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];
 
-function hasProtocol(uri) {
-  return !NO_PROTOCOL_RESOURCE_PATTERN.test(uri);
-}
+      // 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;
+      }
+    }
 
-module.exports = hasProtocol;
+    return {
+      line: null,
+      column: null
+    };
+  };
 
-},{}],89:[function(require,module,exports){
-var DATA_URI_PATTERN = /^data:(\S*?)?(;charset=[^;]+)?(;[^,]+?)?,(.+)/;
+/**
+ * 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];
 
-function isDataUriResource(uri) {
-  return DATA_URI_PATTERN.test(uri);
-}
+        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);
 
-module.exports = isDataUriResource;
+        var name = null;
+        if (mapping.name) {
+          name = section.consumer._names.at(mapping.name);
+          this._names.add(name);
+          name = this._names.indexOf(name);
+        }
 
-},{}],90:[function(require,module,exports){
-var HTTP_RESOURCE_PATTERN = /^http:\/\//;
+        // 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
+        };
 
-function isHttpResource(uri) {
-  return HTTP_RESOURCE_PATTERN.test(uri);
-}
+        this.__generatedMappings.push(adjustedMapping);
+        if (typeof adjustedMapping.originalLine === 'number') {
+          this.__originalMappings.push(adjustedMapping);
+        }
+      }
+    }
 
-module.exports = isHttpResource;
+    quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+    quickSort(this.__originalMappings, util.compareByOriginalPositions);
+  };
 
-},{}],91:[function(require,module,exports){
-var HTTPS_RESOURCE_PATTERN = /^https:\/\//;
+exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+
+},{"./array-set":96,"./base64-vlq":97,"./binary-search":99,"./quick-sort":101,"./util":105}],103:[function(require,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
+ */
 
-function isHttpsResource(uri) {
-  return HTTPS_RESOURCE_PATTERN.test(uri);
+var base64VLQ = require('./base64-vlq');
+var util = require('./util');
+var ArraySet = require('./array-set').ArraySet;
+var MappingList = require('./mapping-list').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;
 }
 
-module.exports = isHttpsResource;
+SourceMapGenerator.prototype._version = 3;
 
-},{}],92:[function(require,module,exports){
-var IMPORT_PREFIX_PATTERN = /^@import/i;
+/**
+ * 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
+        }
+      };
 
-function isImport(value) {
-  return IMPORT_PREFIX_PATTERN.test(value);
-}
+      if (mapping.source != null) {
+        newMapping.source = mapping.source;
+        if (sourceRoot != null) {
+          newMapping.source = util.relative(sourceRoot, newMapping.source);
+        }
 
-module.exports = isImport;
+        newMapping.original = {
+          line: mapping.originalLine,
+          column: mapping.originalColumn
+        };
 
-},{}],93:[function(require,module,exports){
-var REMOTE_RESOURCE_PATTERN = /^(\w+:\/\/|\/\/)/;
+        if (mapping.name != null) {
+          newMapping.name = mapping.name;
+        }
+      }
 
-function isRemoteResource(uri) {
-  return REMOTE_RESOURCE_PATTERN.test(uri);
-}
+      generator.addMapping(newMapping);
+    });
+    aSourceMapConsumer.sources.forEach(function (sourceFile) {
+      var sourceRelative = sourceFile;
+      if (sourceRoot !== null) {
+        sourceRelative = util.relative(sourceRoot, sourceFile);
+      }
 
-module.exports = isRemoteResource;
+      if (!generator._sources.has(sourceRelative)) {
+        generator._sources.add(sourceRelative);
+      }
 
-},{}],94:[function(require,module,exports){
-// adapted from http://nedbatchelder.com/blog/200712.html#e20071211T054956
+      var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+      if (content != null) {
+        generator.setSourceContent(sourceFile, content);
+      }
+    });
+    return generator;
+  };
 
-var NUMBER_PATTERN = /([0-9]+)/;
+/**
+ * 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);
 
-function naturalCompare(value1, value2) {
-  var keys1 = ('' + value1).split(NUMBER_PATTERN).map(tryParseInt);
-  var keys2 = ('' + value2).split(NUMBER_PATTERN).map(tryParseInt);
-  var key1;
-  var key2;
-  var compareFirst = Math.min(keys1.length, keys2.length);
-  var i, l;
+    if (!this._skipValidation) {
+      this._validateMapping(generated, original, source, name);
+    }
 
-  for (i = 0, l = compareFirst; i < l; i++) {
-    key1 = keys1[i];
-    key2 = keys2[i];
+    if (source != null) {
+      source = String(source);
+      if (!this._sources.has(source)) {
+        this._sources.add(source);
+      }
+    }
 
-    if (key1 != key2) {
-      return key1 > key2 ? 1 : -1;
+    if (name != null) {
+      name = String(name);
+      if (!this._names.has(name)) {
+        this._names.add(name);
+      }
     }
-  }
 
-  return keys1.length > keys2.length ? 1 : (keys1.length == keys2.length ? 0 : -1);
-}
+    this._mappings.add({
+      generatedLine: generated.line,
+      generatedColumn: generated.column,
+      originalLine: original != null && original.line,
+      originalColumn: original != null && original.column,
+      source: source,
+      name: name
+    });
+  };
 
-function tryParseInt(value) {
-  return ('' + parseInt(value)) == value ?
-    parseInt(value) :
-    value;
-}
+/**
+ * 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);
+    }
 
-module.exports = naturalCompare;
+    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;
+      }
+    }
+  };
 
-},{}],95:[function(require,module,exports){
-function override(source1, source2) {
-  var target = {};
-  var key1;
-  var key2;
-  var item;
+/**
+ * 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();
 
-  for (key1 in source1) {
-    item = source1[key1];
+    // 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;
+          }
+        }
+      }
 
-    if (Array.isArray(item)) {
-      target[key1] = item.slice(0);
-    } else if (typeof item == 'object' && item !== null) {
-      target[key1] = override(item, {});
-    } else {
-      target[key1] = item;
-    }
-  }
+      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);
+      }
 
-  for (key2 in source2) {
-    item = source2[key2];
+    }, this);
+    this._sources = newSources;
+    this._names = newNames;
 
-    if (key2 in target && Array.isArray(item)) {
-      target[key2] = item.slice(0);
-    } else if (key2 in target && typeof item == 'object' && item !== null) {
-      target[key2] = override(target[key2], item);
-    } else {
-      target[key2] = item;
+    // 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.'
+        );
     }
-  }
 
-  return target;
-}
+    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
+      }));
+    }
+  };
 
-module.exports = override;
+/**
+ * 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;
 
-},{}],96:[function(require,module,exports){
-var Marker = require('../tokenizer/marker');
+    var mappings = this._mappings.toArray();
+    for (var i = 0, len = mappings.length; i < len; i++) {
+      mapping = mappings[i];
+      next = ''
 
-function split(value, separator) {
-  var openLevel = Marker.OPEN_ROUND_BRACKET;
-  var closeLevel = Marker.CLOSE_ROUND_BRACKET;
-  var level = 0;
-  var cursor = 0;
-  var lastStart = 0;
-  var lastValue;
-  var lastCharacter;
-  var len = value.length;
-  var parts = [];
+      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 += ',';
+        }
+      }
 
-  if (value.indexOf(separator) == -1) {
-    return [value];
-  }
+      next += base64VLQ.encode(mapping.generatedColumn
+                                 - previousGeneratedColumn);
+      previousGeneratedColumn = mapping.generatedColumn;
 
-  if (value.indexOf(openLevel) == -1) {
-    return value.split(separator);
-  }
+      if (mapping.source != null) {
+        sourceIdx = this._sources.indexOf(mapping.source);
+        next += base64VLQ.encode(sourceIdx - previousSource);
+        previousSource = sourceIdx;
 
-  while (cursor < len) {
-    if (value[cursor] == openLevel) {
-      level++;
-    } else if (value[cursor] == closeLevel) {
-      level--;
-    }
+        // lines are stored 0-based in SourceMap spec version 3
+        next += base64VLQ.encode(mapping.originalLine - 1
+                                   - previousOriginalLine);
+        previousOriginalLine = mapping.originalLine - 1;
 
-    if (level === 0 && cursor > 0 && cursor + 1 < len && value[cursor] == separator) {
-      parts.push(value.substring(lastStart, cursor));
-      lastStart = cursor + 1;
-    }
+        next += base64VLQ.encode(mapping.originalColumn
+                                   - previousOriginalColumn);
+        previousOriginalColumn = mapping.originalColumn;
 
-    cursor++;
-  }
+        if (mapping.name != null) {
+          nameIdx = this._names.indexOf(mapping.name);
+          next += base64VLQ.encode(nameIdx - previousName);
+          previousName = nameIdx;
+        }
+      }
 
-  if (lastStart < cursor + 1) {
-    lastValue = value.substring(lastStart);
-    lastCharacter = lastValue[lastValue.length - 1];
-    if (lastCharacter == separator) {
-      lastValue = lastValue.substring(0, lastValue.length - 1);
+      result += next;
     }
 
-    parts.push(lastValue);
-  }
-
-  return parts;
-}
-
-module.exports = split;
+    return result;
+  };
 
-},{"../tokenizer/marker":83}],97:[function(require,module,exports){
-var emptyCharacter = '';
+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);
+  };
 
-var Breaks = require('../options/format').Breaks;
-var Spaces = require('../options/format').Spaces;
+/**
+ * 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);
+    }
 
-var Marker = require('../tokenizer/marker');
-var Token = require('../tokenizer/token');
+    return map;
+  };
 
-function supportsAfterClosingBrace(token) {
-  return token[1][1] == 'background' || token[1][1] == 'transform' || token[1][1] == 'src';
-}
+/**
+ * Render the source map being generated to a string.
+ */
+SourceMapGenerator.prototype.toString =
+  function SourceMapGenerator_toString() {
+    return JSON.stringify(this.toJSON());
+  };
 
-function afterClosingBrace(token, valueIndex) {
-  return token[valueIndex][1][token[valueIndex][1].length - 1] == Marker.CLOSE_ROUND_BRACKET;
-}
+exports.SourceMapGenerator = SourceMapGenerator;
 
-function afterComma(token, valueIndex) {
-  return token[valueIndex][1] == Marker.COMMA;
-}
+},{"./array-set":96,"./base64-vlq":97,"./mapping-list":100,"./util":105}],104:[function(require,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
+ */
 
-function afterSlash(token, valueIndex) {
-  return token[valueIndex][1] == Marker.FORWARD_SLASH;
-}
+var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;
+var util = require('./util');
 
-function beforeComma(token, valueIndex) {
-  return token[valueIndex + 1] && token[valueIndex + 1][1] == Marker.COMMA;
-}
+// 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)/;
 
-function beforeSlash(token, valueIndex) {
-  return token[valueIndex + 1] && token[valueIndex + 1][1] == Marker.FORWARD_SLASH;
-}
+// Newline character code for charCodeAt() comparisons
+var NEWLINE_CODE = 10;
 
-function inFilter(token) {
-  return token[1][1] == 'filter' || token[1][1] == '-ms-filter';
-}
+// 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$$$";
 
-function disallowsSpace(context, token, valueIndex) {
-  return !context.spaceAfterClosingBrace && supportsAfterClosingBrace(token) && afterClosingBrace(token, valueIndex) ||
-    beforeSlash(token, valueIndex) ||
-    afterSlash(token, valueIndex) ||
-    beforeComma(token, valueIndex) ||
-    afterComma(token, valueIndex);
+/**
+ * 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);
 }
 
-function rules(context, tokens) {
-  var store = context.store;
-
-  for (var i = 0, l = tokens.length; i < l; i++) {
-    store(context, tokens[i]);
+/**
+ * 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();
 
-    if (i < l - 1) {
-      store(context, comma(context));
-    }
-  }
-}
+    // 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 body(context, tokens) {
-  var lastPropertyAt = lastPropertyIndex(tokens);
+      function getNextLine() {
+        return remainingLinesIndex < remainingLines.length ?
+            remainingLines[remainingLinesIndex++] : undefined;
+      }
+    };
 
-  for (var i = 0, l = tokens.length; i < l; i++) {
-    property(context, tokens, i, lastPropertyAt);
-  }
-}
+    // We need to remember the position of "remainingLines"
+    var lastGeneratedLine = 1, lastGeneratedColumn = 0;
 
-function lastPropertyIndex(tokens) {
-  var index = tokens.length - 1;
+    // 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;
 
-  for (; index >= 0; index--) {
-    if (tokens[index][0] != Token.COMMENT) {
-      break;
+    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(""));
     }
-  }
 
-  return index;
-}
+    // 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);
+      }
+    });
 
-function property(context, tokens, position, lastPropertyAt) {
-  var store = context.store;
-  var token = tokens[position];
-  var isPropertyBlock = token[2][0] == Token.PROPERTY_BLOCK;
+    return node;
 
-  var needsSemicolon;
-  if ( context.format ) {
-    if ( context.format.semicolonAfterLastProperty || isPropertyBlock ) {
-      needsSemicolon = true;
-    } else if ( position < lastPropertyAt ) {
-      needsSemicolon = true;
-    } else {
-      needsSemicolon = false;
+    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));
+      }
     }
-  } else {
-    needsSemicolon = position < lastPropertyAt || isPropertyBlock;
-  }
-
-  var isLast = position === lastPropertyAt;
+  };
 
-  switch (token[0]) {
-    case Token.AT_RULE:
-      store(context, token);
-      store(context, semicolon(context, Breaks.AfterProperty, false));
-      break;
-    case Token.AT_RULE_BLOCK:
-      rules(context, token[1]);
-      store(context, openBrace(context, Breaks.AfterRuleBegins, true));
-      body(context, token[2]);
-      store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast));
-      break;
-    case Token.COMMENT:
-      store(context, token);
-      break;
-    case Token.PROPERTY:
-      store(context, token[1]);
-      store(context, colon(context));
-      value(context, token);
-      store(context, needsSemicolon ? semicolon(context, Breaks.AfterProperty, isLast) : emptyCharacter);
-      break;
-    case Token.RAW:
-      store(context, token);
+/**
+ * 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);
   }
-}
-
-function value(context, token) {
-  var store = context.store;
-  var j, m;
+  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;
+};
 
-  if (token[2][0] == Token.PROPERTY_BLOCK) {
-    store(context, openBrace(context, Breaks.AfterBlockBegins, false));
-    body(context, token[2][1]);
-    store(context, closeBrace(context, Breaks.AfterBlockEnds, false, true));
-  } else {
-    for (j = 2, m = token.length; j < m; j++) {
-      store(context, token[j]);
+/**
+ * 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;
+};
 
-      if (j < m - 1 && (inFilter(token) || !disallowsSpace(context, token, j))) {
-        store(context, Marker.SPACE);
+/**
+ * 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 });
       }
     }
   }
-}
-
-function allowsBreak(context, where) {
-  return context.format && context.format.breaks[where];
-}
-
-function allowsSpace(context, where) {
-  return context.format && context.format.spaces[where];
-}
+};
 
-function openBrace(context, where, needsPrefixSpace) {
-  if (context.format) {
-    context.indentBy += context.format.indentBy;
-    context.indentWith = context.format.indentWith.repeat(context.indentBy);
-    return (needsPrefixSpace && allowsSpace(context, Spaces.BeforeBlockBegins) ? Marker.SPACE : emptyCharacter) +
-      Marker.OPEN_CURLY_BRACKET +
-      (allowsBreak(context, where) ? context.format.breakWith : emptyCharacter) +
-      context.indentWith;
-  } else {
-    return Marker.OPEN_CURLY_BRACKET;
+/**
+ * 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;
+};
 
-function closeBrace(context, where, beforeBlockEnd, isLast) {
-  if (context.format) {
-    context.indentBy -= context.format.indentBy;
-    context.indentWith = context.format.indentWith.repeat(context.indentBy);
-    return (allowsBreak(context, Breaks.AfterProperty) || beforeBlockEnd && allowsBreak(context, Breaks.BeforeBlockEnds) ? context.format.breakWith : emptyCharacter) +
-      context.indentWith +
-      Marker.CLOSE_CURLY_BRACKET +
-      (isLast ? emptyCharacter : (allowsBreak(context, where) ? context.format.breakWith : emptyCharacter) + context.indentWith);
-  } else {
-    return Marker.CLOSE_CURLY_BRACKET;
+/**
+ * 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);
   }
-}
-
-function colon(context) {
-  return context.format ?
-    Marker.COLON + (allowsSpace(context, Spaces.BeforeValue) ? Marker.SPACE : emptyCharacter) :
-    Marker.COLON;
-}
+  else if (typeof lastChild === 'string') {
+    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+  }
+  else {
+    this.children.push(''.replace(aPattern, aReplacement));
+  }
+  return this;
+};
 
-function semicolon(context, where, isLast) {
-  return context.format ?
-    Marker.SEMICOLON + (isLast || !allowsBreak(context, where) ? emptyCharacter : context.format.breakWith + context.indentWith) :
-    Marker.SEMICOLON;
-}
+/**
+ * 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;
+  };
 
-function comma(context) {
-  return context.format ?
-    Marker.COMMA + (allowsBreak(context, Breaks.BetweenSelectors) ? context.format.breakWith : emptyCharacter) + context.indentWith :
-    Marker.COMMA;
-}
+/**
+ * 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);
+      }
+    }
 
-function all(context, tokens) {
-  var store = context.store;
-  var token;
-  var isLast;
-  var i, l;
+    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]]);
+    }
+  };
 
-  for (i = 0, l = tokens.length; i < l; i++) {
-    token = tokens[i];
-    isLast = i == l - 1;
+/**
+ * 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;
+};
 
-    switch (token[0]) {
-      case Token.AT_RULE:
-        store(context, token);
-        store(context, semicolon(context, Breaks.AfterAtRule, isLast));
-        break;
-      case Token.AT_RULE_BLOCK:
-        rules(context, token[1]);
-        store(context, openBrace(context, Breaks.AfterRuleBegins, true));
-        body(context, token[2]);
-        store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast));
-        break;
-      case Token.NESTED_BLOCK:
-        rules(context, token[1]);
-        store(context, openBrace(context, Breaks.AfterBlockBegins, true));
-        all(context, token[2]);
-        store(context, closeBrace(context, Breaks.AfterBlockEnds, true, isLast));
-        break;
-      case Token.COMMENT:
-        store(context, token);
-        store(context, allowsBreak(context, Breaks.AfterComment) ? context.format.breakWith : emptyCharacter);
-        break;
-      case Token.RAW:
-        store(context, token);
-        break;
-      case Token.RULE:
-        rules(context, token[1]);
-        store(context, openBrace(context, Breaks.AfterRuleBegins, true));
-        body(context, token[2]);
-        store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast));
-        break;
+/**
+ * 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++;
+      }
     }
-  }
-}
-
-module.exports = {
-  all: all,
-  body: body,
-  property: property,
-  rules: rules,
-  value: value
-};
-
-},{"../options/format":61,"../tokenizer/marker":83,"../tokenizer/token":84}],98:[function(require,module,exports){
-var helpers = require('./helpers');
-
-function store(serializeContext, token) {
-  serializeContext.output.push(typeof token == 'string' ? token : token[1]);
-}
-
-function context() {
-  var newContext = {
-    output: [],
-    store: store
-  };
-
-  return newContext;
-}
-
-function all(tokens) {
-  var oneTimeContext = context();
-  helpers.all(oneTimeContext, tokens);
-  return oneTimeContext.output.join('');
-}
-
-function body(tokens) {
-  var oneTimeContext = context();
-  helpers.body(oneTimeContext, tokens);
-  return oneTimeContext.output.join('');
-}
-
-function property(tokens, position) {
-  var oneTimeContext = context();
-  helpers.property(oneTimeContext, tokens, position, true);
-  return oneTimeContext.output.join('');
-}
-
-function rules(tokens) {
-  var oneTimeContext = context();
-  helpers.rules(oneTimeContext, tokens);
-  return oneTimeContext.output.join('');
-}
-
-function value(tokens) {
-  var oneTimeContext = context();
-  helpers.value(oneTimeContext, tokens);
-  return oneTimeContext.output.join('');
-}
+  });
+  this.walkSourceContents(function (sourceFile, sourceContent) {
+    map.setSourceContent(sourceFile, sourceContent);
+  });
 
-module.exports = {
-  all: all,
-  body: body,
-  property: property,
-  rules: rules,
-  value: value
+  return { code: generated.code, map: map };
 };
 
-},{"./helpers":97}],99:[function(require,module,exports){
-var all = require('./helpers').all;
-
-function store(serializeContext, token) {
-  var value = typeof token == 'string' ?
-    token :
-    token[1];
-  var wrap = serializeContext.wrap;
+exports.SourceNode = SourceNode;
 
-  wrap(serializeContext, value);
-  track(serializeContext, value);
-  serializeContext.output.push(value);
-}
+},{"./source-map-generator":103,"./util":105}],105:[function(require,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
+ */
 
-function wrap(serializeContext, value) {
-  if (serializeContext.column + value.length > serializeContext.format.wrapAt) {
-    track(serializeContext, serializeContext.format.breakWith);
-    serializeContext.output.push(serializeContext.format.breakWith);
+/**
+ * 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;
 
-function track(serializeContext, value) {
-  var parts = value.split('\n');
-
-  serializeContext.line += parts.length - 1;
-  serializeContext.column = parts.length > 1 ? 0 : (serializeContext.column + parts.pop().length);
-}
-
-function serializeStyles(tokens, context) {
-  var serializeContext = {
-    column: 0,
-    format: context.options.format,
-    indentBy: 0,
-    indentWith: '',
-    line: 1,
-    output: [],
-    spaceAfterClosingBrace: context.options.compatibility.properties.spaceAfterClosingBrace,
-    store: store,
-    wrap: context.options.format.wrapAt ?
-      wrap :
-      function () { /* noop */  }
-  };
-
-  all(serializeContext, tokens);
+var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
+var dataUrlRegexp = /^data:.+\,.+$/;
 
+function urlParse(aUrl) {
+  var match = aUrl.match(urlRegexp);
+  if (!match) {
+    return null;
+  }
   return {
-    styles: serializeContext.output.join('')
+    scheme: match[1],
+    auth: match[2],
+    host: match[3],
+    port: match[4],
+    path: match[5]
   };
 }
+exports.urlParse = urlParse;
 
-module.exports = serializeStyles;
-
-},{"./helpers":97}],100:[function(require,module,exports){
-(function (process){
-var SourceMapGenerator = require('source-map').SourceMapGenerator;
-var all = require('./helpers').all;
-
-var isRemoteResource = require('../utils/is-remote-resource');
-
-var isWindows = process.platform == 'win32';
-
-var NIX_SEPARATOR_PATTERN = /\//g;
-var UNKNOWN_SOURCE = '$stdin';
-var WINDOWS_SEPARATOR = '\\';
-
-function store(serializeContext, element) {
-  var fromString = typeof element == 'string';
-  var value = fromString ? element : element[1];
-  var mappings = fromString ? null : element[2];
-  var wrap = serializeContext.wrap;
-
-  wrap(serializeContext, value);
-  track(serializeContext, value, mappings);
-  serializeContext.output.push(value);
-}
-
-function wrap(serializeContext, value) {
-  if (serializeContext.column + value.length > serializeContext.format.wrapAt) {
-    track(serializeContext, serializeContext.format.breakWith, false);
-    serializeContext.output.push(serializeContext.format.breakWith);
+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;
 
-function track(serializeContext, value, mappings) {
-  var parts = value.split('\n');
+/**
+ * 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);
 
-  if (mappings) {
-    trackAllMappings(serializeContext, mappings);
+  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('/');
 
-  serializeContext.line += parts.length - 1;
-  serializeContext.column = parts.length > 1 ? 0 : (serializeContext.column + parts.pop().length);
-}
+  if (path === '') {
+    path = isAbsolute ? '/' : '.';
+  }
 
-function trackAllMappings(serializeContext, mappings) {
-  for (var i = 0, l = mappings.length; i < l; i++) {
-    trackMapping(serializeContext, mappings[i]);
+  if (url) {
+    url.path = path;
+    return urlGenerate(url);
   }
+  return path;
 }
+exports.normalize = normalize;
 
-function trackMapping(serializeContext, mapping) {
-  var line = mapping[0];
-  var column = mapping[1];
-  var originalSource = mapping[2];
-  var source = originalSource;
-  var storedSource = source || UNKNOWN_SOURCE;
-
-  if (isWindows && source && !isRemoteResource(source)) {
-    storedSource = source.replace(NIX_SEPARATOR_PATTERN, WINDOWS_SEPARATOR);
+/**
+ * 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 || '/';
   }
 
-  serializeContext.outputMap.addMapping({
-    generated: {
-      line: serializeContext.line,
-      column: serializeContext.column
-    },
-    source: storedSource,
-    original: {
-      line: line,
-      column: column
+  // `join(foo, '//www.example.org')`
+  if (aPathUrl && !aPathUrl.scheme) {
+    if (aRootUrl) {
+      aPathUrl.scheme = aRootUrl.scheme;
     }
-  });
-
-  if (serializeContext.inlineSources && (originalSource in serializeContext.sourcesContent)) {
-    serializeContext.outputMap.setSourceContent(storedSource, serializeContext.sourcesContent[originalSource]);
+    return urlGenerate(aPathUrl);
   }
-}
-
-function serializeStylesAndSourceMap(tokens, context) {
-  var serializeContext = {
-    column: 0,
-    format: context.options.format,
-    indentBy: 0,
-    indentWith: '',
-    inlineSources: context.options.sourceMapInlineSources,
-    line: 1,
-    output: [],
-    outputMap: new SourceMapGenerator(),
-    sourcesContent: context.sourcesContent,
-    spaceAfterClosingBrace: context.options.compatibility.properties.spaceAfterClosingBrace,
-    store: store,
-    wrap: context.options.format.wrapAt ?
-      wrap :
-      function () { /* noop */  }
-  };
-
-  all(serializeContext, tokens);
-
-  return {
-    sourceMap: serializeContext.outputMap,
-    styles: serializeContext.output.join('')
-  };
-}
-
-module.exports = serializeStylesAndSourceMap;
-
-}).call(this,require('_process'))
-},{"../utils/is-remote-resource":93,"./helpers":97,"_process":112,"source-map":154}],101:[function(require,module,exports){
-(function (Buffer){
-// 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.
 
-// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
+  if (aPathUrl || aPath.match(dataUrlRegexp)) {
+    return aPath;
+  }
 
-function isArray(arg) {
-  if (Array.isArray) {
-    return Array.isArray(arg);
+  // `join('http://', 'www.example.com')`
+  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+    aRootUrl.host = aPath;
+    return urlGenerate(aRootUrl);
   }
-  return objectToString(arg) === '[object Array]';
-}
-exports.isArray = isArray;
 
-function isBoolean(arg) {
-  return typeof arg === 'boolean';
-}
-exports.isBoolean = isBoolean;
+  var joined = aPath.charAt(0) === '/'
+    ? aPath
+    : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
 
-function isNull(arg) {
-  return arg === null;
+  if (aRootUrl) {
+    aRootUrl.path = joined;
+    return urlGenerate(aRootUrl);
+  }
+  return joined;
 }
-exports.isNull = isNull;
+exports.join = join;
 
-function isNullOrUndefined(arg) {
-  return arg == null;
-}
-exports.isNullOrUndefined = isNullOrUndefined;
+exports.isAbsolute = function (aPath) {
+  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);
+};
 
-function isNumber(arg) {
-  return typeof arg === 'number';
-}
-exports.isNumber = isNumber;
+/**
+ * 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 = ".";
+  }
 
-function isString(arg) {
-  return typeof arg === 'string';
-}
-exports.isString = isString;
+  aRoot = aRoot.replace(/\/$/, '');
 
-function isSymbol(arg) {
-  return typeof arg === 'symbol';
-}
-exports.isSymbol = isSymbol;
+  // 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;
+    }
 
-function isUndefined(arg) {
-  return arg === void 0;
-}
-exports.isUndefined = isUndefined;
+    // 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;
+    }
 
-function isRegExp(re) {
-  return objectToString(re) === '[object RegExp]';
-}
-exports.isRegExp = isRegExp;
+    ++level;
+  }
 
-function isObject(arg) {
-  return typeof arg === 'object' && arg !== null;
+  // Make sure we add a "../" for each component we removed from the root.
+  return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
 }
-exports.isObject = isObject;
+exports.relative = relative;
 
-function isDate(d) {
-  return objectToString(d) === '[object Date]';
-}
-exports.isDate = isDate;
+var supportsNullProto = (function () {
+  var obj = Object.create(null);
+  return !('__proto__' in obj);
+}());
 
-function isError(e) {
-  return (objectToString(e) === '[object Error]' || e instanceof Error);
+function identity (s) {
+  return s;
 }
-exports.isError = isError;
 
-function isFunction(arg) {
-  return typeof arg === 'function';
-}
-exports.isFunction = isFunction;
+/**
+ * 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;
+  }
 
-function isPrimitive(arg) {
-  return arg === null ||
-         typeof arg === 'boolean' ||
-         typeof arg === 'number' ||
-         typeof arg === 'string' ||
-         typeof arg === 'symbol' ||  // ES6 symbol
-         typeof arg === 'undefined';
+  return aStr;
 }
-exports.isPrimitive = isPrimitive;
+exports.toSetString = supportsNullProto ? identity : toSetString;
 
-exports.isBuffer = Buffer.isBuffer;
+function fromSetString(aStr) {
+  if (isProtoString(aStr)) {
+    return aStr.slice(1);
+  }
 
-function objectToString(o) {
-  return Object.prototype.toString.call(o);
+  return aStr;
 }
+exports.fromSetString = supportsNullProto ? identity : fromSetString;
 
-}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
-},{"../../is-buffer/index.js":107}],102:[function(require,module,exports){
-// 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.
+function isProtoString(s) {
+  if (!s) {
+    return false;
+  }
 
-var objectCreate = Object.create || objectCreatePolyfill
-var objectKeys = Object.keys || objectKeysPolyfill
-var bind = Function.prototype.bind || functionBindPolyfill
+  var length = s.length;
 
-function EventEmitter() {
-  if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) {
-    this._events = objectCreate(null);
-    this._eventsCount = 0;
+  if (length < 9 /* "__proto__".length */) {
+    return false;
   }
 
-  this._maxListeners = this._maxListeners || undefined;
+  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;
 }
-module.exports = EventEmitter;
 
-// Backwards-compat with node 0.10.x
-EventEmitter.EventEmitter = EventEmitter;
+/**
+ * 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;
+  }
 
-EventEmitter.prototype._events = undefined;
-EventEmitter.prototype._maxListeners = undefined;
+  cmp = mappingA.originalLine - mappingB.originalLine;
+  if (cmp !== 0) {
+    return cmp;
+  }
 
-// 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;
+  cmp = mappingA.originalColumn - mappingB.originalColumn;
+  if (cmp !== 0 || onlyCompareOriginal) {
+    return cmp;
+  }
 
-var hasDefineProperty;
-try {
-  var o = {};
-  if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 });
-  hasDefineProperty = o.x === 0;
-} catch (err) { hasDefineProperty = false }
-if (hasDefineProperty) {
-  Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
-    enumerable: true,
-    get: function() {
-      return defaultMaxListeners;
-    },
-    set: function(arg) {
-      // check whether the input is a positive number (whose value is zero or
-      // greater and not a NaN).
-      if (typeof arg !== 'number' || arg < 0 || arg !== arg)
-        throw new TypeError('"defaultMaxListeners" must be a positive number');
-      defaultMaxListeners = arg;
-    }
-  });
-} else {
-  EventEmitter.defaultMaxListeners = defaultMaxListeners;
-}
+  cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+  if (cmp !== 0) {
+    return cmp;
+  }
 
-// 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 || isNaN(n))
-    throw new TypeError('"n" argument must be a positive number');
-  this._maxListeners = n;
-  return this;
-};
+  cmp = mappingA.generatedLine - mappingB.generatedLine;
+  if (cmp !== 0) {
+    return cmp;
+  }
 
-function $getMaxListeners(that) {
-  if (that._maxListeners === undefined)
-    return EventEmitter.defaultMaxListeners;
-  return that._maxListeners;
+  return strcmp(mappingA.name, mappingB.name);
 }
+exports.compareByOriginalPositions = compareByOriginalPositions;
 
-EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
-  return $getMaxListeners(this);
-};
+/**
+ * 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;
+  }
 
-// These standalone emit* functions are used to optimize calling of event
-// handlers for fast cases because emit() itself often has a variable number of
-// arguments and can be deoptimized because of that. These functions always have
-// the same number of arguments and thus do not get deoptimized, so the code
-// inside them can execute faster.
-function emitNone(handler, isFn, self) {
-  if (isFn)
-    handler.call(self);
-  else {
-    var len = handler.length;
-    var listeners = arrayClone(handler, len);
-    for (var i = 0; i < len; ++i)
-      listeners[i].call(self);
+  cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+  if (cmp !== 0 || onlyCompareGenerated) {
+    return cmp;
   }
-}
-function emitOne(handler, isFn, self, arg1) {
-  if (isFn)
-    handler.call(self, arg1);
-  else {
-    var len = handler.length;
-    var listeners = arrayClone(handler, len);
-    for (var i = 0; i < len; ++i)
-      listeners[i].call(self, arg1);
+
+  cmp = strcmp(mappingA.source, mappingB.source);
+  if (cmp !== 0) {
+    return cmp;
   }
-}
-function emitTwo(handler, isFn, self, arg1, arg2) {
-  if (isFn)
-    handler.call(self, arg1, arg2);
-  else {
-    var len = handler.length;
-    var listeners = arrayClone(handler, len);
-    for (var i = 0; i < len; ++i)
-      listeners[i].call(self, arg1, arg2);
+
+  cmp = mappingA.originalLine - mappingB.originalLine;
+  if (cmp !== 0) {
+    return cmp;
   }
-}
-function emitThree(handler, isFn, self, arg1, arg2, arg3) {
-  if (isFn)
-    handler.call(self, arg1, arg2, arg3);
-  else {
-    var len = handler.length;
-    var listeners = arrayClone(handler, len);
-    for (var i = 0; i < len; ++i)
-      listeners[i].call(self, arg1, arg2, arg3);
+
+  cmp = mappingA.originalColumn - mappingB.originalColumn;
+  if (cmp !== 0) {
+    return cmp;
   }
+
+  return strcmp(mappingA.name, mappingB.name);
 }
+exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
 
-function emitMany(handler, isFn, self, args) {
-  if (isFn)
-    handler.apply(self, args);
-  else {
-    var len = handler.length;
-    var listeners = arrayClone(handler, len);
-    for (var i = 0; i < len; ++i)
-      listeners[i].apply(self, args);
+function strcmp(aStr1, aStr2) {
+  if (aStr1 === aStr2) {
+    return 0;
   }
-}
 
-EventEmitter.prototype.emit = function emit(type) {
-  var er, handler, len, args, i, events;
-  var doError = (type === 'error');
+  if (aStr1 === null) {
+    return 1; // aStr2 !== null
+  }
 
-  events = this._events;
-  if (events)
-    doError = (doError && events.error == null);
-  else if (!doError)
-    return false;
+  if (aStr2 === null) {
+    return -1; // aStr1 !== null
+  }
 
-  // If there is no 'error' event listener then throw.
-  if (doError) {
-    if (arguments.length > 1)
-      er = arguments[1];
-    if (er instanceof Error) {
-      throw er; // Unhandled 'error' event
-    } else {
-      // At least give some kind of context to the user
-      var err = new Error('Unhandled "error" event. (' + er + ')');
-      err.context = er;
-      throw err;
-    }
-    return false;
+  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;
   }
 
-  handler = events[type];
+  cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+  if (cmp !== 0) {
+    return cmp;
+  }
 
-  if (!handler)
-    return false;
+  cmp = strcmp(mappingA.source, mappingB.source);
+  if (cmp !== 0) {
+    return cmp;
+  }
 
-  var isFn = typeof handler === 'function';
-  len = arguments.length;
-  switch (len) {
-      // fast cases
-    case 1:
-      emitNone(handler, isFn, this);
-      break;
-    case 2:
-      emitOne(handler, isFn, this, arguments[1]);
-      break;
-    case 3:
-      emitTwo(handler, isFn, this, arguments[1], arguments[2]);
-      break;
-    case 4:
-      emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);
-      break;
-      // slower
-    default:
-      args = new Array(len - 1);
-      for (i = 1; i < len; i++)
-        args[i - 1] = arguments[i];
-      emitMany(handler, isFn, this, args);
+  cmp = mappingA.originalLine - mappingB.originalLine;
+  if (cmp !== 0) {
+    return cmp;
   }
 
-  return true;
-};
+  cmp = mappingA.originalColumn - mappingB.originalColumn;
+  if (cmp !== 0) {
+    return cmp;
+  }
 
-function _addListener(target, type, listener, prepend) {
-  var m;
-  var events;
-  var existing;
+  return strcmp(mappingA.name, mappingB.name);
+}
+exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
 
-  if (typeof listener !== 'function')
-    throw new TypeError('"listener" argument must be a function');
+/**
+ * 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;
 
-  events = target._events;
-  if (!events) {
-    events = target._events = objectCreate(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) {
-      target.emit('newListener', type,
-          listener.listener ? listener.listener : listener);
+/**
+ * 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 || '';
 
-      // Re-assign `events` because a newListener handler could have caused the
-      // this._events to be assigned to a new object
-      events = target._events;
+  if (sourceRoot) {
+    // This follows what Chrome does.
+    if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {
+      sourceRoot += '/';
     }
-    existing = events[type];
+    // 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;
   }
 
-  if (!existing) {
-    // 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];
-    } else {
-      // If we've already got an array, just append.
-      if (prepend) {
-        existing.unshift(listener);
-      } else {
-        existing.push(listener);
-      }
+  // 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");
     }
-
-    // Check for listener leak
-    if (!existing.warned) {
-      m = $getMaxListeners(target);
-      if (m && m > 0 && existing.length > m) {
-        existing.warned = true;
-        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;
-        if (typeof console === 'object' && console.warn) {
-          console.warn('%s: %s', w.name, w.message);
-        }
+    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 target;
+  return normalize(sourceURL);
 }
+exports.computeSourceURL = computeSourceURL;
 
-EventEmitter.prototype.addListener = function addListener(type, listener) {
-  return _addListener(this, type, listener, false);
-};
+},{}],106:[function(require,module,exports){
+/*
+ * 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 = require('./lib/source-map-generator').SourceMapGenerator;
+exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;
+exports.SourceNode = require('./lib/source-node').SourceNode;
 
-EventEmitter.prototype.on = EventEmitter.prototype.addListener;
+},{"./lib/source-map-consumer":102,"./lib/source-map-generator":103,"./lib/source-node":104}],107:[function(require,module,exports){
+(function (global){
+'use strict';
 
-EventEmitter.prototype.prependListener =
-    function prependListener(type, listener) {
-      return _addListener(this, type, listener, true);
-    };
+// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
+// original notice:
 
-function onceWrapper() {
-  if (!this.fired) {
-    this.target.removeListener(this.type, this.wrapFn);
-    this.fired = true;
-    switch (arguments.length) {
-      case 0:
-        return this.listener.call(this.target);
-      case 1:
-        return this.listener.call(this.target, arguments[0]);
-      case 2:
-        return this.listener.call(this.target, arguments[0], arguments[1]);
-      case 3:
-        return this.listener.call(this.target, arguments[0], arguments[1],
-            arguments[2]);
-      default:
-        var args = new Array(arguments.length);
-        for (var i = 0; i < args.length; ++i)
-          args[i] = arguments[i];
-        this.listener.apply(this.target, args);
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * @license  MIT
+ */
+function compare(a, b) {
+  if (a === b) {
+    return 0;
+  }
+
+  var x = a.length;
+  var y = b.length;
+
+  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
+    if (a[i] !== b[i]) {
+      x = a[i];
+      y = b[i];
+      break;
     }
   }
+
+  if (x < y) {
+    return -1;
+  }
+  if (y < x) {
+    return 1;
+  }
+  return 0;
+}
+function isBuffer(b) {
+  if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
+    return global.Buffer.isBuffer(b);
+  }
+  return !!(b != null && b._isBuffer);
 }
 
-function _onceWrap(target, type, listener) {
-  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };
-  var wrapped = bind.call(onceWrapper, state);
-  wrapped.listener = listener;
-  state.wrapFn = wrapped;
-  return wrapped;
+// based on node assert, original notice:
+
+// http://wiki.commonjs.org/wiki/Unit_Testing/1.0
+//
+// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
+//
+// Originally from narwhal.js (http://narwhaljs.org)
+// Copyright (c) 2009 Thomas Robinson <280north.com>
+//
+// 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 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 util = require('util/');
+var hasOwn = Object.prototype.hasOwnProperty;
+var pSlice = Array.prototype.slice;
+var functionsHaveNames = (function () {
+  return function foo() {}.name === 'foo';
+}());
+function pToString (obj) {
+  return Object.prototype.toString.call(obj);
+}
+function isView(arrbuf) {
+  if (isBuffer(arrbuf)) {
+    return false;
+  }
+  if (typeof global.ArrayBuffer !== 'function') {
+    return false;
+  }
+  if (typeof ArrayBuffer.isView === 'function') {
+    return ArrayBuffer.isView(arrbuf);
+  }
+  if (!arrbuf) {
+    return false;
+  }
+  if (arrbuf instanceof DataView) {
+    return true;
+  }
+  if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
+    return true;
+  }
+  return false;
 }
+// 1. The assert module provides functions that throw
+// AssertionError's when particular conditions are not met. The
+// assert module must conform to the following interface.
 
-EventEmitter.prototype.once = function once(type, listener) {
-  if (typeof listener !== 'function')
-    throw new TypeError('"listener" argument must be a function');
-  this.on(type, _onceWrap(this, type, listener));
-  return this;
-};
+var assert = module.exports = ok;
+
+// 2. The AssertionError is defined in assert.
+// new assert.AssertionError({ message: message,
+//                             actual: actual,
+//                             expected: expected })
+
+var regex = /\s*function\s+([^\(\s]*)\s*/;
+// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
+function getName(func) {
+  if (!util.isFunction(func)) {
+    return;
+  }
+  if (functionsHaveNames) {
+    return func.name;
+  }
+  var str = func.toString();
+  var match = str.match(regex);
+  return match && match[1];
+}
+assert.AssertionError = function AssertionError(options) {
+  this.name = 'AssertionError';
+  this.actual = options.actual;
+  this.expected = options.expected;
+  this.operator = options.operator;
+  if (options.message) {
+    this.message = options.message;
+    this.generatedMessage = false;
+  } else {
+    this.message = getMessage(this);
+    this.generatedMessage = true;
+  }
+  var stackStartFunction = options.stackStartFunction || fail;
+  if (Error.captureStackTrace) {
+    Error.captureStackTrace(this, stackStartFunction);
+  } else {
+    // non v8 browsers so we can have a stacktrace
+    var err = new Error();
+    if (err.stack) {
+      var out = err.stack;
+
+      // try to strip useless frames
+      var fn_name = getName(stackStartFunction);
+      var idx = out.indexOf('\n' + fn_name);
+      if (idx >= 0) {
+        // once we have located the function frame
+        // we need to strip out everything before it (and its line)
+        var next_line = out.indexOf('\n', idx + 1);
+        out = out.substring(next_line + 1);
+      }
 
-EventEmitter.prototype.prependOnceListener =
-    function prependOnceListener(type, listener) {
-      if (typeof listener !== 'function')
-        throw new TypeError('"listener" argument must be a function');
-      this.prependListener(type, _onceWrap(this, type, listener));
-      return this;
-    };
+      this.stack = out;
+    }
+  }
+};
 
-// 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;
+// assert.AssertionError instanceof Error
+util.inherits(assert.AssertionError, Error);
 
-      if (typeof listener !== 'function')
-        throw new TypeError('"listener" argument must be a function');
+function truncate(s, n) {
+  if (typeof s === 'string') {
+    return s.length < n ? s : s.slice(0, n);
+  } else {
+    return s;
+  }
+}
+function inspect(something) {
+  if (functionsHaveNames || !util.isFunction(something)) {
+    return util.inspect(something);
+  }
+  var rawname = getName(something);
+  var name = rawname ? ': ' + rawname : '';
+  return '[Function' +  name + ']';
+}
+function getMessage(self) {
+  return truncate(inspect(self.actual), 128) + ' ' +
+         self.operator + ' ' +
+         truncate(inspect(self.expected), 128);
+}
 
-      events = this._events;
-      if (!events)
-        return this;
+// At present only the three keys mentioned above are used and
+// understood by the spec. Implementations or sub modules can pass
+// other keys to the AssertionError's constructor - they will be
+// ignored.
 
-      list = events[type];
-      if (!list)
-        return this;
+// 3. All of the following functions must throw an AssertionError
+// when a corresponding condition is not met, with a message that
+// may be undefined if not provided.  All assertion methods provide
+// both the actual and expected values to the assertion error for
+// display purposes.
 
-      if (list === listener || list.listener === listener) {
-        if (--this._eventsCount === 0)
-          this._events = objectCreate(null);
-        else {
-          delete events[type];
-          if (events.removeListener)
-            this.emit('removeListener', type, list.listener || listener);
-        }
-      } else if (typeof list !== 'function') {
-        position = -1;
+function fail(actual, expected, message, operator, stackStartFunction) {
+  throw new assert.AssertionError({
+    message: message,
+    actual: actual,
+    expected: expected,
+    operator: operator,
+    stackStartFunction: stackStartFunction
+  });
+}
 
-        for (i = list.length - 1; i >= 0; i--) {
-          if (list[i] === listener || list[i].listener === listener) {
-            originalListener = list[i].listener;
-            position = i;
-            break;
-          }
-        }
+// EXTENSION! allows for well behaved errors defined elsewhere.
+assert.fail = fail;
 
-        if (position < 0)
-          return this;
+// 4. Pure assertion tests whether a value is truthy, as determined
+// by !!guard.
+// assert.ok(guard, message_opt);
+// This statement is equivalent to assert.equal(true, !!guard,
+// message_opt);. To test strictly for the value true, use
+// assert.strictEqual(true, guard, message_opt);.
 
-        if (position === 0)
-          list.shift();
-        else
-          spliceOne(list, position);
+function ok(value, message) {
+  if (!value) fail(value, true, message, '==', assert.ok);
+}
+assert.ok = ok;
 
-        if (list.length === 1)
-          events[type] = list[0];
+// 5. The equality assertion tests shallow, coercive equality with
+// ==.
+// assert.equal(actual, expected, message_opt);
 
-        if (events.removeListener)
-          this.emit('removeListener', type, originalListener || listener);
-      }
+assert.equal = function equal(actual, expected, message) {
+  if (actual != expected) fail(actual, expected, message, '==', assert.equal);
+};
 
-      return this;
-    };
+// 6. The non-equality assertion tests for whether two objects are not equal
+// with != assert.notEqual(actual, expected, message_opt);
 
-EventEmitter.prototype.removeAllListeners =
-    function removeAllListeners(type) {
-      var listeners, events, i;
+assert.notEqual = function notEqual(actual, expected, message) {
+  if (actual == expected) {
+    fail(actual, expected, message, '!=', assert.notEqual);
+  }
+};
 
-      events = this._events;
-      if (!events)
-        return this;
+// 7. The equivalence assertion tests a deep equality relation.
+// assert.deepEqual(actual, expected, message_opt);
 
-      // not listening for removeListener, no need to emit
-      if (!events.removeListener) {
-        if (arguments.length === 0) {
-          this._events = objectCreate(null);
-          this._eventsCount = 0;
-        } else if (events[type]) {
-          if (--this._eventsCount === 0)
-            this._events = objectCreate(null);
-          else
-            delete events[type];
-        }
-        return this;
-      }
+assert.deepEqual = function deepEqual(actual, expected, message) {
+  if (!_deepEqual(actual, expected, false)) {
+    fail(actual, expected, message, 'deepEqual', assert.deepEqual);
+  }
+};
 
-      // emit removeListener for all listeners on all events
-      if (arguments.length === 0) {
-        var keys = objectKeys(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 = objectCreate(null);
-        this._eventsCount = 0;
-        return this;
-      }
+assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
+  if (!_deepEqual(actual, expected, true)) {
+    fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
+  }
+};
 
-      listeners = events[type];
+function _deepEqual(actual, expected, strict, memos) {
+  // 7.1. All identical values are equivalent, as determined by ===.
+  if (actual === expected) {
+    return true;
+  } else if (isBuffer(actual) && isBuffer(expected)) {
+    return compare(actual, expected) === 0;
+
+  // 7.2. If the expected value is a Date object, the actual value is
+  // equivalent if it is also a Date object that refers to the same time.
+  } else if (util.isDate(actual) && util.isDate(expected)) {
+    return actual.getTime() === expected.getTime();
+
+  // 7.3 If the expected value is a RegExp object, the actual value is
+  // equivalent if it is also a RegExp object with the same source and
+  // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
+  } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
+    return actual.source === expected.source &&
+           actual.global === expected.global &&
+           actual.multiline === expected.multiline &&
+           actual.lastIndex === expected.lastIndex &&
+           actual.ignoreCase === expected.ignoreCase;
+
+  // 7.4. Other pairs that do not both pass typeof value == 'object',
+  // equivalence is determined by ==.
+  } else if ((actual === null || typeof actual !== 'object') &&
+             (expected === null || typeof expected !== 'object')) {
+    return strict ? actual === expected : actual == expected;
+
+  // If both values are instances of typed arrays, wrap their underlying
+  // ArrayBuffers in a Buffer each to increase performance
+  // This optimization requires the arrays to have the same type as checked by
+  // Object.prototype.toString (aka pToString). Never perform binary
+  // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
+  // bit patterns are not identical.
+  } else if (isView(actual) && isView(expected) &&
+             pToString(actual) === pToString(expected) &&
+             !(actual instanceof Float32Array ||
+               actual instanceof Float64Array)) {
+    return compare(new Uint8Array(actual.buffer),
+                   new Uint8Array(expected.buffer)) === 0;
+
+  // 7.5 For all other Object pairs, including Array objects, equivalence is
+  // determined by having the same number of owned properties (as verified
+  // with Object.prototype.hasOwnProperty.call), the same set of keys
+  // (although not necessarily the same order), equivalent values for every
+  // corresponding key, and an identical 'prototype' property. Note: this
+  // accounts for both named and indexed properties on Arrays.
+  } else if (isBuffer(actual) !== isBuffer(expected)) {
+    return false;
+  } else {
+    memos = memos || {actual: [], expected: []};
 
-      if (typeof listeners === 'function') {
-        this.removeListener(type, listeners);
-      } else if (listeners) {
-        // LIFO order
-        for (i = listeners.length - 1; i >= 0; i--) {
-          this.removeListener(type, listeners[i]);
-        }
+    var actualIndex = memos.actual.indexOf(actual);
+    if (actualIndex !== -1) {
+      if (actualIndex === memos.expected.indexOf(expected)) {
+        return true;
       }
+    }
 
-      return this;
-    };
+    memos.actual.push(actual);
+    memos.expected.push(expected);
 
-function _listeners(target, type, unwrap) {
-  var events = target._events;
+    return objEquiv(actual, expected, strict, memos);
+  }
+}
 
-  if (!events)
-    return [];
+function isArguments(object) {
+  return Object.prototype.toString.call(object) == '[object Arguments]';
+}
 
-  var evlistener = events[type];
-  if (!evlistener)
-    return [];
+function objEquiv(a, b, strict, actualVisitedObjects) {
+  if (a === null || a === undefined || b === null || b === undefined)
+    return false;
+  // if one is a primitive, the other must be same
+  if (util.isPrimitive(a) || util.isPrimitive(b))
+    return a === b;
+  if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
+    return false;
+  var aIsArgs = isArguments(a);
+  var bIsArgs = isArguments(b);
+  if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
+    return false;
+  if (aIsArgs) {
+    a = pSlice.call(a);
+    b = pSlice.call(b);
+    return _deepEqual(a, b, strict);
+  }
+  var ka = objectKeys(a);
+  var kb = objectKeys(b);
+  var key, i;
+  // having the same number of owned properties (keys incorporates
+  // hasOwnProperty)
+  if (ka.length !== kb.length)
+    return false;
+  //the same set of keys (although not necessarily the same order),
+  ka.sort();
+  kb.sort();
+  //~~~cheap key test
+  for (i = ka.length - 1; i >= 0; i--) {
+    if (ka[i] !== kb[i])
+      return false;
+  }
+  //equivalent values for every corresponding key, and
+  //~~~possibly expensive deep test
+  for (i = ka.length - 1; i >= 0; i--) {
+    key = ka[i];
+    if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
+      return false;
+  }
+  return true;
+}
 
-  if (typeof evlistener === 'function')
-    return unwrap ? [evlistener.listener || evlistener] : [evlistener];
+// 8. The non-equivalence assertion tests for any deep inequality.
+// assert.notDeepEqual(actual, expected, message_opt);
 
-  return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
+assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
+  if (_deepEqual(actual, expected, false)) {
+    fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
+  }
+};
+
+assert.notDeepStrictEqual = notDeepStrictEqual;
+function notDeepStrictEqual(actual, expected, message) {
+  if (_deepEqual(actual, expected, true)) {
+    fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
+  }
 }
 
-EventEmitter.prototype.listeners = function listeners(type) {
-  return _listeners(this, type, true);
-};
 
-EventEmitter.prototype.rawListeners = function rawListeners(type) {
-  return _listeners(this, type, false);
+// 9. The strict equality assertion tests strict equality, as determined by ===.
+// assert.strictEqual(actual, expected, message_opt);
+
+assert.strictEqual = function strictEqual(actual, expected, message) {
+  if (actual !== expected) {
+    fail(actual, expected, message, '===', assert.strictEqual);
+  }
 };
 
-EventEmitter.listenerCount = function(emitter, type) {
-  if (typeof emitter.listenerCount === 'function') {
-    return emitter.listenerCount(type);
-  } else {
-    return listenerCount.call(emitter, type);
+// 10. The strict non-equality assertion tests for strict inequality, as
+// determined by !==.  assert.notStrictEqual(actual, expected, message_opt);
+
+assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
+  if (actual === expected) {
+    fail(actual, expected, message, '!==', assert.notStrictEqual);
   }
 };
 
-EventEmitter.prototype.listenerCount = listenerCount;
-function listenerCount(type) {
-  var events = this._events;
+function expectedException(actual, expected) {
+  if (!actual || !expected) {
+    return false;
+  }
 
-  if (events) {
-    var evlistener = events[type];
+  if (Object.prototype.toString.call(expected) == '[object RegExp]') {
+    return expected.test(actual);
+  }
 
-    if (typeof evlistener === 'function') {
-      return 1;
-    } else if (evlistener) {
-      return evlistener.length;
+  try {
+    if (actual instanceof expected) {
+      return true;
     }
+  } catch (e) {
+    // Ignore.  The instanceof check doesn't work for arrow functions.
   }
 
-  return 0;
-}
-
-EventEmitter.prototype.eventNames = function eventNames() {
-  return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];
-};
+  if (Error.isPrototypeOf(expected)) {
+    return false;
+  }
 
-// About 1.5x faster than the two-arg version of Array#splice().
-function spliceOne(list, index) {
-  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)
-    list[i] = list[k];
-  list.pop();
+  return expected.call({}, actual) === true;
 }
 
-function arrayClone(arr, n) {
-  var copy = new Array(n);
-  for (var i = 0; i < n; ++i)
-    copy[i] = arr[i];
-  return copy;
+function _tryBlock(block) {
+  var error;
+  try {
+    block();
+  } catch (e) {
+    error = e;
+  }
+  return error;
 }
 
-function unwrapListeners(arr) {
-  var ret = new Array(arr.length);
-  for (var i = 0; i < ret.length; ++i) {
-    ret[i] = arr[i].listener || arr[i];
+function _throws(shouldThrow, block, expected, message) {
+  var actual;
+
+  if (typeof block !== 'function') {
+    throw new TypeError('"block" argument must be a function');
   }
-  return ret;
-}
 
-function objectCreatePolyfill(proto) {
-  var F = function() {};
-  F.prototype = proto;
-  return new F;
-}
-function objectKeysPolyfill(obj) {
-  var keys = [];
-  for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) {
-    keys.push(k);
+  if (typeof expected === 'string') {
+    message = expected;
+    expected = null;
+  }
+
+  actual = _tryBlock(block);
+
+  message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
+            (message ? ' ' + message : '.');
+
+  if (shouldThrow && !actual) {
+    fail(actual, expected, 'Missing expected exception' + message);
+  }
+
+  var userProvidedMessage = typeof message === 'string';
+  var isUnwantedException = !shouldThrow && util.isError(actual);
+  var isUnexpectedException = !shouldThrow && actual && !expected;
+
+  if ((isUnwantedException &&
+      userProvidedMessage &&
+      expectedException(actual, expected)) ||
+      isUnexpectedException) {
+    fail(actual, expected, 'Got unwanted exception' + message);
+  }
+
+  if ((shouldThrow && actual && expected &&
+      !expectedException(actual, expected)) || (!shouldThrow && actual)) {
+    throw actual;
   }
-  return k;
-}
-function functionBindPolyfill(context) {
-  var fn = this;
-  return function () {
-    return fn.apply(context, arguments);
-  };
 }
 
-},{}],103:[function(require,module,exports){
-(function (global){
-/*! https://mths.be/he v1.2.0 by @mathias | MIT license */
-;(function(root) {
+// 11. Expected to throw an error:
+// assert.throws(block, Error_opt, message_opt);
 
-       // Detect free variables `exports`.
-       var freeExports = typeof exports == 'object' && exports;
+assert.throws = function(block, /*optional*/error, /*optional*/message) {
+  _throws(true, block, error, message);
+};
 
-       // Detect free variable `module`.
-       var freeModule = typeof module == 'object' && module &&
-               module.exports == freeExports && module;
+// EXTENSION! This is annoying to write outside this module.
+assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
+  _throws(false, block, error, message);
+};
 
-       // Detect free variable `global`, from Node.js or Browserified code,
-       // and use it as `root`.
-       var freeGlobal = typeof global == 'object' && global;
-       if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
-               root = freeGlobal;
-       }
+assert.ifError = function(err) { if (err) throw err; };
 
-       /*--------------------------------------------------------------------------*/
+var objectKeys = Object.keys || function (obj) {
+  var keys = [];
+  for (var key in obj) {
+    if (hasOwn.call(obj, key)) keys.push(key);
+  }
+  return keys;
+};
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"util/":180}],108:[function(require,module,exports){
+'use strict'
+
+exports.byteLength = byteLength
+exports.toByteArray = toByteArray
+exports.fromByteArray = fromByteArray
 
-       // All astral symbols.
-       var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
-       // All ASCII symbols (not just printable ASCII) except those listed in the
-       // first column of the overrides table.
-       // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides
-       var regexAsciiWhitelist = /[\x01-\x7F]/g;
-       // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or
-       // code points listed in the first column of the overrides table on
-       // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.
-       var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;
+var lookup = []
+var revLookup = []
+var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
 
-       var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g;
-       var encodeMap = {'\xAD':'shy','\u200C':'zwnj','\u200D':'zwj','\u200E':'lrm','\u2063':'ic','\u2062':'it','\u2061':'af','\u200F':'rlm','\u200B':'ZeroWidthSpace','\u2060':'NoBreak','\u0311':'DownBreve','\u20DB':'tdot','\u20DC':'DotDot','\t':'Tab','\n':'NewLine','\u2008':'puncsp','\u205F':'MediumSpace','\u2009':'thinsp','\u200A':'hairsp','\u2004':'emsp13','\u2002':'ensp','\u2005':'emsp14','\u2003':'emsp','\u2007':'numsp','\xA0':'nbsp','\u205F\u200A':'ThickSpace','\u203E':'oline','_':'lowbar','\u2010':'dash','\u2013':'ndash','\u2014':'mdash','\u2015':'horbar',',':'comma',';':'semi','\u204F':'bsemi',':':'colon','\u2A74':'Colone','!':'excl','\xA1':'iexcl','?':'quest','\xBF':'iquest','.':'period','\u2025':'nldr','\u2026':'mldr','\xB7':'middot','\'':'apos','\u2018':'lsquo','\u2019':'rsquo','\u201A':'sbquo','\u2039':'lsaquo','\u203A':'rsaquo','"':'quot','\u201C':'ldquo','\u201D':'rdquo','\u201E':'bdquo','\xAB':'laquo','\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\u2308':'lceil','\u2309':'rceil','\u230A':'lfloor','\u230B':'rfloor','\u2985':'lopar','\u2986':'ropar','\u298B':'lbrke','\u298C':'rbrke','\u298D':'lbrkslu','\u298E':'rbrksld','\u298F':'lbrksld','\u2990':'rbrkslu','\u2991':'langd','\u2992':'rangd','\u2993':'lparlt','\u2994':'rpargt','\u2995':'gtlPar','\u2996':'ltrPar','\u27E6':'lobrk','\u27E7':'robrk','\u27E8':'lang','\u27E9':'rang','\u27EA':'Lang','\u27EB':'Rang','\u27EC':'loang','\u27ED':'roang','\u2772':'lbbrk','\u2773':'rbbrk','\u2016':'Vert','\xA7':'sect','\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\u2030':'permil','\u2031':'pertenk','\u2020':'dagger','\u2021':'Dagger','\u2022':'bull','\u2043':'hybull','\u2032':'prime','\u2033':'Prime','\u2034':'tprime','\u2057':'qprime','\u2035':'bprime','\u2041':'caret','`':'grave','\xB4':'acute','\u02DC':'tilde','^':'Hat','\xAF':'macr','\u02D8':'breve','\u02D9':'dot','\xA8':'die','\u02DA':'ring','\u02DD':'dblac','\xB8':'cedil','\u02DB':'ogon','\u02C6':'circ','\u02C7':'caron','\xB0':'deg','\xA9':'copy','\xAE':'reg','\u2117':'copysr','\u2118':'wp','\u211E':'rx','\u2127':'mho','\u2129':'iiota','\u2190':'larr','\u219A':'nlarr','\u2192':'rarr','\u219B':'nrarr','\u2191':'uarr','\u2193':'darr','\u2194':'harr','\u21AE':'nharr','\u2195':'varr','\u2196':'nwarr','\u2197':'nearr','\u2198':'searr','\u2199':'swarr','\u219D':'rarrw','\u219D\u0338':'nrarrw','\u219E':'Larr','\u219F':'Uarr','\u21A0':'Rarr','\u21A1':'Darr','\u21A2':'larrtl','\u21A3':'rarrtl','\u21A4':'mapstoleft','\u21A5':'mapstoup','\u21A6':'map','\u21A7':'mapstodown','\u21A9':'larrhk','\u21AA':'rarrhk','\u21AB':'larrlp','\u21AC':'rarrlp','\u21AD':'harrw','\u21B0':'lsh','\u21B1':'rsh','\u21B2':'ldsh','\u21B3':'rdsh','\u21B5':'crarr','\u21B6':'cularr','\u21B7':'curarr','\u21BA':'olarr','\u21BB':'orarr','\u21BC':'lharu','\u21BD':'lhard','\u21BE':'uharr','\u21BF':'uharl','\u21C0':'rharu','\u21C1':'rhard','\u21C2':'dharr','\u21C3':'dharl','\u21C4':'rlarr','\u21C5':'udarr','\u21C6':'lrarr','\u21C7':'llarr','\u21C8':'uuarr','\u21C9':'rrarr','\u21CA':'ddarr','\u21CB':'lrhar','\u21CC':'rlhar','\u21D0':'lArr','\u21CD':'nlArr','\u21D1':'uArr','\u21D2':'rArr','\u21CF':'nrArr','\u21D3':'dArr','\u21D4':'iff','\u21CE':'nhArr','\u21D5':'vArr','\u21D6':'nwArr','\u21D7':'neArr','\u21D8':'seArr','\u21D9':'swArr','\u21DA':'lAarr','\u21DB':'rAarr','\u21DD':'zigrarr','\u21E4':'larrb','\u21E5':'rarrb','\u21F5':'duarr','\u21FD':'loarr','\u21FE':'roarr','\u21FF':'hoarr','\u2200':'forall','\u2201':'comp','\u2202':'part','\u2202\u0338':'npart','\u2203':'exist','\u2204':'nexist','\u2205':'empty','\u2207':'Del','\u2208':'in','\u2209':'notin','\u220B':'ni','\u220C':'notni','\u03F6':'bepsi','\u220F':'prod','\u2210':'coprod','\u2211':'sum','+':'plus','\xB1':'pm','\xF7':'div','\xD7':'times','<':'lt','\u226E':'nlt','<\u20D2':'nvlt','=':'equals','\u2260':'ne','=\u20E5':'bne','\u2A75':'Equal','>':'gt','\u226F':'ngt','>\u20D2':'nvgt','\xAC':'not','|':'vert','\xA6':'brvbar','\u2212':'minus','\u2213':'mp','\u2214':'plusdo','\u2044':'frasl','\u2216':'setmn','\u2217':'lowast','\u2218':'compfn','\u221A':'Sqrt','\u221D':'prop','\u221E':'infin','\u221F':'angrt','\u2220':'ang','\u2220\u20D2':'nang','\u2221':'angmsd','\u2222':'angsph','\u2223':'mid','\u2224':'nmid','\u2225':'par','\u2226':'npar','\u2227':'and','\u2228':'or','\u2229':'cap','\u2229\uFE00':'caps','\u222A':'cup','\u222A\uFE00':'cups','\u222B':'int','\u222C':'Int','\u222D':'tint','\u2A0C':'qint','\u222E':'oint','\u222F':'Conint','\u2230':'Cconint','\u2231':'cwint','\u2232':'cwconint','\u2233':'awconint','\u2234':'there4','\u2235':'becaus','\u2236':'ratio','\u2237':'Colon','\u2238':'minusd','\u223A':'mDDot','\u223B':'homtht','\u223C':'sim','\u2241':'nsim','\u223C\u20D2':'nvsim','\u223D':'bsim','\u223D\u0331':'race','\u223E':'ac','\u223E\u0333':'acE','\u223F':'acd','\u2240':'wr','\u2242':'esim','\u2242\u0338':'nesim','\u2243':'sime','\u2244':'nsime','\u2245':'cong','\u2247':'ncong','\u2246':'simne','\u2248':'ap','\u2249':'nap','\u224A':'ape','\u224B':'apid','\u224B\u0338':'napid','\u224C':'bcong','\u224D':'CupCap','\u226D':'NotCupCap','\u224D\u20D2':'nvap','\u224E':'bump','\u224E\u0338':'nbump','\u224F':'bumpe','\u224F\u0338':'nbumpe','\u2250':'doteq','\u2250\u0338':'nedot','\u2251':'eDot','\u2252':'efDot','\u2253':'erDot','\u2254':'colone','\u2255':'ecolon','\u2256':'ecir','\u2257':'cire','\u2259':'wedgeq','\u225A':'veeeq','\u225C':'trie','\u225F':'equest','\u2261':'equiv','\u2262':'nequiv','\u2261\u20E5':'bnequiv','\u2264':'le','\u2270':'nle','\u2264\u20D2':'nvle','\u2265':'ge','\u2271':'nge','\u2265\u20D2':'nvge','\u2266':'lE','\u2266\u0338':'nlE','\u2267':'gE','\u2267\u0338':'ngE','\u2268\uFE00':'lvnE','\u2268':'lnE','\u2269':'gnE','\u2269\uFE00':'gvnE','\u226A':'ll','\u226A\u0338':'nLtv','\u226A\u20D2':'nLt','\u226B':'gg','\u226B\u0338':'nGtv','\u226B\u20D2':'nGt','\u226C':'twixt','\u2272':'lsim','\u2274':'nlsim','\u2273':'gsim','\u2275':'ngsim','\u2276':'lg','\u2278':'ntlg','\u2277':'gl','\u2279':'ntgl','\u227A':'pr','\u2280':'npr','\u227B':'sc','\u2281':'nsc','\u227C':'prcue','\u22E0':'nprcue','\u227D':'sccue','\u22E1':'nsccue','\u227E':'prsim','\u227F':'scsim','\u227F\u0338':'NotSucceedsTilde','\u2282':'sub','\u2284':'nsub','\u2282\u20D2':'vnsub','\u2283':'sup','\u2285':'nsup','\u2283\u20D2':'vnsup','\u2286':'sube','\u2288':'nsube','\u2287':'supe','\u2289':'nsupe','\u228A\uFE00':'vsubne','\u228A':'subne','\u228B\uFE00':'vsupne','\u228B':'supne','\u228D':'cupdot','\u228E':'uplus','\u228F':'sqsub','\u228F\u0338':'NotSquareSubset','\u2290':'sqsup','\u2290\u0338':'NotSquareSuperset','\u2291':'sqsube','\u22E2':'nsqsube','\u2292':'sqsupe','\u22E3':'nsqsupe','\u2293':'sqcap','\u2293\uFE00':'sqcaps','\u2294':'sqcup','\u2294\uFE00':'sqcups','\u2295':'oplus','\u2296':'ominus','\u2297':'otimes','\u2298':'osol','\u2299':'odot','\u229A':'ocir','\u229B':'oast','\u229D':'odash','\u229E':'plusb','\u229F':'minusb','\u22A0':'timesb','\u22A1':'sdotb','\u22A2':'vdash','\u22AC':'nvdash','\u22A3':'dashv','\u22A4':'top','\u22A5':'bot','\u22A7':'models','\u22A8':'vDash','\u22AD':'nvDash','\u22A9':'Vdash','\u22AE':'nVdash','\u22AA':'Vvdash','\u22AB':'VDash','\u22AF':'nVDash','\u22B0':'prurel','\u22B2':'vltri','\u22EA':'nltri','\u22B3':'vrtri','\u22EB':'nrtri','\u22B4':'ltrie','\u22EC':'nltrie','\u22B4\u20D2':'nvltrie','\u22B5':'rtrie','\u22ED':'nrtrie','\u22B5\u20D2':'nvrtrie','\u22B6':'origof','\u22B7':'imof','\u22B8':'mumap','\u22B9':'hercon','\u22BA':'intcal','\u22BB':'veebar','\u22BD':'barvee','\u22BE':'angrtvb','\u22BF':'lrtri','\u22C0':'Wedge','\u22C1':'Vee','\u22C2':'xcap','\u22C3':'xcup','\u22C4':'diam','\u22C5':'sdot','\u22C6':'Star','\u22C7':'divonx','\u22C8':'bowtie','\u22C9':'ltimes','\u22CA':'rtimes','\u22CB':'lthree','\u22CC':'rthree','\u22CD':'bsime','\u22CE':'cuvee','\u22CF':'cuwed','\u22D0':'Sub','\u22D1':'Sup','\u22D2':'Cap','\u22D3':'Cup','\u22D4':'fork','\u22D5':'epar','\u22D6':'ltdot','\u22D7':'gtdot','\u22D8':'Ll','\u22D8\u0338':'nLl','\u22D9':'Gg','\u22D9\u0338':'nGg','\u22DA\uFE00':'lesg','\u22DA':'leg','\u22DB':'gel','\u22DB\uFE00':'gesl','\u22DE':'cuepr','\u22DF':'cuesc','\u22E6':'lnsim','\u22E7':'gnsim','\u22E8':'prnsim','\u22E9':'scnsim','\u22EE':'vellip','\u22EF':'ctdot','\u22F0':'utdot','\u22F1':'dtdot','\u22F2':'disin','\u22F3':'isinsv','\u22F4':'isins','\u22F5':'isindot','\u22F5\u0338':'notindot','\u22F6':'notinvc','\u22F7':'notinvb','\u22F9':'isinE','\u22F9\u0338':'notinE','\u22FA':'nisd','\u22FB':'xnis','\u22FC':'nis','\u22FD':'notnivc','\u22FE':'notnivb','\u2305':'barwed','\u2306':'Barwed','\u230C':'drcrop','\u230D':'dlcrop','\u230E':'urcrop','\u230F':'ulcrop','\u2310':'bnot','\u2312':'profline','\u2313':'profsurf','\u2315':'telrec','\u2316':'target','\u231C':'ulcorn','\u231D':'urcorn','\u231E':'dlcorn','\u231F':'drcorn','\u2322':'frown','\u2323':'smile','\u232D':'cylcty','\u232E':'profalar','\u2336':'topbot','\u233D':'ovbar','\u233F':'solbar','\u237C':'angzarr','\u23B0':'lmoust','\u23B1':'rmoust','\u23B4':'tbrk','\u23B5':'bbrk','\u23B6':'bbrktbrk','\u23DC':'OverParenthesis','\u23DD':'UnderParenthesis','\u23DE':'OverBrace','\u23DF':'UnderBrace','\u23E2':'trpezium','\u23E7':'elinters','\u2423':'blank','\u2500':'boxh','\u2502':'boxv','\u250C':'boxdr','\u2510':'boxdl','\u2514':'boxur','\u2518':'boxul','\u251C':'boxvr','\u2524':'boxvl','\u252C':'boxhd','\u2534':'boxhu','\u253C':'boxvh','\u2550':'boxH','\u2551':'boxV','\u2552':'boxdR','\u2553':'boxDr','\u2554':'boxDR','\u2555':'boxdL','\u2556':'boxDl','\u2557':'boxDL','\u2558':'boxuR','\u2559':'boxUr','\u255A':'boxUR','\u255B':'boxuL','\u255C':'boxUl','\u255D':'boxUL','\u255E':'boxvR','\u255F':'boxVr','\u2560':'boxVR','\u2561':'boxvL','\u2562':'boxVl','\u2563':'boxVL','\u2564':'boxHd','\u2565':'boxhD','\u2566':'boxHD','\u2567':'boxHu','\u2568':'boxhU','\u2569':'boxHU','\u256A':'boxvH','\u256B':'boxVh','\u256C':'boxVH','\u2580':'uhblk','\u2584':'lhblk','\u2588':'block','\u2591':'blk14','\u2592':'blk12','\u2593':'blk34','\u25A1':'squ','\u25AA':'squf','\u25AB':'EmptyVerySmallSquare','\u25AD':'rect','\u25AE':'marker','\u25B1':'fltns','\u25B3':'xutri','\u25B4':'utrif','\u25B5':'utri','\u25B8':'rtrif','\u25B9':'rtri','\u25BD':'xdtri','\u25BE':'dtrif','\u25BF':'dtri','\u25C2':'ltrif','\u25C3':'ltri','\u25CA':'loz','\u25CB':'cir','\u25EC':'tridot','\u25EF':'xcirc','\u25F8':'ultri','\u25F9':'urtri','\u25FA':'lltri','\u25FB':'EmptySmallSquare','\u25FC':'FilledSmallSquare','\u2605':'starf','\u2606':'star','\u260E':'phone','\u2640':'female','\u2642':'male','\u2660':'spades','\u2663':'clubs','\u2665':'hearts','\u2666':'diams','\u266A':'sung','\u2713':'check','\u2717':'cross','\u2720':'malt','\u2736':'sext','\u2758':'VerticalSeparator','\u27C8':'bsolhsub','\u27C9':'suphsol','\u27F5':'xlarr','\u27F6':'xrarr','\u27F7':'xharr','\u27F8':'xlArr','\u27F9':'xrArr','\u27FA':'xhArr','\u27FC':'xmap','\u27FF':'dzigrarr','\u2902':'nvlArr','\u2903':'nvrArr','\u2904':'nvHarr','\u2905':'Map','\u290C':'lbarr','\u290D':'rbarr','\u290E':'lBarr','\u290F':'rBarr','\u2910':'RBarr','\u2911':'DDotrahd','\u2912':'UpArrowBar','\u2913':'DownArrowBar','\u2916':'Rarrtl','\u2919':'latail','\u291A':'ratail','\u291B':'lAtail','\u291C':'rAtail','\u291D':'larrfs','\u291E':'rarrfs','\u291F':'larrbfs','\u2920':'rarrbfs','\u2923':'nwarhk','\u2924':'nearhk','\u2925':'searhk','\u2926':'swarhk','\u2927':'nwnear','\u2928':'toea','\u2929':'tosa','\u292A':'swnwar','\u2933':'rarrc','\u2933\u0338':'nrarrc','\u2935':'cudarrr','\u2936':'ldca','\u2937':'rdca','\u2938':'cudarrl','\u2939':'larrpl','\u293C':'curarrm','\u293D':'cularrp','\u2945':'rarrpl','\u2948':'harrcir','\u2949':'Uarrocir','\u294A':'lurdshar','\u294B':'ldrushar','\u294E':'LeftRightVector','\u294F':'RightUpDownVector','\u2950':'DownLeftRightVector','\u2951':'LeftUpDownVector','\u2952':'LeftVectorBar','\u2953':'RightVectorBar','\u2954':'RightUpVectorBar','\u2955':'RightDownVectorBar','\u2956':'DownLeftVectorBar','\u2957':'DownRightVectorBar','\u2958':'LeftUpVectorBar','\u2959':'LeftDownVectorBar','\u295A':'LeftTeeVector','\u295B':'RightTeeVector','\u295C':'RightUpTeeVector','\u295D':'RightDownTeeVector','\u295E':'DownLeftTeeVector','\u295F':'DownRightTeeVector','\u2960':'LeftUpTeeVector','\u2961':'LeftDownTeeVector','\u2962':'lHar','\u2963':'uHar','\u2964':'rHar','\u2965':'dHar','\u2966':'luruhar','\u2967':'ldrdhar','\u2968':'ruluhar','\u2969':'rdldhar','\u296A':'lharul','\u296B':'llhard','\u296C':'rharul','\u296D':'lrhard','\u296E':'udhar','\u296F':'duhar','\u2970':'RoundImplies','\u2971':'erarr','\u2972':'simrarr','\u2973':'larrsim','\u2974':'rarrsim','\u2975':'rarrap','\u2976':'ltlarr','\u2978':'gtrarr','\u2979':'subrarr','\u297B':'suplarr','\u297C':'lfisht','\u297D':'rfisht','\u297E':'ufisht','\u297F':'dfisht','\u299A':'vzigzag','\u299C':'vangrt','\u299D':'angrtvbd','\u29A4':'ange','\u29A5':'range','\u29A6':'dwangle','\u29A7':'uwangle','\u29A8':'angmsdaa','\u29A9':'angmsdab','\u29AA':'angmsdac','\u29AB':'angmsdad','\u29AC':'angmsdae','\u29AD':'angmsdaf','\u29AE':'angmsdag','\u29AF':'angmsdah','\u29B0':'bemptyv','\u29B1':'demptyv','\u29B2':'cemptyv','\u29B3':'raemptyv','\u29B4':'laemptyv','\u29B5':'ohbar','\u29B6':'omid','\u29B7':'opar','\u29B9':'operp','\u29BB':'olcross','\u29BC':'odsold','\u29BE':'olcir','\u29BF':'ofcir','\u29C0':'olt','\u29C1':'ogt','\u29C2':'cirscir','\u29C3':'cirE','\u29C4':'solb','\u29C5':'bsolb','\u29C9':'boxbox','\u29CD':'trisb','\u29CE':'rtriltri','\u29CF':'LeftTriangleBar','\u29CF\u0338':'NotLeftTriangleBar','\u29D0':'RightTriangleBar','\u29D0\u0338':'NotRightTriangleBar','\u29DC':'iinfin','\u29DD':'infintie','\u29DE':'nvinfin','\u29E3':'eparsl','\u29E4':'smeparsl','\u29E5':'eqvparsl','\u29EB':'lozf','\u29F4':'RuleDelayed','\u29F6':'dsol','\u2A00':'xodot','\u2A01':'xoplus','\u2A02':'xotime','\u2A04':'xuplus','\u2A06':'xsqcup','\u2A0D':'fpartint','\u2A10':'cirfnint','\u2A11':'awint','\u2A12':'rppolint','\u2A13':'scpolint','\u2A14':'npolint','\u2A15':'pointint','\u2A16':'quatint','\u2A17':'intlarhk','\u2A22':'pluscir','\u2A23':'plusacir','\u2A24':'simplus','\u2A25':'plusdu','\u2A26':'plussim','\u2A27':'plustwo','\u2A29':'mcomma','\u2A2A':'minusdu','\u2A2D':'loplus','\u2A2E':'roplus','\u2A2F':'Cross','\u2A30':'timesd','\u2A31':'timesbar','\u2A33':'smashp','\u2A34':'lotimes','\u2A35':'rotimes','\u2A36':'otimesas','\u2A37':'Otimes','\u2A38':'odiv','\u2A39':'triplus','\u2A3A':'triminus','\u2A3B':'tritime','\u2A3C':'iprod','\u2A3F':'amalg','\u2A40':'capdot','\u2A42':'ncup','\u2A43':'ncap','\u2A44':'capand','\u2A45':'cupor','\u2A46':'cupcap','\u2A47':'capcup','\u2A48':'cupbrcap','\u2A49':'capbrcup','\u2A4A':'cupcup','\u2A4B':'capcap','\u2A4C':'ccups','\u2A4D':'ccaps','\u2A50':'ccupssm','\u2A53':'And','\u2A54':'Or','\u2A55':'andand','\u2A56':'oror','\u2A57':'orslope','\u2A58':'andslope','\u2A5A':'andv','\u2A5B':'orv','\u2A5C':'andd','\u2A5D':'ord','\u2A5F':'wedbar','\u2A66':'sdote','\u2A6A':'simdot','\u2A6D':'congdot','\u2A6D\u0338':'ncongdot','\u2A6E':'easter','\u2A6F':'apacir','\u2A70':'apE','\u2A70\u0338':'napE','\u2A71':'eplus','\u2A72':'pluse','\u2A73':'Esim','\u2A77':'eDDot','\u2A78':'equivDD','\u2A79':'ltcir','\u2A7A':'gtcir','\u2A7B':'ltquest','\u2A7C':'gtquest','\u2A7D':'les','\u2A7D\u0338':'nles','\u2A7E':'ges','\u2A7E\u0338':'nges','\u2A7F':'lesdot','\u2A80':'gesdot','\u2A81':'lesdoto','\u2A82':'gesdoto','\u2A83':'lesdotor','\u2A84':'gesdotol','\u2A85':'lap','\u2A86':'gap','\u2A87':'lne','\u2A88':'gne','\u2A89':'lnap','\u2A8A':'gnap','\u2A8B':'lEg','\u2A8C':'gEl','\u2A8D':'lsime','\u2A8E':'gsime','\u2A8F':'lsimg','\u2A90':'gsiml','\u2A91':'lgE','\u2A92':'glE','\u2A93':'lesges','\u2A94':'gesles','\u2A95':'els','\u2A96':'egs','\u2A97':'elsdot','\u2A98':'egsdot','\u2A99':'el','\u2A9A':'eg','\u2A9D':'siml','\u2A9E':'simg','\u2A9F':'simlE','\u2AA0':'simgE','\u2AA1':'LessLess','\u2AA1\u0338':'NotNestedLessLess','\u2AA2':'GreaterGreater','\u2AA2\u0338':'NotNestedGreaterGreater','\u2AA4':'glj','\u2AA5':'gla','\u2AA6':'ltcc','\u2AA7':'gtcc','\u2AA8':'lescc','\u2AA9':'gescc','\u2AAA':'smt','\u2AAB':'lat','\u2AAC':'smte','\u2AAC\uFE00':'smtes','\u2AAD':'late','\u2AAD\uFE00':'lates','\u2AAE':'bumpE','\u2AAF':'pre','\u2AAF\u0338':'npre','\u2AB0':'sce','\u2AB0\u0338':'nsce','\u2AB3':'prE','\u2AB4':'scE','\u2AB5':'prnE','\u2AB6':'scnE','\u2AB7':'prap','\u2AB8':'scap','\u2AB9':'prnap','\u2ABA':'scnap','\u2ABB':'Pr','\u2ABC':'Sc','\u2ABD':'subdot','\u2ABE':'supdot','\u2ABF':'subplus','\u2AC0':'supplus','\u2AC1':'submult','\u2AC2':'supmult','\u2AC3':'subedot','\u2AC4':'supedot','\u2AC5':'subE','\u2AC5\u0338':'nsubE','\u2AC6':'supE','\u2AC6\u0338':'nsupE','\u2AC7':'subsim','\u2AC8':'supsim','\u2ACB\uFE00':'vsubnE','\u2ACB':'subnE','\u2ACC\uFE00':'vsupnE','\u2ACC':'supnE','\u2ACF':'csub','\u2AD0':'csup','\u2AD1':'csube','\u2AD2':'csupe','\u2AD3':'subsup','\u2AD4':'supsub','\u2AD5':'subsub','\u2AD6':'supsup','\u2AD7':'suphsub','\u2AD8':'supdsub','\u2AD9':'forkv','\u2ADA':'topfork','\u2ADB':'mlcp','\u2AE4':'Dashv','\u2AE6':'Vdashl','\u2AE7':'Barv','\u2AE8':'vBar','\u2AE9':'vBarv','\u2AEB':'Vbar','\u2AEC':'Not','\u2AED':'bNot','\u2AEE':'rnmid','\u2AEF':'cirmid','\u2AF0':'midcir','\u2AF1':'topcir','\u2AF2':'nhpar','\u2AF3':'parsim','\u2AFD':'parsl','\u2AFD\u20E5':'nparsl','\u266D':'flat','\u266E':'natur','\u266F':'sharp','\xA4':'curren','\xA2':'cent','$':'dollar','\xA3':'pound','\xA5':'yen','\u20AC':'euro','\xB9':'sup1','\xBD':'half','\u2153':'frac13','\xBC':'frac14','\u2155':'frac15','\u2159':'frac16','\u215B':'frac18','\xB2':'sup2','\u2154':'frac23','\u2156':'frac25','\xB3':'sup3','\xBE':'frac34','\u2157':'frac35','\u215C':'frac38','\u2158':'frac45','\u215A':'frac56','\u215D':'frac58','\u215E':'frac78','\uD835\uDCB6':'ascr','\uD835\uDD52':'aopf','\uD835\uDD1E':'afr','\uD835\uDD38':'Aopf','\uD835\uDD04':'Afr','\uD835\uDC9C':'Ascr','\xAA':'ordf','\xE1':'aacute','\xC1':'Aacute','\xE0':'agrave','\xC0':'Agrave','\u0103':'abreve','\u0102':'Abreve','\xE2':'acirc','\xC2':'Acirc','\xE5':'aring','\xC5':'angst','\xE4':'auml','\xC4':'Auml','\xE3':'atilde','\xC3':'Atilde','\u0105':'aogon','\u0104':'Aogon','\u0101':'amacr','\u0100':'Amacr','\xE6':'aelig','\xC6':'AElig','\uD835\uDCB7':'bscr','\uD835\uDD53':'bopf','\uD835\uDD1F':'bfr','\uD835\uDD39':'Bopf','\u212C':'Bscr','\uD835\uDD05':'Bfr','\uD835\uDD20':'cfr','\uD835\uDCB8':'cscr','\uD835\uDD54':'copf','\u212D':'Cfr','\uD835\uDC9E':'Cscr','\u2102':'Copf','\u0107':'cacute','\u0106':'Cacute','\u0109':'ccirc','\u0108':'Ccirc','\u010D':'ccaron','\u010C':'Ccaron','\u010B':'cdot','\u010A':'Cdot','\xE7':'ccedil','\xC7':'Ccedil','\u2105':'incare','\uD835\uDD21':'dfr','\u2146':'dd','\uD835\uDD55':'dopf','\uD835\uDCB9':'dscr','\uD835\uDC9F':'Dscr','\uD835\uDD07':'Dfr','\u2145':'DD','\uD835\uDD3B':'Dopf','\u010F':'dcaron','\u010E':'Dcaron','\u0111':'dstrok','\u0110':'Dstrok','\xF0':'eth','\xD0':'ETH','\u2147':'ee','\u212F':'escr','\uD835\uDD22':'efr','\uD835\uDD56':'eopf','\u2130':'Escr','\uD835\uDD08':'Efr','\uD835\uDD3C':'Eopf','\xE9':'eacute','\xC9':'Eacute','\xE8':'egrave','\xC8':'Egrave','\xEA':'ecirc','\xCA':'Ecirc','\u011B':'ecaron','\u011A':'Ecaron','\xEB':'euml','\xCB':'Euml','\u0117':'edot','\u0116':'Edot','\u0119':'eogon','\u0118':'Eogon','\u0113':'emacr','\u0112':'Emacr','\uD835\uDD23':'ffr','\uD835\uDD57':'fopf','\uD835\uDCBB':'fscr','\uD835\uDD09':'Ffr','\uD835\uDD3D':'Fopf','\u2131':'Fscr','\uFB00':'fflig','\uFB03':'ffilig','\uFB04':'ffllig','\uFB01':'filig','fj':'fjlig','\uFB02':'fllig','\u0192':'fnof','\u210A':'gscr','\uD835\uDD58':'gopf','\uD835\uDD24':'gfr','\uD835\uDCA2':'Gscr','\uD835\uDD3E':'Gopf','\uD835\uDD0A':'Gfr','\u01F5':'gacute','\u011F':'gbreve','\u011E':'Gbreve','\u011D':'gcirc','\u011C':'Gcirc','\u0121':'gdot','\u0120':'Gdot','\u0122':'Gcedil','\uD835\uDD25':'hfr','\u210E':'planckh','\uD835\uDCBD':'hscr','\uD835\uDD59':'hopf','\u210B':'Hscr','\u210C':'Hfr','\u210D':'Hopf','\u0125':'hcirc','\u0124':'Hcirc','\u210F':'hbar','\u0127':'hstrok','\u0126':'Hstrok','\uD835\uDD5A':'iopf','\uD835\uDD26':'ifr','\uD835\uDCBE':'iscr','\u2148':'ii','\uD835\uDD40':'Iopf','\u2110':'Iscr','\u2111':'Im','\xED':'iacute','\xCD':'Iacute','\xEC':'igrave','\xCC':'Igrave','\xEE':'icirc','\xCE':'Icirc','\xEF':'iuml','\xCF':'Iuml','\u0129':'itilde','\u0128':'Itilde','\u0130':'Idot','\u012F':'iogon','\u012E':'Iogon','\u012B':'imacr','\u012A':'Imacr','\u0133':'ijlig','\u0132':'IJlig','\u0131':'imath','\uD835\uDCBF':'jscr','\uD835\uDD5B':'jopf','\uD835\uDD27':'jfr','\uD835\uDCA5':'Jscr','\uD835\uDD0D':'Jfr','\uD835\uDD41':'Jopf','\u0135':'jcirc','\u0134':'Jcirc','\u0237':'jmath','\uD835\uDD5C':'kopf','\uD835\uDCC0':'kscr','\uD835\uDD28':'kfr','\uD835\uDCA6':'Kscr','\uD835\uDD42':'Kopf','\uD835\uDD0E':'Kfr','\u0137':'kcedil','\u0136':'Kcedil','\uD835\uDD29':'lfr','\uD835\uDCC1':'lscr','\u2113':'ell','\uD835\uDD5D':'lopf','\u2112':'Lscr','\uD835\uDD0F':'Lfr','\uD835\uDD43':'Lopf','\u013A':'lacute','\u0139':'Lacute','\u013E':'lcaron','\u013D':'Lcaron','\u013C':'lcedil','\u013B':'Lcedil','\u0142':'lstrok','\u0141':'Lstrok','\u0140':'lmidot','\u013F':'Lmidot','\uD835\uDD2A':'mfr','\uD835\uDD5E':'mopf','\uD835\uDCC2':'mscr','\uD835\uDD10':'Mfr','\uD835\uDD44':'Mopf','\u2133':'Mscr','\uD835\uDD2B':'nfr','\uD835\uDD5F':'nopf','\uD835\uDCC3':'nscr','\u2115':'Nopf','\uD835\uDCA9':'Nscr','\uD835\uDD11':'Nfr','\u0144':'nacute','\u0143':'Nacute','\u0148':'ncaron','\u0147':'Ncaron','\xF1':'ntilde','\xD1':'Ntilde','\u0146':'ncedil','\u0145':'Ncedil','\u2116':'numero','\u014B':'eng','\u014A':'ENG','\uD835\uDD60':'oopf','\uD835\uDD2C':'ofr','\u2134':'oscr','\uD835\uDCAA':'Oscr','\uD835\uDD12':'Ofr','\uD835\uDD46':'Oopf','\xBA':'ordm','\xF3':'oacute','\xD3':'Oacute','\xF2':'ograve','\xD2':'Ograve','\xF4':'ocirc','\xD4':'Ocirc','\xF6':'ouml','\xD6':'Ouml','\u0151':'odblac','\u0150':'Odblac','\xF5':'otilde','\xD5':'Otilde','\xF8':'oslash','\xD8':'Oslash','\u014D':'omacr','\u014C':'Omacr','\u0153':'oelig','\u0152':'OElig','\uD835\uDD2D':'pfr','\uD835\uDCC5':'pscr','\uD835\uDD61':'popf','\u2119':'Popf','\uD835\uDD13':'Pfr','\uD835\uDCAB':'Pscr','\uD835\uDD62':'qopf','\uD835\uDD2E':'qfr','\uD835\uDCC6':'qscr','\uD835\uDCAC':'Qscr','\uD835\uDD14':'Qfr','\u211A':'Qopf','\u0138':'kgreen','\uD835\uDD2F':'rfr','\uD835\uDD63':'ropf','\uD835\uDCC7':'rscr','\u211B':'Rscr','\u211C':'Re','\u211D':'Ropf','\u0155':'racute','\u0154':'Racute','\u0159':'rcaron','\u0158':'Rcaron','\u0157':'rcedil','\u0156':'Rcedil','\uD835\uDD64':'sopf','\uD835\uDCC8':'sscr','\uD835\uDD30':'sfr','\uD835\uDD4A':'Sopf','\uD835\uDD16':'Sfr','\uD835\uDCAE':'Sscr','\u24C8':'oS','\u015B':'sacute','\u015A':'Sacute','\u015D':'scirc','\u015C':'Scirc','\u0161':'scaron','\u0160':'Scaron','\u015F':'scedil','\u015E':'Scedil','\xDF':'szlig','\uD835\uDD31':'tfr','\uD835\uDCC9':'tscr','\uD835\uDD65':'topf','\uD835\uDCAF':'Tscr','\uD835\uDD17':'Tfr','\uD835\uDD4B':'Topf','\u0165':'tcaron','\u0164':'Tcaron','\u0163':'tcedil','\u0162':'Tcedil','\u2122':'trade','\u0167':'tstrok','\u0166':'Tstrok','\uD835\uDCCA':'uscr','\uD835\uDD66':'uopf','\uD835\uDD32':'ufr','\uD835\uDD4C':'Uopf','\uD835\uDD18':'Ufr','\uD835\uDCB0':'Uscr','\xFA':'uacute','\xDA':'Uacute','\xF9':'ugrave','\xD9':'Ugrave','\u016D':'ubreve','\u016C':'Ubreve','\xFB':'ucirc','\xDB':'Ucirc','\u016F':'uring','\u016E':'Uring','\xFC':'uuml','\xDC':'Uuml','\u0171':'udblac','\u0170':'Udblac','\u0169':'utilde','\u0168':'Utilde','\u0173':'uogon','\u0172':'Uogon','\u016B':'umacr','\u016A':'Umacr','\uD835\uDD33':'vfr','\uD835\uDD67':'vopf','\uD835\uDCCB':'vscr','\uD835\uDD19':'Vfr','\uD835\uDD4D':'Vopf','\uD835\uDCB1':'Vscr','\uD835\uDD68':'wopf','\uD835\uDCCC':'wscr','\uD835\uDD34':'wfr','\uD835\uDCB2':'Wscr','\uD835\uDD4E':'Wopf','\uD835\uDD1A':'Wfr','\u0175':'wcirc','\u0174':'Wcirc','\uD835\uDD35':'xfr','\uD835\uDCCD':'xscr','\uD835\uDD69':'xopf','\uD835\uDD4F':'Xopf','\uD835\uDD1B':'Xfr','\uD835\uDCB3':'Xscr','\uD835\uDD36':'yfr','\uD835\uDCCE':'yscr','\uD835\uDD6A':'yopf','\uD835\uDCB4':'Yscr','\uD835\uDD1C':'Yfr','\uD835\uDD50':'Yopf','\xFD':'yacute','\xDD':'Yacute','\u0177':'ycirc','\u0176':'Ycirc','\xFF':'yuml','\u0178':'Yuml','\uD835\uDCCF':'zscr','\uD835\uDD37':'zfr','\uD835\uDD6B':'zopf','\u2128':'Zfr','\u2124':'Zopf','\uD835\uDCB5':'Zscr','\u017A':'zacute','\u0179':'Zacute','\u017E':'zcaron','\u017D':'Zcaron','\u017C':'zdot','\u017B':'Zdot','\u01B5':'imped','\xFE':'thorn','\xDE':'THORN','\u0149':'napos','\u03B1':'alpha','\u0391':'Alpha','\u03B2':'beta','\u0392':'Beta','\u03B3':'gamma','\u0393':'Gamma','\u03B4':'delta','\u0394':'Delta','\u03B5':'epsi','\u03F5':'epsiv','\u0395':'Epsilon','\u03DD':'gammad','\u03DC':'Gammad','\u03B6':'zeta','\u0396':'Zeta','\u03B7':'eta','\u0397':'Eta','\u03B8':'theta','\u03D1':'thetav','\u0398':'Theta','\u03B9':'iota','\u0399':'Iota','\u03BA':'kappa','\u03F0':'kappav','\u039A':'Kappa','\u03BB':'lambda','\u039B':'Lambda','\u03BC':'mu','\xB5':'micro','\u039C':'Mu','\u03BD':'nu','\u039D':'Nu','\u03BE':'xi','\u039E':'Xi','\u03BF':'omicron','\u039F':'Omicron','\u03C0':'pi','\u03D6':'piv','\u03A0':'Pi','\u03C1':'rho','\u03F1':'rhov','\u03A1':'Rho','\u03C3':'sigma','\u03A3':'Sigma','\u03C2':'sigmaf','\u03C4':'tau','\u03A4':'Tau','\u03C5':'upsi','\u03A5':'Upsilon','\u03D2':'Upsi','\u03C6':'phi','\u03D5':'phiv','\u03A6':'Phi','\u03C7':'chi','\u03A7':'Chi','\u03C8':'psi','\u03A8':'Psi','\u03C9':'omega','\u03A9':'ohm','\u0430':'acy','\u0410':'Acy','\u0431':'bcy','\u0411':'Bcy','\u0432':'vcy','\u0412':'Vcy','\u0433':'gcy','\u0413':'Gcy','\u0453':'gjcy','\u0403':'GJcy','\u0434':'dcy','\u0414':'Dcy','\u0452':'djcy','\u0402':'DJcy','\u0435':'iecy','\u0415':'IEcy','\u0451':'iocy','\u0401':'IOcy','\u0454':'jukcy','\u0404':'Jukcy','\u0436':'zhcy','\u0416':'ZHcy','\u0437':'zcy','\u0417':'Zcy','\u0455':'dscy','\u0405':'DScy','\u0438':'icy','\u0418':'Icy','\u0456':'iukcy','\u0406':'Iukcy','\u0457':'yicy','\u0407':'YIcy','\u0439':'jcy','\u0419':'Jcy','\u0458':'jsercy','\u0408':'Jsercy','\u043A':'kcy','\u041A':'Kcy','\u045C':'kjcy','\u040C':'KJcy','\u043B':'lcy','\u041B':'Lcy','\u0459':'ljcy','\u0409':'LJcy','\u043C':'mcy','\u041C':'Mcy','\u043D':'ncy','\u041D':'Ncy','\u045A':'njcy','\u040A':'NJcy','\u043E':'ocy','\u041E':'Ocy','\u043F':'pcy','\u041F':'Pcy','\u0440':'rcy','\u0420':'Rcy','\u0441':'scy','\u0421':'Scy','\u0442':'tcy','\u0422':'Tcy','\u045B':'tshcy','\u040B':'TSHcy','\u0443':'ucy','\u0423':'Ucy','\u045E':'ubrcy','\u040E':'Ubrcy','\u0444':'fcy','\u0424':'Fcy','\u0445':'khcy','\u0425':'KHcy','\u0446':'tscy','\u0426':'TScy','\u0447':'chcy','\u0427':'CHcy','\u045F':'dzcy','\u040F':'DZcy','\u0448':'shcy','\u0428':'SHcy','\u0449':'shchcy','\u0429':'SHCHcy','\u044A':'hardcy','\u042A':'HARDcy','\u044B':'ycy','\u042B':'Ycy','\u044C':'softcy','\u042C':'SOFTcy','\u044D':'ecy','\u042D':'Ecy','\u044E':'yucy','\u042E':'YUcy','\u044F':'yacy','\u042F':'YAcy','\u2135':'aleph','\u2136':'beth','\u2137':'gimel','\u2138':'daleth'};
+var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+for (var i = 0, len = code.length; i < len; ++i) {
+  lookup[i] = code[i]
+  revLookup[code.charCodeAt(i)] = i
+}
 
-       var regexEscape = /["&'<>`]/g;
-       var escapeMap = {
-               '"': '&quot;',
-               '&': '&amp;',
-               '\'': '&#x27;',
-               '<': '&lt;',
-               // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the
-               // following is not strictly necessary unless it’s part of a tag or an
-               // unquoted attribute value. We’re only escaping it to support those
-               // situations, and for XML support.
-               '>': '&gt;',
-               // In Internet Explorer ≤ 8, the backtick character can be used
-               // to break out of (un)quoted attribute values or HTML comments.
-               // See http://html5sec.org/#102, http://html5sec.org/#108, and
-               // http://html5sec.org/#133.
-               '`': '&#x60;'
-       };
+// Support decoding URL-safe base64 strings, as Node.js does.
+// See: https://en.wikipedia.org/wiki/Base64#URL_applications
+revLookup['-'.charCodeAt(0)] = 62
+revLookup['_'.charCodeAt(0)] = 63
 
-       var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;
-       var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
-       var regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;
-       var decodeMap = {'aacute':'\xE1','Aacute':'\xC1','abreve':'\u0103','Abreve':'\u0102','ac':'\u223E','acd':'\u223F','acE':'\u223E\u0333','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','acy':'\u0430','Acy':'\u0410','aelig':'\xE6','AElig':'\xC6','af':'\u2061','afr':'\uD835\uDD1E','Afr':'\uD835\uDD04','agrave':'\xE0','Agrave':'\xC0','alefsym':'\u2135','aleph':'\u2135','alpha':'\u03B1','Alpha':'\u0391','amacr':'\u0101','Amacr':'\u0100','amalg':'\u2A3F','amp':'&','AMP':'&','and':'\u2227','And':'\u2A53','andand':'\u2A55','andd':'\u2A5C','andslope':'\u2A58','andv':'\u2A5A','ang':'\u2220','ange':'\u29A4','angle':'\u2220','angmsd':'\u2221','angmsdaa':'\u29A8','angmsdab':'\u29A9','angmsdac':'\u29AA','angmsdad':'\u29AB','angmsdae':'\u29AC','angmsdaf':'\u29AD','angmsdag':'\u29AE','angmsdah':'\u29AF','angrt':'\u221F','angrtvb':'\u22BE','angrtvbd':'\u299D','angsph':'\u2222','angst':'\xC5','angzarr':'\u237C','aogon':'\u0105','Aogon':'\u0104','aopf':'\uD835\uDD52','Aopf':'\uD835\uDD38','ap':'\u2248','apacir':'\u2A6F','ape':'\u224A','apE':'\u2A70','apid':'\u224B','apos':'\'','ApplyFunction':'\u2061','approx':'\u2248','approxeq':'\u224A','aring':'\xE5','Aring':'\xC5','ascr':'\uD835\uDCB6','Ascr':'\uD835\uDC9C','Assign':'\u2254','ast':'*','asymp':'\u2248','asympeq':'\u224D','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','awconint':'\u2233','awint':'\u2A11','backcong':'\u224C','backepsilon':'\u03F6','backprime':'\u2035','backsim':'\u223D','backsimeq':'\u22CD','Backslash':'\u2216','Barv':'\u2AE7','barvee':'\u22BD','barwed':'\u2305','Barwed':'\u2306','barwedge':'\u2305','bbrk':'\u23B5','bbrktbrk':'\u23B6','bcong':'\u224C','bcy':'\u0431','Bcy':'\u0411','bdquo':'\u201E','becaus':'\u2235','because':'\u2235','Because':'\u2235','bemptyv':'\u29B0','bepsi':'\u03F6','bernou':'\u212C','Bernoullis':'\u212C','beta':'\u03B2','Beta':'\u0392','beth':'\u2136','between':'\u226C','bfr':'\uD835\uDD1F','Bfr':'\uD835\uDD05','bigcap':'\u22C2','bigcirc':'\u25EF','bigcup':'\u22C3','bigodot':'\u2A00','bigoplus':'\u2A01','bigotimes':'\u2A02','bigsqcup':'\u2A06','bigstar':'\u2605','bigtriangledown':'\u25BD','bigtriangleup':'\u25B3','biguplus':'\u2A04','bigvee':'\u22C1','bigwedge':'\u22C0','bkarow':'\u290D','blacklozenge':'\u29EB','blacksquare':'\u25AA','blacktriangle':'\u25B4','blacktriangledown':'\u25BE','blacktriangleleft':'\u25C2','blacktriangleright':'\u25B8','blank':'\u2423','blk12':'\u2592','blk14':'\u2591','blk34':'\u2593','block':'\u2588','bne':'=\u20E5','bnequiv':'\u2261\u20E5','bnot':'\u2310','bNot':'\u2AED','bopf':'\uD835\uDD53','Bopf':'\uD835\uDD39','bot':'\u22A5','bottom':'\u22A5','bowtie':'\u22C8','boxbox':'\u29C9','boxdl':'\u2510','boxdL':'\u2555','boxDl':'\u2556','boxDL':'\u2557','boxdr':'\u250C','boxdR':'\u2552','boxDr':'\u2553','boxDR':'\u2554','boxh':'\u2500','boxH':'\u2550','boxhd':'\u252C','boxhD':'\u2565','boxHd':'\u2564','boxHD':'\u2566','boxhu':'\u2534','boxhU':'\u2568','boxHu':'\u2567','boxHU':'\u2569','boxminus':'\u229F','boxplus':'\u229E','boxtimes':'\u22A0','boxul':'\u2518','boxuL':'\u255B','boxUl':'\u255C','boxUL':'\u255D','boxur':'\u2514','boxuR':'\u2558','boxUr':'\u2559','boxUR':'\u255A','boxv':'\u2502','boxV':'\u2551','boxvh':'\u253C','boxvH':'\u256A','boxVh':'\u256B','boxVH':'\u256C','boxvl':'\u2524','boxvL':'\u2561','boxVl':'\u2562','boxVL':'\u2563','boxvr':'\u251C','boxvR':'\u255E','boxVr':'\u255F','boxVR':'\u2560','bprime':'\u2035','breve':'\u02D8','Breve':'\u02D8','brvbar':'\xA6','bscr':'\uD835\uDCB7','Bscr':'\u212C','bsemi':'\u204F','bsim':'\u223D','bsime':'\u22CD','bsol':'\\','bsolb':'\u29C5','bsolhsub':'\u27C8','bull':'\u2022','bullet':'\u2022','bump':'\u224E','bumpe':'\u224F','bumpE':'\u2AAE','bumpeq':'\u224F','Bumpeq':'\u224E','cacute':'\u0107','Cacute':'\u0106','cap':'\u2229','Cap':'\u22D2','capand':'\u2A44','capbrcup':'\u2A49','capcap':'\u2A4B','capcup':'\u2A47','capdot':'\u2A40','CapitalDifferentialD':'\u2145','caps':'\u2229\uFE00','caret':'\u2041','caron':'\u02C7','Cayleys':'\u212D','ccaps':'\u2A4D','ccaron':'\u010D','Ccaron':'\u010C','ccedil':'\xE7','Ccedil':'\xC7','ccirc':'\u0109','Ccirc':'\u0108','Cconint':'\u2230','ccups':'\u2A4C','ccupssm':'\u2A50','cdot':'\u010B','Cdot':'\u010A','cedil':'\xB8','Cedilla':'\xB8','cemptyv':'\u29B2','cent':'\xA2','centerdot':'\xB7','CenterDot':'\xB7','cfr':'\uD835\uDD20','Cfr':'\u212D','chcy':'\u0447','CHcy':'\u0427','check':'\u2713','checkmark':'\u2713','chi':'\u03C7','Chi':'\u03A7','cir':'\u25CB','circ':'\u02C6','circeq':'\u2257','circlearrowleft':'\u21BA','circlearrowright':'\u21BB','circledast':'\u229B','circledcirc':'\u229A','circleddash':'\u229D','CircleDot':'\u2299','circledR':'\xAE','circledS':'\u24C8','CircleMinus':'\u2296','CirclePlus':'\u2295','CircleTimes':'\u2297','cire':'\u2257','cirE':'\u29C3','cirfnint':'\u2A10','cirmid':'\u2AEF','cirscir':'\u29C2','ClockwiseContourIntegral':'\u2232','CloseCurlyDoubleQuote':'\u201D','CloseCurlyQuote':'\u2019','clubs':'\u2663','clubsuit':'\u2663','colon':':','Colon':'\u2237','colone':'\u2254','Colone':'\u2A74','coloneq':'\u2254','comma':',','commat':'@','comp':'\u2201','compfn':'\u2218','complement':'\u2201','complexes':'\u2102','cong':'\u2245','congdot':'\u2A6D','Congruent':'\u2261','conint':'\u222E','Conint':'\u222F','ContourIntegral':'\u222E','copf':'\uD835\uDD54','Copf':'\u2102','coprod':'\u2210','Coproduct':'\u2210','copy':'\xA9','COPY':'\xA9','copysr':'\u2117','CounterClockwiseContourIntegral':'\u2233','crarr':'\u21B5','cross':'\u2717','Cross':'\u2A2F','cscr':'\uD835\uDCB8','Cscr':'\uD835\uDC9E','csub':'\u2ACF','csube':'\u2AD1','csup':'\u2AD0','csupe':'\u2AD2','ctdot':'\u22EF','cudarrl':'\u2938','cudarrr':'\u2935','cuepr':'\u22DE','cuesc':'\u22DF','cularr':'\u21B6','cularrp':'\u293D','cup':'\u222A','Cup':'\u22D3','cupbrcap':'\u2A48','cupcap':'\u2A46','CupCap':'\u224D','cupcup':'\u2A4A','cupdot':'\u228D','cupor':'\u2A45','cups':'\u222A\uFE00','curarr':'\u21B7','curarrm':'\u293C','curlyeqprec':'\u22DE','curlyeqsucc':'\u22DF','curlyvee':'\u22CE','curlywedge':'\u22CF','curren':'\xA4','curvearrowleft':'\u21B6','curvearrowright':'\u21B7','cuvee':'\u22CE','cuwed':'\u22CF','cwconint':'\u2232','cwint':'\u2231','cylcty':'\u232D','dagger':'\u2020','Dagger':'\u2021','daleth':'\u2138','darr':'\u2193','dArr':'\u21D3','Darr':'\u21A1','dash':'\u2010','dashv':'\u22A3','Dashv':'\u2AE4','dbkarow':'\u290F','dblac':'\u02DD','dcaron':'\u010F','Dcaron':'\u010E','dcy':'\u0434','Dcy':'\u0414','dd':'\u2146','DD':'\u2145','ddagger':'\u2021','ddarr':'\u21CA','DDotrahd':'\u2911','ddotseq':'\u2A77','deg':'\xB0','Del':'\u2207','delta':'\u03B4','Delta':'\u0394','demptyv':'\u29B1','dfisht':'\u297F','dfr':'\uD835\uDD21','Dfr':'\uD835\uDD07','dHar':'\u2965','dharl':'\u21C3','dharr':'\u21C2','DiacriticalAcute':'\xB4','DiacriticalDot':'\u02D9','DiacriticalDoubleAcute':'\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\u02DC','diam':'\u22C4','diamond':'\u22C4','Diamond':'\u22C4','diamondsuit':'\u2666','diams':'\u2666','die':'\xA8','DifferentialD':'\u2146','digamma':'\u03DD','disin':'\u22F2','div':'\xF7','divide':'\xF7','divideontimes':'\u22C7','divonx':'\u22C7','djcy':'\u0452','DJcy':'\u0402','dlcorn':'\u231E','dlcrop':'\u230D','dollar':'$','dopf':'\uD835\uDD55','Dopf':'\uD835\uDD3B','dot':'\u02D9','Dot':'\xA8','DotDot':'\u20DC','doteq':'\u2250','doteqdot':'\u2251','DotEqual':'\u2250','dotminus':'\u2238','dotplus':'\u2214','dotsquare':'\u22A1','doublebarwedge':'\u2306','DoubleContourIntegral':'\u222F','DoubleDot':'\xA8','DoubleDownArrow':'\u21D3','DoubleLeftArrow':'\u21D0','DoubleLeftRightArrow':'\u21D4','DoubleLeftTee':'\u2AE4','DoubleLongLeftArrow':'\u27F8','DoubleLongLeftRightArrow':'\u27FA','DoubleLongRightArrow':'\u27F9','DoubleRightArrow':'\u21D2','DoubleRightTee':'\u22A8','DoubleUpArrow':'\u21D1','DoubleUpDownArrow':'\u21D5','DoubleVerticalBar':'\u2225','downarrow':'\u2193','Downarrow':'\u21D3','DownArrow':'\u2193','DownArrowBar':'\u2913','DownArrowUpArrow':'\u21F5','DownBreve':'\u0311','downdownarrows':'\u21CA','downharpoonleft':'\u21C3','downharpoonright':'\u21C2','DownLeftRightVector':'\u2950','DownLeftTeeVector':'\u295E','DownLeftVector':'\u21BD','DownLeftVectorBar':'\u2956','DownRightTeeVector':'\u295F','DownRightVector':'\u21C1','DownRightVectorBar':'\u2957','DownTee':'\u22A4','DownTeeArrow':'\u21A7','drbkarow':'\u2910','drcorn':'\u231F','drcrop':'\u230C','dscr':'\uD835\uDCB9','Dscr':'\uD835\uDC9F','dscy':'\u0455','DScy':'\u0405','dsol':'\u29F6','dstrok':'\u0111','Dstrok':'\u0110','dtdot':'\u22F1','dtri':'\u25BF','dtrif':'\u25BE','duarr':'\u21F5','duhar':'\u296F','dwangle':'\u29A6','dzcy':'\u045F','DZcy':'\u040F','dzigrarr':'\u27FF','eacute':'\xE9','Eacute':'\xC9','easter':'\u2A6E','ecaron':'\u011B','Ecaron':'\u011A','ecir':'\u2256','ecirc':'\xEA','Ecirc':'\xCA','ecolon':'\u2255','ecy':'\u044D','Ecy':'\u042D','eDDot':'\u2A77','edot':'\u0117','eDot':'\u2251','Edot':'\u0116','ee':'\u2147','efDot':'\u2252','efr':'\uD835\uDD22','Efr':'\uD835\uDD08','eg':'\u2A9A','egrave':'\xE8','Egrave':'\xC8','egs':'\u2A96','egsdot':'\u2A98','el':'\u2A99','Element':'\u2208','elinters':'\u23E7','ell':'\u2113','els':'\u2A95','elsdot':'\u2A97','emacr':'\u0113','Emacr':'\u0112','empty':'\u2205','emptyset':'\u2205','EmptySmallSquare':'\u25FB','emptyv':'\u2205','EmptyVerySmallSquare':'\u25AB','emsp':'\u2003','emsp13':'\u2004','emsp14':'\u2005','eng':'\u014B','ENG':'\u014A','ensp':'\u2002','eogon':'\u0119','Eogon':'\u0118','eopf':'\uD835\uDD56','Eopf':'\uD835\uDD3C','epar':'\u22D5','eparsl':'\u29E3','eplus':'\u2A71','epsi':'\u03B5','epsilon':'\u03B5','Epsilon':'\u0395','epsiv':'\u03F5','eqcirc':'\u2256','eqcolon':'\u2255','eqsim':'\u2242','eqslantgtr':'\u2A96','eqslantless':'\u2A95','Equal':'\u2A75','equals':'=','EqualTilde':'\u2242','equest':'\u225F','Equilibrium':'\u21CC','equiv':'\u2261','equivDD':'\u2A78','eqvparsl':'\u29E5','erarr':'\u2971','erDot':'\u2253','escr':'\u212F','Escr':'\u2130','esdot':'\u2250','esim':'\u2242','Esim':'\u2A73','eta':'\u03B7','Eta':'\u0397','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','euro':'\u20AC','excl':'!','exist':'\u2203','Exists':'\u2203','expectation':'\u2130','exponentiale':'\u2147','ExponentialE':'\u2147','fallingdotseq':'\u2252','fcy':'\u0444','Fcy':'\u0424','female':'\u2640','ffilig':'\uFB03','fflig':'\uFB00','ffllig':'\uFB04','ffr':'\uD835\uDD23','Ffr':'\uD835\uDD09','filig':'\uFB01','FilledSmallSquare':'\u25FC','FilledVerySmallSquare':'\u25AA','fjlig':'fj','flat':'\u266D','fllig':'\uFB02','fltns':'\u25B1','fnof':'\u0192','fopf':'\uD835\uDD57','Fopf':'\uD835\uDD3D','forall':'\u2200','ForAll':'\u2200','fork':'\u22D4','forkv':'\u2AD9','Fouriertrf':'\u2131','fpartint':'\u2A0D','frac12':'\xBD','frac13':'\u2153','frac14':'\xBC','frac15':'\u2155','frac16':'\u2159','frac18':'\u215B','frac23':'\u2154','frac25':'\u2156','frac34':'\xBE','frac35':'\u2157','frac38':'\u215C','frac45':'\u2158','frac56':'\u215A','frac58':'\u215D','frac78':'\u215E','frasl':'\u2044','frown':'\u2322','fscr':'\uD835\uDCBB','Fscr':'\u2131','gacute':'\u01F5','gamma':'\u03B3','Gamma':'\u0393','gammad':'\u03DD','Gammad':'\u03DC','gap':'\u2A86','gbreve':'\u011F','Gbreve':'\u011E','Gcedil':'\u0122','gcirc':'\u011D','Gcirc':'\u011C','gcy':'\u0433','Gcy':'\u0413','gdot':'\u0121','Gdot':'\u0120','ge':'\u2265','gE':'\u2267','gel':'\u22DB','gEl':'\u2A8C','geq':'\u2265','geqq':'\u2267','geqslant':'\u2A7E','ges':'\u2A7E','gescc':'\u2AA9','gesdot':'\u2A80','gesdoto':'\u2A82','gesdotol':'\u2A84','gesl':'\u22DB\uFE00','gesles':'\u2A94','gfr':'\uD835\uDD24','Gfr':'\uD835\uDD0A','gg':'\u226B','Gg':'\u22D9','ggg':'\u22D9','gimel':'\u2137','gjcy':'\u0453','GJcy':'\u0403','gl':'\u2277','gla':'\u2AA5','glE':'\u2A92','glj':'\u2AA4','gnap':'\u2A8A','gnapprox':'\u2A8A','gne':'\u2A88','gnE':'\u2269','gneq':'\u2A88','gneqq':'\u2269','gnsim':'\u22E7','gopf':'\uD835\uDD58','Gopf':'\uD835\uDD3E','grave':'`','GreaterEqual':'\u2265','GreaterEqualLess':'\u22DB','GreaterFullEqual':'\u2267','GreaterGreater':'\u2AA2','GreaterLess':'\u2277','GreaterSlantEqual':'\u2A7E','GreaterTilde':'\u2273','gscr':'\u210A','Gscr':'\uD835\uDCA2','gsim':'\u2273','gsime':'\u2A8E','gsiml':'\u2A90','gt':'>','Gt':'\u226B','GT':'>','gtcc':'\u2AA7','gtcir':'\u2A7A','gtdot':'\u22D7','gtlPar':'\u2995','gtquest':'\u2A7C','gtrapprox':'\u2A86','gtrarr':'\u2978','gtrdot':'\u22D7','gtreqless':'\u22DB','gtreqqless':'\u2A8C','gtrless':'\u2277','gtrsim':'\u2273','gvertneqq':'\u2269\uFE00','gvnE':'\u2269\uFE00','Hacek':'\u02C7','hairsp':'\u200A','half':'\xBD','hamilt':'\u210B','hardcy':'\u044A','HARDcy':'\u042A','harr':'\u2194','hArr':'\u21D4','harrcir':'\u2948','harrw':'\u21AD','Hat':'^','hbar':'\u210F','hcirc':'\u0125','Hcirc':'\u0124','hearts':'\u2665','heartsuit':'\u2665','hellip':'\u2026','hercon':'\u22B9','hfr':'\uD835\uDD25','Hfr':'\u210C','HilbertSpace':'\u210B','hksearow':'\u2925','hkswarow':'\u2926','hoarr':'\u21FF','homtht':'\u223B','hookleftarrow':'\u21A9','hookrightarrow':'\u21AA','hopf':'\uD835\uDD59','Hopf':'\u210D','horbar':'\u2015','HorizontalLine':'\u2500','hscr':'\uD835\uDCBD','Hscr':'\u210B','hslash':'\u210F','hstrok':'\u0127','Hstrok':'\u0126','HumpDownHump':'\u224E','HumpEqual':'\u224F','hybull':'\u2043','hyphen':'\u2010','iacute':'\xED','Iacute':'\xCD','ic':'\u2063','icirc':'\xEE','Icirc':'\xCE','icy':'\u0438','Icy':'\u0418','Idot':'\u0130','iecy':'\u0435','IEcy':'\u0415','iexcl':'\xA1','iff':'\u21D4','ifr':'\uD835\uDD26','Ifr':'\u2111','igrave':'\xEC','Igrave':'\xCC','ii':'\u2148','iiiint':'\u2A0C','iiint':'\u222D','iinfin':'\u29DC','iiota':'\u2129','ijlig':'\u0133','IJlig':'\u0132','Im':'\u2111','imacr':'\u012B','Imacr':'\u012A','image':'\u2111','ImaginaryI':'\u2148','imagline':'\u2110','imagpart':'\u2111','imath':'\u0131','imof':'\u22B7','imped':'\u01B5','Implies':'\u21D2','in':'\u2208','incare':'\u2105','infin':'\u221E','infintie':'\u29DD','inodot':'\u0131','int':'\u222B','Int':'\u222C','intcal':'\u22BA','integers':'\u2124','Integral':'\u222B','intercal':'\u22BA','Intersection':'\u22C2','intlarhk':'\u2A17','intprod':'\u2A3C','InvisibleComma':'\u2063','InvisibleTimes':'\u2062','iocy':'\u0451','IOcy':'\u0401','iogon':'\u012F','Iogon':'\u012E','iopf':'\uD835\uDD5A','Iopf':'\uD835\uDD40','iota':'\u03B9','Iota':'\u0399','iprod':'\u2A3C','iquest':'\xBF','iscr':'\uD835\uDCBE','Iscr':'\u2110','isin':'\u2208','isindot':'\u22F5','isinE':'\u22F9','isins':'\u22F4','isinsv':'\u22F3','isinv':'\u2208','it':'\u2062','itilde':'\u0129','Itilde':'\u0128','iukcy':'\u0456','Iukcy':'\u0406','iuml':'\xEF','Iuml':'\xCF','jcirc':'\u0135','Jcirc':'\u0134','jcy':'\u0439','Jcy':'\u0419','jfr':'\uD835\uDD27','Jfr':'\uD835\uDD0D','jmath':'\u0237','jopf':'\uD835\uDD5B','Jopf':'\uD835\uDD41','jscr':'\uD835\uDCBF','Jscr':'\uD835\uDCA5','jsercy':'\u0458','Jsercy':'\u0408','jukcy':'\u0454','Jukcy':'\u0404','kappa':'\u03BA','Kappa':'\u039A','kappav':'\u03F0','kcedil':'\u0137','Kcedil':'\u0136','kcy':'\u043A','Kcy':'\u041A','kfr':'\uD835\uDD28','Kfr':'\uD835\uDD0E','kgreen':'\u0138','khcy':'\u0445','KHcy':'\u0425','kjcy':'\u045C','KJcy':'\u040C','kopf':'\uD835\uDD5C','Kopf':'\uD835\uDD42','kscr':'\uD835\uDCC0','Kscr':'\uD835\uDCA6','lAarr':'\u21DA','lacute':'\u013A','Lacute':'\u0139','laemptyv':'\u29B4','lagran':'\u2112','lambda':'\u03BB','Lambda':'\u039B','lang':'\u27E8','Lang':'\u27EA','langd':'\u2991','langle':'\u27E8','lap':'\u2A85','Laplacetrf':'\u2112','laquo':'\xAB','larr':'\u2190','lArr':'\u21D0','Larr':'\u219E','larrb':'\u21E4','larrbfs':'\u291F','larrfs':'\u291D','larrhk':'\u21A9','larrlp':'\u21AB','larrpl':'\u2939','larrsim':'\u2973','larrtl':'\u21A2','lat':'\u2AAB','latail':'\u2919','lAtail':'\u291B','late':'\u2AAD','lates':'\u2AAD\uFE00','lbarr':'\u290C','lBarr':'\u290E','lbbrk':'\u2772','lbrace':'{','lbrack':'[','lbrke':'\u298B','lbrksld':'\u298F','lbrkslu':'\u298D','lcaron':'\u013E','Lcaron':'\u013D','lcedil':'\u013C','Lcedil':'\u013B','lceil':'\u2308','lcub':'{','lcy':'\u043B','Lcy':'\u041B','ldca':'\u2936','ldquo':'\u201C','ldquor':'\u201E','ldrdhar':'\u2967','ldrushar':'\u294B','ldsh':'\u21B2','le':'\u2264','lE':'\u2266','LeftAngleBracket':'\u27E8','leftarrow':'\u2190','Leftarrow':'\u21D0','LeftArrow':'\u2190','LeftArrowBar':'\u21E4','LeftArrowRightArrow':'\u21C6','leftarrowtail':'\u21A2','LeftCeiling':'\u2308','LeftDoubleBracket':'\u27E6','LeftDownTeeVector':'\u2961','LeftDownVector':'\u21C3','LeftDownVectorBar':'\u2959','LeftFloor':'\u230A','leftharpoondown':'\u21BD','leftharpoonup':'\u21BC','leftleftarrows':'\u21C7','leftrightarrow':'\u2194','Leftrightarrow':'\u21D4','LeftRightArrow':'\u2194','leftrightarrows':'\u21C6','leftrightharpoons':'\u21CB','leftrightsquigarrow':'\u21AD','LeftRightVector':'\u294E','LeftTee':'\u22A3','LeftTeeArrow':'\u21A4','LeftTeeVector':'\u295A','leftthreetimes':'\u22CB','LeftTriangle':'\u22B2','LeftTriangleBar':'\u29CF','LeftTriangleEqual':'\u22B4','LeftUpDownVector':'\u2951','LeftUpTeeVector':'\u2960','LeftUpVector':'\u21BF','LeftUpVectorBar':'\u2958','LeftVector':'\u21BC','LeftVectorBar':'\u2952','leg':'\u22DA','lEg':'\u2A8B','leq':'\u2264','leqq':'\u2266','leqslant':'\u2A7D','les':'\u2A7D','lescc':'\u2AA8','lesdot':'\u2A7F','lesdoto':'\u2A81','lesdotor':'\u2A83','lesg':'\u22DA\uFE00','lesges':'\u2A93','lessapprox':'\u2A85','lessdot':'\u22D6','lesseqgtr':'\u22DA','lesseqqgtr':'\u2A8B','LessEqualGreater':'\u22DA','LessFullEqual':'\u2266','LessGreater':'\u2276','lessgtr':'\u2276','LessLess':'\u2AA1','lesssim':'\u2272','LessSlantEqual':'\u2A7D','LessTilde':'\u2272','lfisht':'\u297C','lfloor':'\u230A','lfr':'\uD835\uDD29','Lfr':'\uD835\uDD0F','lg':'\u2276','lgE':'\u2A91','lHar':'\u2962','lhard':'\u21BD','lharu':'\u21BC','lharul':'\u296A','lhblk':'\u2584','ljcy':'\u0459','LJcy':'\u0409','ll':'\u226A','Ll':'\u22D8','llarr':'\u21C7','llcorner':'\u231E','Lleftarrow':'\u21DA','llhard':'\u296B','lltri':'\u25FA','lmidot':'\u0140','Lmidot':'\u013F','lmoust':'\u23B0','lmoustache':'\u23B0','lnap':'\u2A89','lnapprox':'\u2A89','lne':'\u2A87','lnE':'\u2268','lneq':'\u2A87','lneqq':'\u2268','lnsim':'\u22E6','loang':'\u27EC','loarr':'\u21FD','lobrk':'\u27E6','longleftarrow':'\u27F5','Longleftarrow':'\u27F8','LongLeftArrow':'\u27F5','longleftrightarrow':'\u27F7','Longleftrightarrow':'\u27FA','LongLeftRightArrow':'\u27F7','longmapsto':'\u27FC','longrightarrow':'\u27F6','Longrightarrow':'\u27F9','LongRightArrow':'\u27F6','looparrowleft':'\u21AB','looparrowright':'\u21AC','lopar':'\u2985','lopf':'\uD835\uDD5D','Lopf':'\uD835\uDD43','loplus':'\u2A2D','lotimes':'\u2A34','lowast':'\u2217','lowbar':'_','LowerLeftArrow':'\u2199','LowerRightArrow':'\u2198','loz':'\u25CA','lozenge':'\u25CA','lozf':'\u29EB','lpar':'(','lparlt':'\u2993','lrarr':'\u21C6','lrcorner':'\u231F','lrhar':'\u21CB','lrhard':'\u296D','lrm':'\u200E','lrtri':'\u22BF','lsaquo':'\u2039','lscr':'\uD835\uDCC1','Lscr':'\u2112','lsh':'\u21B0','Lsh':'\u21B0','lsim':'\u2272','lsime':'\u2A8D','lsimg':'\u2A8F','lsqb':'[','lsquo':'\u2018','lsquor':'\u201A','lstrok':'\u0142','Lstrok':'\u0141','lt':'<','Lt':'\u226A','LT':'<','ltcc':'\u2AA6','ltcir':'\u2A79','ltdot':'\u22D6','lthree':'\u22CB','ltimes':'\u22C9','ltlarr':'\u2976','ltquest':'\u2A7B','ltri':'\u25C3','ltrie':'\u22B4','ltrif':'\u25C2','ltrPar':'\u2996','lurdshar':'\u294A','luruhar':'\u2966','lvertneqq':'\u2268\uFE00','lvnE':'\u2268\uFE00','macr':'\xAF','male':'\u2642','malt':'\u2720','maltese':'\u2720','map':'\u21A6','Map':'\u2905','mapsto':'\u21A6','mapstodown':'\u21A7','mapstoleft':'\u21A4','mapstoup':'\u21A5','marker':'\u25AE','mcomma':'\u2A29','mcy':'\u043C','Mcy':'\u041C','mdash':'\u2014','mDDot':'\u223A','measuredangle':'\u2221','MediumSpace':'\u205F','Mellintrf':'\u2133','mfr':'\uD835\uDD2A','Mfr':'\uD835\uDD10','mho':'\u2127','micro':'\xB5','mid':'\u2223','midast':'*','midcir':'\u2AF0','middot':'\xB7','minus':'\u2212','minusb':'\u229F','minusd':'\u2238','minusdu':'\u2A2A','MinusPlus':'\u2213','mlcp':'\u2ADB','mldr':'\u2026','mnplus':'\u2213','models':'\u22A7','mopf':'\uD835\uDD5E','Mopf':'\uD835\uDD44','mp':'\u2213','mscr':'\uD835\uDCC2','Mscr':'\u2133','mstpos':'\u223E','mu':'\u03BC','Mu':'\u039C','multimap':'\u22B8','mumap':'\u22B8','nabla':'\u2207','nacute':'\u0144','Nacute':'\u0143','nang':'\u2220\u20D2','nap':'\u2249','napE':'\u2A70\u0338','napid':'\u224B\u0338','napos':'\u0149','napprox':'\u2249','natur':'\u266E','natural':'\u266E','naturals':'\u2115','nbsp':'\xA0','nbump':'\u224E\u0338','nbumpe':'\u224F\u0338','ncap':'\u2A43','ncaron':'\u0148','Ncaron':'\u0147','ncedil':'\u0146','Ncedil':'\u0145','ncong':'\u2247','ncongdot':'\u2A6D\u0338','ncup':'\u2A42','ncy':'\u043D','Ncy':'\u041D','ndash':'\u2013','ne':'\u2260','nearhk':'\u2924','nearr':'\u2197','neArr':'\u21D7','nearrow':'\u2197','nedot':'\u2250\u0338','NegativeMediumSpace':'\u200B','NegativeThickSpace':'\u200B','NegativeThinSpace':'\u200B','NegativeVeryThinSpace':'\u200B','nequiv':'\u2262','nesear':'\u2928','nesim':'\u2242\u0338','NestedGreaterGreater':'\u226B','NestedLessLess':'\u226A','NewLine':'\n','nexist':'\u2204','nexists':'\u2204','nfr':'\uD835\uDD2B','Nfr':'\uD835\uDD11','nge':'\u2271','ngE':'\u2267\u0338','ngeq':'\u2271','ngeqq':'\u2267\u0338','ngeqslant':'\u2A7E\u0338','nges':'\u2A7E\u0338','nGg':'\u22D9\u0338','ngsim':'\u2275','ngt':'\u226F','nGt':'\u226B\u20D2','ngtr':'\u226F','nGtv':'\u226B\u0338','nharr':'\u21AE','nhArr':'\u21CE','nhpar':'\u2AF2','ni':'\u220B','nis':'\u22FC','nisd':'\u22FA','niv':'\u220B','njcy':'\u045A','NJcy':'\u040A','nlarr':'\u219A','nlArr':'\u21CD','nldr':'\u2025','nle':'\u2270','nlE':'\u2266\u0338','nleftarrow':'\u219A','nLeftarrow':'\u21CD','nleftrightarrow':'\u21AE','nLeftrightarrow':'\u21CE','nleq':'\u2270','nleqq':'\u2266\u0338','nleqslant':'\u2A7D\u0338','nles':'\u2A7D\u0338','nless':'\u226E','nLl':'\u22D8\u0338','nlsim':'\u2274','nlt':'\u226E','nLt':'\u226A\u20D2','nltri':'\u22EA','nltrie':'\u22EC','nLtv':'\u226A\u0338','nmid':'\u2224','NoBreak':'\u2060','NonBreakingSpace':'\xA0','nopf':'\uD835\uDD5F','Nopf':'\u2115','not':'\xAC','Not':'\u2AEC','NotCongruent':'\u2262','NotCupCap':'\u226D','NotDoubleVerticalBar':'\u2226','NotElement':'\u2209','NotEqual':'\u2260','NotEqualTilde':'\u2242\u0338','NotExists':'\u2204','NotGreater':'\u226F','NotGreaterEqual':'\u2271','NotGreaterFullEqual':'\u2267\u0338','NotGreaterGreater':'\u226B\u0338','NotGreaterLess':'\u2279','NotGreaterSlantEqual':'\u2A7E\u0338','NotGreaterTilde':'\u2275','NotHumpDownHump':'\u224E\u0338','NotHumpEqual':'\u224F\u0338','notin':'\u2209','notindot':'\u22F5\u0338','notinE':'\u22F9\u0338','notinva':'\u2209','notinvb':'\u22F7','notinvc':'\u22F6','NotLeftTriangle':'\u22EA','NotLeftTriangleBar':'\u29CF\u0338','NotLeftTriangleEqual':'\u22EC','NotLess':'\u226E','NotLessEqual':'\u2270','NotLessGreater':'\u2278','NotLessLess':'\u226A\u0338','NotLessSlantEqual':'\u2A7D\u0338','NotLessTilde':'\u2274','NotNestedGreaterGreater':'\u2AA2\u0338','NotNestedLessLess':'\u2AA1\u0338','notni':'\u220C','notniva':'\u220C','notnivb':'\u22FE','notnivc':'\u22FD','NotPrecedes':'\u2280','NotPrecedesEqual':'\u2AAF\u0338','NotPrecedesSlantEqual':'\u22E0','NotReverseElement':'\u220C','NotRightTriangle':'\u22EB','NotRightTriangleBar':'\u29D0\u0338','NotRightTriangleEqual':'\u22ED','NotSquareSubset':'\u228F\u0338','NotSquareSubsetEqual':'\u22E2','NotSquareSuperset':'\u2290\u0338','NotSquareSupersetEqual':'\u22E3','NotSubset':'\u2282\u20D2','NotSubsetEqual':'\u2288','NotSucceeds':'\u2281','NotSucceedsEqual':'\u2AB0\u0338','NotSucceedsSlantEqual':'\u22E1','NotSucceedsTilde':'\u227F\u0338','NotSuperset':'\u2283\u20D2','NotSupersetEqual':'\u2289','NotTilde':'\u2241','NotTildeEqual':'\u2244','NotTildeFullEqual':'\u2247','NotTildeTilde':'\u2249','NotVerticalBar':'\u2224','npar':'\u2226','nparallel':'\u2226','nparsl':'\u2AFD\u20E5','npart':'\u2202\u0338','npolint':'\u2A14','npr':'\u2280','nprcue':'\u22E0','npre':'\u2AAF\u0338','nprec':'\u2280','npreceq':'\u2AAF\u0338','nrarr':'\u219B','nrArr':'\u21CF','nrarrc':'\u2933\u0338','nrarrw':'\u219D\u0338','nrightarrow':'\u219B','nRightarrow':'\u21CF','nrtri':'\u22EB','nrtrie':'\u22ED','nsc':'\u2281','nsccue':'\u22E1','nsce':'\u2AB0\u0338','nscr':'\uD835\uDCC3','Nscr':'\uD835\uDCA9','nshortmid':'\u2224','nshortparallel':'\u2226','nsim':'\u2241','nsime':'\u2244','nsimeq':'\u2244','nsmid':'\u2224','nspar':'\u2226','nsqsube':'\u22E2','nsqsupe':'\u22E3','nsub':'\u2284','nsube':'\u2288','nsubE':'\u2AC5\u0338','nsubset':'\u2282\u20D2','nsubseteq':'\u2288','nsubseteqq':'\u2AC5\u0338','nsucc':'\u2281','nsucceq':'\u2AB0\u0338','nsup':'\u2285','nsupe':'\u2289','nsupE':'\u2AC6\u0338','nsupset':'\u2283\u20D2','nsupseteq':'\u2289','nsupseteqq':'\u2AC6\u0338','ntgl':'\u2279','ntilde':'\xF1','Ntilde':'\xD1','ntlg':'\u2278','ntriangleleft':'\u22EA','ntrianglelefteq':'\u22EC','ntriangleright':'\u22EB','ntrianglerighteq':'\u22ED','nu':'\u03BD','Nu':'\u039D','num':'#','numero':'\u2116','numsp':'\u2007','nvap':'\u224D\u20D2','nvdash':'\u22AC','nvDash':'\u22AD','nVdash':'\u22AE','nVDash':'\u22AF','nvge':'\u2265\u20D2','nvgt':'>\u20D2','nvHarr':'\u2904','nvinfin':'\u29DE','nvlArr':'\u2902','nvle':'\u2264\u20D2','nvlt':'<\u20D2','nvltrie':'\u22B4\u20D2','nvrArr':'\u2903','nvrtrie':'\u22B5\u20D2','nvsim':'\u223C\u20D2','nwarhk':'\u2923','nwarr':'\u2196','nwArr':'\u21D6','nwarrow':'\u2196','nwnear':'\u2927','oacute':'\xF3','Oacute':'\xD3','oast':'\u229B','ocir':'\u229A','ocirc':'\xF4','Ocirc':'\xD4','ocy':'\u043E','Ocy':'\u041E','odash':'\u229D','odblac':'\u0151','Odblac':'\u0150','odiv':'\u2A38','odot':'\u2299','odsold':'\u29BC','oelig':'\u0153','OElig':'\u0152','ofcir':'\u29BF','ofr':'\uD835\uDD2C','Ofr':'\uD835\uDD12','ogon':'\u02DB','ograve':'\xF2','Ograve':'\xD2','ogt':'\u29C1','ohbar':'\u29B5','ohm':'\u03A9','oint':'\u222E','olarr':'\u21BA','olcir':'\u29BE','olcross':'\u29BB','oline':'\u203E','olt':'\u29C0','omacr':'\u014D','Omacr':'\u014C','omega':'\u03C9','Omega':'\u03A9','omicron':'\u03BF','Omicron':'\u039F','omid':'\u29B6','ominus':'\u2296','oopf':'\uD835\uDD60','Oopf':'\uD835\uDD46','opar':'\u29B7','OpenCurlyDoubleQuote':'\u201C','OpenCurlyQuote':'\u2018','operp':'\u29B9','oplus':'\u2295','or':'\u2228','Or':'\u2A54','orarr':'\u21BB','ord':'\u2A5D','order':'\u2134','orderof':'\u2134','ordf':'\xAA','ordm':'\xBA','origof':'\u22B6','oror':'\u2A56','orslope':'\u2A57','orv':'\u2A5B','oS':'\u24C8','oscr':'\u2134','Oscr':'\uD835\uDCAA','oslash':'\xF8','Oslash':'\xD8','osol':'\u2298','otilde':'\xF5','Otilde':'\xD5','otimes':'\u2297','Otimes':'\u2A37','otimesas':'\u2A36','ouml':'\xF6','Ouml':'\xD6','ovbar':'\u233D','OverBar':'\u203E','OverBrace':'\u23DE','OverBracket':'\u23B4','OverParenthesis':'\u23DC','par':'\u2225','para':'\xB6','parallel':'\u2225','parsim':'\u2AF3','parsl':'\u2AFD','part':'\u2202','PartialD':'\u2202','pcy':'\u043F','Pcy':'\u041F','percnt':'%','period':'.','permil':'\u2030','perp':'\u22A5','pertenk':'\u2031','pfr':'\uD835\uDD2D','Pfr':'\uD835\uDD13','phi':'\u03C6','Phi':'\u03A6','phiv':'\u03D5','phmmat':'\u2133','phone':'\u260E','pi':'\u03C0','Pi':'\u03A0','pitchfork':'\u22D4','piv':'\u03D6','planck':'\u210F','planckh':'\u210E','plankv':'\u210F','plus':'+','plusacir':'\u2A23','plusb':'\u229E','pluscir':'\u2A22','plusdo':'\u2214','plusdu':'\u2A25','pluse':'\u2A72','PlusMinus':'\xB1','plusmn':'\xB1','plussim':'\u2A26','plustwo':'\u2A27','pm':'\xB1','Poincareplane':'\u210C','pointint':'\u2A15','popf':'\uD835\uDD61','Popf':'\u2119','pound':'\xA3','pr':'\u227A','Pr':'\u2ABB','prap':'\u2AB7','prcue':'\u227C','pre':'\u2AAF','prE':'\u2AB3','prec':'\u227A','precapprox':'\u2AB7','preccurlyeq':'\u227C','Precedes':'\u227A','PrecedesEqual':'\u2AAF','PrecedesSlantEqual':'\u227C','PrecedesTilde':'\u227E','preceq':'\u2AAF','precnapprox':'\u2AB9','precneqq':'\u2AB5','precnsim':'\u22E8','precsim':'\u227E','prime':'\u2032','Prime':'\u2033','primes':'\u2119','prnap':'\u2AB9','prnE':'\u2AB5','prnsim':'\u22E8','prod':'\u220F','Product':'\u220F','profalar':'\u232E','profline':'\u2312','profsurf':'\u2313','prop':'\u221D','Proportion':'\u2237','Proportional':'\u221D','propto':'\u221D','prsim':'\u227E','prurel':'\u22B0','pscr':'\uD835\uDCC5','Pscr':'\uD835\uDCAB','psi':'\u03C8','Psi':'\u03A8','puncsp':'\u2008','qfr':'\uD835\uDD2E','Qfr':'\uD835\uDD14','qint':'\u2A0C','qopf':'\uD835\uDD62','Qopf':'\u211A','qprime':'\u2057','qscr':'\uD835\uDCC6','Qscr':'\uD835\uDCAC','quaternions':'\u210D','quatint':'\u2A16','quest':'?','questeq':'\u225F','quot':'"','QUOT':'"','rAarr':'\u21DB','race':'\u223D\u0331','racute':'\u0155','Racute':'\u0154','radic':'\u221A','raemptyv':'\u29B3','rang':'\u27E9','Rang':'\u27EB','rangd':'\u2992','range':'\u29A5','rangle':'\u27E9','raquo':'\xBB','rarr':'\u2192','rArr':'\u21D2','Rarr':'\u21A0','rarrap':'\u2975','rarrb':'\u21E5','rarrbfs':'\u2920','rarrc':'\u2933','rarrfs':'\u291E','rarrhk':'\u21AA','rarrlp':'\u21AC','rarrpl':'\u2945','rarrsim':'\u2974','rarrtl':'\u21A3','Rarrtl':'\u2916','rarrw':'\u219D','ratail':'\u291A','rAtail':'\u291C','ratio':'\u2236','rationals':'\u211A','rbarr':'\u290D','rBarr':'\u290F','RBarr':'\u2910','rbbrk':'\u2773','rbrace':'}','rbrack':']','rbrke':'\u298C','rbrksld':'\u298E','rbrkslu':'\u2990','rcaron':'\u0159','Rcaron':'\u0158','rcedil':'\u0157','Rcedil':'\u0156','rceil':'\u2309','rcub':'}','rcy':'\u0440','Rcy':'\u0420','rdca':'\u2937','rdldhar':'\u2969','rdquo':'\u201D','rdquor':'\u201D','rdsh':'\u21B3','Re':'\u211C','real':'\u211C','realine':'\u211B','realpart':'\u211C','reals':'\u211D','rect':'\u25AD','reg':'\xAE','REG':'\xAE','ReverseElement':'\u220B','ReverseEquilibrium':'\u21CB','ReverseUpEquilibrium':'\u296F','rfisht':'\u297D','rfloor':'\u230B','rfr':'\uD835\uDD2F','Rfr':'\u211C','rHar':'\u2964','rhard':'\u21C1','rharu':'\u21C0','rharul':'\u296C','rho':'\u03C1','Rho':'\u03A1','rhov':'\u03F1','RightAngleBracket':'\u27E9','rightarrow':'\u2192','Rightarrow':'\u21D2','RightArrow':'\u2192','RightArrowBar':'\u21E5','RightArrowLeftArrow':'\u21C4','rightarrowtail':'\u21A3','RightCeiling':'\u2309','RightDoubleBracket':'\u27E7','RightDownTeeVector':'\u295D','RightDownVector':'\u21C2','RightDownVectorBar':'\u2955','RightFloor':'\u230B','rightharpoondown':'\u21C1','rightharpoonup':'\u21C0','rightleftarrows':'\u21C4','rightleftharpoons':'\u21CC','rightrightarrows':'\u21C9','rightsquigarrow':'\u219D','RightTee':'\u22A2','RightTeeArrow':'\u21A6','RightTeeVector':'\u295B','rightthreetimes':'\u22CC','RightTriangle':'\u22B3','RightTriangleBar':'\u29D0','RightTriangleEqual':'\u22B5','RightUpDownVector':'\u294F','RightUpTeeVector':'\u295C','RightUpVector':'\u21BE','RightUpVectorBar':'\u2954','RightVector':'\u21C0','RightVectorBar':'\u2953','ring':'\u02DA','risingdotseq':'\u2253','rlarr':'\u21C4','rlhar':'\u21CC','rlm':'\u200F','rmoust':'\u23B1','rmoustache':'\u23B1','rnmid':'\u2AEE','roang':'\u27ED','roarr':'\u21FE','robrk':'\u27E7','ropar':'\u2986','ropf':'\uD835\uDD63','Ropf':'\u211D','roplus':'\u2A2E','rotimes':'\u2A35','RoundImplies':'\u2970','rpar':')','rpargt':'\u2994','rppolint':'\u2A12','rrarr':'\u21C9','Rrightarrow':'\u21DB','rsaquo':'\u203A','rscr':'\uD835\uDCC7','Rscr':'\u211B','rsh':'\u21B1','Rsh':'\u21B1','rsqb':']','rsquo':'\u2019','rsquor':'\u2019','rthree':'\u22CC','rtimes':'\u22CA','rtri':'\u25B9','rtrie':'\u22B5','rtrif':'\u25B8','rtriltri':'\u29CE','RuleDelayed':'\u29F4','ruluhar':'\u2968','rx':'\u211E','sacute':'\u015B','Sacute':'\u015A','sbquo':'\u201A','sc':'\u227B','Sc':'\u2ABC','scap':'\u2AB8','scaron':'\u0161','Scaron':'\u0160','sccue':'\u227D','sce':'\u2AB0','scE':'\u2AB4','scedil':'\u015F','Scedil':'\u015E','scirc':'\u015D','Scirc':'\u015C','scnap':'\u2ABA','scnE':'\u2AB6','scnsim':'\u22E9','scpolint':'\u2A13','scsim':'\u227F','scy':'\u0441','Scy':'\u0421','sdot':'\u22C5','sdotb':'\u22A1','sdote':'\u2A66','searhk':'\u2925','searr':'\u2198','seArr':'\u21D8','searrow':'\u2198','sect':'\xA7','semi':';','seswar':'\u2929','setminus':'\u2216','setmn':'\u2216','sext':'\u2736','sfr':'\uD835\uDD30','Sfr':'\uD835\uDD16','sfrown':'\u2322','sharp':'\u266F','shchcy':'\u0449','SHCHcy':'\u0429','shcy':'\u0448','SHcy':'\u0428','ShortDownArrow':'\u2193','ShortLeftArrow':'\u2190','shortmid':'\u2223','shortparallel':'\u2225','ShortRightArrow':'\u2192','ShortUpArrow':'\u2191','shy':'\xAD','sigma':'\u03C3','Sigma':'\u03A3','sigmaf':'\u03C2','sigmav':'\u03C2','sim':'\u223C','simdot':'\u2A6A','sime':'\u2243','simeq':'\u2243','simg':'\u2A9E','simgE':'\u2AA0','siml':'\u2A9D','simlE':'\u2A9F','simne':'\u2246','simplus':'\u2A24','simrarr':'\u2972','slarr':'\u2190','SmallCircle':'\u2218','smallsetminus':'\u2216','smashp':'\u2A33','smeparsl':'\u29E4','smid':'\u2223','smile':'\u2323','smt':'\u2AAA','smte':'\u2AAC','smtes':'\u2AAC\uFE00','softcy':'\u044C','SOFTcy':'\u042C','sol':'/','solb':'\u29C4','solbar':'\u233F','sopf':'\uD835\uDD64','Sopf':'\uD835\uDD4A','spades':'\u2660','spadesuit':'\u2660','spar':'\u2225','sqcap':'\u2293','sqcaps':'\u2293\uFE00','sqcup':'\u2294','sqcups':'\u2294\uFE00','Sqrt':'\u221A','sqsub':'\u228F','sqsube':'\u2291','sqsubset':'\u228F','sqsubseteq':'\u2291','sqsup':'\u2290','sqsupe':'\u2292','sqsupset':'\u2290','sqsupseteq':'\u2292','squ':'\u25A1','square':'\u25A1','Square':'\u25A1','SquareIntersection':'\u2293','SquareSubset':'\u228F','SquareSubsetEqual':'\u2291','SquareSuperset':'\u2290','SquareSupersetEqual':'\u2292','SquareUnion':'\u2294','squarf':'\u25AA','squf':'\u25AA','srarr':'\u2192','sscr':'\uD835\uDCC8','Sscr':'\uD835\uDCAE','ssetmn':'\u2216','ssmile':'\u2323','sstarf':'\u22C6','star':'\u2606','Star':'\u22C6','starf':'\u2605','straightepsilon':'\u03F5','straightphi':'\u03D5','strns':'\xAF','sub':'\u2282','Sub':'\u22D0','subdot':'\u2ABD','sube':'\u2286','subE':'\u2AC5','subedot':'\u2AC3','submult':'\u2AC1','subne':'\u228A','subnE':'\u2ACB','subplus':'\u2ABF','subrarr':'\u2979','subset':'\u2282','Subset':'\u22D0','subseteq':'\u2286','subseteqq':'\u2AC5','SubsetEqual':'\u2286','subsetneq':'\u228A','subsetneqq':'\u2ACB','subsim':'\u2AC7','subsub':'\u2AD5','subsup':'\u2AD3','succ':'\u227B','succapprox':'\u2AB8','succcurlyeq':'\u227D','Succeeds':'\u227B','SucceedsEqual':'\u2AB0','SucceedsSlantEqual':'\u227D','SucceedsTilde':'\u227F','succeq':'\u2AB0','succnapprox':'\u2ABA','succneqq':'\u2AB6','succnsim':'\u22E9','succsim':'\u227F','SuchThat':'\u220B','sum':'\u2211','Sum':'\u2211','sung':'\u266A','sup':'\u2283','Sup':'\u22D1','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','supdot':'\u2ABE','supdsub':'\u2AD8','supe':'\u2287','supE':'\u2AC6','supedot':'\u2AC4','Superset':'\u2283','SupersetEqual':'\u2287','suphsol':'\u27C9','suphsub':'\u2AD7','suplarr':'\u297B','supmult':'\u2AC2','supne':'\u228B','supnE':'\u2ACC','supplus':'\u2AC0','supset':'\u2283','Supset':'\u22D1','supseteq':'\u2287','supseteqq':'\u2AC6','supsetneq':'\u228B','supsetneqq':'\u2ACC','supsim':'\u2AC8','supsub':'\u2AD4','supsup':'\u2AD6','swarhk':'\u2926','swarr':'\u2199','swArr':'\u21D9','swarrow':'\u2199','swnwar':'\u292A','szlig':'\xDF','Tab':'\t','target':'\u2316','tau':'\u03C4','Tau':'\u03A4','tbrk':'\u23B4','tcaron':'\u0165','Tcaron':'\u0164','tcedil':'\u0163','Tcedil':'\u0162','tcy':'\u0442','Tcy':'\u0422','tdot':'\u20DB','telrec':'\u2315','tfr':'\uD835\uDD31','Tfr':'\uD835\uDD17','there4':'\u2234','therefore':'\u2234','Therefore':'\u2234','theta':'\u03B8','Theta':'\u0398','thetasym':'\u03D1','thetav':'\u03D1','thickapprox':'\u2248','thicksim':'\u223C','ThickSpace':'\u205F\u200A','thinsp':'\u2009','ThinSpace':'\u2009','thkap':'\u2248','thksim':'\u223C','thorn':'\xFE','THORN':'\xDE','tilde':'\u02DC','Tilde':'\u223C','TildeEqual':'\u2243','TildeFullEqual':'\u2245','TildeTilde':'\u2248','times':'\xD7','timesb':'\u22A0','timesbar':'\u2A31','timesd':'\u2A30','tint':'\u222D','toea':'\u2928','top':'\u22A4','topbot':'\u2336','topcir':'\u2AF1','topf':'\uD835\uDD65','Topf':'\uD835\uDD4B','topfork':'\u2ADA','tosa':'\u2929','tprime':'\u2034','trade':'\u2122','TRADE':'\u2122','triangle':'\u25B5','triangledown':'\u25BF','triangleleft':'\u25C3','trianglelefteq':'\u22B4','triangleq':'\u225C','triangleright':'\u25B9','trianglerighteq':'\u22B5','tridot':'\u25EC','trie':'\u225C','triminus':'\u2A3A','TripleDot':'\u20DB','triplus':'\u2A39','trisb':'\u29CD','tritime':'\u2A3B','trpezium':'\u23E2','tscr':'\uD835\uDCC9','Tscr':'\uD835\uDCAF','tscy':'\u0446','TScy':'\u0426','tshcy':'\u045B','TSHcy':'\u040B','tstrok':'\u0167','Tstrok':'\u0166','twixt':'\u226C','twoheadleftarrow':'\u219E','twoheadrightarrow':'\u21A0','uacute':'\xFA','Uacute':'\xDA','uarr':'\u2191','uArr':'\u21D1','Uarr':'\u219F','Uarrocir':'\u2949','ubrcy':'\u045E','Ubrcy':'\u040E','ubreve':'\u016D','Ubreve':'\u016C','ucirc':'\xFB','Ucirc':'\xDB','ucy':'\u0443','Ucy':'\u0423','udarr':'\u21C5','udblac':'\u0171','Udblac':'\u0170','udhar':'\u296E','ufisht':'\u297E','ufr':'\uD835\uDD32','Ufr':'\uD835\uDD18','ugrave':'\xF9','Ugrave':'\xD9','uHar':'\u2963','uharl':'\u21BF','uharr':'\u21BE','uhblk':'\u2580','ulcorn':'\u231C','ulcorner':'\u231C','ulcrop':'\u230F','ultri':'\u25F8','umacr':'\u016B','Umacr':'\u016A','uml':'\xA8','UnderBar':'_','UnderBrace':'\u23DF','UnderBracket':'\u23B5','UnderParenthesis':'\u23DD','Union':'\u22C3','UnionPlus':'\u228E','uogon':'\u0173','Uogon':'\u0172','uopf':'\uD835\uDD66','Uopf':'\uD835\uDD4C','uparrow':'\u2191','Uparrow':'\u21D1','UpArrow':'\u2191','UpArrowBar':'\u2912','UpArrowDownArrow':'\u21C5','updownarrow':'\u2195','Updownarrow':'\u21D5','UpDownArrow':'\u2195','UpEquilibrium':'\u296E','upharpoonleft':'\u21BF','upharpoonright':'\u21BE','uplus':'\u228E','UpperLeftArrow':'\u2196','UpperRightArrow':'\u2197','upsi':'\u03C5','Upsi':'\u03D2','upsih':'\u03D2','upsilon':'\u03C5','Upsilon':'\u03A5','UpTee':'\u22A5','UpTeeArrow':'\u21A5','upuparrows':'\u21C8','urcorn':'\u231D','urcorner':'\u231D','urcrop':'\u230E','uring':'\u016F','Uring':'\u016E','urtri':'\u25F9','uscr':'\uD835\uDCCA','Uscr':'\uD835\uDCB0','utdot':'\u22F0','utilde':'\u0169','Utilde':'\u0168','utri':'\u25B5','utrif':'\u25B4','uuarr':'\u21C8','uuml':'\xFC','Uuml':'\xDC','uwangle':'\u29A7','vangrt':'\u299C','varepsilon':'\u03F5','varkappa':'\u03F0','varnothing':'\u2205','varphi':'\u03D5','varpi':'\u03D6','varpropto':'\u221D','varr':'\u2195','vArr':'\u21D5','varrho':'\u03F1','varsigma':'\u03C2','varsubsetneq':'\u228A\uFE00','varsubsetneqq':'\u2ACB\uFE00','varsupsetneq':'\u228B\uFE00','varsupsetneqq':'\u2ACC\uFE00','vartheta':'\u03D1','vartriangleleft':'\u22B2','vartriangleright':'\u22B3','vBar':'\u2AE8','Vbar':'\u2AEB','vBarv':'\u2AE9','vcy':'\u0432','Vcy':'\u0412','vdash':'\u22A2','vDash':'\u22A8','Vdash':'\u22A9','VDash':'\u22AB','Vdashl':'\u2AE6','vee':'\u2228','Vee':'\u22C1','veebar':'\u22BB','veeeq':'\u225A','vellip':'\u22EE','verbar':'|','Verbar':'\u2016','vert':'|','Vert':'\u2016','VerticalBar':'\u2223','VerticalLine':'|','VerticalSeparator':'\u2758','VerticalTilde':'\u2240','VeryThinSpace':'\u200A','vfr':'\uD835\uDD33','Vfr':'\uD835\uDD19','vltri':'\u22B2','vnsub':'\u2282\u20D2','vnsup':'\u2283\u20D2','vopf':'\uD835\uDD67','Vopf':'\uD835\uDD4D','vprop':'\u221D','vrtri':'\u22B3','vscr':'\uD835\uDCCB','Vscr':'\uD835\uDCB1','vsubne':'\u228A\uFE00','vsubnE':'\u2ACB\uFE00','vsupne':'\u228B\uFE00','vsupnE':'\u2ACC\uFE00','Vvdash':'\u22AA','vzigzag':'\u299A','wcirc':'\u0175','Wcirc':'\u0174','wedbar':'\u2A5F','wedge':'\u2227','Wedge':'\u22C0','wedgeq':'\u2259','weierp':'\u2118','wfr':'\uD835\uDD34','Wfr':'\uD835\uDD1A','wopf':'\uD835\uDD68','Wopf':'\uD835\uDD4E','wp':'\u2118','wr':'\u2240','wreath':'\u2240','wscr':'\uD835\uDCCC','Wscr':'\uD835\uDCB2','xcap':'\u22C2','xcirc':'\u25EF','xcup':'\u22C3','xdtri':'\u25BD','xfr':'\uD835\uDD35','Xfr':'\uD835\uDD1B','xharr':'\u27F7','xhArr':'\u27FA','xi':'\u03BE','Xi':'\u039E','xlarr':'\u27F5','xlArr':'\u27F8','xmap':'\u27FC','xnis':'\u22FB','xodot':'\u2A00','xopf':'\uD835\uDD69','Xopf':'\uD835\uDD4F','xoplus':'\u2A01','xotime':'\u2A02','xrarr':'\u27F6','xrArr':'\u27F9','xscr':'\uD835\uDCCD','Xscr':'\uD835\uDCB3','xsqcup':'\u2A06','xuplus':'\u2A04','xutri':'\u25B3','xvee':'\u22C1','xwedge':'\u22C0','yacute':'\xFD','Yacute':'\xDD','yacy':'\u044F','YAcy':'\u042F','ycirc':'\u0177','Ycirc':'\u0176','ycy':'\u044B','Ycy':'\u042B','yen':'\xA5','yfr':'\uD835\uDD36','Yfr':'\uD835\uDD1C','yicy':'\u0457','YIcy':'\u0407','yopf':'\uD835\uDD6A','Yopf':'\uD835\uDD50','yscr':'\uD835\uDCCE','Yscr':'\uD835\uDCB4','yucy':'\u044E','YUcy':'\u042E','yuml':'\xFF','Yuml':'\u0178','zacute':'\u017A','Zacute':'\u0179','zcaron':'\u017E','Zcaron':'\u017D','zcy':'\u0437','Zcy':'\u0417','zdot':'\u017C','Zdot':'\u017B','zeetrf':'\u2128','ZeroWidthSpace':'\u200B','zeta':'\u03B6','Zeta':'\u0396','zfr':'\uD835\uDD37','Zfr':'\u2128','zhcy':'\u0436','ZHcy':'\u0416','zigrarr':'\u21DD','zopf':'\uD835\uDD6B','Zopf':'\u2124','zscr':'\uD835\uDCCF','Zscr':'\uD835\uDCB5','zwj':'\u200D','zwnj':'\u200C'};
-       var decodeMapLegacy = {'aacute':'\xE1','Aacute':'\xC1','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','aelig':'\xE6','AElig':'\xC6','agrave':'\xE0','Agrave':'\xC0','amp':'&','AMP':'&','aring':'\xE5','Aring':'\xC5','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','brvbar':'\xA6','ccedil':'\xE7','Ccedil':'\xC7','cedil':'\xB8','cent':'\xA2','copy':'\xA9','COPY':'\xA9','curren':'\xA4','deg':'\xB0','divide':'\xF7','eacute':'\xE9','Eacute':'\xC9','ecirc':'\xEA','Ecirc':'\xCA','egrave':'\xE8','Egrave':'\xC8','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','frac12':'\xBD','frac14':'\xBC','frac34':'\xBE','gt':'>','GT':'>','iacute':'\xED','Iacute':'\xCD','icirc':'\xEE','Icirc':'\xCE','iexcl':'\xA1','igrave':'\xEC','Igrave':'\xCC','iquest':'\xBF','iuml':'\xEF','Iuml':'\xCF','laquo':'\xAB','lt':'<','LT':'<','macr':'\xAF','micro':'\xB5','middot':'\xB7','nbsp':'\xA0','not':'\xAC','ntilde':'\xF1','Ntilde':'\xD1','oacute':'\xF3','Oacute':'\xD3','ocirc':'\xF4','Ocirc':'\xD4','ograve':'\xF2','Ograve':'\xD2','ordf':'\xAA','ordm':'\xBA','oslash':'\xF8','Oslash':'\xD8','otilde':'\xF5','Otilde':'\xD5','ouml':'\xF6','Ouml':'\xD6','para':'\xB6','plusmn':'\xB1','pound':'\xA3','quot':'"','QUOT':'"','raquo':'\xBB','reg':'\xAE','REG':'\xAE','sect':'\xA7','shy':'\xAD','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','szlig':'\xDF','thorn':'\xFE','THORN':'\xDE','times':'\xD7','uacute':'\xFA','Uacute':'\xDA','ucirc':'\xFB','Ucirc':'\xDB','ugrave':'\xF9','Ugrave':'\xD9','uml':'\xA8','uuml':'\xFC','Uuml':'\xDC','yacute':'\xFD','Yacute':'\xDD','yen':'\xA5','yuml':'\xFF'};
-       var decodeMapNumeric = {'0':'\uFFFD','128':'\u20AC','130':'\u201A','131':'\u0192','132':'\u201E','133':'\u2026','134':'\u2020','135':'\u2021','136':'\u02C6','137':'\u2030','138':'\u0160','139':'\u2039','140':'\u0152','142':'\u017D','145':'\u2018','146':'\u2019','147':'\u201C','148':'\u201D','149':'\u2022','150':'\u2013','151':'\u2014','152':'\u02DC','153':'\u2122','154':'\u0161','155':'\u203A','156':'\u0153','158':'\u017E','159':'\u0178'};
-       var invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];
+function getLens (b64) {
+  var len = b64.length
 
-       /*--------------------------------------------------------------------------*/
+  if (len % 4 > 0) {
+    throw new Error('Invalid string. Length must be a multiple of 4')
+  }
 
-       var stringFromCharCode = String.fromCharCode;
+  // Trim off extra bytes after placeholder bytes are found
+  // See: https://github.com/beatgammit/base64-js/issues/42
+  var validLen = b64.indexOf('=')
+  if (validLen === -1) validLen = len
 
-       var object = {};
-       var hasOwnProperty = object.hasOwnProperty;
-       var has = function(object, propertyName) {
-               return hasOwnProperty.call(object, propertyName);
-       };
+  var placeHoldersLen = validLen === len
+    ? 0
+    : 4 - (validLen % 4)
 
-       var contains = function(array, value) {
-               var index = -1;
-               var length = array.length;
-               while (++index < length) {
-                       if (array[index] == value) {
-                               return true;
-                       }
-               }
-               return false;
-       };
+  return [validLen, placeHoldersLen]
+}
 
-       var merge = function(options, defaults) {
-               if (!options) {
-                       return defaults;
-               }
-               var result = {};
-               var key;
-               for (key in defaults) {
-                       // A `hasOwnProperty` check is not needed here, since only recognized
-                       // option names are used anyway. Any others are ignored.
-                       result[key] = has(options, key) ? options[key] : defaults[key];
-               }
-               return result;
-       };
+// base64 is 4/3 + up to two characters of the original data
+function byteLength (b64) {
+  var lens = getLens(b64)
+  var validLen = lens[0]
+  var placeHoldersLen = lens[1]
+  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
+}
 
-       // Modified version of `ucs2encode`; see https://mths.be/punycode.
-       var codePointToSymbol = function(codePoint, strict) {
-               var output = '';
-               if ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {
-                       // See issue #4:
-                       // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is
-                       // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD
-                       // REPLACEMENT CHARACTER.”
-                       if (strict) {
-                               parseError('character reference outside the permissible Unicode range');
-                       }
-                       return '\uFFFD';
-               }
-               if (has(decodeMapNumeric, codePoint)) {
-                       if (strict) {
-                               parseError('disallowed character reference');
-                       }
-                       return decodeMapNumeric[codePoint];
-               }
-               if (strict && contains(invalidReferenceCodePoints, codePoint)) {
-                       parseError('disallowed character reference');
-               }
-               if (codePoint > 0xFFFF) {
-                       codePoint -= 0x10000;
-                       output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);
-                       codePoint = 0xDC00 | codePoint & 0x3FF;
-               }
-               output += stringFromCharCode(codePoint);
-               return output;
-       };
+function _byteLength (b64, validLen, placeHoldersLen) {
+  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
+}
 
-       var hexEscape = function(codePoint) {
-               return '&#x' + codePoint.toString(16).toUpperCase() + ';';
-       };
+function toByteArray (b64) {
+  var tmp
+  var lens = getLens(b64)
+  var validLen = lens[0]
+  var placeHoldersLen = lens[1]
 
-       var decEscape = function(codePoint) {
-               return '&#' + codePoint + ';';
-       };
+  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
 
-       var parseError = function(message) {
-               throw Error('Parse error: ' + message);
-       };
+  var curByte = 0
 
-       /*--------------------------------------------------------------------------*/
+  // if there are placeholders, only get up to the last complete 4 chars
+  var len = placeHoldersLen > 0
+    ? validLen - 4
+    : validLen
 
-       var encode = function(string, options) {
-               options = merge(options, encode.options);
-               var strict = options.strict;
-               if (strict && regexInvalidRawCodePoint.test(string)) {
-                       parseError('forbidden code point');
-               }
-               var encodeEverything = options.encodeEverything;
-               var useNamedReferences = options.useNamedReferences;
-               var allowUnsafeSymbols = options.allowUnsafeSymbols;
-               var escapeCodePoint = options.decimal ? decEscape : hexEscape;
+  for (var i = 0; i < len; i += 4) {
+    tmp =
+      (revLookup[b64.charCodeAt(i)] << 18) |
+      (revLookup[b64.charCodeAt(i + 1)] << 12) |
+      (revLookup[b64.charCodeAt(i + 2)] << 6) |
+      revLookup[b64.charCodeAt(i + 3)]
+    arr[curByte++] = (tmp >> 16) & 0xFF
+    arr[curByte++] = (tmp >> 8) & 0xFF
+    arr[curByte++] = tmp & 0xFF
+  }
 
-               var escapeBmpSymbol = function(symbol) {
-                       return escapeCodePoint(symbol.charCodeAt(0));
-               };
+  if (placeHoldersLen === 2) {
+    tmp =
+      (revLookup[b64.charCodeAt(i)] << 2) |
+      (revLookup[b64.charCodeAt(i + 1)] >> 4)
+    arr[curByte++] = tmp & 0xFF
+  }
 
-               if (encodeEverything) {
-                       // Encode ASCII symbols.
-                       string = string.replace(regexAsciiWhitelist, function(symbol) {
-                               // Use named references if requested & possible.
-                               if (useNamedReferences && has(encodeMap, symbol)) {
-                                       return '&' + encodeMap[symbol] + ';';
-                               }
-                               return escapeBmpSymbol(symbol);
-                       });
-                       // Shorten a few escapes that represent two symbols, of which at least one
-                       // is within the ASCII range.
-                       if (useNamedReferences) {
-                               string = string
-                                       .replace(/&gt;\u20D2/g, '&nvgt;')
-                                       .replace(/&lt;\u20D2/g, '&nvlt;')
-                                       .replace(/&#x66;&#x6A;/g, '&fjlig;');
-                       }
-                       // Encode non-ASCII symbols.
-                       if (useNamedReferences) {
-                               // Encode non-ASCII symbols that can be replaced with a named reference.
-                               string = string.replace(regexEncodeNonAscii, function(string) {
-                                       // Note: there is no need to check `has(encodeMap, string)` here.
-                                       return '&' + encodeMap[string] + ';';
-                               });
-                       }
-                       // Note: any remaining non-ASCII symbols are handled outside of the `if`.
-               } else if (useNamedReferences) {
-                       // Apply named character references.
-                       // Encode `<>"'&` using named character references.
-                       if (!allowUnsafeSymbols) {
-                               string = string.replace(regexEscape, function(string) {
-                                       return '&' + encodeMap[string] + ';'; // no need to check `has()` here
-                               });
-                       }
-                       // Shorten escapes that represent two symbols, of which at least one is
-                       // `<>"'&`.
-                       string = string
-                               .replace(/&gt;\u20D2/g, '&nvgt;')
-                               .replace(/&lt;\u20D2/g, '&nvlt;');
-                       // Encode non-ASCII symbols that can be replaced with a named reference.
-                       string = string.replace(regexEncodeNonAscii, function(string) {
-                               // Note: there is no need to check `has(encodeMap, string)` here.
-                               return '&' + encodeMap[string] + ';';
-                       });
-               } else if (!allowUnsafeSymbols) {
-                       // Encode `<>"'&` using hexadecimal escapes, now that they’re not handled
-                       // using named character references.
-                       string = string.replace(regexEscape, escapeBmpSymbol);
-               }
-               return string
-                       // Encode astral symbols.
-                       .replace(regexAstralSymbols, function($0) {
-                               // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
-                               var high = $0.charCodeAt(0);
-                               var low = $0.charCodeAt(1);
-                               var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;
-                               return escapeCodePoint(codePoint);
-                       })
-                       // Encode any remaining BMP symbols that are not printable ASCII symbols
-                       // using a hexadecimal escape.
-                       .replace(regexBmpWhitelist, escapeBmpSymbol);
-       };
-       // Expose default options (so they can be overridden globally).
-       encode.options = {
-               'allowUnsafeSymbols': false,
-               'encodeEverything': false,
-               'strict': false,
-               'useNamedReferences': false,
-               'decimal' : false
-       };
+  if (placeHoldersLen === 1) {
+    tmp =
+      (revLookup[b64.charCodeAt(i)] << 10) |
+      (revLookup[b64.charCodeAt(i + 1)] << 4) |
+      (revLookup[b64.charCodeAt(i + 2)] >> 2)
+    arr[curByte++] = (tmp >> 8) & 0xFF
+    arr[curByte++] = tmp & 0xFF
+  }
 
-       var decode = function(html, options) {
-               options = merge(options, decode.options);
-               var strict = options.strict;
-               if (strict && regexInvalidEntity.test(html)) {
-                       parseError('malformed character reference');
-               }
-               return html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {
-                       var codePoint;
-                       var semicolon;
-                       var decDigits;
-                       var hexDigits;
-                       var reference;
-                       var next;
+  return arr
+}
 
-                       if ($1) {
-                               reference = $1;
-                               // Note: there is no need to check `has(decodeMap, reference)`.
-                               return decodeMap[reference];
-                       }
+function tripletToBase64 (num) {
+  return lookup[num >> 18 & 0x3F] +
+    lookup[num >> 12 & 0x3F] +
+    lookup[num >> 6 & 0x3F] +
+    lookup[num & 0x3F]
+}
 
-                       if ($2) {
-                               // Decode named character references without trailing `;`, e.g. `&amp`.
-                               // This is only a parse error if it gets converted to `&`, or if it is
-                               // followed by `=` in an attribute context.
-                               reference = $2;
-                               next = $3;
-                               if (next && options.isAttributeValue) {
-                                       if (strict && next == '=') {
-                                               parseError('`&` did not start a character reference');
-                                       }
-                                       return $0;
-                               } else {
-                                       if (strict) {
-                                               parseError(
-                                                       'named character reference was not terminated by a semicolon'
-                                               );
-                                       }
-                                       // Note: there is no need to check `has(decodeMapLegacy, reference)`.
-                                       return decodeMapLegacy[reference] + (next || '');
-                               }
-                       }
+function encodeChunk (uint8, start, end) {
+  var tmp
+  var output = []
+  for (var i = start; i < end; i += 3) {
+    tmp =
+      ((uint8[i] << 16) & 0xFF0000) +
+      ((uint8[i + 1] << 8) & 0xFF00) +
+      (uint8[i + 2] & 0xFF)
+    output.push(tripletToBase64(tmp))
+  }
+  return output.join('')
+}
 
-                       if ($4) {
-                               // Decode decimal escapes, e.g. `&#119558;`.
-                               decDigits = $4;
-                               semicolon = $5;
-                               if (strict && !semicolon) {
-                                       parseError('character reference was not terminated by a semicolon');
-                               }
-                               codePoint = parseInt(decDigits, 10);
-                               return codePointToSymbol(codePoint, strict);
-                       }
+function fromByteArray (uint8) {
+  var tmp
+  var len = uint8.length
+  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
+  var parts = []
+  var maxChunkLength = 16383 // must be multiple of 3
 
-                       if ($6) {
-                               // Decode hexadecimal escapes, e.g. `&#x1D306;`.
-                               hexDigits = $6;
-                               semicolon = $7;
-                               if (strict && !semicolon) {
-                                       parseError('character reference was not terminated by a semicolon');
-                               }
-                               codePoint = parseInt(hexDigits, 16);
-                               return codePointToSymbol(codePoint, strict);
-                       }
+  // go through the array every three bytes, we'll deal with trailing stuff later
+  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
+    parts.push(encodeChunk(
+      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
+    ))
+  }
 
-                       // If we’re still here, `if ($7)` is implied; it’s an ambiguous
-                       // ampersand for sure. https://mths.be/notes/ambiguous-ampersands
-                       if (strict) {
-                               parseError(
-                                       'named character reference was not terminated by a semicolon'
-                               );
-                       }
-                       return $0;
-               });
-       };
-       // Expose default options (so they can be overridden globally).
-       decode.options = {
-               'isAttributeValue': false,
-               'strict': false
-       };
+  // pad the end with zeros, but make sure to not forget the extra bytes
+  if (extraBytes === 1) {
+    tmp = uint8[len - 1]
+    parts.push(
+      lookup[tmp >> 2] +
+      lookup[(tmp << 4) & 0x3F] +
+      '=='
+    )
+  } else if (extraBytes === 2) {
+    tmp = (uint8[len - 2] << 8) + uint8[len - 1]
+    parts.push(
+      lookup[tmp >> 10] +
+      lookup[(tmp >> 4) & 0x3F] +
+      lookup[(tmp << 2) & 0x3F] +
+      '='
+    )
+  }
 
-       var escape = function(string) {
-               return string.replace(regexEscape, function($0) {
-                       // Note: there is no need to check `has(escapeMap, $0)` here.
-                       return escapeMap[$0];
-               });
-       };
+  return parts.join('')
+}
 
-       /*--------------------------------------------------------------------------*/
+},{}],109:[function(require,module,exports){
 
-       var he = {
-               'version': '1.2.0',
-               'encode': encode,
-               'decode': decode,
-               'escape': escape,
-               'unescape': decode
-       };
+},{}],110:[function(require,module,exports){
+arguments[4][109][0].apply(exports,arguments)
+},{"dup":109}],111:[function(require,module,exports){
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <https://feross.org>
+ * @license  MIT
+ */
+/* eslint-disable no-proto */
 
-       // Some AMD build optimizers, like r.js, check for specific condition patterns
-       // like the following:
-       if (
-               typeof define == 'function' &&
-               typeof define.amd == 'object' &&
-               define.amd
-       ) {
-               define(function() {
-                       return he;
-               });
-       }       else if (freeExports && !freeExports.nodeType) {
-               if (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+
-                       freeModule.exports = he;
-               } else { // in Narwhal or RingoJS v0.7.0-
-                       for (var key in he) {
-                               has(he, key) && (freeExports[key] = he[key]);
-                       }
-               }
-       } else { // in Rhino or a web browser
-               root.he = he;
-       }
+'use strict'
 
-}(this));
+var base64 = require('base64-js')
+var ieee754 = require('ieee754')
 
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{}],104:[function(require,module,exports){
-var http = require('http')
-var url = require('url')
+exports.Buffer = Buffer
+exports.SlowBuffer = SlowBuffer
+exports.INSPECT_MAX_BYTES = 50
 
-var https = module.exports
+var K_MAX_LENGTH = 0x7fffffff
+exports.kMaxLength = K_MAX_LENGTH
+
+/**
+ * If `Buffer.TYPED_ARRAY_SUPPORT`:
+ *   === true    Use Uint8Array implementation (fastest)
+ *   === false   Print warning and recommend using `buffer` v4.x which has an Object
+ *               implementation (most compatible, even IE6)
+ *
+ * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
+ * Opera 11.6+, iOS 4.2+.
+ *
+ * We report that the browser does not support typed arrays if the are not subclassable
+ * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
+ * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
+ * for __proto__ and has a buggy typed array implementation.
+ */
+Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
+
+if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
+    typeof console.error === 'function') {
+  console.error(
+    'This browser lacks typed array (Uint8Array) support which is required by ' +
+    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
+  )
+}
+
+function typedArraySupport () {
+  // Can typed array instances can be augmented?
+  try {
+    var arr = new Uint8Array(1)
+    arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }
+    return arr.foo() === 42
+  } catch (e) {
+    return false
+  }
+}
+
+Object.defineProperty(Buffer.prototype, 'parent', {
+  enumerable: true,
+  get: function () {
+    if (!Buffer.isBuffer(this)) return undefined
+    return this.buffer
+  }
+})
+
+Object.defineProperty(Buffer.prototype, 'offset', {
+  enumerable: true,
+  get: function () {
+    if (!Buffer.isBuffer(this)) return undefined
+    return this.byteOffset
+  }
+})
+
+function createBuffer (length) {
+  if (length > K_MAX_LENGTH) {
+    throw new RangeError('The value "' + length + '" is invalid for option "size"')
+  }
+  // Return an augmented `Uint8Array` instance
+  var buf = new Uint8Array(length)
+  buf.__proto__ = Buffer.prototype
+  return buf
+}
+
+/**
+ * The Buffer constructor returns instances of `Uint8Array` that have their
+ * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
+ * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
+ * and the `Uint8Array` methods. Square bracket notation works as expected -- it
+ * returns a single octet.
+ *
+ * The `Uint8Array` prototype remains unmodified.
+ */
 
-for (var key in http) {
-  if (http.hasOwnProperty(key)) https[key] = http[key]
+function Buffer (arg, encodingOrOffset, length) {
+  // Common case.
+  if (typeof arg === 'number') {
+    if (typeof encodingOrOffset === 'string') {
+      throw new TypeError(
+        'The "string" argument must be of type string. Received type number'
+      )
+    }
+    return allocUnsafe(arg)
+  }
+  return from(arg, encodingOrOffset, length)
 }
 
-https.request = function (params, cb) {
-  params = validateParams(params)
-  return http.request.call(this, params, cb)
+// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
+if (typeof Symbol !== 'undefined' && Symbol.species != null &&
+    Buffer[Symbol.species] === Buffer) {
+  Object.defineProperty(Buffer, Symbol.species, {
+    value: null,
+    configurable: true,
+    enumerable: false,
+    writable: false
+  })
 }
 
-https.get = function (params, cb) {
-  params = validateParams(params)
-  return http.get.call(this, params, cb)
-}
+Buffer.poolSize = 8192 // not used by this implementation
 
-function validateParams (params) {
-  if (typeof params === 'string') {
-    params = url.parse(params)
+function from (value, encodingOrOffset, length) {
+  if (typeof value === 'string') {
+    return fromString(value, encodingOrOffset)
   }
-  if (!params.protocol) {
-    params.protocol = 'https:'
+
+  if (ArrayBuffer.isView(value)) {
+    return fromArrayLike(value)
   }
-  if (params.protocol !== 'https:') {
-    throw new Error('Protocol "' + params.protocol + '" not supported. Expected "https:"')
+
+  if (value == null) {
+    throw TypeError(
+      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +
+      'or Array-like Object. Received type ' + (typeof value)
+    )
   }
-  return params
-}
 
-},{"http":155,"url":162}],105:[function(require,module,exports){
-exports.read = function (buffer, offset, isLE, mLen, nBytes) {
-  var e, m
-  var eLen = (nBytes * 8) - mLen - 1
-  var eMax = (1 << eLen) - 1
-  var eBias = eMax >> 1
-  var nBits = -7
-  var i = isLE ? (nBytes - 1) : 0
-  var d = isLE ? -1 : 1
-  var s = buffer[offset + i]
+  if (isInstance(value, ArrayBuffer) ||
+      (value && isInstance(value.buffer, ArrayBuffer))) {
+    return fromArrayBuffer(value, encodingOrOffset, length)
+  }
 
-  i += d
+  if (typeof value === 'number') {
+    throw new TypeError(
+      'The "value" argument must not be of type number. Received type number'
+    )
+  }
 
-  e = s & ((1 << (-nBits)) - 1)
-  s >>= (-nBits)
-  nBits += eLen
-  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
+  var valueOf = value.valueOf && value.valueOf()
+  if (valueOf != null && valueOf !== value) {
+    return Buffer.from(valueOf, encodingOrOffset, length)
+  }
 
-  m = e & ((1 << (-nBits)) - 1)
-  e >>= (-nBits)
-  nBits += mLen
-  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
+  var b = fromObject(value)
+  if (b) return b
 
-  if (e === 0) {
-    e = 1 - eBias
-  } else if (e === eMax) {
-    return m ? NaN : ((s ? -1 : 1) * Infinity)
-  } else {
-    m = m + Math.pow(2, mLen)
-    e = e - eBias
+  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&
+      typeof value[Symbol.toPrimitive] === 'function') {
+    return Buffer.from(
+      value[Symbol.toPrimitive]('string'), encodingOrOffset, length
+    )
   }
-  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
+
+  throw new TypeError(
+    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +
+    'or Array-like Object. Received type ' + (typeof value)
+  )
 }
 
-exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
-  var e, m, c
-  var eLen = (nBytes * 8) - mLen - 1
-  var eMax = (1 << eLen) - 1
-  var eBias = eMax >> 1
-  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
-  var i = isLE ? 0 : (nBytes - 1)
-  var d = isLE ? 1 : -1
-  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
+/**
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
+ * if value is a number.
+ * Buffer.from(str[, encoding])
+ * Buffer.from(array)
+ * Buffer.from(buffer)
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
+ **/
+Buffer.from = function (value, encodingOrOffset, length) {
+  return from(value, encodingOrOffset, length)
+}
 
-  value = Math.abs(value)
+// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
+// https://github.com/feross/buffer/pull/148
+Buffer.prototype.__proto__ = Uint8Array.prototype
+Buffer.__proto__ = Uint8Array
 
-  if (isNaN(value) || value === Infinity) {
-    m = isNaN(value) ? 1 : 0
-    e = eMax
-  } else {
-    e = Math.floor(Math.log(value) / Math.LN2)
-    if (value * (c = Math.pow(2, -e)) < 1) {
-      e--
-      c *= 2
-    }
-    if (e + eBias >= 1) {
-      value += rt / c
-    } else {
-      value += rt * Math.pow(2, 1 - eBias)
-    }
-    if (value * c >= 2) {
-      e++
-      c /= 2
-    }
+function assertSize (size) {
+  if (typeof size !== 'number') {
+    throw new TypeError('"size" argument must be of type number')
+  } else if (size < 0) {
+    throw new RangeError('The value "' + size + '" is invalid for option "size"')
+  }
+}
 
-    if (e + eBias >= eMax) {
-      m = 0
-      e = eMax
-    } else if (e + eBias >= 1) {
-      m = ((value * c) - 1) * Math.pow(2, mLen)
-      e = e + eBias
-    } else {
-      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
-      e = 0
-    }
+function alloc (size, fill, encoding) {
+  assertSize(size)
+  if (size <= 0) {
+    return createBuffer(size)
+  }
+  if (fill !== undefined) {
+    // Only pay attention to encoding if it's a string. This
+    // prevents accidentally sending in a number that would
+    // be interpretted as a start offset.
+    return typeof encoding === 'string'
+      ? createBuffer(size).fill(fill, encoding)
+      : createBuffer(size).fill(fill)
   }
+  return createBuffer(size)
+}
 
-  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
+/**
+ * Creates a new filled Buffer instance.
+ * alloc(size[, fill[, encoding]])
+ **/
+Buffer.alloc = function (size, fill, encoding) {
+  return alloc(size, fill, encoding)
+}
 
-  e = (e << mLen) | m
-  eLen += mLen
-  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
+function allocUnsafe (size) {
+  assertSize(size)
+  return createBuffer(size < 0 ? 0 : checked(size) | 0)
+}
 
-  buffer[offset + i - d] |= s * 128
+/**
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
+ * */
+Buffer.allocUnsafe = function (size) {
+  return allocUnsafe(size)
+}
+/**
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
+ */
+Buffer.allocUnsafeSlow = function (size) {
+  return allocUnsafe(size)
 }
 
-},{}],106:[function(require,module,exports){
-if (typeof Object.create === 'function') {
-  // implementation from standard node.js 'util' module
-  module.exports = function inherits(ctor, superCtor) {
-    ctor.super_ = superCtor
-    ctor.prototype = Object.create(superCtor.prototype, {
-      constructor: {
-        value: ctor,
-        enumerable: false,
-        writable: true,
-        configurable: true
-      }
-    });
-  };
-} else {
-  // old school shim for old browsers
-  module.exports = function inherits(ctor, superCtor) {
-    ctor.super_ = superCtor
-    var TempCtor = function () {}
-    TempCtor.prototype = superCtor.prototype
-    ctor.prototype = new TempCtor()
-    ctor.prototype.constructor = ctor
+function fromString (string, encoding) {
+  if (typeof encoding !== 'string' || encoding === '') {
+    encoding = 'utf8'
   }
-}
 
-},{}],107:[function(require,module,exports){
-/*!
- * Determine if an object is a Buffer
- *
- * @author   Feross Aboukhadijeh <https://feross.org>
- * @license  MIT
- */
+  if (!Buffer.isEncoding(encoding)) {
+    throw new TypeError('Unknown encoding: ' + encoding)
+  }
 
-// The _isBuffer check is for Safari 5-7 support, because it's missing
-// Object.prototype.constructor. Remove this eventually
-module.exports = function (obj) {
-  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
+  var length = byteLength(string, encoding) | 0
+  var buf = createBuffer(length)
+
+  var actual = buf.write(string, encoding)
+
+  if (actual !== length) {
+    // Writing a hex string, for example, that contains invalid characters will
+    // cause everything after the first invalid character to be ignored. (e.g.
+    // 'abxxcd' will be treated as 'ab')
+    buf = buf.slice(0, actual)
+  }
+
+  return buf
 }
 
-function isBuffer (obj) {
-  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
+function fromArrayLike (array) {
+  var length = array.length < 0 ? 0 : checked(array.length) | 0
+  var buf = createBuffer(length)
+  for (var i = 0; i < length; i += 1) {
+    buf[i] = array[i] & 255
+  }
+  return buf
 }
 
-// For Node v0.10 support. Remove this eventually.
-function isSlowBuffer (obj) {
-  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
-}
+function fromArrayBuffer (array, byteOffset, length) {
+  if (byteOffset < 0 || array.byteLength < byteOffset) {
+    throw new RangeError('"offset" is outside of buffer bounds')
+  }
 
-},{}],108:[function(require,module,exports){
-var toString = {}.toString;
+  if (array.byteLength < byteOffset + (length || 0)) {
+    throw new RangeError('"length" is outside of buffer bounds')
+  }
 
-module.exports = Array.isArray || function (arr) {
-  return toString.call(arr) == '[object Array]';
-};
+  var buf
+  if (byteOffset === undefined && length === undefined) {
+    buf = new Uint8Array(array)
+  } else if (length === undefined) {
+    buf = new Uint8Array(array, byteOffset)
+  } else {
+    buf = new Uint8Array(array, byteOffset, length)
+  }
 
-},{}],109:[function(require,module,exports){
-exports.endianness = function () { return 'LE' };
+  // Return an augmented `Uint8Array` instance
+  buf.__proto__ = Buffer.prototype
+  return buf
+}
 
-exports.hostname = function () {
-    if (typeof location !== 'undefined') {
-        return location.hostname
+function fromObject (obj) {
+  if (Buffer.isBuffer(obj)) {
+    var len = checked(obj.length) | 0
+    var buf = createBuffer(len)
+
+    if (buf.length === 0) {
+      return buf
     }
-    else return '';
-};
 
-exports.loadavg = function () { return [] };
+    obj.copy(buf, 0, 0, len)
+    return buf
+  }
 
-exports.uptime = function () { return 0 };
+  if (obj.length !== undefined) {
+    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
+      return createBuffer(0)
+    }
+    return fromArrayLike(obj)
+  }
 
-exports.freemem = function () {
-    return Number.MAX_VALUE;
-};
+  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
+    return fromArrayLike(obj.data)
+  }
+}
 
-exports.totalmem = function () {
-    return Number.MAX_VALUE;
-};
+function checked (length) {
+  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
+  // length is NaN (which is otherwise coerced to zero.)
+  if (length >= K_MAX_LENGTH) {
+    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
+                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
+  }
+  return length | 0
+}
 
-exports.cpus = function () { return [] };
+function SlowBuffer (length) {
+  if (+length != length) { // eslint-disable-line eqeqeq
+    length = 0
+  }
+  return Buffer.alloc(+length)
+}
 
-exports.type = function () { return 'Browser' };
+Buffer.isBuffer = function isBuffer (b) {
+  return b != null && b._isBuffer === true &&
+    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false
+}
 
-exports.release = function () {
-    if (typeof navigator !== 'undefined') {
-        return navigator.appVersion;
-    }
-    return '';
-};
+Buffer.compare = function compare (a, b) {
+  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)
+  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)
+  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
+    throw new TypeError(
+      'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'
+    )
+  }
 
-exports.networkInterfaces
-= exports.getNetworkInterfaces
-= function () { return {} };
+  if (a === b) return 0
 
-exports.arch = function () { return 'javascript' };
+  var x = a.length
+  var y = b.length
 
-exports.platform = function () { return 'browser' };
+  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
+    if (a[i] !== b[i]) {
+      x = a[i]
+      y = b[i]
+      break
+    }
+  }
 
-exports.tmpdir = exports.tmpDir = function () {
-    return '/tmp';
-};
+  if (x < y) return -1
+  if (y < x) return 1
+  return 0
+}
 
-exports.EOL = '\n';
+Buffer.isEncoding = function isEncoding (encoding) {
+  switch (String(encoding).toLowerCase()) {
+    case 'hex':
+    case 'utf8':
+    case 'utf-8':
+    case 'ascii':
+    case 'latin1':
+    case 'binary':
+    case 'base64':
+    case 'ucs2':
+    case 'ucs-2':
+    case 'utf16le':
+    case 'utf-16le':
+      return true
+    default:
+      return false
+  }
+}
 
-exports.homedir = function () {
-       return '/'
-};
+Buffer.concat = function concat (list, length) {
+  if (!Array.isArray(list)) {
+    throw new TypeError('"list" argument must be an Array of Buffers')
+  }
 
-},{}],110:[function(require,module,exports){
-(function (process){
-// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,
-// backported and transplited with Babel, with backwards-compat fixes
+  if (list.length === 0) {
+    return Buffer.alloc(0)
+  }
 
-// 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 i
+  if (length === undefined) {
+    length = 0
+    for (i = 0; i < list.length; ++i) {
+      length += list[i].length
+    }
+  }
 
-// resolves . and .. elements in a path array with directory names there
-// must be no slashes, empty elements, or device names (c:\) in the array
-// (so also no leading and trailing slashes - it does not distinguish
-// relative and absolute paths)
-function normalizeArray(parts, allowAboveRoot) {
-  // if the path tries to go above the root, `up` ends up > 0
-  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--;
+  var buffer = Buffer.allocUnsafe(length)
+  var pos = 0
+  for (i = 0; i < list.length; ++i) {
+    var buf = list[i]
+    if (isInstance(buf, Uint8Array)) {
+      buf = Buffer.from(buf)
+    }
+    if (!Buffer.isBuffer(buf)) {
+      throw new TypeError('"list" argument must be an Array of Buffers')
     }
+    buf.copy(buffer, pos)
+    pos += buf.length
   }
+  return buffer
+}
 
-  // if the path is allowed to go above the root, restore leading ..s
-  if (allowAboveRoot) {
-    for (; up--; up) {
-      parts.unshift('..');
+function byteLength (string, encoding) {
+  if (Buffer.isBuffer(string)) {
+    return string.length
+  }
+  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {
+    return string.byteLength
+  }
+  if (typeof string !== 'string') {
+    throw new TypeError(
+      'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' +
+      'Received type ' + typeof string
+    )
+  }
+
+  var len = string.length
+  var mustMatch = (arguments.length > 2 && arguments[2] === true)
+  if (!mustMatch && len === 0) return 0
+
+  // Use a for loop to avoid recursion
+  var loweredCase = false
+  for (;;) {
+    switch (encoding) {
+      case 'ascii':
+      case 'latin1':
+      case 'binary':
+        return len
+      case 'utf8':
+      case 'utf-8':
+        return utf8ToBytes(string).length
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return len * 2
+      case 'hex':
+        return len >>> 1
+      case 'base64':
+        return base64ToBytes(string).length
+      default:
+        if (loweredCase) {
+          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8
+        }
+        encoding = ('' + encoding).toLowerCase()
+        loweredCase = true
     }
   }
-
-  return parts;
 }
+Buffer.byteLength = byteLength
 
-// path.resolve([from ...], to)
-// posix version
-exports.resolve = function() {
-  var resolvedPath = '',
-      resolvedAbsolute = false;
-
-  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
-    var path = (i >= 0) ? arguments[i] : process.cwd();
+function slowToString (encoding, start, end) {
+  var loweredCase = false
 
-    // Skip empty and invalid entries
-    if (typeof path !== 'string') {
-      throw new TypeError('Arguments to path.resolve must be strings');
-    } else if (!path) {
-      continue;
-    }
+  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
+  // property of a typed array.
 
-    resolvedPath = path + '/' + resolvedPath;
-    resolvedAbsolute = path.charAt(0) === '/';
+  // This behaves neither like String nor Uint8Array in that we set start/end
+  // to their upper/lower bounds if the value passed is out of range.
+  // undefined is handled specially as per ECMA-262 6th Edition,
+  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
+  if (start === undefined || start < 0) {
+    start = 0
+  }
+  // Return early if start > this.length. Done here to prevent potential uint32
+  // coercion fail below.
+  if (start > this.length) {
+    return ''
   }
 
-  // At this point the path should be resolved to a full absolute path, but
-  // handle relative paths to be safe (might happen when process.cwd() fails)
+  if (end === undefined || end > this.length) {
+    end = this.length
+  }
 
-  // Normalize the path
-  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
-    return !!p;
-  }), !resolvedAbsolute).join('/');
+  if (end <= 0) {
+    return ''
+  }
 
-  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
-};
+  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
+  end >>>= 0
+  start >>>= 0
 
-// path.normalize(path)
-// posix version
-exports.normalize = function(path) {
-  var isAbsolute = exports.isAbsolute(path),
-      trailingSlash = substr(path, -1) === '/';
+  if (end <= start) {
+    return ''
+  }
 
-  // Normalize the path
-  path = normalizeArray(filter(path.split('/'), function(p) {
-    return !!p;
-  }), !isAbsolute).join('/');
+  if (!encoding) encoding = 'utf8'
 
-  if (!path && !isAbsolute) {
-    path = '.';
-  }
-  if (path && trailingSlash) {
-    path += '/';
-  }
+  while (true) {
+    switch (encoding) {
+      case 'hex':
+        return hexSlice(this, start, end)
 
-  return (isAbsolute ? '/' : '') + path;
-};
+      case 'utf8':
+      case 'utf-8':
+        return utf8Slice(this, start, end)
 
-// posix version
-exports.isAbsolute = function(path) {
-  return path.charAt(0) === '/';
-};
+      case 'ascii':
+        return asciiSlice(this, start, end)
 
-// posix version
-exports.join = function() {
-  var paths = Array.prototype.slice.call(arguments, 0);
-  return exports.normalize(filter(paths, function(p, index) {
-    if (typeof p !== 'string') {
-      throw new TypeError('Arguments to path.join must be strings');
-    }
-    return p;
-  }).join('/'));
-};
+      case 'latin1':
+      case 'binary':
+        return latin1Slice(this, start, end)
 
+      case 'base64':
+        return base64Slice(this, start, end)
 
-// path.relative(from, to)
-// posix version
-exports.relative = function(from, to) {
-  from = exports.resolve(from).substr(1);
-  to = exports.resolve(to).substr(1);
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return utf16leSlice(this, start, end)
 
-  function trim(arr) {
-    var start = 0;
-    for (; start < arr.length; start++) {
-      if (arr[start] !== '') break;
+      default:
+        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+        encoding = (encoding + '').toLowerCase()
+        loweredCase = true
     }
+  }
+}
 
-    var end = arr.length - 1;
-    for (; end >= 0; end--) {
-      if (arr[end] !== '') break;
-    }
+// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
+// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
+// reliably in a browserify context because there could be multiple different
+// copies of the 'buffer' package in use. This method works even for Buffer
+// instances that were created from another copy of the `buffer` package.
+// See: https://github.com/feross/buffer/issues/154
+Buffer.prototype._isBuffer = true
 
-    if (start > end) return [];
-    return arr.slice(start, end - start + 1);
-  }
+function swap (b, n, m) {
+  var i = b[n]
+  b[n] = b[m]
+  b[m] = i
+}
 
-  var fromParts = trim(from.split('/'));
-  var toParts = trim(to.split('/'));
+Buffer.prototype.swap16 = function swap16 () {
+  var len = this.length
+  if (len % 2 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 16-bits')
+  }
+  for (var i = 0; i < len; i += 2) {
+    swap(this, i, i + 1)
+  }
+  return this
+}
 
-  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;
-    }
+Buffer.prototype.swap32 = function swap32 () {
+  var len = this.length
+  if (len % 4 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 32-bits')
+  }
+  for (var i = 0; i < len; i += 4) {
+    swap(this, i, i + 3)
+    swap(this, i + 1, i + 2)
   }
+  return this
+}
 
-  var outputParts = [];
-  for (var i = samePartsLength; i < fromParts.length; i++) {
-    outputParts.push('..');
+Buffer.prototype.swap64 = function swap64 () {
+  var len = this.length
+  if (len % 8 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 64-bits')
+  }
+  for (var i = 0; i < len; i += 8) {
+    swap(this, i, i + 7)
+    swap(this, i + 1, i + 6)
+    swap(this, i + 2, i + 5)
+    swap(this, i + 3, i + 4)
   }
+  return this
+}
 
-  outputParts = outputParts.concat(toParts.slice(samePartsLength));
+Buffer.prototype.toString = function toString () {
+  var length = this.length
+  if (length === 0) return ''
+  if (arguments.length === 0) return utf8Slice(this, 0, length)
+  return slowToString.apply(this, arguments)
+}
 
-  return outputParts.join('/');
-};
+Buffer.prototype.toLocaleString = Buffer.prototype.toString
 
-exports.sep = '/';
-exports.delimiter = ':';
+Buffer.prototype.equals = function equals (b) {
+  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
+  if (this === b) return true
+  return Buffer.compare(this, b) === 0
+}
 
-exports.dirname = function (path) {
-  if (typeof path !== 'string') path = path + '';
-  if (path.length === 0) return '.';
-  var code = path.charCodeAt(0);
-  var hasRoot = code === 47 /*/*/;
-  var end = -1;
-  var matchedSlash = true;
-  for (var i = path.length - 1; i >= 1; --i) {
-    code = path.charCodeAt(i);
-    if (code === 47 /*/*/) {
-        if (!matchedSlash) {
-          end = i;
-          break;
-        }
-      } else {
-      // We saw the first non-path separator
-      matchedSlash = false;
-    }
+Buffer.prototype.inspect = function inspect () {
+  var str = ''
+  var max = exports.INSPECT_MAX_BYTES
+  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()
+  if (this.length > max) str += ' ... '
+  return '<Buffer ' + str + '>'
+}
+
+Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
+  if (isInstance(target, Uint8Array)) {
+    target = Buffer.from(target, target.offset, target.byteLength)
+  }
+  if (!Buffer.isBuffer(target)) {
+    throw new TypeError(
+      'The "target" argument must be one of type Buffer or Uint8Array. ' +
+      'Received type ' + (typeof target)
+    )
+  }
+
+  if (start === undefined) {
+    start = 0
+  }
+  if (end === undefined) {
+    end = target ? target.length : 0
+  }
+  if (thisStart === undefined) {
+    thisStart = 0
+  }
+  if (thisEnd === undefined) {
+    thisEnd = this.length
   }
 
-  if (end === -1) return hasRoot ? '/' : '.';
-  if (hasRoot && end === 1) {
-    // return '//';
-    // Backwards-compat fix:
-    return '/';
+  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
+    throw new RangeError('out of range index')
   }
-  return path.slice(0, end);
-};
 
-function basename(path) {
-  if (typeof path !== 'string') path = path + '';
+  if (thisStart >= thisEnd && start >= end) {
+    return 0
+  }
+  if (thisStart >= thisEnd) {
+    return -1
+  }
+  if (start >= end) {
+    return 1
+  }
 
-  var start = 0;
-  var end = -1;
-  var matchedSlash = true;
-  var i;
+  start >>>= 0
+  end >>>= 0
+  thisStart >>>= 0
+  thisEnd >>>= 0
 
-  for (i = path.length - 1; i >= 0; --i) {
-    if (path.charCodeAt(i) === 47 /*/*/) {
-        // If we reached a path separator that was not part of a set of path
-        // separators at the end of the string, stop now
-        if (!matchedSlash) {
-          start = i + 1;
-          break;
-        }
-      } else if (end === -1) {
-      // We saw the first non-path separator, mark this as the end of our
-      // path component
-      matchedSlash = false;
-      end = i + 1;
+  if (this === target) return 0
+
+  var x = thisEnd - thisStart
+  var y = end - start
+  var len = Math.min(x, y)
+
+  var thisCopy = this.slice(thisStart, thisEnd)
+  var targetCopy = target.slice(start, end)
+
+  for (var i = 0; i < len; ++i) {
+    if (thisCopy[i] !== targetCopy[i]) {
+      x = thisCopy[i]
+      y = targetCopy[i]
+      break
     }
   }
 
-  if (end === -1) return '';
-  return path.slice(start, end);
+  if (x < y) return -1
+  if (y < x) return 1
+  return 0
 }
 
-// Uses a mixed approach for backwards-compatibility, as ext behavior changed
-// in new Node.js versions, so only basename() above is backported here
-exports.basename = function (path, ext) {
-  var f = basename(path);
-  if (ext && f.substr(-1 * ext.length) === ext) {
-    f = f.substr(0, f.length - ext.length);
+// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
+// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
+//
+// Arguments:
+// - buffer - a Buffer to search
+// - val - a string, Buffer, or number
+// - byteOffset - an index into `buffer`; will be clamped to an int32
+// - encoding - an optional encoding, relevant is val is a string
+// - dir - true for indexOf, false for lastIndexOf
+function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
+  // Empty buffer means no match
+  if (buffer.length === 0) return -1
+
+  // Normalize byteOffset
+  if (typeof byteOffset === 'string') {
+    encoding = byteOffset
+    byteOffset = 0
+  } else if (byteOffset > 0x7fffffff) {
+    byteOffset = 0x7fffffff
+  } else if (byteOffset < -0x80000000) {
+    byteOffset = -0x80000000
+  }
+  byteOffset = +byteOffset // Coerce to Number.
+  if (numberIsNaN(byteOffset)) {
+    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
+    byteOffset = dir ? 0 : (buffer.length - 1)
   }
-  return f;
-};
 
-exports.extname = function (path) {
-  if (typeof path !== 'string') path = path + '';
-  var startDot = -1;
-  var startPart = 0;
-  var end = -1;
-  var matchedSlash = true;
-  // Track the state of characters (if any) we see before our first dot and
-  // after any path separator we find
-  var preDotState = 0;
-  for (var i = path.length - 1; i >= 0; --i) {
-    var code = path.charCodeAt(i);
-    if (code === 47 /*/*/) {
-        // If we reached a path separator that was not part of a set of path
-        // separators at the end of the string, stop now
-        if (!matchedSlash) {
-          startPart = i + 1;
-          break;
-        }
-        continue;
-      }
-    if (end === -1) {
-      // We saw the first non-path separator, mark this as the end of our
-      // extension
-      matchedSlash = false;
-      end = i + 1;
-    }
-    if (code === 46 /*.*/) {
-        // If this is our first dot, mark it as the start of our extension
-        if (startDot === -1)
-          startDot = i;
-        else if (preDotState !== 1)
-          preDotState = 1;
-    } else if (startDot !== -1) {
-      // We saw a non-dot and non-path separator before our dot, so we should
-      // have a good chance at having a non-empty extension
-      preDotState = -1;
-    }
+  // Normalize byteOffset: negative offsets start from the end of the buffer
+  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
+  if (byteOffset >= buffer.length) {
+    if (dir) return -1
+    else byteOffset = buffer.length - 1
+  } else if (byteOffset < 0) {
+    if (dir) byteOffset = 0
+    else return -1
   }
 
-  if (startDot === -1 || end === -1 ||
-      // We saw a non-dot character immediately before the dot
-      preDotState === 0 ||
-      // The (right-most) trimmed path component is exactly '..'
-      preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
-    return '';
+  // Normalize val
+  if (typeof val === 'string') {
+    val = Buffer.from(val, encoding)
   }
-  return path.slice(startDot, end);
-};
 
-function filter (xs, f) {
-    if (xs.filter) return xs.filter(f);
-    var res = [];
-    for (var i = 0; i < xs.length; i++) {
-        if (f(xs[i], i, xs)) res.push(xs[i]);
+  // Finally, search either indexOf (if dir is true) or lastIndexOf
+  if (Buffer.isBuffer(val)) {
+    // Special case: looking for empty string/buffer always fails
+    if (val.length === 0) {
+      return -1
     }
-    return res;
-}
-
-// String.prototype.substr - negative index don't work in IE8
-var substr = 'ab'.substr(-1) === 'b'
-    ? function (str, start, len) { return str.substr(start, len) }
-    : function (str, start, len) {
-        if (start < 0) start = str.length + start;
-        return str.substr(start, len);
+    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
+  } else if (typeof val === 'number') {
+    val = val & 0xFF // Search for a byte value [0-255]
+    if (typeof Uint8Array.prototype.indexOf === 'function') {
+      if (dir) {
+        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
+      } else {
+        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
+      }
     }
-;
-
-}).call(this,require('_process'))
-},{"_process":112}],111:[function(require,module,exports){
-(function (process){
-'use strict';
+    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
+  }
 
-if (!process.version ||
-    process.version.indexOf('v0.') === 0 ||
-    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
-  module.exports = { nextTick: nextTick };
-} else {
-  module.exports = process
+  throw new TypeError('val must be string, number or Buffer')
 }
 
-function nextTick(fn, arg1, arg2, arg3) {
-  if (typeof fn !== 'function') {
-    throw new TypeError('"callback" argument must be a function');
+function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
+  var indexSize = 1
+  var arrLength = arr.length
+  var valLength = val.length
+
+  if (encoding !== undefined) {
+    encoding = String(encoding).toLowerCase()
+    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
+        encoding === 'utf16le' || encoding === 'utf-16le') {
+      if (arr.length < 2 || val.length < 2) {
+        return -1
+      }
+      indexSize = 2
+      arrLength /= 2
+      valLength /= 2
+      byteOffset /= 2
+    }
   }
-  var len = arguments.length;
-  var args, i;
-  switch (len) {
-  case 0:
-  case 1:
-    return process.nextTick(fn);
-  case 2:
-    return process.nextTick(function afterTickOne() {
-      fn.call(null, arg1);
-    });
-  case 3:
-    return process.nextTick(function afterTickTwo() {
-      fn.call(null, arg1, arg2);
-    });
-  case 4:
-    return process.nextTick(function afterTickThree() {
-      fn.call(null, arg1, arg2, arg3);
-    });
-  default:
-    args = new Array(len - 1);
-    i = 0;
-    while (i < args.length) {
-      args[i++] = arguments[i];
+
+  function read (buf, i) {
+    if (indexSize === 1) {
+      return buf[i]
+    } else {
+      return buf.readUInt16BE(i * indexSize)
+    }
+  }
+
+  var i
+  if (dir) {
+    var foundIndex = -1
+    for (i = byteOffset; i < arrLength; i++) {
+      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
+        if (foundIndex === -1) foundIndex = i
+        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
+      } else {
+        if (foundIndex !== -1) i -= i - foundIndex
+        foundIndex = -1
+      }
+    }
+  } else {
+    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
+    for (i = byteOffset; i >= 0; i--) {
+      var found = true
+      for (var j = 0; j < valLength; j++) {
+        if (read(arr, i + j) !== read(val, j)) {
+          found = false
+          break
+        }
+      }
+      if (found) return i
     }
-    return process.nextTick(function afterTick() {
-      fn.apply(null, args);
-    });
   }
-}
-
-
-}).call(this,require('_process'))
-},{"_process":112}],112:[function(require,module,exports){
-// shim for using process in browser
-var process = module.exports = {};
 
-// cached from whatever global is present so that test runners that stub it
-// don't break things.  But we need to wrap it in a try catch in case it is
-// wrapped in strict mode code which doesn't define any globals.  It's inside a
-// function because try/catches deoptimize in certain engines.
+  return -1
+}
 
-var cachedSetTimeout;
-var cachedClearTimeout;
+Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
+  return this.indexOf(val, byteOffset, encoding) !== -1
+}
 
-function defaultSetTimout() {
-    throw new Error('setTimeout has not been defined');
+Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
+  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
 }
-function defaultClearTimeout () {
-    throw new Error('clearTimeout has not been defined');
+
+Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
+  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
 }
-(function () {
-    try {
-        if (typeof setTimeout === 'function') {
-            cachedSetTimeout = setTimeout;
-        } else {
-            cachedSetTimeout = defaultSetTimout;
-        }
-    } catch (e) {
-        cachedSetTimeout = defaultSetTimout;
-    }
-    try {
-        if (typeof clearTimeout === 'function') {
-            cachedClearTimeout = clearTimeout;
-        } else {
-            cachedClearTimeout = defaultClearTimeout;
-        }
-    } catch (e) {
-        cachedClearTimeout = defaultClearTimeout;
-    }
-} ())
-function runTimeout(fun) {
-    if (cachedSetTimeout === setTimeout) {
-        //normal enviroments in sane situations
-        return setTimeout(fun, 0);
-    }
-    // if setTimeout wasn't available but was latter defined
-    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
-        cachedSetTimeout = setTimeout;
-        return setTimeout(fun, 0);
-    }
-    try {
-        // when when somebody has screwed with setTimeout but no I.E. maddness
-        return cachedSetTimeout(fun, 0);
-    } catch(e){
-        try {
-            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
-            return cachedSetTimeout.call(null, fun, 0);
-        } catch(e){
-            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
-            return cachedSetTimeout.call(this, fun, 0);
-        }
+
+function hexWrite (buf, string, offset, length) {
+  offset = Number(offset) || 0
+  var remaining = buf.length - offset
+  if (!length) {
+    length = remaining
+  } else {
+    length = Number(length)
+    if (length > remaining) {
+      length = remaining
     }
+  }
 
+  var strLen = string.length
 
+  if (length > strLen / 2) {
+    length = strLen / 2
+  }
+  for (var i = 0; i < length; ++i) {
+    var parsed = parseInt(string.substr(i * 2, 2), 16)
+    if (numberIsNaN(parsed)) return i
+    buf[offset + i] = parsed
+  }
+  return i
 }
-function runClearTimeout(marker) {
-    if (cachedClearTimeout === clearTimeout) {
-        //normal enviroments in sane situations
-        return clearTimeout(marker);
-    }
-    // if clearTimeout wasn't available but was latter defined
-    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
-        cachedClearTimeout = clearTimeout;
-        return clearTimeout(marker);
-    }
-    try {
-        // when when somebody has screwed with setTimeout but no I.E. maddness
-        return cachedClearTimeout(marker);
-    } catch (e){
-        try {
-            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
-            return cachedClearTimeout.call(null, marker);
-        } catch (e){
-            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
-            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
-            return cachedClearTimeout.call(this, marker);
-        }
-    }
-
 
+function utf8Write (buf, string, offset, length) {
+  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
+}
 
+function asciiWrite (buf, string, offset, length) {
+  return blitBuffer(asciiToBytes(string), buf, offset, length)
 }
-var queue = [];
-var draining = false;
-var currentQueue;
-var queueIndex = -1;
 
-function cleanUpNextTick() {
-    if (!draining || !currentQueue) {
-        return;
-    }
-    draining = false;
-    if (currentQueue.length) {
-        queue = currentQueue.concat(queue);
-    } else {
-        queueIndex = -1;
-    }
-    if (queue.length) {
-        drainQueue();
-    }
+function latin1Write (buf, string, offset, length) {
+  return asciiWrite(buf, string, offset, length)
 }
 
-function drainQueue() {
-    if (draining) {
-        return;
-    }
-    var timeout = runTimeout(cleanUpNextTick);
-    draining = true;
+function base64Write (buf, string, offset, length) {
+  return blitBuffer(base64ToBytes(string), buf, offset, length)
+}
 
-    var len = queue.length;
-    while(len) {
-        currentQueue = queue;
-        queue = [];
-        while (++queueIndex < len) {
-            if (currentQueue) {
-                currentQueue[queueIndex].run();
-            }
-        }
-        queueIndex = -1;
-        len = queue.length;
-    }
-    currentQueue = null;
-    draining = false;
-    runClearTimeout(timeout);
+function ucs2Write (buf, string, offset, length) {
+  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
 }
 
-process.nextTick = function (fun) {
-    var args = new Array(arguments.length - 1);
-    if (arguments.length > 1) {
-        for (var i = 1; i < arguments.length; i++) {
-            args[i - 1] = arguments[i];
-        }
-    }
-    queue.push(new Item(fun, args));
-    if (queue.length === 1 && !draining) {
-        runTimeout(drainQueue);
+Buffer.prototype.write = function write (string, offset, length, encoding) {
+  // Buffer#write(string)
+  if (offset === undefined) {
+    encoding = 'utf8'
+    length = this.length
+    offset = 0
+  // Buffer#write(string, encoding)
+  } else if (length === undefined && typeof offset === 'string') {
+    encoding = offset
+    length = this.length
+    offset = 0
+  // Buffer#write(string, offset[, length][, encoding])
+  } else if (isFinite(offset)) {
+    offset = offset >>> 0
+    if (isFinite(length)) {
+      length = length >>> 0
+      if (encoding === undefined) encoding = 'utf8'
+    } else {
+      encoding = length
+      length = undefined
     }
-};
+  } else {
+    throw new Error(
+      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
+    )
+  }
 
-// v8 likes predictible objects
-function Item(fun, array) {
-    this.fun = fun;
-    this.array = array;
-}
-Item.prototype.run = function () {
-    this.fun.apply(null, this.array);
-};
-process.title = 'browser';
-process.browser = true;
-process.env = {};
-process.argv = [];
-process.version = ''; // empty string to avoid regexp issues
-process.versions = {};
+  var remaining = this.length - offset
+  if (length === undefined || length > remaining) length = remaining
 
-function noop() {}
+  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
+    throw new RangeError('Attempt to write outside buffer bounds')
+  }
 
-process.on = noop;
-process.addListener = noop;
-process.once = noop;
-process.off = noop;
-process.removeListener = noop;
-process.removeAllListeners = noop;
-process.emit = noop;
-process.prependListener = noop;
-process.prependOnceListener = noop;
+  if (!encoding) encoding = 'utf8'
 
-process.listeners = function (name) { return [] }
+  var loweredCase = false
+  for (;;) {
+    switch (encoding) {
+      case 'hex':
+        return hexWrite(this, string, offset, length)
+
+      case 'utf8':
+      case 'utf-8':
+        return utf8Write(this, string, offset, length)
+
+      case 'ascii':
+        return asciiWrite(this, string, offset, length)
 
-process.binding = function (name) {
-    throw new Error('process.binding is not supported');
-};
+      case 'latin1':
+      case 'binary':
+        return latin1Write(this, string, offset, length)
 
-process.cwd = function () { return '/' };
-process.chdir = function (dir) {
-    throw new Error('process.chdir is not supported');
-};
-process.umask = function() { return 0; };
+      case 'base64':
+        // Warning: maxLength not taken into account in base64Write
+        return base64Write(this, string, offset, length)
 
-},{}],113:[function(require,module,exports){
-(function (global){
-/*! https://mths.be/punycode v1.4.1 by @mathias */
-;(function(root) {
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return ucs2Write(this, string, offset, length)
 
-       /** Detect free variables */
-       var freeExports = typeof exports == 'object' && exports &&
-               !exports.nodeType && exports;
-       var freeModule = typeof module == 'object' && module &&
-               !module.nodeType && module;
-       var freeGlobal = typeof global == 'object' && global;
-       if (
-               freeGlobal.global === freeGlobal ||
-               freeGlobal.window === freeGlobal ||
-               freeGlobal.self === freeGlobal
-       ) {
-               root = freeGlobal;
-       }
+      default:
+        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+        encoding = ('' + encoding).toLowerCase()
+        loweredCase = true
+    }
+  }
+}
 
-       /**
-        * The `punycode` object.
-        * @name punycode
-        * @type Object
-        */
-       var punycode,
+Buffer.prototype.toJSON = function toJSON () {
+  return {
+    type: 'Buffer',
+    data: Array.prototype.slice.call(this._arr || this, 0)
+  }
+}
 
-       /** Highest positive signed 32-bit float value */
-       maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
+function base64Slice (buf, start, end) {
+  if (start === 0 && end === buf.length) {
+    return base64.fromByteArray(buf)
+  } else {
+    return base64.fromByteArray(buf.slice(start, end))
+  }
+}
 
-       /** Bootstring parameters */
-       base = 36,
-       tMin = 1,
-       tMax = 26,
-       skew = 38,
-       damp = 700,
-       initialBias = 72,
-       initialN = 128, // 0x80
-       delimiter = '-', // '\x2D'
+function utf8Slice (buf, start, end) {
+  end = Math.min(buf.length, end)
+  var res = []
 
-       /** Regular expressions */
-       regexPunycode = /^xn--/,
-       regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
-       regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
+  var i = start
+  while (i < end) {
+    var firstByte = buf[i]
+    var codePoint = null
+    var bytesPerSequence = (firstByte > 0xEF) ? 4
+      : (firstByte > 0xDF) ? 3
+        : (firstByte > 0xBF) ? 2
+          : 1
 
-       /** Error messages */
-       errors = {
-               'overflow': 'Overflow: input needs wider integers to process',
-               'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
-               'invalid-input': 'Invalid input'
-       },
+    if (i + bytesPerSequence <= end) {
+      var secondByte, thirdByte, fourthByte, tempCodePoint
 
-       /** Convenience shortcuts */
-       baseMinusTMin = base - tMin,
-       floor = Math.floor,
-       stringFromCharCode = String.fromCharCode,
+      switch (bytesPerSequence) {
+        case 1:
+          if (firstByte < 0x80) {
+            codePoint = firstByte
+          }
+          break
+        case 2:
+          secondByte = buf[i + 1]
+          if ((secondByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
+            if (tempCodePoint > 0x7F) {
+              codePoint = tempCodePoint
+            }
+          }
+          break
+        case 3:
+          secondByte = buf[i + 1]
+          thirdByte = buf[i + 2]
+          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
+            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
+              codePoint = tempCodePoint
+            }
+          }
+          break
+        case 4:
+          secondByte = buf[i + 1]
+          thirdByte = buf[i + 2]
+          fourthByte = buf[i + 3]
+          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
+            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
+              codePoint = tempCodePoint
+            }
+          }
+      }
+    }
 
-       /** Temporary variable */
-       key;
+    if (codePoint === null) {
+      // we did not generate a valid codePoint so insert a
+      // replacement char (U+FFFD) and advance only 1 byte
+      codePoint = 0xFFFD
+      bytesPerSequence = 1
+    } else if (codePoint > 0xFFFF) {
+      // encode to utf16 (surrogate pair dance)
+      codePoint -= 0x10000
+      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
+      codePoint = 0xDC00 | codePoint & 0x3FF
+    }
 
-       /*--------------------------------------------------------------------------*/
+    res.push(codePoint)
+    i += bytesPerSequence
+  }
 
-       /**
-        * A generic error utility function.
-        * @private
-        * @param {String} type The error type.
-        * @returns {Error} Throws a `RangeError` with the applicable error message.
-        */
-       function error(type) {
-               throw new RangeError(errors[type]);
-       }
+  return decodeCodePointsArray(res)
+}
 
-       /**
-        * A generic `Array#map` utility function.
-        * @private
-        * @param {Array} array The array to iterate over.
-        * @param {Function} callback The function that gets called for every array
-        * item.
-        * @returns {Array} A new array of values returned by the callback function.
-        */
-       function map(array, fn) {
-               var length = array.length;
-               var result = [];
-               while (length--) {
-                       result[length] = fn(array[length]);
-               }
-               return result;
-       }
+// Based on http://stackoverflow.com/a/22747272/680742, the browser with
+// the lowest limit is Chrome, with 0x10000 args.
+// We go 1 magnitude less, for safety
+var MAX_ARGUMENTS_LENGTH = 0x1000
 
-       /**
-        * A simple `Array#map`-like wrapper to work with domain name strings or email
-        * addresses.
-        * @private
-        * @param {String} domain The domain name or email address.
-        * @param {Function} callback The function that gets called for every
-        * character.
-        * @returns {Array} A new string of characters returned by the callback
-        * function.
-        */
-       function mapDomain(string, fn) {
-               var parts = string.split('@');
-               var result = '';
-               if (parts.length > 1) {
-                       // In email addresses, only the domain name should be punycoded. Leave
-                       // the local part (i.e. everything up to `@`) intact.
-                       result = parts[0] + '@';
-                       string = parts[1];
-               }
-               // Avoid `split(regex)` for IE8 compatibility. See #17.
-               string = string.replace(regexSeparators, '\x2E');
-               var labels = string.split('.');
-               var encoded = map(labels, fn).join('.');
-               return result + encoded;
-       }
+function decodeCodePointsArray (codePoints) {
+  var len = codePoints.length
+  if (len <= MAX_ARGUMENTS_LENGTH) {
+    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
+  }
 
-       /**
-        * Creates an array containing the numeric code points of each Unicode
-        * character in the string. While JavaScript uses UCS-2 internally,
-        * this function will convert a pair of surrogate halves (each of which
-        * UCS-2 exposes as separate characters) into a single code point,
-        * matching UTF-16.
-        * @see `punycode.ucs2.encode`
-        * @see <https://mathiasbynens.be/notes/javascript-encoding>
-        * @memberOf punycode.ucs2
-        * @name decode
-        * @param {String} string The Unicode input string (UCS-2).
-        * @returns {Array} The new array of code points.
-        */
-       function ucs2decode(string) {
-               var output = [],
-                   counter = 0,
-                   length = string.length,
-                   value,
-                   extra;
-               while (counter < length) {
-                       value = string.charCodeAt(counter++);
-                       if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
-                               // high surrogate, and there is a next character
-                               extra = string.charCodeAt(counter++);
-                               if ((extra & 0xFC00) == 0xDC00) { // low surrogate
-                                       output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
-                               } else {
-                                       // unmatched surrogate; only append this code unit, in case the next
-                                       // code unit is the high surrogate of a surrogate pair
-                                       output.push(value);
-                                       counter--;
-                               }
-                       } else {
-                               output.push(value);
-                       }
-               }
-               return output;
-       }
+  // Decode in chunks to avoid "call stack size exceeded".
+  var res = ''
+  var i = 0
+  while (i < len) {
+    res += String.fromCharCode.apply(
+      String,
+      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
+    )
+  }
+  return res
+}
 
-       /**
-        * Creates a string based on an array of numeric code points.
-        * @see `punycode.ucs2.decode`
-        * @memberOf punycode.ucs2
-        * @name encode
-        * @param {Array} codePoints The array of numeric code points.
-        * @returns {String} The new Unicode string (UCS-2).
-        */
-       function ucs2encode(array) {
-               return map(array, function(value) {
-                       var output = '';
-                       if (value > 0xFFFF) {
-                               value -= 0x10000;
-                               output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
-                               value = 0xDC00 | value & 0x3FF;
-                       }
-                       output += stringFromCharCode(value);
-                       return output;
-               }).join('');
-       }
+function asciiSlice (buf, start, end) {
+  var ret = ''
+  end = Math.min(buf.length, end)
 
-       /**
-        * Converts a basic code point into a digit/integer.
-        * @see `digitToBasic()`
-        * @private
-        * @param {Number} codePoint The basic numeric code point value.
-        * @returns {Number} The numeric value of a basic code point (for use in
-        * representing integers) in the range `0` to `base - 1`, or `base` if
-        * the code point does not represent a value.
-        */
-       function basicToDigit(codePoint) {
-               if (codePoint - 48 < 10) {
-                       return codePoint - 22;
-               }
-               if (codePoint - 65 < 26) {
-                       return codePoint - 65;
-               }
-               if (codePoint - 97 < 26) {
-                       return codePoint - 97;
-               }
-               return base;
-       }
+  for (var i = start; i < end; ++i) {
+    ret += String.fromCharCode(buf[i] & 0x7F)
+  }
+  return ret
+}
 
-       /**
-        * Converts a digit/integer into a basic code point.
-        * @see `basicToDigit()`
-        * @private
-        * @param {Number} digit The numeric value of a basic code point.
-        * @returns {Number} The basic code point whose value (when used for
-        * representing integers) is `digit`, which needs to be in the range
-        * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
-        * used; else, the lowercase form is used. The behavior is undefined
-        * if `flag` is non-zero and `digit` has no uppercase form.
-        */
-       function digitToBasic(digit, flag) {
-               //  0..25 map to ASCII a..z or A..Z
-               // 26..35 map to ASCII 0..9
-               return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
-       }
+function latin1Slice (buf, start, end) {
+  var ret = ''
+  end = Math.min(buf.length, end)
 
-       /**
-        * Bias adaptation function as per section 3.4 of RFC 3492.
-        * https://tools.ietf.org/html/rfc3492#section-3.4
-        * @private
-        */
-       function adapt(delta, numPoints, firstTime) {
-               var k = 0;
-               delta = firstTime ? floor(delta / damp) : delta >> 1;
-               delta += floor(delta / numPoints);
-               for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
-                       delta = floor(delta / baseMinusTMin);
-               }
-               return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
-       }
+  for (var i = start; i < end; ++i) {
+    ret += String.fromCharCode(buf[i])
+  }
+  return ret
+}
 
-       /**
-        * Converts a Punycode string of ASCII-only symbols to a string of Unicode
-        * symbols.
-        * @memberOf punycode
-        * @param {String} input The Punycode string of ASCII-only symbols.
-        * @returns {String} The resulting string of Unicode symbols.
-        */
-       function decode(input) {
-               // Don't use UCS-2
-               var output = [],
-                   inputLength = input.length,
-                   out,
-                   i = 0,
-                   n = initialN,
-                   bias = initialBias,
-                   basic,
-                   j,
-                   index,
-                   oldi,
-                   w,
-                   k,
-                   digit,
-                   t,
-                   /** Cached calculation results */
-                   baseMinusT;
+function hexSlice (buf, start, end) {
+  var len = buf.length
 
-               // Handle the basic code points: let `basic` be the number of input code
-               // points before the last delimiter, or `0` if there is none, then copy
-               // the first basic code points to the output.
+  if (!start || start < 0) start = 0
+  if (!end || end < 0 || end > len) end = len
 
-               basic = input.lastIndexOf(delimiter);
-               if (basic < 0) {
-                       basic = 0;
-               }
+  var out = ''
+  for (var i = start; i < end; ++i) {
+    out += toHex(buf[i])
+  }
+  return out
+}
 
-               for (j = 0; j < basic; ++j) {
-                       // if it's not a basic code point
-                       if (input.charCodeAt(j) >= 0x80) {
-                               error('not-basic');
-                       }
-                       output.push(input.charCodeAt(j));
-               }
+function utf16leSlice (buf, start, end) {
+  var bytes = buf.slice(start, end)
+  var res = ''
+  for (var i = 0; i < bytes.length; i += 2) {
+    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
+  }
+  return res
+}
 
-               // Main decoding loop: start just after the last delimiter if any basic code
-               // points were copied; start at the beginning otherwise.
+Buffer.prototype.slice = function slice (start, end) {
+  var len = this.length
+  start = ~~start
+  end = end === undefined ? len : ~~end
 
-               for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
+  if (start < 0) {
+    start += len
+    if (start < 0) start = 0
+  } else if (start > len) {
+    start = len
+  }
 
-                       // `index` is the index of the next character to be consumed.
-                       // Decode a generalized variable-length integer into `delta`,
-                       // which gets added to `i`. The overflow checking is easier
-                       // if we increase `i` as we go, then subtract off its starting
-                       // value at the end to obtain `delta`.
-                       for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
+  if (end < 0) {
+    end += len
+    if (end < 0) end = 0
+  } else if (end > len) {
+    end = len
+  }
 
-                               if (index >= inputLength) {
-                                       error('invalid-input');
-                               }
+  if (end < start) end = start
 
-                               digit = basicToDigit(input.charCodeAt(index++));
+  var newBuf = this.subarray(start, end)
+  // Return an augmented `Uint8Array` instance
+  newBuf.__proto__ = Buffer.prototype
+  return newBuf
+}
 
-                               if (digit >= base || digit > floor((maxInt - i) / w)) {
-                                       error('overflow');
-                               }
+/*
+ * Need to make sure that buffer isn't trying to write out of bounds.
+ */
+function checkOffset (offset, ext, length) {
+  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
+  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
+}
 
-                               i += digit * w;
-                               t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
+Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
 
-                               if (digit < t) {
-                                       break;
-                               }
+  var val = this[offset]
+  var mul = 1
+  var i = 0
+  while (++i < byteLength && (mul *= 0x100)) {
+    val += this[offset + i] * mul
+  }
 
-                               baseMinusT = base - t;
-                               if (w > floor(maxInt / baseMinusT)) {
-                                       error('overflow');
-                               }
+  return val
+}
 
-                               w *= baseMinusT;
+Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert) {
+    checkOffset(offset, byteLength, this.length)
+  }
 
-                       }
+  var val = this[offset + --byteLength]
+  var mul = 1
+  while (byteLength > 0 && (mul *= 0x100)) {
+    val += this[offset + --byteLength] * mul
+  }
 
-                       out = output.length + 1;
-                       bias = adapt(i - oldi, out, oldi == 0);
+  return val
+}
+
+Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 1, this.length)
+  return this[offset]
+}
+
+Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  return this[offset] | (this[offset + 1] << 8)
+}
+
+Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  return (this[offset] << 8) | this[offset + 1]
+}
+
+Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 4, this.length)
 
-                       // `i` was supposed to wrap around from `out` to `0`,
-                       // incrementing `n` each time, so we'll fix that now:
-                       if (floor(i / out) > maxInt - n) {
-                               error('overflow');
-                       }
+  return ((this[offset]) |
+      (this[offset + 1] << 8) |
+      (this[offset + 2] << 16)) +
+      (this[offset + 3] * 0x1000000)
+}
 
-                       n += floor(i / out);
-                       i %= out;
+Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 4, this.length)
 
-                       // Insert `n` at position `i` of the output
-                       output.splice(i++, 0, n);
+  return (this[offset] * 0x1000000) +
+    ((this[offset + 1] << 16) |
+    (this[offset + 2] << 8) |
+    this[offset + 3])
+}
 
-               }
+Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
 
-               return ucs2encode(output);
-       }
+  var val = this[offset]
+  var mul = 1
+  var i = 0
+  while (++i < byteLength && (mul *= 0x100)) {
+    val += this[offset + i] * mul
+  }
+  mul *= 0x80
 
-       /**
-        * Converts a string of Unicode symbols (e.g. a domain name label) to a
-        * Punycode string of ASCII-only symbols.
-        * @memberOf punycode
-        * @param {String} input The string of Unicode symbols.
-        * @returns {String} The resulting Punycode string of ASCII-only symbols.
-        */
-       function encode(input) {
-               var n,
-                   delta,
-                   handledCPCount,
-                   basicLength,
-                   bias,
-                   j,
-                   m,
-                   q,
-                   k,
-                   t,
-                   currentValue,
-                   output = [],
-                   /** `inputLength` will hold the number of code points in `input`. */
-                   inputLength,
-                   /** Cached calculation results */
-                   handledCPCountPlusOne,
-                   baseMinusT,
-                   qMinusT;
+  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
 
-               // Convert the input in UCS-2 to Unicode
-               input = ucs2decode(input);
+  return val
+}
 
-               // Cache the length
-               inputLength = input.length;
+Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
 
-               // Initialize the state
-               n = initialN;
-               delta = 0;
-               bias = initialBias;
+  var i = byteLength
+  var mul = 1
+  var val = this[offset + --i]
+  while (i > 0 && (mul *= 0x100)) {
+    val += this[offset + --i] * mul
+  }
+  mul *= 0x80
 
-               // Handle the basic code points
-               for (j = 0; j < inputLength; ++j) {
-                       currentValue = input[j];
-                       if (currentValue < 0x80) {
-                               output.push(stringFromCharCode(currentValue));
-                       }
-               }
+  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
 
-               handledCPCount = basicLength = output.length;
+  return val
+}
 
-               // `handledCPCount` is the number of code points that have been handled;
-               // `basicLength` is the number of basic code points.
+Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 1, this.length)
+  if (!(this[offset] & 0x80)) return (this[offset])
+  return ((0xff - this[offset] + 1) * -1)
+}
 
-               // Finish the basic string - if it is not empty - with a delimiter
-               if (basicLength) {
-                       output.push(delimiter);
-               }
+Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  var val = this[offset] | (this[offset + 1] << 8)
+  return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
 
-               // Main encoding loop:
-               while (handledCPCount < inputLength) {
+Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  var val = this[offset + 1] | (this[offset] << 8)
+  return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
 
-                       // All non-basic code points < n have been handled already. Find the next
-                       // larger one:
-                       for (m = maxInt, j = 0; j < inputLength; ++j) {
-                               currentValue = input[j];
-                               if (currentValue >= n && currentValue < m) {
-                                       m = currentValue;
-                               }
-                       }
+Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 4, this.length)
 
-                       // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
-                       // but guard against overflow
-                       handledCPCountPlusOne = handledCPCount + 1;
-                       if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
-                               error('overflow');
-                       }
+  return (this[offset]) |
+    (this[offset + 1] << 8) |
+    (this[offset + 2] << 16) |
+    (this[offset + 3] << 24)
+}
 
-                       delta += (m - n) * handledCPCountPlusOne;
-                       n = m;
+Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 4, this.length)
 
-                       for (j = 0; j < inputLength; ++j) {
-                               currentValue = input[j];
+  return (this[offset] << 24) |
+    (this[offset + 1] << 16) |
+    (this[offset + 2] << 8) |
+    (this[offset + 3])
+}
 
-                               if (currentValue < n && ++delta > maxInt) {
-                                       error('overflow');
-                               }
+Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 4, this.length)
+  return ieee754.read(this, offset, true, 23, 4)
+}
 
-                               if (currentValue == n) {
-                                       // Represent delta as a generalized variable-length integer
-                                       for (q = delta, k = base; /* no condition */; k += base) {
-                                               t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
-                                               if (q < t) {
-                                                       break;
-                                               }
-                                               qMinusT = q - t;
-                                               baseMinusT = base - t;
-                                               output.push(
-                                                       stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
-                                               );
-                                               q = floor(qMinusT / baseMinusT);
-                                       }
+Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 4, this.length)
+  return ieee754.read(this, offset, false, 23, 4)
+}
 
-                                       output.push(stringFromCharCode(digitToBasic(q, 0)));
-                                       bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
-                                       delta = 0;
-                                       ++handledCPCount;
-                               }
-                       }
+Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 8, this.length)
+  return ieee754.read(this, offset, true, 52, 8)
+}
 
-                       ++delta;
-                       ++n;
+Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
+  offset = offset >>> 0
+  if (!noAssert) checkOffset(offset, 8, this.length)
+  return ieee754.read(this, offset, false, 52, 8)
+}
 
-               }
-               return output.join('');
-       }
+function checkInt (buf, value, offset, ext, max, min) {
+  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
+  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
+  if (offset + ext > buf.length) throw new RangeError('Index out of range')
+}
 
-       /**
-        * Converts a Punycode string representing a domain name or an email address
-        * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
-        * it doesn't matter if you call it on a string that has already been
-        * converted to Unicode.
-        * @memberOf punycode
-        * @param {String} input The Punycoded domain name or email address to
-        * convert to Unicode.
-        * @returns {String} The Unicode representation of the given Punycode
-        * string.
-        */
-       function toUnicode(input) {
-               return mapDomain(input, function(string) {
-                       return regexPunycode.test(string)
-                               ? decode(string.slice(4).toLowerCase())
-                               : string;
-               });
-       }
+Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert) {
+    var maxBytes = Math.pow(2, 8 * byteLength) - 1
+    checkInt(this, value, offset, byteLength, maxBytes, 0)
+  }
 
-       /**
-        * Converts a Unicode string representing a domain name or an email address to
-        * Punycode. Only the non-ASCII parts of the domain name will be converted,
-        * i.e. it doesn't matter if you call it with a domain that's already in
-        * ASCII.
-        * @memberOf punycode
-        * @param {String} input The domain name or email address to convert, as a
-        * Unicode string.
-        * @returns {String} The Punycode representation of the given domain name or
-        * email address.
-        */
-       function toASCII(input) {
-               return mapDomain(input, function(string) {
-                       return regexNonASCII.test(string)
-                               ? 'xn--' + encode(string)
-                               : string;
-               });
-       }
+  var mul = 1
+  var i = 0
+  this[offset] = value & 0xFF
+  while (++i < byteLength && (mul *= 0x100)) {
+    this[offset + i] = (value / mul) & 0xFF
+  }
 
-       /*--------------------------------------------------------------------------*/
+  return offset + byteLength
+}
 
-       /** Define the public API */
-       punycode = {
-               /**
-                * A string representing the current Punycode.js version number.
-                * @memberOf punycode
-                * @type String
-                */
-               'version': '1.4.1',
-               /**
-                * An object of methods to convert from JavaScript's internal character
-                * representation (UCS-2) to Unicode code points, and back.
-                * @see <https://mathiasbynens.be/notes/javascript-encoding>
-                * @memberOf punycode
-                * @type Object
-                */
-               'ucs2': {
-                       'decode': ucs2decode,
-                       'encode': ucs2encode
-               },
-               'decode': decode,
-               'encode': encode,
-               'toASCII': toASCII,
-               'toUnicode': toUnicode
-       };
+Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  byteLength = byteLength >>> 0
+  if (!noAssert) {
+    var maxBytes = Math.pow(2, 8 * byteLength) - 1
+    checkInt(this, value, offset, byteLength, maxBytes, 0)
+  }
 
-       /** Expose `punycode` */
-       // Some AMD build optimizers, like r.js, check for specific condition patterns
-       // like the following:
-       if (
-               typeof define == 'function' &&
-               typeof define.amd == 'object' &&
-               define.amd
-       ) {
-               define('punycode', function() {
-                       return punycode;
-               });
-       } else if (freeExports && freeModule) {
-               if (module.exports == freeExports) {
-                       // in Node.js, io.js, or RingoJS v0.8.0+
-                       freeModule.exports = punycode;
-               } else {
-                       // in Narwhal or RingoJS v0.7.0-
-                       for (key in punycode) {
-                               punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
-                       }
-               }
-       } else {
-               // in Rhino or a web browser
-               root.punycode = punycode;
-       }
+  var i = byteLength - 1
+  var mul = 1
+  this[offset + i] = value & 0xFF
+  while (--i >= 0 && (mul *= 0x100)) {
+    this[offset + i] = (value / mul) & 0xFF
+  }
 
-}(this));
+  return offset + byteLength
+}
 
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{}],114:[function(require,module,exports){
-// 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.
+Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
+  this[offset] = (value & 0xff)
+  return offset + 1
+}
 
-'use strict';
+Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+  this[offset] = (value & 0xff)
+  this[offset + 1] = (value >>> 8)
+  return offset + 2
+}
 
-// If obj.hasOwnProperty has been overridden, then calling
-// obj.hasOwnProperty(prop) will break.
-// See: https://github.com/joyent/node/issues/1707
-function hasOwnProperty(obj, prop) {
-  return Object.prototype.hasOwnProperty.call(obj, prop);
+Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+  this[offset] = (value >>> 8)
+  this[offset + 1] = (value & 0xff)
+  return offset + 2
 }
 
-module.exports = function(qs, sep, eq, options) {
-  sep = sep || '&';
-  eq = eq || '=';
-  var obj = {};
+Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+  this[offset + 3] = (value >>> 24)
+  this[offset + 2] = (value >>> 16)
+  this[offset + 1] = (value >>> 8)
+  this[offset] = (value & 0xff)
+  return offset + 4
+}
 
-  if (typeof qs !== 'string' || qs.length === 0) {
-    return obj;
-  }
+Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+  this[offset] = (value >>> 24)
+  this[offset + 1] = (value >>> 16)
+  this[offset + 2] = (value >>> 8)
+  this[offset + 3] = (value & 0xff)
+  return offset + 4
+}
 
-  var regexp = /\+/g;
-  qs = qs.split(sep);
+Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) {
+    var limit = Math.pow(2, (8 * byteLength) - 1)
 
-  var maxKeys = 1000;
-  if (options && typeof options.maxKeys === 'number') {
-    maxKeys = options.maxKeys;
+    checkInt(this, value, offset, byteLength, limit - 1, -limit)
   }
 
-  var len = qs.length;
-  // maxKeys <= 0 means that we should not limit keys count
-  if (maxKeys > 0 && len > maxKeys) {
-    len = maxKeys;
+  var i = 0
+  var mul = 1
+  var sub = 0
+  this[offset] = value & 0xFF
+  while (++i < byteLength && (mul *= 0x100)) {
+    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
+      sub = 1
+    }
+    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
   }
 
-  for (var i = 0; i < len; ++i) {
-    var x = qs[i].replace(regexp, '%20'),
-        idx = x.indexOf(eq),
-        kstr, vstr, k, v;
+  return offset + byteLength
+}
 
-    if (idx >= 0) {
-      kstr = x.substr(0, idx);
-      vstr = x.substr(idx + 1);
-    } else {
-      kstr = x;
-      vstr = '';
+Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) {
+    var limit = Math.pow(2, (8 * byteLength) - 1)
+
+    checkInt(this, value, offset, byteLength, limit - 1, -limit)
+  }
+
+  var i = byteLength - 1
+  var mul = 1
+  var sub = 0
+  this[offset + i] = value & 0xFF
+  while (--i >= 0 && (mul *= 0x100)) {
+    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
+      sub = 1
     }
+    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
+  if (value < 0) value = 0xff + value + 1
+  this[offset] = (value & 0xff)
+  return offset + 1
+}
+
+Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+  this[offset] = (value & 0xff)
+  this[offset + 1] = (value >>> 8)
+  return offset + 2
+}
+
+Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+  this[offset] = (value >>> 8)
+  this[offset + 1] = (value & 0xff)
+  return offset + 2
+}
+
+Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+  this[offset] = (value & 0xff)
+  this[offset + 1] = (value >>> 8)
+  this[offset + 2] = (value >>> 16)
+  this[offset + 3] = (value >>> 24)
+  return offset + 4
+}
+
+Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+  if (value < 0) value = 0xffffffff + value + 1
+  this[offset] = (value >>> 24)
+  this[offset + 1] = (value >>> 16)
+  this[offset + 2] = (value >>> 8)
+  this[offset + 3] = (value & 0xff)
+  return offset + 4
+}
 
-    k = decodeURIComponent(kstr);
-    v = decodeURIComponent(vstr);
+function checkIEEE754 (buf, value, offset, ext, max, min) {
+  if (offset + ext > buf.length) throw new RangeError('Index out of range')
+  if (offset < 0) throw new RangeError('Index out of range')
+}
 
-    if (!hasOwnProperty(obj, k)) {
-      obj[k] = v;
-    } else if (isArray(obj[k])) {
-      obj[k].push(v);
-    } else {
-      obj[k] = [obj[k], v];
-    }
+function writeFloat (buf, value, offset, littleEndian, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) {
+    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
   }
+  ieee754.write(buf, value, offset, littleEndian, 23, 4)
+  return offset + 4
+}
 
-  return obj;
-};
+Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
+  return writeFloat(this, value, offset, true, noAssert)
+}
 
-var isArray = Array.isArray || function (xs) {
-  return Object.prototype.toString.call(xs) === '[object Array]';
-};
+Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
+  return writeFloat(this, value, offset, false, noAssert)
+}
 
-},{}],115:[function(require,module,exports){
-// 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.
+function writeDouble (buf, value, offset, littleEndian, noAssert) {
+  value = +value
+  offset = offset >>> 0
+  if (!noAssert) {
+    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
+  }
+  ieee754.write(buf, value, offset, littleEndian, 52, 8)
+  return offset + 8
+}
 
-'use strict';
+Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
+  return writeDouble(this, value, offset, true, noAssert)
+}
 
-var stringifyPrimitive = function(v) {
-  switch (typeof v) {
-    case 'string':
-      return v;
+Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
+  return writeDouble(this, value, offset, false, noAssert)
+}
 
-    case 'boolean':
-      return v ? 'true' : 'false';
+// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
+Buffer.prototype.copy = function copy (target, targetStart, start, end) {
+  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')
+  if (!start) start = 0
+  if (!end && end !== 0) end = this.length
+  if (targetStart >= target.length) targetStart = target.length
+  if (!targetStart) targetStart = 0
+  if (end > 0 && end < start) end = start
 
-    case 'number':
-      return isFinite(v) ? v : '';
+  // Copy 0 bytes; we're done
+  if (end === start) return 0
+  if (target.length === 0 || this.length === 0) return 0
 
-    default:
-      return '';
+  // Fatal error conditions
+  if (targetStart < 0) {
+    throw new RangeError('targetStart out of bounds')
   }
-};
+  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')
+  if (end < 0) throw new RangeError('sourceEnd out of bounds')
 
-module.exports = function(obj, sep, eq, name) {
-  sep = sep || '&';
-  eq = eq || '=';
-  if (obj === null) {
-    obj = undefined;
+  // Are we oob?
+  if (end > this.length) end = this.length
+  if (target.length - targetStart < end - start) {
+    end = target.length - targetStart + start
   }
 
-  if (typeof obj === 'object') {
-    return map(objectKeys(obj), function(k) {
-      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
-      if (isArray(obj[k])) {
-        return map(obj[k], function(v) {
-          return ks + encodeURIComponent(stringifyPrimitive(v));
-        }).join(sep);
-      } else {
-        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
-      }
-    }).join(sep);
+  var len = end - start
 
+  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {
+    // Use built-in when available, missing from IE11
+    this.copyWithin(targetStart, start, end)
+  } else if (this === target && start < targetStart && targetStart < end) {
+    // descending copy from end
+    for (var i = len - 1; i >= 0; --i) {
+      target[i + targetStart] = this[i + start]
+    }
+  } else {
+    Uint8Array.prototype.set.call(
+      target,
+      this.subarray(start, end),
+      targetStart
+    )
   }
 
-  if (!name) return '';
-  return encodeURIComponent(stringifyPrimitive(name)) + eq +
-         encodeURIComponent(stringifyPrimitive(obj));
-};
-
-var isArray = Array.isArray || function (xs) {
-  return Object.prototype.toString.call(xs) === '[object Array]';
-};
-
-function map (xs, f) {
-  if (xs.map) return xs.map(f);
-  var res = [];
-  for (var i = 0; i < xs.length; i++) {
-    res.push(f(xs[i], i));
-  }
-  return res;
+  return len
 }
 
-var objectKeys = Object.keys || function (obj) {
-  var res = [];
-  for (var key in obj) {
-    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
+// Usage:
+//    buffer.fill(number[, offset[, end]])
+//    buffer.fill(buffer[, offset[, end]])
+//    buffer.fill(string[, offset[, end]][, encoding])
+Buffer.prototype.fill = function fill (val, start, end, encoding) {
+  // Handle string cases:
+  if (typeof val === 'string') {
+    if (typeof start === 'string') {
+      encoding = start
+      start = 0
+      end = this.length
+    } else if (typeof end === 'string') {
+      encoding = end
+      end = this.length
+    }
+    if (encoding !== undefined && typeof encoding !== 'string') {
+      throw new TypeError('encoding must be a string')
+    }
+    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
+      throw new TypeError('Unknown encoding: ' + encoding)
+    }
+    if (val.length === 1) {
+      var code = val.charCodeAt(0)
+      if ((encoding === 'utf8' && code < 128) ||
+          encoding === 'latin1') {
+        // Fast path: If `val` fits into a single byte, use that numeric value.
+        val = code
+      }
+    }
+  } else if (typeof val === 'number') {
+    val = val & 255
   }
-  return res;
-};
-
-},{}],116:[function(require,module,exports){
-'use strict';
-
-exports.decode = exports.parse = require('./decode');
-exports.encode = exports.stringify = require('./encode');
-
-},{"./decode":114,"./encode":115}],117:[function(require,module,exports){
-// 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.
-
-// a duplex stream is just a stream that is both readable and writable.
-// Since JS doesn't have multiple prototypal inheritance, this class
-// prototypally inherits from Readable, and then parasitically from
-// Writable.
 
-'use strict';
+  // Invalid ranges are not set to a default, so can range check early.
+  if (start < 0 || this.length < start || this.length < end) {
+    throw new RangeError('Out of range index')
+  }
 
-/*<replacement>*/
+  if (end <= start) {
+    return this
+  }
 
-var pna = require('process-nextick-args');
-/*</replacement>*/
+  start = start >>> 0
+  end = end === undefined ? this.length : end >>> 0
 
-/*<replacement>*/
-var objectKeys = Object.keys || function (obj) {
-  var keys = [];
-  for (var key in obj) {
-    keys.push(key);
-  }return keys;
-};
-/*</replacement>*/
+  if (!val) val = 0
 
-module.exports = Duplex;
+  var i
+  if (typeof val === 'number') {
+    for (i = start; i < end; ++i) {
+      this[i] = val
+    }
+  } else {
+    var bytes = Buffer.isBuffer(val)
+      ? val
+      : Buffer.from(val, encoding)
+    var len = bytes.length
+    if (len === 0) {
+      throw new TypeError('The value "' + val +
+        '" is invalid for argument "value"')
+    }
+    for (i = 0; i < end - start; ++i) {
+      this[i + start] = bytes[i % len]
+    }
+  }
 
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
+  return this
+}
 
-var Readable = require('./_stream_readable');
-var Writable = require('./_stream_writable');
+// HELPER FUNCTIONS
+// ================
 
-util.inherits(Duplex, Readable);
+var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
 
-{
-  // avoid scope creep, the keys array can then be collected
-  var keys = objectKeys(Writable.prototype);
-  for (var v = 0; v < keys.length; v++) {
-    var method = keys[v];
-    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
+function base64clean (str) {
+  // Node takes equal signs as end of the Base64 encoding
+  str = str.split('=')[0]
+  // Node strips out invalid characters like \n and \t from the string, base64-js does not
+  str = str.trim().replace(INVALID_BASE64_RE, '')
+  // Node converts strings with length < 2 to ''
+  if (str.length < 2) return ''
+  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
+  while (str.length % 4 !== 0) {
+    str = str + '='
   }
+  return str
 }
 
-function Duplex(options) {
-  if (!(this instanceof Duplex)) return new Duplex(options);
-
-  Readable.call(this, options);
-  Writable.call(this, options);
+function toHex (n) {
+  if (n < 16) return '0' + n.toString(16)
+  return n.toString(16)
+}
 
-  if (options && options.readable === false) this.readable = false;
+function utf8ToBytes (string, units) {
+  units = units || Infinity
+  var codePoint
+  var length = string.length
+  var leadSurrogate = null
+  var bytes = []
 
-  if (options && options.writable === false) this.writable = false;
+  for (var i = 0; i < length; ++i) {
+    codePoint = string.charCodeAt(i)
 
-  this.allowHalfOpen = true;
-  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
+    // is surrogate component
+    if (codePoint > 0xD7FF && codePoint < 0xE000) {
+      // last char was a lead
+      if (!leadSurrogate) {
+        // no lead yet
+        if (codePoint > 0xDBFF) {
+          // unexpected trail
+          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+          continue
+        } else if (i + 1 === length) {
+          // unpaired lead
+          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+          continue
+        }
 
-  this.once('end', onend);
-}
+        // valid lead
+        leadSurrogate = codePoint
 
-Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
-  // making it explicit this property is not enumerable
-  // because otherwise some prototype manipulation in
-  // userland will fail
-  enumerable: false,
-  get: function () {
-    return this._writableState.highWaterMark;
-  }
-});
+        continue
+      }
 
-// the no-half-open enforcer
-function onend() {
-  // if we allow half-open state, or if the writable side ended,
-  // then we're ok.
-  if (this.allowHalfOpen || this._writableState.ended) return;
+      // 2 leads in a row
+      if (codePoint < 0xDC00) {
+        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+        leadSurrogate = codePoint
+        continue
+      }
 
-  // no more data can be written.
-  // But allow more writes to happen in this tick.
-  pna.nextTick(onEndNT, this);
-}
+      // valid surrogate pair
+      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
+    } else if (leadSurrogate) {
+      // valid bmp char, but last char was a lead
+      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+    }
 
-function onEndNT(self) {
-  self.end();
-}
+    leadSurrogate = null
 
-Object.defineProperty(Duplex.prototype, 'destroyed', {
-  get: function () {
-    if (this._readableState === undefined || this._writableState === undefined) {
-      return false;
-    }
-    return this._readableState.destroyed && this._writableState.destroyed;
-  },
-  set: function (value) {
-    // we ignore the value if the stream
-    // has not been initialized yet
-    if (this._readableState === undefined || this._writableState === undefined) {
-      return;
+    // encode utf8
+    if (codePoint < 0x80) {
+      if ((units -= 1) < 0) break
+      bytes.push(codePoint)
+    } else if (codePoint < 0x800) {
+      if ((units -= 2) < 0) break
+      bytes.push(
+        codePoint >> 0x6 | 0xC0,
+        codePoint & 0x3F | 0x80
+      )
+    } else if (codePoint < 0x10000) {
+      if ((units -= 3) < 0) break
+      bytes.push(
+        codePoint >> 0xC | 0xE0,
+        codePoint >> 0x6 & 0x3F | 0x80,
+        codePoint & 0x3F | 0x80
+      )
+    } else if (codePoint < 0x110000) {
+      if ((units -= 4) < 0) break
+      bytes.push(
+        codePoint >> 0x12 | 0xF0,
+        codePoint >> 0xC & 0x3F | 0x80,
+        codePoint >> 0x6 & 0x3F | 0x80,
+        codePoint & 0x3F | 0x80
+      )
+    } else {
+      throw new Error('Invalid code point')
     }
-
-    // backward compatibility, the user is explicitly
-    // managing destroyed
-    this._readableState.destroyed = value;
-    this._writableState.destroyed = value;
   }
-});
-
-Duplex.prototype._destroy = function (err, cb) {
-  this.push(null);
-  this.end();
 
-  pna.nextTick(cb, err);
-};
-},{"./_stream_readable":119,"./_stream_writable":121,"core-util-is":101,"inherits":106,"process-nextick-args":111}],118:[function(require,module,exports){
-// 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.
+  return bytes
+}
 
-// a passthrough stream.
-// basically just the most minimal sort of Transform stream.
-// Every written chunk gets output as-is.
+function asciiToBytes (str) {
+  var byteArray = []
+  for (var i = 0; i < str.length; ++i) {
+    // Node's code seems to be doing this and not & 0x7F..
+    byteArray.push(str.charCodeAt(i) & 0xFF)
+  }
+  return byteArray
+}
 
-'use strict';
+function utf16leToBytes (str, units) {
+  var c, hi, lo
+  var byteArray = []
+  for (var i = 0; i < str.length; ++i) {
+    if ((units -= 2) < 0) break
 
-module.exports = PassThrough;
+    c = str.charCodeAt(i)
+    hi = c >> 8
+    lo = c % 256
+    byteArray.push(lo)
+    byteArray.push(hi)
+  }
 
-var Transform = require('./_stream_transform');
+  return byteArray
+}
 
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
+function base64ToBytes (str) {
+  return base64.toByteArray(base64clean(str))
+}
 
-util.inherits(PassThrough, Transform);
+function blitBuffer (src, dst, offset, length) {
+  for (var i = 0; i < length; ++i) {
+    if ((i + offset >= dst.length) || (i >= src.length)) break
+    dst[i + offset] = src[i]
+  }
+  return i
+}
 
-function PassThrough(options) {
-  if (!(this instanceof PassThrough)) return new PassThrough(options);
+// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass
+// the `instanceof` check but they should be treated as of that type.
+// See: https://github.com/feross/buffer/issues/166
+function isInstance (obj, type) {
+  return obj instanceof type ||
+    (obj != null && obj.constructor != null && obj.constructor.name != null &&
+      obj.constructor.name === type.name)
+}
+function numberIsNaN (obj) {
+  // For IE11 support
+  return obj !== obj // eslint-disable-line no-self-compare
+}
 
-  Transform.call(this, options);
+},{"base64-js":108,"ieee754":117}],112:[function(require,module,exports){
+module.exports = {
+  "100": "Continue",
+  "101": "Switching Protocols",
+  "102": "Processing",
+  "200": "OK",
+  "201": "Created",
+  "202": "Accepted",
+  "203": "Non-Authoritative Information",
+  "204": "No Content",
+  "205": "Reset Content",
+  "206": "Partial Content",
+  "207": "Multi-Status",
+  "208": "Already Reported",
+  "226": "IM Used",
+  "300": "Multiple Choices",
+  "301": "Moved Permanently",
+  "302": "Found",
+  "303": "See Other",
+  "304": "Not Modified",
+  "305": "Use Proxy",
+  "307": "Temporary Redirect",
+  "308": "Permanent Redirect",
+  "400": "Bad Request",
+  "401": "Unauthorized",
+  "402": "Payment Required",
+  "403": "Forbidden",
+  "404": "Not Found",
+  "405": "Method Not Allowed",
+  "406": "Not Acceptable",
+  "407": "Proxy Authentication Required",
+  "408": "Request Timeout",
+  "409": "Conflict",
+  "410": "Gone",
+  "411": "Length Required",
+  "412": "Precondition Failed",
+  "413": "Payload Too Large",
+  "414": "URI Too Long",
+  "415": "Unsupported Media Type",
+  "416": "Range Not Satisfiable",
+  "417": "Expectation Failed",
+  "418": "I'm a teapot",
+  "421": "Misdirected Request",
+  "422": "Unprocessable Entity",
+  "423": "Locked",
+  "424": "Failed Dependency",
+  "425": "Unordered Collection",
+  "426": "Upgrade Required",
+  "428": "Precondition Required",
+  "429": "Too Many Requests",
+  "431": "Request Header Fields Too Large",
+  "451": "Unavailable For Legal Reasons",
+  "500": "Internal Server Error",
+  "501": "Not Implemented",
+  "502": "Bad Gateway",
+  "503": "Service Unavailable",
+  "504": "Gateway Timeout",
+  "505": "HTTP Version Not Supported",
+  "506": "Variant Also Negotiates",
+  "507": "Insufficient Storage",
+  "508": "Loop Detected",
+  "509": "Bandwidth Limit Exceeded",
+  "510": "Not Extended",
+  "511": "Network Authentication Required"
 }
 
-PassThrough.prototype._transform = function (chunk, encoding, cb) {
-  cb(null, chunk);
-};
-},{"./_stream_transform":120,"core-util-is":101,"inherits":106}],119:[function(require,module,exports){
-(function (process,global){
+},{}],113:[function(require,module,exports){
+(function (Buffer){
 // Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -15778,1222 +16789,1198 @@ PassThrough.prototype._transform = function (chunk, encoding, cb) {
 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-'use strict';
-
-/*<replacement>*/
-
-var pna = require('process-nextick-args');
-/*</replacement>*/
-
-module.exports = Readable;
-
-/*<replacement>*/
-var isArray = require('isarray');
-/*</replacement>*/
-
-/*<replacement>*/
-var Duplex;
-/*</replacement>*/
-
-Readable.ReadableState = ReadableState;
-
-/*<replacement>*/
-var EE = require('events').EventEmitter;
-
-var EElistenerCount = function (emitter, type) {
-  return emitter.listeners(type).length;
-};
-/*</replacement>*/
-
-/*<replacement>*/
-var Stream = require('./internal/streams/stream');
-/*</replacement>*/
-
-/*<replacement>*/
+// NOTE: These type checking functions intentionally don't use `instanceof`
+// because it is fragile and can be easily faked with `Object.create()`.
 
-var Buffer = require('safe-buffer').Buffer;
-var OurUint8Array = global.Uint8Array || function () {};
-function _uint8ArrayToBuffer(chunk) {
-  return Buffer.from(chunk);
-}
-function _isUint8Array(obj) {
-  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
+function isArray(arg) {
+  if (Array.isArray) {
+    return Array.isArray(arg);
+  }
+  return objectToString(arg) === '[object Array]';
 }
+exports.isArray = isArray;
 
-/*</replacement>*/
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-/*<replacement>*/
-var debugUtil = require('util');
-var debug = void 0;
-if (debugUtil && debugUtil.debuglog) {
-  debug = debugUtil.debuglog('stream');
-} else {
-  debug = function () {};
+function isBoolean(arg) {
+  return typeof arg === 'boolean';
 }
-/*</replacement>*/
-
-var BufferList = require('./internal/streams/BufferList');
-var destroyImpl = require('./internal/streams/destroy');
-var StringDecoder;
-
-util.inherits(Readable, Stream);
-
-var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
-
-function prependListener(emitter, event, fn) {
-  // Sadly this is not cacheable as some libraries bundle their own
-  // event emitter implementation with them.
-  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
+exports.isBoolean = isBoolean;
 
-  // This is a hack to make sure that our error handler is attached before any
-  // userland ones.  NEVER DO THIS. This is here only because this code needs
-  // to continue to work with older versions of Node.js that do not include
-  // the prependListener() method. The goal is to eventually remove this hack.
-  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
+function isNull(arg) {
+  return arg === null;
 }
+exports.isNull = isNull;
 
-function ReadableState(options, stream) {
-  Duplex = Duplex || require('./_stream_duplex');
-
-  options = options || {};
-
-  // Duplex streams are both readable and writable, but share
-  // the same options object.
-  // However, some cases require setting options to different
-  // values for the readable and the writable sides of the duplex stream.
-  // These options can be provided separately as readableXXX and writableXXX.
-  var isDuplex = stream instanceof Duplex;
-
-  // object stream flag. Used to make read(n) ignore n and to
-  // make all the buffer merging and length checks go away
-  this.objectMode = !!options.objectMode;
-
-  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
-
-  // the point at which it stops calling _read() to fill the buffer
-  // Note: 0 is a valid value, means "don't call _read preemptively ever"
-  var hwm = options.highWaterMark;
-  var readableHwm = options.readableHighWaterMark;
-  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
-
-  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
-
-  // cast to ints.
-  this.highWaterMark = Math.floor(this.highWaterMark);
-
-  // A linked list is used to store data chunks instead of an array because the
-  // linked list can remove elements from the beginning faster than
-  // array.shift()
-  this.buffer = new BufferList();
-  this.length = 0;
-  this.pipes = null;
-  this.pipesCount = 0;
-  this.flowing = null;
-  this.ended = false;
-  this.endEmitted = false;
-  this.reading = false;
-
-  // a flag to be able to tell if the event 'readable'/'data' is emitted
-  // immediately, or on a later tick.  We set this to true at first, because
-  // any actions that shouldn't happen until "later" should generally also
-  // not happen before the first read call.
-  this.sync = true;
-
-  // whenever we return null, then we set a flag to say
-  // that we're awaiting a 'readable' event emission.
-  this.needReadable = false;
-  this.emittedReadable = false;
-  this.readableListening = false;
-  this.resumeScheduled = false;
-
-  // has it been destroyed
-  this.destroyed = false;
-
-  // Crypto is kind of old and crusty.  Historically, its default string
-  // encoding is 'binary' so we have to make this configurable.
-  // Everything else in the universe uses 'utf8', though.
-  this.defaultEncoding = options.defaultEncoding || 'utf8';
-
-  // the number of writers that are awaiting a drain event in .pipe()s
-  this.awaitDrain = 0;
-
-  // if true, a maybeReadMore has been scheduled
-  this.readingMore = false;
-
-  this.decoder = null;
-  this.encoding = null;
-  if (options.encoding) {
-    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
-    this.decoder = new StringDecoder(options.encoding);
-    this.encoding = options.encoding;
-  }
+function isNullOrUndefined(arg) {
+  return arg == null;
 }
+exports.isNullOrUndefined = isNullOrUndefined;
 
-function Readable(options) {
-  Duplex = Duplex || require('./_stream_duplex');
-
-  if (!(this instanceof Readable)) return new Readable(options);
-
-  this._readableState = new ReadableState(options, this);
-
-  // legacy
-  this.readable = true;
-
-  if (options) {
-    if (typeof options.read === 'function') this._read = options.read;
-
-    if (typeof options.destroy === 'function') this._destroy = options.destroy;
-  }
-
-  Stream.call(this);
+function isNumber(arg) {
+  return typeof arg === 'number';
 }
+exports.isNumber = isNumber;
 
-Object.defineProperty(Readable.prototype, 'destroyed', {
-  get: function () {
-    if (this._readableState === undefined) {
-      return false;
-    }
-    return this._readableState.destroyed;
-  },
-  set: function (value) {
-    // we ignore the value if the stream
-    // has not been initialized yet
-    if (!this._readableState) {
-      return;
-    }
-
-    // backward compatibility, the user is explicitly
-    // managing destroyed
-    this._readableState.destroyed = value;
-  }
-});
+function isString(arg) {
+  return typeof arg === 'string';
+}
+exports.isString = isString;
 
-Readable.prototype.destroy = destroyImpl.destroy;
-Readable.prototype._undestroy = destroyImpl.undestroy;
-Readable.prototype._destroy = function (err, cb) {
-  this.push(null);
-  cb(err);
-};
+function isSymbol(arg) {
+  return typeof arg === 'symbol';
+}
+exports.isSymbol = isSymbol;
 
-// Manually shove something into the read() buffer.
-// This returns true if the highWaterMark has not been hit yet,
-// similar to how Writable.write() returns true if you should
-// write() some more.
-Readable.prototype.push = function (chunk, encoding) {
-  var state = this._readableState;
-  var skipChunkCheck;
+function isUndefined(arg) {
+  return arg === void 0;
+}
+exports.isUndefined = isUndefined;
 
-  if (!state.objectMode) {
-    if (typeof chunk === 'string') {
-      encoding = encoding || state.defaultEncoding;
-      if (encoding !== state.encoding) {
-        chunk = Buffer.from(chunk, encoding);
-        encoding = '';
-      }
-      skipChunkCheck = true;
-    }
-  } else {
-    skipChunkCheck = true;
-  }
+function isRegExp(re) {
+  return objectToString(re) === '[object RegExp]';
+}
+exports.isRegExp = isRegExp;
 
-  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
-};
+function isObject(arg) {
+  return typeof arg === 'object' && arg !== null;
+}
+exports.isObject = isObject;
 
-// Unshift should *always* be something directly out of read()
-Readable.prototype.unshift = function (chunk) {
-  return readableAddChunk(this, chunk, null, true, false);
-};
+function isDate(d) {
+  return objectToString(d) === '[object Date]';
+}
+exports.isDate = isDate;
 
-function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
-  var state = stream._readableState;
-  if (chunk === null) {
-    state.reading = false;
-    onEofChunk(stream, state);
-  } else {
-    var er;
-    if (!skipChunkCheck) er = chunkInvalid(state, chunk);
-    if (er) {
-      stream.emit('error', er);
-    } else if (state.objectMode || chunk && chunk.length > 0) {
-      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
-        chunk = _uint8ArrayToBuffer(chunk);
-      }
+function isError(e) {
+  return (objectToString(e) === '[object Error]' || e instanceof Error);
+}
+exports.isError = isError;
 
-      if (addToFront) {
-        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
-      } else if (state.ended) {
-        stream.emit('error', new Error('stream.push() after EOF'));
-      } else {
-        state.reading = false;
-        if (state.decoder && !encoding) {
-          chunk = state.decoder.write(chunk);
-          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
-        } else {
-          addChunk(stream, state, chunk, false);
-        }
-      }
-    } else if (!addToFront) {
-      state.reading = false;
-    }
-  }
+function isFunction(arg) {
+  return typeof arg === 'function';
+}
+exports.isFunction = isFunction;
 
-  return needMoreData(state);
+function isPrimitive(arg) {
+  return arg === null ||
+         typeof arg === 'boolean' ||
+         typeof arg === 'number' ||
+         typeof arg === 'string' ||
+         typeof arg === 'symbol' ||  // ES6 symbol
+         typeof arg === 'undefined';
 }
+exports.isPrimitive = isPrimitive;
 
-function addChunk(stream, state, chunk, addToFront) {
-  if (state.flowing && state.length === 0 && !state.sync) {
-    stream.emit('data', chunk);
-    stream.read(0);
-  } else {
-    // update the buffer info.
-    state.length += state.objectMode ? 1 : chunk.length;
-    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
+exports.isBuffer = Buffer.isBuffer;
 
-    if (state.needReadable) emitReadable(stream);
-  }
-  maybeReadMore(stream, state);
+function objectToString(o) {
+  return Object.prototype.toString.call(o);
 }
 
-function chunkInvalid(state, chunk) {
-  var er;
-  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
-    er = new TypeError('Invalid non-string/buffer chunk');
+}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
+},{"../../is-buffer/index.js":119}],114:[function(require,module,exports){
+// 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 objectCreate = Object.create || objectCreatePolyfill
+var objectKeys = Object.keys || objectKeysPolyfill
+var bind = Function.prototype.bind || functionBindPolyfill
+
+function EventEmitter() {
+  if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) {
+    this._events = objectCreate(null);
+    this._eventsCount = 0;
   }
-  return er;
+
+  this._maxListeners = this._maxListeners || undefined;
 }
+module.exports = EventEmitter;
 
-// if it's past the high water mark, we can push in some more.
-// Also, if we have no data yet, we can stand some
-// more bytes.  This is to work around cases where hwm=0,
-// such as the repl.  Also, if the push() triggered a
-// readable event, and the user called read(largeNumber) such that
-// needReadable was set, then we ought to push more, so that another
-// 'readable' event will be triggered.
-function needMoreData(state) {
-  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
+// Backwards-compat with node 0.10.x
+EventEmitter.EventEmitter = EventEmitter;
+
+EventEmitter.prototype._events = undefined;
+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;
+
+var hasDefineProperty;
+try {
+  var o = {};
+  if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 });
+  hasDefineProperty = o.x === 0;
+} catch (err) { hasDefineProperty = false }
+if (hasDefineProperty) {
+  Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
+    enumerable: true,
+    get: function() {
+      return defaultMaxListeners;
+    },
+    set: function(arg) {
+      // check whether the input is a positive number (whose value is zero or
+      // greater and not a NaN).
+      if (typeof arg !== 'number' || arg < 0 || arg !== arg)
+        throw new TypeError('"defaultMaxListeners" must be a positive number');
+      defaultMaxListeners = arg;
+    }
+  });
+} else {
+  EventEmitter.defaultMaxListeners = defaultMaxListeners;
 }
 
-Readable.prototype.isPaused = function () {
-  return this._readableState.flowing === false;
+// 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 || isNaN(n))
+    throw new TypeError('"n" argument must be a positive number');
+  this._maxListeners = n;
+  return this;
 };
 
-// backwards compatibility.
-Readable.prototype.setEncoding = function (enc) {
-  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
-  this._readableState.decoder = new StringDecoder(enc);
-  this._readableState.encoding = enc;
-  return this;
+function $getMaxListeners(that) {
+  if (that._maxListeners === undefined)
+    return EventEmitter.defaultMaxListeners;
+  return that._maxListeners;
+}
+
+EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
+  return $getMaxListeners(this);
 };
 
-// Don't raise the hwm > 8MB
-var MAX_HWM = 0x800000;
-function computeNewHighWaterMark(n) {
-  if (n >= MAX_HWM) {
-    n = MAX_HWM;
-  } else {
-    // Get the next highest power of 2 to prevent increasing hwm excessively in
-    // tiny amounts
-    n--;
-    n |= n >>> 1;
-    n |= n >>> 2;
-    n |= n >>> 4;
-    n |= n >>> 8;
-    n |= n >>> 16;
-    n++;
+// These standalone emit* functions are used to optimize calling of event
+// handlers for fast cases because emit() itself often has a variable number of
+// arguments and can be deoptimized because of that. These functions always have
+// the same number of arguments and thus do not get deoptimized, so the code
+// inside them can execute faster.
+function emitNone(handler, isFn, self) {
+  if (isFn)
+    handler.call(self);
+  else {
+    var len = handler.length;
+    var listeners = arrayClone(handler, len);
+    for (var i = 0; i < len; ++i)
+      listeners[i].call(self);
   }
-  return n;
 }
-
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function howMuchToRead(n, state) {
-  if (n <= 0 || state.length === 0 && state.ended) return 0;
-  if (state.objectMode) return 1;
-  if (n !== n) {
-    // Only flow one buffer at a time
-    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
+function emitOne(handler, isFn, self, arg1) {
+  if (isFn)
+    handler.call(self, arg1);
+  else {
+    var len = handler.length;
+    var listeners = arrayClone(handler, len);
+    for (var i = 0; i < len; ++i)
+      listeners[i].call(self, arg1);
   }
-  // If we're asking for more than the current hwm, then raise the hwm.
-  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
-  if (n <= state.length) return n;
-  // Don't have enough
-  if (!state.ended) {
-    state.needReadable = true;
-    return 0;
+}
+function emitTwo(handler, isFn, self, arg1, arg2) {
+  if (isFn)
+    handler.call(self, arg1, arg2);
+  else {
+    var len = handler.length;
+    var listeners = arrayClone(handler, len);
+    for (var i = 0; i < len; ++i)
+      listeners[i].call(self, arg1, arg2);
   }
-  return state.length;
 }
-
-// you can override either this method, or the async _read(n) below.
-Readable.prototype.read = function (n) {
-  debug('read', n);
-  n = parseInt(n, 10);
-  var state = this._readableState;
-  var nOrig = n;
-
-  if (n !== 0) state.emittedReadable = false;
-
-  // if we're doing read(0) to trigger a readable event, but we
-  // already have a bunch of data in the buffer, then just trigger
-  // the 'readable' event and move on.
-  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
-    debug('read: emitReadable', state.length, state.ended);
-    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
-    return null;
+function emitThree(handler, isFn, self, arg1, arg2, arg3) {
+  if (isFn)
+    handler.call(self, arg1, arg2, arg3);
+  else {
+    var len = handler.length;
+    var listeners = arrayClone(handler, len);
+    for (var i = 0; i < len; ++i)
+      listeners[i].call(self, arg1, arg2, arg3);
   }
+}
 
-  n = howMuchToRead(n, state);
-
-  // if we've ended, and we're now clear, then finish it up.
-  if (n === 0 && state.ended) {
-    if (state.length === 0) endReadable(this);
-    return null;
+function emitMany(handler, isFn, self, args) {
+  if (isFn)
+    handler.apply(self, args);
+  else {
+    var len = handler.length;
+    var listeners = arrayClone(handler, len);
+    for (var i = 0; i < len; ++i)
+      listeners[i].apply(self, args);
   }
+}
 
-  // All the actual chunk generation logic needs to be
-  // *below* the call to _read.  The reason is that in certain
-  // synthetic stream cases, such as passthrough streams, _read
-  // may be a completely synchronous operation which may change
-  // the state of the read buffer, providing enough data when
-  // before there was *not* enough.
-  //
-  // So, the steps are:
-  // 1. Figure out what the state of things will be after we do
-  // a read from the buffer.
-  //
-  // 2. If that resulting state will trigger a _read, then call _read.
-  // Note that this may be asynchronous, or synchronous.  Yes, it is
-  // deeply ugly to write APIs this way, but that still doesn't mean
-  // that the Readable class should behave improperly, as streams are
-  // designed to be sync/async agnostic.
-  // Take note if the _read call is sync or async (ie, if the read call
-  // has returned yet), so that we know whether or not it's safe to emit
-  // 'readable' etc.
-  //
-  // 3. Actually pull the requested chunks out of the buffer and return.
+EventEmitter.prototype.emit = function emit(type) {
+  var er, handler, len, args, i, events;
+  var doError = (type === 'error');
 
-  // if we need a readable event, then we need to do some reading.
-  var doRead = state.needReadable;
-  debug('need readable', doRead);
+  events = this._events;
+  if (events)
+    doError = (doError && events.error == null);
+  else if (!doError)
+    return false;
 
-  // if we currently have less than the highWaterMark, then also read some
-  if (state.length === 0 || state.length - n < state.highWaterMark) {
-    doRead = true;
-    debug('length less than watermark', doRead);
+  // If there is no 'error' event listener then throw.
+  if (doError) {
+    if (arguments.length > 1)
+      er = arguments[1];
+    if (er instanceof Error) {
+      throw er; // Unhandled 'error' event
+    } else {
+      // At least give some kind of context to the user
+      var err = new Error('Unhandled "error" event. (' + er + ')');
+      err.context = er;
+      throw err;
+    }
+    return false;
   }
 
-  // however, if we've ended, then there's no point, and if we're already
-  // reading, then it's unnecessary.
-  if (state.ended || state.reading) {
-    doRead = false;
-    debug('reading or ended', doRead);
-  } else if (doRead) {
-    debug('do read');
-    state.reading = true;
-    state.sync = true;
-    // if the length is currently zero, then we *need* a readable event.
-    if (state.length === 0) state.needReadable = true;
-    // call internal read method
-    this._read(state.highWaterMark);
-    state.sync = false;
-    // If _read pushed data synchronously, then `reading` will be false,
-    // and we need to re-evaluate how much data we can return to the user.
-    if (!state.reading) n = howMuchToRead(nOrig, state);
-  }
+  handler = events[type];
 
-  var ret;
-  if (n > 0) ret = fromList(n, state);else ret = null;
+  if (!handler)
+    return false;
 
-  if (ret === null) {
-    state.needReadable = true;
-    n = 0;
-  } else {
-    state.length -= n;
+  var isFn = typeof handler === 'function';
+  len = arguments.length;
+  switch (len) {
+      // fast cases
+    case 1:
+      emitNone(handler, isFn, this);
+      break;
+    case 2:
+      emitOne(handler, isFn, this, arguments[1]);
+      break;
+    case 3:
+      emitTwo(handler, isFn, this, arguments[1], arguments[2]);
+      break;
+    case 4:
+      emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);
+      break;
+      // slower
+    default:
+      args = new Array(len - 1);
+      for (i = 1; i < len; i++)
+        args[i - 1] = arguments[i];
+      emitMany(handler, isFn, this, args);
   }
 
-  if (state.length === 0) {
-    // If we have nothing in the buffer, then we want to know
-    // as soon as we *do* get something into the buffer.
-    if (!state.ended) state.needReadable = true;
+  return true;
+};
 
-    // If we tried to read() past the EOF, then emit end on the next tick.
-    if (nOrig !== n && state.ended) endReadable(this);
-  }
+function _addListener(target, type, listener, prepend) {
+  var m;
+  var events;
+  var existing;
 
-  if (ret !== null) this.emit('data', ret);
+  if (typeof listener !== 'function')
+    throw new TypeError('"listener" argument must be a function');
 
-  return ret;
-};
+  events = target._events;
+  if (!events) {
+    events = target._events = objectCreate(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) {
+      target.emit('newListener', type,
+          listener.listener ? listener.listener : listener);
 
-function onEofChunk(stream, state) {
-  if (state.ended) return;
-  if (state.decoder) {
-    var chunk = state.decoder.end();
-    if (chunk && chunk.length) {
-      state.buffer.push(chunk);
-      state.length += state.objectMode ? 1 : chunk.length;
+      // 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];
   }
-  state.ended = true;
-
-  // emit 'readable' now to make sure it gets picked up.
-  emitReadable(stream);
-}
-
-// Don't emit readable right away in sync mode, because this can trigger
-// another read() call => stack overflow.  This way, it might trigger
-// a nextTick recursion warning, but that's not so bad.
-function emitReadable(stream) {
-  var state = stream._readableState;
-  state.needReadable = false;
-  if (!state.emittedReadable) {
-    debug('emitReadable', state.flowing);
-    state.emittedReadable = true;
-    if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
-  }
-}
 
-function emitReadable_(stream) {
-  debug('emit readable');
-  stream.emit('readable');
-  flow(stream);
-}
+  if (!existing) {
+    // 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];
+    } else {
+      // If we've already got an array, just append.
+      if (prepend) {
+        existing.unshift(listener);
+      } else {
+        existing.push(listener);
+      }
+    }
 
-// at this point, the user has presumably seen the 'readable' event,
-// and called read() to consume some data.  that may have triggered
-// in turn another _read(n) call, in which case reading = true if
-// it's in progress.
-// However, if we're not ended, or reading, and the length < hwm,
-// then go ahead and try to read some more preemptively.
-function maybeReadMore(stream, state) {
-  if (!state.readingMore) {
-    state.readingMore = true;
-    pna.nextTick(maybeReadMore_, stream, state);
+    // Check for listener leak
+    if (!existing.warned) {
+      m = $getMaxListeners(target);
+      if (m && m > 0 && existing.length > m) {
+        existing.warned = true;
+        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;
+        if (typeof console === 'object' && console.warn) {
+          console.warn('%s: %s', w.name, w.message);
+        }
+      }
+    }
   }
-}
 
-function maybeReadMore_(stream, state) {
-  var len = state.length;
-  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
-    debug('maybeReadMore read 0');
-    stream.read(0);
-    if (len === state.length)
-      // didn't get any data, stop spinning.
-      break;else len = state.length;
-  }
-  state.readingMore = false;
+  return target;
 }
 
-// abstract method.  to be overridden in specific implementation classes.
-// call cb(er, data) where data is <= n in length.
-// for virtual (non-string, non-buffer) streams, "length" is somewhat
-// arbitrary, and perhaps not very meaningful.
-Readable.prototype._read = function (n) {
-  this.emit('error', new Error('_read() is not implemented'));
+EventEmitter.prototype.addListener = function addListener(type, listener) {
+  return _addListener(this, type, listener, false);
 };
 
-Readable.prototype.pipe = function (dest, pipeOpts) {
-  var src = this;
-  var state = this._readableState;
-
-  switch (state.pipesCount) {
-    case 0:
-      state.pipes = dest;
-      break;
-    case 1:
-      state.pipes = [state.pipes, dest];
-      break;
-    default:
-      state.pipes.push(dest);
-      break;
-  }
-  state.pipesCount += 1;
-  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
-
-  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
+EventEmitter.prototype.on = EventEmitter.prototype.addListener;
 
-  var endFn = doEnd ? onend : unpipe;
-  if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);
+EventEmitter.prototype.prependListener =
+    function prependListener(type, listener) {
+      return _addListener(this, type, listener, true);
+    };
 
-  dest.on('unpipe', onunpipe);
-  function onunpipe(readable, unpipeInfo) {
-    debug('onunpipe');
-    if (readable === src) {
-      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
-        unpipeInfo.hasUnpiped = true;
-        cleanup();
-      }
+function onceWrapper() {
+  if (!this.fired) {
+    this.target.removeListener(this.type, this.wrapFn);
+    this.fired = true;
+    switch (arguments.length) {
+      case 0:
+        return this.listener.call(this.target);
+      case 1:
+        return this.listener.call(this.target, arguments[0]);
+      case 2:
+        return this.listener.call(this.target, arguments[0], arguments[1]);
+      case 3:
+        return this.listener.call(this.target, arguments[0], arguments[1],
+            arguments[2]);
+      default:
+        var args = new Array(arguments.length);
+        for (var i = 0; i < args.length; ++i)
+          args[i] = arguments[i];
+        this.listener.apply(this.target, args);
     }
   }
+}
 
-  function onend() {
-    debug('onend');
-    dest.end();
-  }
+function _onceWrap(target, type, listener) {
+  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };
+  var wrapped = bind.call(onceWrapper, state);
+  wrapped.listener = listener;
+  state.wrapFn = wrapped;
+  return wrapped;
+}
 
-  // when the dest drains, it reduces the awaitDrain counter
-  // on the source.  This would be more elegant with a .once()
-  // handler in flow(), but adding and removing repeatedly is
-  // too slow.
-  var ondrain = pipeOnDrain(src);
-  dest.on('drain', ondrain);
+EventEmitter.prototype.once = function once(type, listener) {
+  if (typeof listener !== 'function')
+    throw new TypeError('"listener" argument must be a function');
+  this.on(type, _onceWrap(this, type, listener));
+  return this;
+};
 
-  var cleanedUp = false;
-  function cleanup() {
-    debug('cleanup');
-    // cleanup event handlers once the pipe is broken
-    dest.removeListener('close', onclose);
-    dest.removeListener('finish', onfinish);
-    dest.removeListener('drain', ondrain);
-    dest.removeListener('error', onerror);
-    dest.removeListener('unpipe', onunpipe);
-    src.removeListener('end', onend);
-    src.removeListener('end', unpipe);
-    src.removeListener('data', ondata);
+EventEmitter.prototype.prependOnceListener =
+    function prependOnceListener(type, listener) {
+      if (typeof listener !== 'function')
+        throw new TypeError('"listener" argument must be a function');
+      this.prependListener(type, _onceWrap(this, type, listener));
+      return this;
+    };
 
-    cleanedUp = true;
+// 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;
 
-    // if the reader is waiting for a drain event from this
-    // specific writer, then it would cause it to never start
-    // flowing again.
-    // So, if this is awaiting a drain, then we just call it now.
-    // If we don't know, then assume that we are waiting for one.
-    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
-  }
+      if (typeof listener !== 'function')
+        throw new TypeError('"listener" argument must be a function');
 
-  // If the user pushes more data while we're writing to dest then we'll end up
-  // in ondata again. However, we only want to increase awaitDrain once because
-  // dest will only emit one 'drain' event for the multiple writes.
-  // => Introduce a guard on increasing awaitDrain.
-  var increasedAwaitDrain = false;
-  src.on('data', ondata);
-  function ondata(chunk) {
-    debug('ondata');
-    increasedAwaitDrain = false;
-    var ret = dest.write(chunk);
-    if (false === ret && !increasedAwaitDrain) {
-      // If the user unpiped during `dest.write()`, it is possible
-      // to get stuck in a permanently paused state if that write
-      // also returned false.
-      // => Check whether `dest` is still a piping destination.
-      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
-        debug('false write response, pause', src._readableState.awaitDrain);
-        src._readableState.awaitDrain++;
-        increasedAwaitDrain = true;
-      }
-      src.pause();
-    }
-  }
+      events = this._events;
+      if (!events)
+        return this;
 
-  // if the dest has an error, then stop piping into it.
-  // however, don't suppress the throwing behavior for this.
-  function onerror(er) {
-    debug('onerror', er);
-    unpipe();
-    dest.removeListener('error', onerror);
-    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
-  }
+      list = events[type];
+      if (!list)
+        return this;
 
-  // Make sure our error handler is attached before userland ones.
-  prependListener(dest, 'error', onerror);
+      if (list === listener || list.listener === listener) {
+        if (--this._eventsCount === 0)
+          this._events = objectCreate(null);
+        else {
+          delete events[type];
+          if (events.removeListener)
+            this.emit('removeListener', type, list.listener || listener);
+        }
+      } else if (typeof list !== 'function') {
+        position = -1;
 
-  // Both close and finish should trigger unpipe, but only once.
-  function onclose() {
-    dest.removeListener('finish', onfinish);
-    unpipe();
-  }
-  dest.once('close', onclose);
-  function onfinish() {
-    debug('onfinish');
-    dest.removeListener('close', onclose);
-    unpipe();
-  }
-  dest.once('finish', onfinish);
+        for (i = list.length - 1; i >= 0; i--) {
+          if (list[i] === listener || list[i].listener === listener) {
+            originalListener = list[i].listener;
+            position = i;
+            break;
+          }
+        }
 
-  function unpipe() {
-    debug('unpipe');
-    src.unpipe(dest);
-  }
+        if (position < 0)
+          return this;
 
-  // tell the dest that it's being piped to
-  dest.emit('pipe', src);
+        if (position === 0)
+          list.shift();
+        else
+          spliceOne(list, position);
 
-  // start the flow if it hasn't been started already.
-  if (!state.flowing) {
-    debug('pipe resume');
-    src.resume();
-  }
+        if (list.length === 1)
+          events[type] = list[0];
 
-  return dest;
-};
+        if (events.removeListener)
+          this.emit('removeListener', type, originalListener || listener);
+      }
 
-function pipeOnDrain(src) {
-  return function () {
-    var state = src._readableState;
-    debug('pipeOnDrain', state.awaitDrain);
-    if (state.awaitDrain) state.awaitDrain--;
-    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
-      state.flowing = true;
-      flow(src);
-    }
-  };
-}
+      return this;
+    };
+
+EventEmitter.prototype.removeAllListeners =
+    function removeAllListeners(type) {
+      var listeners, events, i;
+
+      events = this._events;
+      if (!events)
+        return this;
 
-Readable.prototype.unpipe = function (dest) {
-  var state = this._readableState;
-  var unpipeInfo = { hasUnpiped: false };
+      // not listening for removeListener, no need to emit
+      if (!events.removeListener) {
+        if (arguments.length === 0) {
+          this._events = objectCreate(null);
+          this._eventsCount = 0;
+        } else if (events[type]) {
+          if (--this._eventsCount === 0)
+            this._events = objectCreate(null);
+          else
+            delete events[type];
+        }
+        return this;
+      }
 
-  // if we're not piping anywhere, then do nothing.
-  if (state.pipesCount === 0) return this;
+      // emit removeListener for all listeners on all events
+      if (arguments.length === 0) {
+        var keys = objectKeys(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 = objectCreate(null);
+        this._eventsCount = 0;
+        return this;
+      }
 
-  // just one destination.  most common case.
-  if (state.pipesCount === 1) {
-    // passed in one, but it's not the right one.
-    if (dest && dest !== state.pipes) return this;
+      listeners = events[type];
 
-    if (!dest) dest = state.pipes;
+      if (typeof listeners === 'function') {
+        this.removeListener(type, listeners);
+      } else if (listeners) {
+        // LIFO order
+        for (i = listeners.length - 1; i >= 0; i--) {
+          this.removeListener(type, listeners[i]);
+        }
+      }
 
-    // got a match.
-    state.pipes = null;
-    state.pipesCount = 0;
-    state.flowing = false;
-    if (dest) dest.emit('unpipe', this, unpipeInfo);
-    return this;
-  }
+      return this;
+    };
 
-  // slow case. multiple pipe destinations.
+function _listeners(target, type, unwrap) {
+  var events = target._events;
 
-  if (!dest) {
-    // remove all.
-    var dests = state.pipes;
-    var len = state.pipesCount;
-    state.pipes = null;
-    state.pipesCount = 0;
-    state.flowing = false;
+  if (!events)
+    return [];
 
-    for (var i = 0; i < len; i++) {
-      dests[i].emit('unpipe', this, unpipeInfo);
-    }return this;
-  }
+  var evlistener = events[type];
+  if (!evlistener)
+    return [];
 
-  // try to find the right one.
-  var index = indexOf(state.pipes, dest);
-  if (index === -1) return this;
+  if (typeof evlistener === 'function')
+    return unwrap ? [evlistener.listener || evlistener] : [evlistener];
 
-  state.pipes.splice(index, 1);
-  state.pipesCount -= 1;
-  if (state.pipesCount === 1) state.pipes = state.pipes[0];
+  return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
+}
 
-  dest.emit('unpipe', this, unpipeInfo);
+EventEmitter.prototype.listeners = function listeners(type) {
+  return _listeners(this, type, true);
+};
 
-  return this;
+EventEmitter.prototype.rawListeners = function rawListeners(type) {
+  return _listeners(this, type, false);
 };
 
-// set up data events if they are asked for
-// Ensure readable listeners eventually get something
-Readable.prototype.on = function (ev, fn) {
-  var res = Stream.prototype.on.call(this, ev, fn);
+EventEmitter.listenerCount = function(emitter, type) {
+  if (typeof emitter.listenerCount === 'function') {
+    return emitter.listenerCount(type);
+  } else {
+    return listenerCount.call(emitter, type);
+  }
+};
 
-  if (ev === 'data') {
-    // Start flowing on next tick if stream isn't explicitly paused
-    if (this._readableState.flowing !== false) this.resume();
-  } else if (ev === 'readable') {
-    var state = this._readableState;
-    if (!state.endEmitted && !state.readableListening) {
-      state.readableListening = state.needReadable = true;
-      state.emittedReadable = false;
-      if (!state.reading) {
-        pna.nextTick(nReadingNextTick, this);
-      } else if (state.length) {
-        emitReadable(this);
-      }
+EventEmitter.prototype.listenerCount = listenerCount;
+function listenerCount(type) {
+  var events = this._events;
+
+  if (events) {
+    var evlistener = events[type];
+
+    if (typeof evlistener === 'function') {
+      return 1;
+    } else if (evlistener) {
+      return evlistener.length;
     }
   }
 
-  return res;
+  return 0;
+}
+
+EventEmitter.prototype.eventNames = function eventNames() {
+  return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];
 };
-Readable.prototype.addListener = Readable.prototype.on;
 
-function nReadingNextTick(self) {
-  debug('readable nexttick read 0');
-  self.read(0);
+// About 1.5x faster than the two-arg version of Array#splice().
+function spliceOne(list, index) {
+  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)
+    list[i] = list[k];
+  list.pop();
 }
 
-// pause() and resume() are remnants of the legacy readable stream API
-// If the user uses them, then switch into old mode.
-Readable.prototype.resume = function () {
-  var state = this._readableState;
-  if (!state.flowing) {
-    debug('resume');
-    state.flowing = true;
-    resume(this, state);
-  }
-  return this;
-};
+function arrayClone(arr, n) {
+  var copy = new Array(n);
+  for (var i = 0; i < n; ++i)
+    copy[i] = arr[i];
+  return copy;
+}
 
-function resume(stream, state) {
-  if (!state.resumeScheduled) {
-    state.resumeScheduled = true;
-    pna.nextTick(resume_, stream, state);
+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 resume_(stream, state) {
-  if (!state.reading) {
-    debug('resume read 0');
-    stream.read(0);
+function objectCreatePolyfill(proto) {
+  var F = function() {};
+  F.prototype = proto;
+  return new F;
+}
+function objectKeysPolyfill(obj) {
+  var keys = [];
+  for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) {
+    keys.push(k);
   }
-
-  state.resumeScheduled = false;
-  state.awaitDrain = 0;
-  stream.emit('resume');
-  flow(stream);
-  if (state.flowing && !state.reading) stream.read(0);
+  return k;
+}
+function functionBindPolyfill(context) {
+  var fn = this;
+  return function () {
+    return fn.apply(context, arguments);
+  };
 }
 
-Readable.prototype.pause = function () {
-  debug('call pause flowing=%j', this._readableState.flowing);
-  if (false !== this._readableState.flowing) {
-    debug('pause');
-    this._readableState.flowing = false;
-    this.emit('pause');
-  }
-  return this;
-};
+},{}],115:[function(require,module,exports){
+(function (global){
+/*! https://mths.be/he v1.2.0 by @mathias | MIT license */
+;(function(root) {
 
-function flow(stream) {
-  var state = stream._readableState;
-  debug('flow', state.flowing);
-  while (state.flowing && stream.read() !== null) {}
-}
+       // Detect free variables `exports`.
+       var freeExports = typeof exports == 'object' && exports;
 
-// wrap an old-style stream as the async data source.
-// This is *not* part of the readable stream interface.
-// It is an ugly unfortunate mess of history.
-Readable.prototype.wrap = function (stream) {
-  var _this = this;
+       // Detect free variable `module`.
+       var freeModule = typeof module == 'object' && module &&
+               module.exports == freeExports && module;
 
-  var state = this._readableState;
-  var paused = false;
+       // Detect free variable `global`, from Node.js or Browserified code,
+       // and use it as `root`.
+       var freeGlobal = typeof global == 'object' && global;
+       if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
+               root = freeGlobal;
+       }
 
-  stream.on('end', function () {
-    debug('wrapped end');
-    if (state.decoder && !state.ended) {
-      var chunk = state.decoder.end();
-      if (chunk && chunk.length) _this.push(chunk);
-    }
+       /*--------------------------------------------------------------------------*/
+
+       // All astral symbols.
+       var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
+       // All ASCII symbols (not just printable ASCII) except those listed in the
+       // first column of the overrides table.
+       // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides
+       var regexAsciiWhitelist = /[\x01-\x7F]/g;
+       // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or
+       // code points listed in the first column of the overrides table on
+       // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.
+       var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;
+
+       var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g;
+       var encodeMap = {'\xAD':'shy','\u200C':'zwnj','\u200D':'zwj','\u200E':'lrm','\u2063':'ic','\u2062':'it','\u2061':'af','\u200F':'rlm','\u200B':'ZeroWidthSpace','\u2060':'NoBreak','\u0311':'DownBreve','\u20DB':'tdot','\u20DC':'DotDot','\t':'Tab','\n':'NewLine','\u2008':'puncsp','\u205F':'MediumSpace','\u2009':'thinsp','\u200A':'hairsp','\u2004':'emsp13','\u2002':'ensp','\u2005':'emsp14','\u2003':'emsp','\u2007':'numsp','\xA0':'nbsp','\u205F\u200A':'ThickSpace','\u203E':'oline','_':'lowbar','\u2010':'dash','\u2013':'ndash','\u2014':'mdash','\u2015':'horbar',',':'comma',';':'semi','\u204F':'bsemi',':':'colon','\u2A74':'Colone','!':'excl','\xA1':'iexcl','?':'quest','\xBF':'iquest','.':'period','\u2025':'nldr','\u2026':'mldr','\xB7':'middot','\'':'apos','\u2018':'lsquo','\u2019':'rsquo','\u201A':'sbquo','\u2039':'lsaquo','\u203A':'rsaquo','"':'quot','\u201C':'ldquo','\u201D':'rdquo','\u201E':'bdquo','\xAB':'laquo','\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\u2308':'lceil','\u2309':'rceil','\u230A':'lfloor','\u230B':'rfloor','\u2985':'lopar','\u2986':'ropar','\u298B':'lbrke','\u298C':'rbrke','\u298D':'lbrkslu','\u298E':'rbrksld','\u298F':'lbrksld','\u2990':'rbrkslu','\u2991':'langd','\u2992':'rangd','\u2993':'lparlt','\u2994':'rpargt','\u2995':'gtlPar','\u2996':'ltrPar','\u27E6':'lobrk','\u27E7':'robrk','\u27E8':'lang','\u27E9':'rang','\u27EA':'Lang','\u27EB':'Rang','\u27EC':'loang','\u27ED':'roang','\u2772':'lbbrk','\u2773':'rbbrk','\u2016':'Vert','\xA7':'sect','\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\u2030':'permil','\u2031':'pertenk','\u2020':'dagger','\u2021':'Dagger','\u2022':'bull','\u2043':'hybull','\u2032':'prime','\u2033':'Prime','\u2034':'tprime','\u2057':'qprime','\u2035':'bprime','\u2041':'caret','`':'grave','\xB4':'acute','\u02DC':'tilde','^':'Hat','\xAF':'macr','\u02D8':'breve','\u02D9':'dot','\xA8':'die','\u02DA':'ring','\u02DD':'dblac','\xB8':'cedil','\u02DB':'ogon','\u02C6':'circ','\u02C7':'caron','\xB0':'deg','\xA9':'copy','\xAE':'reg','\u2117':'copysr','\u2118':'wp','\u211E':'rx','\u2127':'mho','\u2129':'iiota','\u2190':'larr','\u219A':'nlarr','\u2192':'rarr','\u219B':'nrarr','\u2191':'uarr','\u2193':'darr','\u2194':'harr','\u21AE':'nharr','\u2195':'varr','\u2196':'nwarr','\u2197':'nearr','\u2198':'searr','\u2199':'swarr','\u219D':'rarrw','\u219D\u0338':'nrarrw','\u219E':'Larr','\u219F':'Uarr','\u21A0':'Rarr','\u21A1':'Darr','\u21A2':'larrtl','\u21A3':'rarrtl','\u21A4':'mapstoleft','\u21A5':'mapstoup','\u21A6':'map','\u21A7':'mapstodown','\u21A9':'larrhk','\u21AA':'rarrhk','\u21AB':'larrlp','\u21AC':'rarrlp','\u21AD':'harrw','\u21B0':'lsh','\u21B1':'rsh','\u21B2':'ldsh','\u21B3':'rdsh','\u21B5':'crarr','\u21B6':'cularr','\u21B7':'curarr','\u21BA':'olarr','\u21BB':'orarr','\u21BC':'lharu','\u21BD':'lhard','\u21BE':'uharr','\u21BF':'uharl','\u21C0':'rharu','\u21C1':'rhard','\u21C2':'dharr','\u21C3':'dharl','\u21C4':'rlarr','\u21C5':'udarr','\u21C6':'lrarr','\u21C7':'llarr','\u21C8':'uuarr','\u21C9':'rrarr','\u21CA':'ddarr','\u21CB':'lrhar','\u21CC':'rlhar','\u21D0':'lArr','\u21CD':'nlArr','\u21D1':'uArr','\u21D2':'rArr','\u21CF':'nrArr','\u21D3':'dArr','\u21D4':'iff','\u21CE':'nhArr','\u21D5':'vArr','\u21D6':'nwArr','\u21D7':'neArr','\u21D8':'seArr','\u21D9':'swArr','\u21DA':'lAarr','\u21DB':'rAarr','\u21DD':'zigrarr','\u21E4':'larrb','\u21E5':'rarrb','\u21F5':'duarr','\u21FD':'loarr','\u21FE':'roarr','\u21FF':'hoarr','\u2200':'forall','\u2201':'comp','\u2202':'part','\u2202\u0338':'npart','\u2203':'exist','\u2204':'nexist','\u2205':'empty','\u2207':'Del','\u2208':'in','\u2209':'notin','\u220B':'ni','\u220C':'notni','\u03F6':'bepsi','\u220F':'prod','\u2210':'coprod','\u2211':'sum','+':'plus','\xB1':'pm','\xF7':'div','\xD7':'times','<':'lt','\u226E':'nlt','<\u20D2':'nvlt','=':'equals','\u2260':'ne','=\u20E5':'bne','\u2A75':'Equal','>':'gt','\u226F':'ngt','>\u20D2':'nvgt','\xAC':'not','|':'vert','\xA6':'brvbar','\u2212':'minus','\u2213':'mp','\u2214':'plusdo','\u2044':'frasl','\u2216':'setmn','\u2217':'lowast','\u2218':'compfn','\u221A':'Sqrt','\u221D':'prop','\u221E':'infin','\u221F':'angrt','\u2220':'ang','\u2220\u20D2':'nang','\u2221':'angmsd','\u2222':'angsph','\u2223':'mid','\u2224':'nmid','\u2225':'par','\u2226':'npar','\u2227':'and','\u2228':'or','\u2229':'cap','\u2229\uFE00':'caps','\u222A':'cup','\u222A\uFE00':'cups','\u222B':'int','\u222C':'Int','\u222D':'tint','\u2A0C':'qint','\u222E':'oint','\u222F':'Conint','\u2230':'Cconint','\u2231':'cwint','\u2232':'cwconint','\u2233':'awconint','\u2234':'there4','\u2235':'becaus','\u2236':'ratio','\u2237':'Colon','\u2238':'minusd','\u223A':'mDDot','\u223B':'homtht','\u223C':'sim','\u2241':'nsim','\u223C\u20D2':'nvsim','\u223D':'bsim','\u223D\u0331':'race','\u223E':'ac','\u223E\u0333':'acE','\u223F':'acd','\u2240':'wr','\u2242':'esim','\u2242\u0338':'nesim','\u2243':'sime','\u2244':'nsime','\u2245':'cong','\u2247':'ncong','\u2246':'simne','\u2248':'ap','\u2249':'nap','\u224A':'ape','\u224B':'apid','\u224B\u0338':'napid','\u224C':'bcong','\u224D':'CupCap','\u226D':'NotCupCap','\u224D\u20D2':'nvap','\u224E':'bump','\u224E\u0338':'nbump','\u224F':'bumpe','\u224F\u0338':'nbumpe','\u2250':'doteq','\u2250\u0338':'nedot','\u2251':'eDot','\u2252':'efDot','\u2253':'erDot','\u2254':'colone','\u2255':'ecolon','\u2256':'ecir','\u2257':'cire','\u2259':'wedgeq','\u225A':'veeeq','\u225C':'trie','\u225F':'equest','\u2261':'equiv','\u2262':'nequiv','\u2261\u20E5':'bnequiv','\u2264':'le','\u2270':'nle','\u2264\u20D2':'nvle','\u2265':'ge','\u2271':'nge','\u2265\u20D2':'nvge','\u2266':'lE','\u2266\u0338':'nlE','\u2267':'gE','\u2267\u0338':'ngE','\u2268\uFE00':'lvnE','\u2268':'lnE','\u2269':'gnE','\u2269\uFE00':'gvnE','\u226A':'ll','\u226A\u0338':'nLtv','\u226A\u20D2':'nLt','\u226B':'gg','\u226B\u0338':'nGtv','\u226B\u20D2':'nGt','\u226C':'twixt','\u2272':'lsim','\u2274':'nlsim','\u2273':'gsim','\u2275':'ngsim','\u2276':'lg','\u2278':'ntlg','\u2277':'gl','\u2279':'ntgl','\u227A':'pr','\u2280':'npr','\u227B':'sc','\u2281':'nsc','\u227C':'prcue','\u22E0':'nprcue','\u227D':'sccue','\u22E1':'nsccue','\u227E':'prsim','\u227F':'scsim','\u227F\u0338':'NotSucceedsTilde','\u2282':'sub','\u2284':'nsub','\u2282\u20D2':'vnsub','\u2283':'sup','\u2285':'nsup','\u2283\u20D2':'vnsup','\u2286':'sube','\u2288':'nsube','\u2287':'supe','\u2289':'nsupe','\u228A\uFE00':'vsubne','\u228A':'subne','\u228B\uFE00':'vsupne','\u228B':'supne','\u228D':'cupdot','\u228E':'uplus','\u228F':'sqsub','\u228F\u0338':'NotSquareSubset','\u2290':'sqsup','\u2290\u0338':'NotSquareSuperset','\u2291':'sqsube','\u22E2':'nsqsube','\u2292':'sqsupe','\u22E3':'nsqsupe','\u2293':'sqcap','\u2293\uFE00':'sqcaps','\u2294':'sqcup','\u2294\uFE00':'sqcups','\u2295':'oplus','\u2296':'ominus','\u2297':'otimes','\u2298':'osol','\u2299':'odot','\u229A':'ocir','\u229B':'oast','\u229D':'odash','\u229E':'plusb','\u229F':'minusb','\u22A0':'timesb','\u22A1':'sdotb','\u22A2':'vdash','\u22AC':'nvdash','\u22A3':'dashv','\u22A4':'top','\u22A5':'bot','\u22A7':'models','\u22A8':'vDash','\u22AD':'nvDash','\u22A9':'Vdash','\u22AE':'nVdash','\u22AA':'Vvdash','\u22AB':'VDash','\u22AF':'nVDash','\u22B0':'prurel','\u22B2':'vltri','\u22EA':'nltri','\u22B3':'vrtri','\u22EB':'nrtri','\u22B4':'ltrie','\u22EC':'nltrie','\u22B4\u20D2':'nvltrie','\u22B5':'rtrie','\u22ED':'nrtrie','\u22B5\u20D2':'nvrtrie','\u22B6':'origof','\u22B7':'imof','\u22B8':'mumap','\u22B9':'hercon','\u22BA':'intcal','\u22BB':'veebar','\u22BD':'barvee','\u22BE':'angrtvb','\u22BF':'lrtri','\u22C0':'Wedge','\u22C1':'Vee','\u22C2':'xcap','\u22C3':'xcup','\u22C4':'diam','\u22C5':'sdot','\u22C6':'Star','\u22C7':'divonx','\u22C8':'bowtie','\u22C9':'ltimes','\u22CA':'rtimes','\u22CB':'lthree','\u22CC':'rthree','\u22CD':'bsime','\u22CE':'cuvee','\u22CF':'cuwed','\u22D0':'Sub','\u22D1':'Sup','\u22D2':'Cap','\u22D3':'Cup','\u22D4':'fork','\u22D5':'epar','\u22D6':'ltdot','\u22D7':'gtdot','\u22D8':'Ll','\u22D8\u0338':'nLl','\u22D9':'Gg','\u22D9\u0338':'nGg','\u22DA\uFE00':'lesg','\u22DA':'leg','\u22DB':'gel','\u22DB\uFE00':'gesl','\u22DE':'cuepr','\u22DF':'cuesc','\u22E6':'lnsim','\u22E7':'gnsim','\u22E8':'prnsim','\u22E9':'scnsim','\u22EE':'vellip','\u22EF':'ctdot','\u22F0':'utdot','\u22F1':'dtdot','\u22F2':'disin','\u22F3':'isinsv','\u22F4':'isins','\u22F5':'isindot','\u22F5\u0338':'notindot','\u22F6':'notinvc','\u22F7':'notinvb','\u22F9':'isinE','\u22F9\u0338':'notinE','\u22FA':'nisd','\u22FB':'xnis','\u22FC':'nis','\u22FD':'notnivc','\u22FE':'notnivb','\u2305':'barwed','\u2306':'Barwed','\u230C':'drcrop','\u230D':'dlcrop','\u230E':'urcrop','\u230F':'ulcrop','\u2310':'bnot','\u2312':'profline','\u2313':'profsurf','\u2315':'telrec','\u2316':'target','\u231C':'ulcorn','\u231D':'urcorn','\u231E':'dlcorn','\u231F':'drcorn','\u2322':'frown','\u2323':'smile','\u232D':'cylcty','\u232E':'profalar','\u2336':'topbot','\u233D':'ovbar','\u233F':'solbar','\u237C':'angzarr','\u23B0':'lmoust','\u23B1':'rmoust','\u23B4':'tbrk','\u23B5':'bbrk','\u23B6':'bbrktbrk','\u23DC':'OverParenthesis','\u23DD':'UnderParenthesis','\u23DE':'OverBrace','\u23DF':'UnderBrace','\u23E2':'trpezium','\u23E7':'elinters','\u2423':'blank','\u2500':'boxh','\u2502':'boxv','\u250C':'boxdr','\u2510':'boxdl','\u2514':'boxur','\u2518':'boxul','\u251C':'boxvr','\u2524':'boxvl','\u252C':'boxhd','\u2534':'boxhu','\u253C':'boxvh','\u2550':'boxH','\u2551':'boxV','\u2552':'boxdR','\u2553':'boxDr','\u2554':'boxDR','\u2555':'boxdL','\u2556':'boxDl','\u2557':'boxDL','\u2558':'boxuR','\u2559':'boxUr','\u255A':'boxUR','\u255B':'boxuL','\u255C':'boxUl','\u255D':'boxUL','\u255E':'boxvR','\u255F':'boxVr','\u2560':'boxVR','\u2561':'boxvL','\u2562':'boxVl','\u2563':'boxVL','\u2564':'boxHd','\u2565':'boxhD','\u2566':'boxHD','\u2567':'boxHu','\u2568':'boxhU','\u2569':'boxHU','\u256A':'boxvH','\u256B':'boxVh','\u256C':'boxVH','\u2580':'uhblk','\u2584':'lhblk','\u2588':'block','\u2591':'blk14','\u2592':'blk12','\u2593':'blk34','\u25A1':'squ','\u25AA':'squf','\u25AB':'EmptyVerySmallSquare','\u25AD':'rect','\u25AE':'marker','\u25B1':'fltns','\u25B3':'xutri','\u25B4':'utrif','\u25B5':'utri','\u25B8':'rtrif','\u25B9':'rtri','\u25BD':'xdtri','\u25BE':'dtrif','\u25BF':'dtri','\u25C2':'ltrif','\u25C3':'ltri','\u25CA':'loz','\u25CB':'cir','\u25EC':'tridot','\u25EF':'xcirc','\u25F8':'ultri','\u25F9':'urtri','\u25FA':'lltri','\u25FB':'EmptySmallSquare','\u25FC':'FilledSmallSquare','\u2605':'starf','\u2606':'star','\u260E':'phone','\u2640':'female','\u2642':'male','\u2660':'spades','\u2663':'clubs','\u2665':'hearts','\u2666':'diams','\u266A':'sung','\u2713':'check','\u2717':'cross','\u2720':'malt','\u2736':'sext','\u2758':'VerticalSeparator','\u27C8':'bsolhsub','\u27C9':'suphsol','\u27F5':'xlarr','\u27F6':'xrarr','\u27F7':'xharr','\u27F8':'xlArr','\u27F9':'xrArr','\u27FA':'xhArr','\u27FC':'xmap','\u27FF':'dzigrarr','\u2902':'nvlArr','\u2903':'nvrArr','\u2904':'nvHarr','\u2905':'Map','\u290C':'lbarr','\u290D':'rbarr','\u290E':'lBarr','\u290F':'rBarr','\u2910':'RBarr','\u2911':'DDotrahd','\u2912':'UpArrowBar','\u2913':'DownArrowBar','\u2916':'Rarrtl','\u2919':'latail','\u291A':'ratail','\u291B':'lAtail','\u291C':'rAtail','\u291D':'larrfs','\u291E':'rarrfs','\u291F':'larrbfs','\u2920':'rarrbfs','\u2923':'nwarhk','\u2924':'nearhk','\u2925':'searhk','\u2926':'swarhk','\u2927':'nwnear','\u2928':'toea','\u2929':'tosa','\u292A':'swnwar','\u2933':'rarrc','\u2933\u0338':'nrarrc','\u2935':'cudarrr','\u2936':'ldca','\u2937':'rdca','\u2938':'cudarrl','\u2939':'larrpl','\u293C':'curarrm','\u293D':'cularrp','\u2945':'rarrpl','\u2948':'harrcir','\u2949':'Uarrocir','\u294A':'lurdshar','\u294B':'ldrushar','\u294E':'LeftRightVector','\u294F':'RightUpDownVector','\u2950':'DownLeftRightVector','\u2951':'LeftUpDownVector','\u2952':'LeftVectorBar','\u2953':'RightVectorBar','\u2954':'RightUpVectorBar','\u2955':'RightDownVectorBar','\u2956':'DownLeftVectorBar','\u2957':'DownRightVectorBar','\u2958':'LeftUpVectorBar','\u2959':'LeftDownVectorBar','\u295A':'LeftTeeVector','\u295B':'RightTeeVector','\u295C':'RightUpTeeVector','\u295D':'RightDownTeeVector','\u295E':'DownLeftTeeVector','\u295F':'DownRightTeeVector','\u2960':'LeftUpTeeVector','\u2961':'LeftDownTeeVector','\u2962':'lHar','\u2963':'uHar','\u2964':'rHar','\u2965':'dHar','\u2966':'luruhar','\u2967':'ldrdhar','\u2968':'ruluhar','\u2969':'rdldhar','\u296A':'lharul','\u296B':'llhard','\u296C':'rharul','\u296D':'lrhard','\u296E':'udhar','\u296F':'duhar','\u2970':'RoundImplies','\u2971':'erarr','\u2972':'simrarr','\u2973':'larrsim','\u2974':'rarrsim','\u2975':'rarrap','\u2976':'ltlarr','\u2978':'gtrarr','\u2979':'subrarr','\u297B':'suplarr','\u297C':'lfisht','\u297D':'rfisht','\u297E':'ufisht','\u297F':'dfisht','\u299A':'vzigzag','\u299C':'vangrt','\u299D':'angrtvbd','\u29A4':'ange','\u29A5':'range','\u29A6':'dwangle','\u29A7':'uwangle','\u29A8':'angmsdaa','\u29A9':'angmsdab','\u29AA':'angmsdac','\u29AB':'angmsdad','\u29AC':'angmsdae','\u29AD':'angmsdaf','\u29AE':'angmsdag','\u29AF':'angmsdah','\u29B0':'bemptyv','\u29B1':'demptyv','\u29B2':'cemptyv','\u29B3':'raemptyv','\u29B4':'laemptyv','\u29B5':'ohbar','\u29B6':'omid','\u29B7':'opar','\u29B9':'operp','\u29BB':'olcross','\u29BC':'odsold','\u29BE':'olcir','\u29BF':'ofcir','\u29C0':'olt','\u29C1':'ogt','\u29C2':'cirscir','\u29C3':'cirE','\u29C4':'solb','\u29C5':'bsolb','\u29C9':'boxbox','\u29CD':'trisb','\u29CE':'rtriltri','\u29CF':'LeftTriangleBar','\u29CF\u0338':'NotLeftTriangleBar','\u29D0':'RightTriangleBar','\u29D0\u0338':'NotRightTriangleBar','\u29DC':'iinfin','\u29DD':'infintie','\u29DE':'nvinfin','\u29E3':'eparsl','\u29E4':'smeparsl','\u29E5':'eqvparsl','\u29EB':'lozf','\u29F4':'RuleDelayed','\u29F6':'dsol','\u2A00':'xodot','\u2A01':'xoplus','\u2A02':'xotime','\u2A04':'xuplus','\u2A06':'xsqcup','\u2A0D':'fpartint','\u2A10':'cirfnint','\u2A11':'awint','\u2A12':'rppolint','\u2A13':'scpolint','\u2A14':'npolint','\u2A15':'pointint','\u2A16':'quatint','\u2A17':'intlarhk','\u2A22':'pluscir','\u2A23':'plusacir','\u2A24':'simplus','\u2A25':'plusdu','\u2A26':'plussim','\u2A27':'plustwo','\u2A29':'mcomma','\u2A2A':'minusdu','\u2A2D':'loplus','\u2A2E':'roplus','\u2A2F':'Cross','\u2A30':'timesd','\u2A31':'timesbar','\u2A33':'smashp','\u2A34':'lotimes','\u2A35':'rotimes','\u2A36':'otimesas','\u2A37':'Otimes','\u2A38':'odiv','\u2A39':'triplus','\u2A3A':'triminus','\u2A3B':'tritime','\u2A3C':'iprod','\u2A3F':'amalg','\u2A40':'capdot','\u2A42':'ncup','\u2A43':'ncap','\u2A44':'capand','\u2A45':'cupor','\u2A46':'cupcap','\u2A47':'capcup','\u2A48':'cupbrcap','\u2A49':'capbrcup','\u2A4A':'cupcup','\u2A4B':'capcap','\u2A4C':'ccups','\u2A4D':'ccaps','\u2A50':'ccupssm','\u2A53':'And','\u2A54':'Or','\u2A55':'andand','\u2A56':'oror','\u2A57':'orslope','\u2A58':'andslope','\u2A5A':'andv','\u2A5B':'orv','\u2A5C':'andd','\u2A5D':'ord','\u2A5F':'wedbar','\u2A66':'sdote','\u2A6A':'simdot','\u2A6D':'congdot','\u2A6D\u0338':'ncongdot','\u2A6E':'easter','\u2A6F':'apacir','\u2A70':'apE','\u2A70\u0338':'napE','\u2A71':'eplus','\u2A72':'pluse','\u2A73':'Esim','\u2A77':'eDDot','\u2A78':'equivDD','\u2A79':'ltcir','\u2A7A':'gtcir','\u2A7B':'ltquest','\u2A7C':'gtquest','\u2A7D':'les','\u2A7D\u0338':'nles','\u2A7E':'ges','\u2A7E\u0338':'nges','\u2A7F':'lesdot','\u2A80':'gesdot','\u2A81':'lesdoto','\u2A82':'gesdoto','\u2A83':'lesdotor','\u2A84':'gesdotol','\u2A85':'lap','\u2A86':'gap','\u2A87':'lne','\u2A88':'gne','\u2A89':'lnap','\u2A8A':'gnap','\u2A8B':'lEg','\u2A8C':'gEl','\u2A8D':'lsime','\u2A8E':'gsime','\u2A8F':'lsimg','\u2A90':'gsiml','\u2A91':'lgE','\u2A92':'glE','\u2A93':'lesges','\u2A94':'gesles','\u2A95':'els','\u2A96':'egs','\u2A97':'elsdot','\u2A98':'egsdot','\u2A99':'el','\u2A9A':'eg','\u2A9D':'siml','\u2A9E':'simg','\u2A9F':'simlE','\u2AA0':'simgE','\u2AA1':'LessLess','\u2AA1\u0338':'NotNestedLessLess','\u2AA2':'GreaterGreater','\u2AA2\u0338':'NotNestedGreaterGreater','\u2AA4':'glj','\u2AA5':'gla','\u2AA6':'ltcc','\u2AA7':'gtcc','\u2AA8':'lescc','\u2AA9':'gescc','\u2AAA':'smt','\u2AAB':'lat','\u2AAC':'smte','\u2AAC\uFE00':'smtes','\u2AAD':'late','\u2AAD\uFE00':'lates','\u2AAE':'bumpE','\u2AAF':'pre','\u2AAF\u0338':'npre','\u2AB0':'sce','\u2AB0\u0338':'nsce','\u2AB3':'prE','\u2AB4':'scE','\u2AB5':'prnE','\u2AB6':'scnE','\u2AB7':'prap','\u2AB8':'scap','\u2AB9':'prnap','\u2ABA':'scnap','\u2ABB':'Pr','\u2ABC':'Sc','\u2ABD':'subdot','\u2ABE':'supdot','\u2ABF':'subplus','\u2AC0':'supplus','\u2AC1':'submult','\u2AC2':'supmult','\u2AC3':'subedot','\u2AC4':'supedot','\u2AC5':'subE','\u2AC5\u0338':'nsubE','\u2AC6':'supE','\u2AC6\u0338':'nsupE','\u2AC7':'subsim','\u2AC8':'supsim','\u2ACB\uFE00':'vsubnE','\u2ACB':'subnE','\u2ACC\uFE00':'vsupnE','\u2ACC':'supnE','\u2ACF':'csub','\u2AD0':'csup','\u2AD1':'csube','\u2AD2':'csupe','\u2AD3':'subsup','\u2AD4':'supsub','\u2AD5':'subsub','\u2AD6':'supsup','\u2AD7':'suphsub','\u2AD8':'supdsub','\u2AD9':'forkv','\u2ADA':'topfork','\u2ADB':'mlcp','\u2AE4':'Dashv','\u2AE6':'Vdashl','\u2AE7':'Barv','\u2AE8':'vBar','\u2AE9':'vBarv','\u2AEB':'Vbar','\u2AEC':'Not','\u2AED':'bNot','\u2AEE':'rnmid','\u2AEF':'cirmid','\u2AF0':'midcir','\u2AF1':'topcir','\u2AF2':'nhpar','\u2AF3':'parsim','\u2AFD':'parsl','\u2AFD\u20E5':'nparsl','\u266D':'flat','\u266E':'natur','\u266F':'sharp','\xA4':'curren','\xA2':'cent','$':'dollar','\xA3':'pound','\xA5':'yen','\u20AC':'euro','\xB9':'sup1','\xBD':'half','\u2153':'frac13','\xBC':'frac14','\u2155':'frac15','\u2159':'frac16','\u215B':'frac18','\xB2':'sup2','\u2154':'frac23','\u2156':'frac25','\xB3':'sup3','\xBE':'frac34','\u2157':'frac35','\u215C':'frac38','\u2158':'frac45','\u215A':'frac56','\u215D':'frac58','\u215E':'frac78','\uD835\uDCB6':'ascr','\uD835\uDD52':'aopf','\uD835\uDD1E':'afr','\uD835\uDD38':'Aopf','\uD835\uDD04':'Afr','\uD835\uDC9C':'Ascr','\xAA':'ordf','\xE1':'aacute','\xC1':'Aacute','\xE0':'agrave','\xC0':'Agrave','\u0103':'abreve','\u0102':'Abreve','\xE2':'acirc','\xC2':'Acirc','\xE5':'aring','\xC5':'angst','\xE4':'auml','\xC4':'Auml','\xE3':'atilde','\xC3':'Atilde','\u0105':'aogon','\u0104':'Aogon','\u0101':'amacr','\u0100':'Amacr','\xE6':'aelig','\xC6':'AElig','\uD835\uDCB7':'bscr','\uD835\uDD53':'bopf','\uD835\uDD1F':'bfr','\uD835\uDD39':'Bopf','\u212C':'Bscr','\uD835\uDD05':'Bfr','\uD835\uDD20':'cfr','\uD835\uDCB8':'cscr','\uD835\uDD54':'copf','\u212D':'Cfr','\uD835\uDC9E':'Cscr','\u2102':'Copf','\u0107':'cacute','\u0106':'Cacute','\u0109':'ccirc','\u0108':'Ccirc','\u010D':'ccaron','\u010C':'Ccaron','\u010B':'cdot','\u010A':'Cdot','\xE7':'ccedil','\xC7':'Ccedil','\u2105':'incare','\uD835\uDD21':'dfr','\u2146':'dd','\uD835\uDD55':'dopf','\uD835\uDCB9':'dscr','\uD835\uDC9F':'Dscr','\uD835\uDD07':'Dfr','\u2145':'DD','\uD835\uDD3B':'Dopf','\u010F':'dcaron','\u010E':'Dcaron','\u0111':'dstrok','\u0110':'Dstrok','\xF0':'eth','\xD0':'ETH','\u2147':'ee','\u212F':'escr','\uD835\uDD22':'efr','\uD835\uDD56':'eopf','\u2130':'Escr','\uD835\uDD08':'Efr','\uD835\uDD3C':'Eopf','\xE9':'eacute','\xC9':'Eacute','\xE8':'egrave','\xC8':'Egrave','\xEA':'ecirc','\xCA':'Ecirc','\u011B':'ecaron','\u011A':'Ecaron','\xEB':'euml','\xCB':'Euml','\u0117':'edot','\u0116':'Edot','\u0119':'eogon','\u0118':'Eogon','\u0113':'emacr','\u0112':'Emacr','\uD835\uDD23':'ffr','\uD835\uDD57':'fopf','\uD835\uDCBB':'fscr','\uD835\uDD09':'Ffr','\uD835\uDD3D':'Fopf','\u2131':'Fscr','\uFB00':'fflig','\uFB03':'ffilig','\uFB04':'ffllig','\uFB01':'filig','fj':'fjlig','\uFB02':'fllig','\u0192':'fnof','\u210A':'gscr','\uD835\uDD58':'gopf','\uD835\uDD24':'gfr','\uD835\uDCA2':'Gscr','\uD835\uDD3E':'Gopf','\uD835\uDD0A':'Gfr','\u01F5':'gacute','\u011F':'gbreve','\u011E':'Gbreve','\u011D':'gcirc','\u011C':'Gcirc','\u0121':'gdot','\u0120':'Gdot','\u0122':'Gcedil','\uD835\uDD25':'hfr','\u210E':'planckh','\uD835\uDCBD':'hscr','\uD835\uDD59':'hopf','\u210B':'Hscr','\u210C':'Hfr','\u210D':'Hopf','\u0125':'hcirc','\u0124':'Hcirc','\u210F':'hbar','\u0127':'hstrok','\u0126':'Hstrok','\uD835\uDD5A':'iopf','\uD835\uDD26':'ifr','\uD835\uDCBE':'iscr','\u2148':'ii','\uD835\uDD40':'Iopf','\u2110':'Iscr','\u2111':'Im','\xED':'iacute','\xCD':'Iacute','\xEC':'igrave','\xCC':'Igrave','\xEE':'icirc','\xCE':'Icirc','\xEF':'iuml','\xCF':'Iuml','\u0129':'itilde','\u0128':'Itilde','\u0130':'Idot','\u012F':'iogon','\u012E':'Iogon','\u012B':'imacr','\u012A':'Imacr','\u0133':'ijlig','\u0132':'IJlig','\u0131':'imath','\uD835\uDCBF':'jscr','\uD835\uDD5B':'jopf','\uD835\uDD27':'jfr','\uD835\uDCA5':'Jscr','\uD835\uDD0D':'Jfr','\uD835\uDD41':'Jopf','\u0135':'jcirc','\u0134':'Jcirc','\u0237':'jmath','\uD835\uDD5C':'kopf','\uD835\uDCC0':'kscr','\uD835\uDD28':'kfr','\uD835\uDCA6':'Kscr','\uD835\uDD42':'Kopf','\uD835\uDD0E':'Kfr','\u0137':'kcedil','\u0136':'Kcedil','\uD835\uDD29':'lfr','\uD835\uDCC1':'lscr','\u2113':'ell','\uD835\uDD5D':'lopf','\u2112':'Lscr','\uD835\uDD0F':'Lfr','\uD835\uDD43':'Lopf','\u013A':'lacute','\u0139':'Lacute','\u013E':'lcaron','\u013D':'Lcaron','\u013C':'lcedil','\u013B':'Lcedil','\u0142':'lstrok','\u0141':'Lstrok','\u0140':'lmidot','\u013F':'Lmidot','\uD835\uDD2A':'mfr','\uD835\uDD5E':'mopf','\uD835\uDCC2':'mscr','\uD835\uDD10':'Mfr','\uD835\uDD44':'Mopf','\u2133':'Mscr','\uD835\uDD2B':'nfr','\uD835\uDD5F':'nopf','\uD835\uDCC3':'nscr','\u2115':'Nopf','\uD835\uDCA9':'Nscr','\uD835\uDD11':'Nfr','\u0144':'nacute','\u0143':'Nacute','\u0148':'ncaron','\u0147':'Ncaron','\xF1':'ntilde','\xD1':'Ntilde','\u0146':'ncedil','\u0145':'Ncedil','\u2116':'numero','\u014B':'eng','\u014A':'ENG','\uD835\uDD60':'oopf','\uD835\uDD2C':'ofr','\u2134':'oscr','\uD835\uDCAA':'Oscr','\uD835\uDD12':'Ofr','\uD835\uDD46':'Oopf','\xBA':'ordm','\xF3':'oacute','\xD3':'Oacute','\xF2':'ograve','\xD2':'Ograve','\xF4':'ocirc','\xD4':'Ocirc','\xF6':'ouml','\xD6':'Ouml','\u0151':'odblac','\u0150':'Odblac','\xF5':'otilde','\xD5':'Otilde','\xF8':'oslash','\xD8':'Oslash','\u014D':'omacr','\u014C':'Omacr','\u0153':'oelig','\u0152':'OElig','\uD835\uDD2D':'pfr','\uD835\uDCC5':'pscr','\uD835\uDD61':'popf','\u2119':'Popf','\uD835\uDD13':'Pfr','\uD835\uDCAB':'Pscr','\uD835\uDD62':'qopf','\uD835\uDD2E':'qfr','\uD835\uDCC6':'qscr','\uD835\uDCAC':'Qscr','\uD835\uDD14':'Qfr','\u211A':'Qopf','\u0138':'kgreen','\uD835\uDD2F':'rfr','\uD835\uDD63':'ropf','\uD835\uDCC7':'rscr','\u211B':'Rscr','\u211C':'Re','\u211D':'Ropf','\u0155':'racute','\u0154':'Racute','\u0159':'rcaron','\u0158':'Rcaron','\u0157':'rcedil','\u0156':'Rcedil','\uD835\uDD64':'sopf','\uD835\uDCC8':'sscr','\uD835\uDD30':'sfr','\uD835\uDD4A':'Sopf','\uD835\uDD16':'Sfr','\uD835\uDCAE':'Sscr','\u24C8':'oS','\u015B':'sacute','\u015A':'Sacute','\u015D':'scirc','\u015C':'Scirc','\u0161':'scaron','\u0160':'Scaron','\u015F':'scedil','\u015E':'Scedil','\xDF':'szlig','\uD835\uDD31':'tfr','\uD835\uDCC9':'tscr','\uD835\uDD65':'topf','\uD835\uDCAF':'Tscr','\uD835\uDD17':'Tfr','\uD835\uDD4B':'Topf','\u0165':'tcaron','\u0164':'Tcaron','\u0163':'tcedil','\u0162':'Tcedil','\u2122':'trade','\u0167':'tstrok','\u0166':'Tstrok','\uD835\uDCCA':'uscr','\uD835\uDD66':'uopf','\uD835\uDD32':'ufr','\uD835\uDD4C':'Uopf','\uD835\uDD18':'Ufr','\uD835\uDCB0':'Uscr','\xFA':'uacute','\xDA':'Uacute','\xF9':'ugrave','\xD9':'Ugrave','\u016D':'ubreve','\u016C':'Ubreve','\xFB':'ucirc','\xDB':'Ucirc','\u016F':'uring','\u016E':'Uring','\xFC':'uuml','\xDC':'Uuml','\u0171':'udblac','\u0170':'Udblac','\u0169':'utilde','\u0168':'Utilde','\u0173':'uogon','\u0172':'Uogon','\u016B':'umacr','\u016A':'Umacr','\uD835\uDD33':'vfr','\uD835\uDD67':'vopf','\uD835\uDCCB':'vscr','\uD835\uDD19':'Vfr','\uD835\uDD4D':'Vopf','\uD835\uDCB1':'Vscr','\uD835\uDD68':'wopf','\uD835\uDCCC':'wscr','\uD835\uDD34':'wfr','\uD835\uDCB2':'Wscr','\uD835\uDD4E':'Wopf','\uD835\uDD1A':'Wfr','\u0175':'wcirc','\u0174':'Wcirc','\uD835\uDD35':'xfr','\uD835\uDCCD':'xscr','\uD835\uDD69':'xopf','\uD835\uDD4F':'Xopf','\uD835\uDD1B':'Xfr','\uD835\uDCB3':'Xscr','\uD835\uDD36':'yfr','\uD835\uDCCE':'yscr','\uD835\uDD6A':'yopf','\uD835\uDCB4':'Yscr','\uD835\uDD1C':'Yfr','\uD835\uDD50':'Yopf','\xFD':'yacute','\xDD':'Yacute','\u0177':'ycirc','\u0176':'Ycirc','\xFF':'yuml','\u0178':'Yuml','\uD835\uDCCF':'zscr','\uD835\uDD37':'zfr','\uD835\uDD6B':'zopf','\u2128':'Zfr','\u2124':'Zopf','\uD835\uDCB5':'Zscr','\u017A':'zacute','\u0179':'Zacute','\u017E':'zcaron','\u017D':'Zcaron','\u017C':'zdot','\u017B':'Zdot','\u01B5':'imped','\xFE':'thorn','\xDE':'THORN','\u0149':'napos','\u03B1':'alpha','\u0391':'Alpha','\u03B2':'beta','\u0392':'Beta','\u03B3':'gamma','\u0393':'Gamma','\u03B4':'delta','\u0394':'Delta','\u03B5':'epsi','\u03F5':'epsiv','\u0395':'Epsilon','\u03DD':'gammad','\u03DC':'Gammad','\u03B6':'zeta','\u0396':'Zeta','\u03B7':'eta','\u0397':'Eta','\u03B8':'theta','\u03D1':'thetav','\u0398':'Theta','\u03B9':'iota','\u0399':'Iota','\u03BA':'kappa','\u03F0':'kappav','\u039A':'Kappa','\u03BB':'lambda','\u039B':'Lambda','\u03BC':'mu','\xB5':'micro','\u039C':'Mu','\u03BD':'nu','\u039D':'Nu','\u03BE':'xi','\u039E':'Xi','\u03BF':'omicron','\u039F':'Omicron','\u03C0':'pi','\u03D6':'piv','\u03A0':'Pi','\u03C1':'rho','\u03F1':'rhov','\u03A1':'Rho','\u03C3':'sigma','\u03A3':'Sigma','\u03C2':'sigmaf','\u03C4':'tau','\u03A4':'Tau','\u03C5':'upsi','\u03A5':'Upsilon','\u03D2':'Upsi','\u03C6':'phi','\u03D5':'phiv','\u03A6':'Phi','\u03C7':'chi','\u03A7':'Chi','\u03C8':'psi','\u03A8':'Psi','\u03C9':'omega','\u03A9':'ohm','\u0430':'acy','\u0410':'Acy','\u0431':'bcy','\u0411':'Bcy','\u0432':'vcy','\u0412':'Vcy','\u0433':'gcy','\u0413':'Gcy','\u0453':'gjcy','\u0403':'GJcy','\u0434':'dcy','\u0414':'Dcy','\u0452':'djcy','\u0402':'DJcy','\u0435':'iecy','\u0415':'IEcy','\u0451':'iocy','\u0401':'IOcy','\u0454':'jukcy','\u0404':'Jukcy','\u0436':'zhcy','\u0416':'ZHcy','\u0437':'zcy','\u0417':'Zcy','\u0455':'dscy','\u0405':'DScy','\u0438':'icy','\u0418':'Icy','\u0456':'iukcy','\u0406':'Iukcy','\u0457':'yicy','\u0407':'YIcy','\u0439':'jcy','\u0419':'Jcy','\u0458':'jsercy','\u0408':'Jsercy','\u043A':'kcy','\u041A':'Kcy','\u045C':'kjcy','\u040C':'KJcy','\u043B':'lcy','\u041B':'Lcy','\u0459':'ljcy','\u0409':'LJcy','\u043C':'mcy','\u041C':'Mcy','\u043D':'ncy','\u041D':'Ncy','\u045A':'njcy','\u040A':'NJcy','\u043E':'ocy','\u041E':'Ocy','\u043F':'pcy','\u041F':'Pcy','\u0440':'rcy','\u0420':'Rcy','\u0441':'scy','\u0421':'Scy','\u0442':'tcy','\u0422':'Tcy','\u045B':'tshcy','\u040B':'TSHcy','\u0443':'ucy','\u0423':'Ucy','\u045E':'ubrcy','\u040E':'Ubrcy','\u0444':'fcy','\u0424':'Fcy','\u0445':'khcy','\u0425':'KHcy','\u0446':'tscy','\u0426':'TScy','\u0447':'chcy','\u0427':'CHcy','\u045F':'dzcy','\u040F':'DZcy','\u0448':'shcy','\u0428':'SHcy','\u0449':'shchcy','\u0429':'SHCHcy','\u044A':'hardcy','\u042A':'HARDcy','\u044B':'ycy','\u042B':'Ycy','\u044C':'softcy','\u042C':'SOFTcy','\u044D':'ecy','\u042D':'Ecy','\u044E':'yucy','\u042E':'YUcy','\u044F':'yacy','\u042F':'YAcy','\u2135':'aleph','\u2136':'beth','\u2137':'gimel','\u2138':'daleth'};
+
+       var regexEscape = /["&'<>`]/g;
+       var escapeMap = {
+               '"': '&quot;',
+               '&': '&amp;',
+               '\'': '&#x27;',
+               '<': '&lt;',
+               // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the
+               // following is not strictly necessary unless it’s part of a tag or an
+               // unquoted attribute value. We’re only escaping it to support those
+               // situations, and for XML support.
+               '>': '&gt;',
+               // In Internet Explorer ≤ 8, the backtick character can be used
+               // to break out of (un)quoted attribute values or HTML comments.
+               // See http://html5sec.org/#102, http://html5sec.org/#108, and
+               // http://html5sec.org/#133.
+               '`': '&#x60;'
+       };
 
-    _this.push(null);
-  });
+       var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;
+       var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
+       var regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;
+       var decodeMap = {'aacute':'\xE1','Aacute':'\xC1','abreve':'\u0103','Abreve':'\u0102','ac':'\u223E','acd':'\u223F','acE':'\u223E\u0333','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','acy':'\u0430','Acy':'\u0410','aelig':'\xE6','AElig':'\xC6','af':'\u2061','afr':'\uD835\uDD1E','Afr':'\uD835\uDD04','agrave':'\xE0','Agrave':'\xC0','alefsym':'\u2135','aleph':'\u2135','alpha':'\u03B1','Alpha':'\u0391','amacr':'\u0101','Amacr':'\u0100','amalg':'\u2A3F','amp':'&','AMP':'&','and':'\u2227','And':'\u2A53','andand':'\u2A55','andd':'\u2A5C','andslope':'\u2A58','andv':'\u2A5A','ang':'\u2220','ange':'\u29A4','angle':'\u2220','angmsd':'\u2221','angmsdaa':'\u29A8','angmsdab':'\u29A9','angmsdac':'\u29AA','angmsdad':'\u29AB','angmsdae':'\u29AC','angmsdaf':'\u29AD','angmsdag':'\u29AE','angmsdah':'\u29AF','angrt':'\u221F','angrtvb':'\u22BE','angrtvbd':'\u299D','angsph':'\u2222','angst':'\xC5','angzarr':'\u237C','aogon':'\u0105','Aogon':'\u0104','aopf':'\uD835\uDD52','Aopf':'\uD835\uDD38','ap':'\u2248','apacir':'\u2A6F','ape':'\u224A','apE':'\u2A70','apid':'\u224B','apos':'\'','ApplyFunction':'\u2061','approx':'\u2248','approxeq':'\u224A','aring':'\xE5','Aring':'\xC5','ascr':'\uD835\uDCB6','Ascr':'\uD835\uDC9C','Assign':'\u2254','ast':'*','asymp':'\u2248','asympeq':'\u224D','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','awconint':'\u2233','awint':'\u2A11','backcong':'\u224C','backepsilon':'\u03F6','backprime':'\u2035','backsim':'\u223D','backsimeq':'\u22CD','Backslash':'\u2216','Barv':'\u2AE7','barvee':'\u22BD','barwed':'\u2305','Barwed':'\u2306','barwedge':'\u2305','bbrk':'\u23B5','bbrktbrk':'\u23B6','bcong':'\u224C','bcy':'\u0431','Bcy':'\u0411','bdquo':'\u201E','becaus':'\u2235','because':'\u2235','Because':'\u2235','bemptyv':'\u29B0','bepsi':'\u03F6','bernou':'\u212C','Bernoullis':'\u212C','beta':'\u03B2','Beta':'\u0392','beth':'\u2136','between':'\u226C','bfr':'\uD835\uDD1F','Bfr':'\uD835\uDD05','bigcap':'\u22C2','bigcirc':'\u25EF','bigcup':'\u22C3','bigodot':'\u2A00','bigoplus':'\u2A01','bigotimes':'\u2A02','bigsqcup':'\u2A06','bigstar':'\u2605','bigtriangledown':'\u25BD','bigtriangleup':'\u25B3','biguplus':'\u2A04','bigvee':'\u22C1','bigwedge':'\u22C0','bkarow':'\u290D','blacklozenge':'\u29EB','blacksquare':'\u25AA','blacktriangle':'\u25B4','blacktriangledown':'\u25BE','blacktriangleleft':'\u25C2','blacktriangleright':'\u25B8','blank':'\u2423','blk12':'\u2592','blk14':'\u2591','blk34':'\u2593','block':'\u2588','bne':'=\u20E5','bnequiv':'\u2261\u20E5','bnot':'\u2310','bNot':'\u2AED','bopf':'\uD835\uDD53','Bopf':'\uD835\uDD39','bot':'\u22A5','bottom':'\u22A5','bowtie':'\u22C8','boxbox':'\u29C9','boxdl':'\u2510','boxdL':'\u2555','boxDl':'\u2556','boxDL':'\u2557','boxdr':'\u250C','boxdR':'\u2552','boxDr':'\u2553','boxDR':'\u2554','boxh':'\u2500','boxH':'\u2550','boxhd':'\u252C','boxhD':'\u2565','boxHd':'\u2564','boxHD':'\u2566','boxhu':'\u2534','boxhU':'\u2568','boxHu':'\u2567','boxHU':'\u2569','boxminus':'\u229F','boxplus':'\u229E','boxtimes':'\u22A0','boxul':'\u2518','boxuL':'\u255B','boxUl':'\u255C','boxUL':'\u255D','boxur':'\u2514','boxuR':'\u2558','boxUr':'\u2559','boxUR':'\u255A','boxv':'\u2502','boxV':'\u2551','boxvh':'\u253C','boxvH':'\u256A','boxVh':'\u256B','boxVH':'\u256C','boxvl':'\u2524','boxvL':'\u2561','boxVl':'\u2562','boxVL':'\u2563','boxvr':'\u251C','boxvR':'\u255E','boxVr':'\u255F','boxVR':'\u2560','bprime':'\u2035','breve':'\u02D8','Breve':'\u02D8','brvbar':'\xA6','bscr':'\uD835\uDCB7','Bscr':'\u212C','bsemi':'\u204F','bsim':'\u223D','bsime':'\u22CD','bsol':'\\','bsolb':'\u29C5','bsolhsub':'\u27C8','bull':'\u2022','bullet':'\u2022','bump':'\u224E','bumpe':'\u224F','bumpE':'\u2AAE','bumpeq':'\u224F','Bumpeq':'\u224E','cacute':'\u0107','Cacute':'\u0106','cap':'\u2229','Cap':'\u22D2','capand':'\u2A44','capbrcup':'\u2A49','capcap':'\u2A4B','capcup':'\u2A47','capdot':'\u2A40','CapitalDifferentialD':'\u2145','caps':'\u2229\uFE00','caret':'\u2041','caron':'\u02C7','Cayleys':'\u212D','ccaps':'\u2A4D','ccaron':'\u010D','Ccaron':'\u010C','ccedil':'\xE7','Ccedil':'\xC7','ccirc':'\u0109','Ccirc':'\u0108','Cconint':'\u2230','ccups':'\u2A4C','ccupssm':'\u2A50','cdot':'\u010B','Cdot':'\u010A','cedil':'\xB8','Cedilla':'\xB8','cemptyv':'\u29B2','cent':'\xA2','centerdot':'\xB7','CenterDot':'\xB7','cfr':'\uD835\uDD20','Cfr':'\u212D','chcy':'\u0447','CHcy':'\u0427','check':'\u2713','checkmark':'\u2713','chi':'\u03C7','Chi':'\u03A7','cir':'\u25CB','circ':'\u02C6','circeq':'\u2257','circlearrowleft':'\u21BA','circlearrowright':'\u21BB','circledast':'\u229B','circledcirc':'\u229A','circleddash':'\u229D','CircleDot':'\u2299','circledR':'\xAE','circledS':'\u24C8','CircleMinus':'\u2296','CirclePlus':'\u2295','CircleTimes':'\u2297','cire':'\u2257','cirE':'\u29C3','cirfnint':'\u2A10','cirmid':'\u2AEF','cirscir':'\u29C2','ClockwiseContourIntegral':'\u2232','CloseCurlyDoubleQuote':'\u201D','CloseCurlyQuote':'\u2019','clubs':'\u2663','clubsuit':'\u2663','colon':':','Colon':'\u2237','colone':'\u2254','Colone':'\u2A74','coloneq':'\u2254','comma':',','commat':'@','comp':'\u2201','compfn':'\u2218','complement':'\u2201','complexes':'\u2102','cong':'\u2245','congdot':'\u2A6D','Congruent':'\u2261','conint':'\u222E','Conint':'\u222F','ContourIntegral':'\u222E','copf':'\uD835\uDD54','Copf':'\u2102','coprod':'\u2210','Coproduct':'\u2210','copy':'\xA9','COPY':'\xA9','copysr':'\u2117','CounterClockwiseContourIntegral':'\u2233','crarr':'\u21B5','cross':'\u2717','Cross':'\u2A2F','cscr':'\uD835\uDCB8','Cscr':'\uD835\uDC9E','csub':'\u2ACF','csube':'\u2AD1','csup':'\u2AD0','csupe':'\u2AD2','ctdot':'\u22EF','cudarrl':'\u2938','cudarrr':'\u2935','cuepr':'\u22DE','cuesc':'\u22DF','cularr':'\u21B6','cularrp':'\u293D','cup':'\u222A','Cup':'\u22D3','cupbrcap':'\u2A48','cupcap':'\u2A46','CupCap':'\u224D','cupcup':'\u2A4A','cupdot':'\u228D','cupor':'\u2A45','cups':'\u222A\uFE00','curarr':'\u21B7','curarrm':'\u293C','curlyeqprec':'\u22DE','curlyeqsucc':'\u22DF','curlyvee':'\u22CE','curlywedge':'\u22CF','curren':'\xA4','curvearrowleft':'\u21B6','curvearrowright':'\u21B7','cuvee':'\u22CE','cuwed':'\u22CF','cwconint':'\u2232','cwint':'\u2231','cylcty':'\u232D','dagger':'\u2020','Dagger':'\u2021','daleth':'\u2138','darr':'\u2193','dArr':'\u21D3','Darr':'\u21A1','dash':'\u2010','dashv':'\u22A3','Dashv':'\u2AE4','dbkarow':'\u290F','dblac':'\u02DD','dcaron':'\u010F','Dcaron':'\u010E','dcy':'\u0434','Dcy':'\u0414','dd':'\u2146','DD':'\u2145','ddagger':'\u2021','ddarr':'\u21CA','DDotrahd':'\u2911','ddotseq':'\u2A77','deg':'\xB0','Del':'\u2207','delta':'\u03B4','Delta':'\u0394','demptyv':'\u29B1','dfisht':'\u297F','dfr':'\uD835\uDD21','Dfr':'\uD835\uDD07','dHar':'\u2965','dharl':'\u21C3','dharr':'\u21C2','DiacriticalAcute':'\xB4','DiacriticalDot':'\u02D9','DiacriticalDoubleAcute':'\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\u02DC','diam':'\u22C4','diamond':'\u22C4','Diamond':'\u22C4','diamondsuit':'\u2666','diams':'\u2666','die':'\xA8','DifferentialD':'\u2146','digamma':'\u03DD','disin':'\u22F2','div':'\xF7','divide':'\xF7','divideontimes':'\u22C7','divonx':'\u22C7','djcy':'\u0452','DJcy':'\u0402','dlcorn':'\u231E','dlcrop':'\u230D','dollar':'$','dopf':'\uD835\uDD55','Dopf':'\uD835\uDD3B','dot':'\u02D9','Dot':'\xA8','DotDot':'\u20DC','doteq':'\u2250','doteqdot':'\u2251','DotEqual':'\u2250','dotminus':'\u2238','dotplus':'\u2214','dotsquare':'\u22A1','doublebarwedge':'\u2306','DoubleContourIntegral':'\u222F','DoubleDot':'\xA8','DoubleDownArrow':'\u21D3','DoubleLeftArrow':'\u21D0','DoubleLeftRightArrow':'\u21D4','DoubleLeftTee':'\u2AE4','DoubleLongLeftArrow':'\u27F8','DoubleLongLeftRightArrow':'\u27FA','DoubleLongRightArrow':'\u27F9','DoubleRightArrow':'\u21D2','DoubleRightTee':'\u22A8','DoubleUpArrow':'\u21D1','DoubleUpDownArrow':'\u21D5','DoubleVerticalBar':'\u2225','downarrow':'\u2193','Downarrow':'\u21D3','DownArrow':'\u2193','DownArrowBar':'\u2913','DownArrowUpArrow':'\u21F5','DownBreve':'\u0311','downdownarrows':'\u21CA','downharpoonleft':'\u21C3','downharpoonright':'\u21C2','DownLeftRightVector':'\u2950','DownLeftTeeVector':'\u295E','DownLeftVector':'\u21BD','DownLeftVectorBar':'\u2956','DownRightTeeVector':'\u295F','DownRightVector':'\u21C1','DownRightVectorBar':'\u2957','DownTee':'\u22A4','DownTeeArrow':'\u21A7','drbkarow':'\u2910','drcorn':'\u231F','drcrop':'\u230C','dscr':'\uD835\uDCB9','Dscr':'\uD835\uDC9F','dscy':'\u0455','DScy':'\u0405','dsol':'\u29F6','dstrok':'\u0111','Dstrok':'\u0110','dtdot':'\u22F1','dtri':'\u25BF','dtrif':'\u25BE','duarr':'\u21F5','duhar':'\u296F','dwangle':'\u29A6','dzcy':'\u045F','DZcy':'\u040F','dzigrarr':'\u27FF','eacute':'\xE9','Eacute':'\xC9','easter':'\u2A6E','ecaron':'\u011B','Ecaron':'\u011A','ecir':'\u2256','ecirc':'\xEA','Ecirc':'\xCA','ecolon':'\u2255','ecy':'\u044D','Ecy':'\u042D','eDDot':'\u2A77','edot':'\u0117','eDot':'\u2251','Edot':'\u0116','ee':'\u2147','efDot':'\u2252','efr':'\uD835\uDD22','Efr':'\uD835\uDD08','eg':'\u2A9A','egrave':'\xE8','Egrave':'\xC8','egs':'\u2A96','egsdot':'\u2A98','el':'\u2A99','Element':'\u2208','elinters':'\u23E7','ell':'\u2113','els':'\u2A95','elsdot':'\u2A97','emacr':'\u0113','Emacr':'\u0112','empty':'\u2205','emptyset':'\u2205','EmptySmallSquare':'\u25FB','emptyv':'\u2205','EmptyVerySmallSquare':'\u25AB','emsp':'\u2003','emsp13':'\u2004','emsp14':'\u2005','eng':'\u014B','ENG':'\u014A','ensp':'\u2002','eogon':'\u0119','Eogon':'\u0118','eopf':'\uD835\uDD56','Eopf':'\uD835\uDD3C','epar':'\u22D5','eparsl':'\u29E3','eplus':'\u2A71','epsi':'\u03B5','epsilon':'\u03B5','Epsilon':'\u0395','epsiv':'\u03F5','eqcirc':'\u2256','eqcolon':'\u2255','eqsim':'\u2242','eqslantgtr':'\u2A96','eqslantless':'\u2A95','Equal':'\u2A75','equals':'=','EqualTilde':'\u2242','equest':'\u225F','Equilibrium':'\u21CC','equiv':'\u2261','equivDD':'\u2A78','eqvparsl':'\u29E5','erarr':'\u2971','erDot':'\u2253','escr':'\u212F','Escr':'\u2130','esdot':'\u2250','esim':'\u2242','Esim':'\u2A73','eta':'\u03B7','Eta':'\u0397','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','euro':'\u20AC','excl':'!','exist':'\u2203','Exists':'\u2203','expectation':'\u2130','exponentiale':'\u2147','ExponentialE':'\u2147','fallingdotseq':'\u2252','fcy':'\u0444','Fcy':'\u0424','female':'\u2640','ffilig':'\uFB03','fflig':'\uFB00','ffllig':'\uFB04','ffr':'\uD835\uDD23','Ffr':'\uD835\uDD09','filig':'\uFB01','FilledSmallSquare':'\u25FC','FilledVerySmallSquare':'\u25AA','fjlig':'fj','flat':'\u266D','fllig':'\uFB02','fltns':'\u25B1','fnof':'\u0192','fopf':'\uD835\uDD57','Fopf':'\uD835\uDD3D','forall':'\u2200','ForAll':'\u2200','fork':'\u22D4','forkv':'\u2AD9','Fouriertrf':'\u2131','fpartint':'\u2A0D','frac12':'\xBD','frac13':'\u2153','frac14':'\xBC','frac15':'\u2155','frac16':'\u2159','frac18':'\u215B','frac23':'\u2154','frac25':'\u2156','frac34':'\xBE','frac35':'\u2157','frac38':'\u215C','frac45':'\u2158','frac56':'\u215A','frac58':'\u215D','frac78':'\u215E','frasl':'\u2044','frown':'\u2322','fscr':'\uD835\uDCBB','Fscr':'\u2131','gacute':'\u01F5','gamma':'\u03B3','Gamma':'\u0393','gammad':'\u03DD','Gammad':'\u03DC','gap':'\u2A86','gbreve':'\u011F','Gbreve':'\u011E','Gcedil':'\u0122','gcirc':'\u011D','Gcirc':'\u011C','gcy':'\u0433','Gcy':'\u0413','gdot':'\u0121','Gdot':'\u0120','ge':'\u2265','gE':'\u2267','gel':'\u22DB','gEl':'\u2A8C','geq':'\u2265','geqq':'\u2267','geqslant':'\u2A7E','ges':'\u2A7E','gescc':'\u2AA9','gesdot':'\u2A80','gesdoto':'\u2A82','gesdotol':'\u2A84','gesl':'\u22DB\uFE00','gesles':'\u2A94','gfr':'\uD835\uDD24','Gfr':'\uD835\uDD0A','gg':'\u226B','Gg':'\u22D9','ggg':'\u22D9','gimel':'\u2137','gjcy':'\u0453','GJcy':'\u0403','gl':'\u2277','gla':'\u2AA5','glE':'\u2A92','glj':'\u2AA4','gnap':'\u2A8A','gnapprox':'\u2A8A','gne':'\u2A88','gnE':'\u2269','gneq':'\u2A88','gneqq':'\u2269','gnsim':'\u22E7','gopf':'\uD835\uDD58','Gopf':'\uD835\uDD3E','grave':'`','GreaterEqual':'\u2265','GreaterEqualLess':'\u22DB','GreaterFullEqual':'\u2267','GreaterGreater':'\u2AA2','GreaterLess':'\u2277','GreaterSlantEqual':'\u2A7E','GreaterTilde':'\u2273','gscr':'\u210A','Gscr':'\uD835\uDCA2','gsim':'\u2273','gsime':'\u2A8E','gsiml':'\u2A90','gt':'>','Gt':'\u226B','GT':'>','gtcc':'\u2AA7','gtcir':'\u2A7A','gtdot':'\u22D7','gtlPar':'\u2995','gtquest':'\u2A7C','gtrapprox':'\u2A86','gtrarr':'\u2978','gtrdot':'\u22D7','gtreqless':'\u22DB','gtreqqless':'\u2A8C','gtrless':'\u2277','gtrsim':'\u2273','gvertneqq':'\u2269\uFE00','gvnE':'\u2269\uFE00','Hacek':'\u02C7','hairsp':'\u200A','half':'\xBD','hamilt':'\u210B','hardcy':'\u044A','HARDcy':'\u042A','harr':'\u2194','hArr':'\u21D4','harrcir':'\u2948','harrw':'\u21AD','Hat':'^','hbar':'\u210F','hcirc':'\u0125','Hcirc':'\u0124','hearts':'\u2665','heartsuit':'\u2665','hellip':'\u2026','hercon':'\u22B9','hfr':'\uD835\uDD25','Hfr':'\u210C','HilbertSpace':'\u210B','hksearow':'\u2925','hkswarow':'\u2926','hoarr':'\u21FF','homtht':'\u223B','hookleftarrow':'\u21A9','hookrightarrow':'\u21AA','hopf':'\uD835\uDD59','Hopf':'\u210D','horbar':'\u2015','HorizontalLine':'\u2500','hscr':'\uD835\uDCBD','Hscr':'\u210B','hslash':'\u210F','hstrok':'\u0127','Hstrok':'\u0126','HumpDownHump':'\u224E','HumpEqual':'\u224F','hybull':'\u2043','hyphen':'\u2010','iacute':'\xED','Iacute':'\xCD','ic':'\u2063','icirc':'\xEE','Icirc':'\xCE','icy':'\u0438','Icy':'\u0418','Idot':'\u0130','iecy':'\u0435','IEcy':'\u0415','iexcl':'\xA1','iff':'\u21D4','ifr':'\uD835\uDD26','Ifr':'\u2111','igrave':'\xEC','Igrave':'\xCC','ii':'\u2148','iiiint':'\u2A0C','iiint':'\u222D','iinfin':'\u29DC','iiota':'\u2129','ijlig':'\u0133','IJlig':'\u0132','Im':'\u2111','imacr':'\u012B','Imacr':'\u012A','image':'\u2111','ImaginaryI':'\u2148','imagline':'\u2110','imagpart':'\u2111','imath':'\u0131','imof':'\u22B7','imped':'\u01B5','Implies':'\u21D2','in':'\u2208','incare':'\u2105','infin':'\u221E','infintie':'\u29DD','inodot':'\u0131','int':'\u222B','Int':'\u222C','intcal':'\u22BA','integers':'\u2124','Integral':'\u222B','intercal':'\u22BA','Intersection':'\u22C2','intlarhk':'\u2A17','intprod':'\u2A3C','InvisibleComma':'\u2063','InvisibleTimes':'\u2062','iocy':'\u0451','IOcy':'\u0401','iogon':'\u012F','Iogon':'\u012E','iopf':'\uD835\uDD5A','Iopf':'\uD835\uDD40','iota':'\u03B9','Iota':'\u0399','iprod':'\u2A3C','iquest':'\xBF','iscr':'\uD835\uDCBE','Iscr':'\u2110','isin':'\u2208','isindot':'\u22F5','isinE':'\u22F9','isins':'\u22F4','isinsv':'\u22F3','isinv':'\u2208','it':'\u2062','itilde':'\u0129','Itilde':'\u0128','iukcy':'\u0456','Iukcy':'\u0406','iuml':'\xEF','Iuml':'\xCF','jcirc':'\u0135','Jcirc':'\u0134','jcy':'\u0439','Jcy':'\u0419','jfr':'\uD835\uDD27','Jfr':'\uD835\uDD0D','jmath':'\u0237','jopf':'\uD835\uDD5B','Jopf':'\uD835\uDD41','jscr':'\uD835\uDCBF','Jscr':'\uD835\uDCA5','jsercy':'\u0458','Jsercy':'\u0408','jukcy':'\u0454','Jukcy':'\u0404','kappa':'\u03BA','Kappa':'\u039A','kappav':'\u03F0','kcedil':'\u0137','Kcedil':'\u0136','kcy':'\u043A','Kcy':'\u041A','kfr':'\uD835\uDD28','Kfr':'\uD835\uDD0E','kgreen':'\u0138','khcy':'\u0445','KHcy':'\u0425','kjcy':'\u045C','KJcy':'\u040C','kopf':'\uD835\uDD5C','Kopf':'\uD835\uDD42','kscr':'\uD835\uDCC0','Kscr':'\uD835\uDCA6','lAarr':'\u21DA','lacute':'\u013A','Lacute':'\u0139','laemptyv':'\u29B4','lagran':'\u2112','lambda':'\u03BB','Lambda':'\u039B','lang':'\u27E8','Lang':'\u27EA','langd':'\u2991','langle':'\u27E8','lap':'\u2A85','Laplacetrf':'\u2112','laquo':'\xAB','larr':'\u2190','lArr':'\u21D0','Larr':'\u219E','larrb':'\u21E4','larrbfs':'\u291F','larrfs':'\u291D','larrhk':'\u21A9','larrlp':'\u21AB','larrpl':'\u2939','larrsim':'\u2973','larrtl':'\u21A2','lat':'\u2AAB','latail':'\u2919','lAtail':'\u291B','late':'\u2AAD','lates':'\u2AAD\uFE00','lbarr':'\u290C','lBarr':'\u290E','lbbrk':'\u2772','lbrace':'{','lbrack':'[','lbrke':'\u298B','lbrksld':'\u298F','lbrkslu':'\u298D','lcaron':'\u013E','Lcaron':'\u013D','lcedil':'\u013C','Lcedil':'\u013B','lceil':'\u2308','lcub':'{','lcy':'\u043B','Lcy':'\u041B','ldca':'\u2936','ldquo':'\u201C','ldquor':'\u201E','ldrdhar':'\u2967','ldrushar':'\u294B','ldsh':'\u21B2','le':'\u2264','lE':'\u2266','LeftAngleBracket':'\u27E8','leftarrow':'\u2190','Leftarrow':'\u21D0','LeftArrow':'\u2190','LeftArrowBar':'\u21E4','LeftArrowRightArrow':'\u21C6','leftarrowtail':'\u21A2','LeftCeiling':'\u2308','LeftDoubleBracket':'\u27E6','LeftDownTeeVector':'\u2961','LeftDownVector':'\u21C3','LeftDownVectorBar':'\u2959','LeftFloor':'\u230A','leftharpoondown':'\u21BD','leftharpoonup':'\u21BC','leftleftarrows':'\u21C7','leftrightarrow':'\u2194','Leftrightarrow':'\u21D4','LeftRightArrow':'\u2194','leftrightarrows':'\u21C6','leftrightharpoons':'\u21CB','leftrightsquigarrow':'\u21AD','LeftRightVector':'\u294E','LeftTee':'\u22A3','LeftTeeArrow':'\u21A4','LeftTeeVector':'\u295A','leftthreetimes':'\u22CB','LeftTriangle':'\u22B2','LeftTriangleBar':'\u29CF','LeftTriangleEqual':'\u22B4','LeftUpDownVector':'\u2951','LeftUpTeeVector':'\u2960','LeftUpVector':'\u21BF','LeftUpVectorBar':'\u2958','LeftVector':'\u21BC','LeftVectorBar':'\u2952','leg':'\u22DA','lEg':'\u2A8B','leq':'\u2264','leqq':'\u2266','leqslant':'\u2A7D','les':'\u2A7D','lescc':'\u2AA8','lesdot':'\u2A7F','lesdoto':'\u2A81','lesdotor':'\u2A83','lesg':'\u22DA\uFE00','lesges':'\u2A93','lessapprox':'\u2A85','lessdot':'\u22D6','lesseqgtr':'\u22DA','lesseqqgtr':'\u2A8B','LessEqualGreater':'\u22DA','LessFullEqual':'\u2266','LessGreater':'\u2276','lessgtr':'\u2276','LessLess':'\u2AA1','lesssim':'\u2272','LessSlantEqual':'\u2A7D','LessTilde':'\u2272','lfisht':'\u297C','lfloor':'\u230A','lfr':'\uD835\uDD29','Lfr':'\uD835\uDD0F','lg':'\u2276','lgE':'\u2A91','lHar':'\u2962','lhard':'\u21BD','lharu':'\u21BC','lharul':'\u296A','lhblk':'\u2584','ljcy':'\u0459','LJcy':'\u0409','ll':'\u226A','Ll':'\u22D8','llarr':'\u21C7','llcorner':'\u231E','Lleftarrow':'\u21DA','llhard':'\u296B','lltri':'\u25FA','lmidot':'\u0140','Lmidot':'\u013F','lmoust':'\u23B0','lmoustache':'\u23B0','lnap':'\u2A89','lnapprox':'\u2A89','lne':'\u2A87','lnE':'\u2268','lneq':'\u2A87','lneqq':'\u2268','lnsim':'\u22E6','loang':'\u27EC','loarr':'\u21FD','lobrk':'\u27E6','longleftarrow':'\u27F5','Longleftarrow':'\u27F8','LongLeftArrow':'\u27F5','longleftrightarrow':'\u27F7','Longleftrightarrow':'\u27FA','LongLeftRightArrow':'\u27F7','longmapsto':'\u27FC','longrightarrow':'\u27F6','Longrightarrow':'\u27F9','LongRightArrow':'\u27F6','looparrowleft':'\u21AB','looparrowright':'\u21AC','lopar':'\u2985','lopf':'\uD835\uDD5D','Lopf':'\uD835\uDD43','loplus':'\u2A2D','lotimes':'\u2A34','lowast':'\u2217','lowbar':'_','LowerLeftArrow':'\u2199','LowerRightArrow':'\u2198','loz':'\u25CA','lozenge':'\u25CA','lozf':'\u29EB','lpar':'(','lparlt':'\u2993','lrarr':'\u21C6','lrcorner':'\u231F','lrhar':'\u21CB','lrhard':'\u296D','lrm':'\u200E','lrtri':'\u22BF','lsaquo':'\u2039','lscr':'\uD835\uDCC1','Lscr':'\u2112','lsh':'\u21B0','Lsh':'\u21B0','lsim':'\u2272','lsime':'\u2A8D','lsimg':'\u2A8F','lsqb':'[','lsquo':'\u2018','lsquor':'\u201A','lstrok':'\u0142','Lstrok':'\u0141','lt':'<','Lt':'\u226A','LT':'<','ltcc':'\u2AA6','ltcir':'\u2A79','ltdot':'\u22D6','lthree':'\u22CB','ltimes':'\u22C9','ltlarr':'\u2976','ltquest':'\u2A7B','ltri':'\u25C3','ltrie':'\u22B4','ltrif':'\u25C2','ltrPar':'\u2996','lurdshar':'\u294A','luruhar':'\u2966','lvertneqq':'\u2268\uFE00','lvnE':'\u2268\uFE00','macr':'\xAF','male':'\u2642','malt':'\u2720','maltese':'\u2720','map':'\u21A6','Map':'\u2905','mapsto':'\u21A6','mapstodown':'\u21A7','mapstoleft':'\u21A4','mapstoup':'\u21A5','marker':'\u25AE','mcomma':'\u2A29','mcy':'\u043C','Mcy':'\u041C','mdash':'\u2014','mDDot':'\u223A','measuredangle':'\u2221','MediumSpace':'\u205F','Mellintrf':'\u2133','mfr':'\uD835\uDD2A','Mfr':'\uD835\uDD10','mho':'\u2127','micro':'\xB5','mid':'\u2223','midast':'*','midcir':'\u2AF0','middot':'\xB7','minus':'\u2212','minusb':'\u229F','minusd':'\u2238','minusdu':'\u2A2A','MinusPlus':'\u2213','mlcp':'\u2ADB','mldr':'\u2026','mnplus':'\u2213','models':'\u22A7','mopf':'\uD835\uDD5E','Mopf':'\uD835\uDD44','mp':'\u2213','mscr':'\uD835\uDCC2','Mscr':'\u2133','mstpos':'\u223E','mu':'\u03BC','Mu':'\u039C','multimap':'\u22B8','mumap':'\u22B8','nabla':'\u2207','nacute':'\u0144','Nacute':'\u0143','nang':'\u2220\u20D2','nap':'\u2249','napE':'\u2A70\u0338','napid':'\u224B\u0338','napos':'\u0149','napprox':'\u2249','natur':'\u266E','natural':'\u266E','naturals':'\u2115','nbsp':'\xA0','nbump':'\u224E\u0338','nbumpe':'\u224F\u0338','ncap':'\u2A43','ncaron':'\u0148','Ncaron':'\u0147','ncedil':'\u0146','Ncedil':'\u0145','ncong':'\u2247','ncongdot':'\u2A6D\u0338','ncup':'\u2A42','ncy':'\u043D','Ncy':'\u041D','ndash':'\u2013','ne':'\u2260','nearhk':'\u2924','nearr':'\u2197','neArr':'\u21D7','nearrow':'\u2197','nedot':'\u2250\u0338','NegativeMediumSpace':'\u200B','NegativeThickSpace':'\u200B','NegativeThinSpace':'\u200B','NegativeVeryThinSpace':'\u200B','nequiv':'\u2262','nesear':'\u2928','nesim':'\u2242\u0338','NestedGreaterGreater':'\u226B','NestedLessLess':'\u226A','NewLine':'\n','nexist':'\u2204','nexists':'\u2204','nfr':'\uD835\uDD2B','Nfr':'\uD835\uDD11','nge':'\u2271','ngE':'\u2267\u0338','ngeq':'\u2271','ngeqq':'\u2267\u0338','ngeqslant':'\u2A7E\u0338','nges':'\u2A7E\u0338','nGg':'\u22D9\u0338','ngsim':'\u2275','ngt':'\u226F','nGt':'\u226B\u20D2','ngtr':'\u226F','nGtv':'\u226B\u0338','nharr':'\u21AE','nhArr':'\u21CE','nhpar':'\u2AF2','ni':'\u220B','nis':'\u22FC','nisd':'\u22FA','niv':'\u220B','njcy':'\u045A','NJcy':'\u040A','nlarr':'\u219A','nlArr':'\u21CD','nldr':'\u2025','nle':'\u2270','nlE':'\u2266\u0338','nleftarrow':'\u219A','nLeftarrow':'\u21CD','nleftrightarrow':'\u21AE','nLeftrightarrow':'\u21CE','nleq':'\u2270','nleqq':'\u2266\u0338','nleqslant':'\u2A7D\u0338','nles':'\u2A7D\u0338','nless':'\u226E','nLl':'\u22D8\u0338','nlsim':'\u2274','nlt':'\u226E','nLt':'\u226A\u20D2','nltri':'\u22EA','nltrie':'\u22EC','nLtv':'\u226A\u0338','nmid':'\u2224','NoBreak':'\u2060','NonBreakingSpace':'\xA0','nopf':'\uD835\uDD5F','Nopf':'\u2115','not':'\xAC','Not':'\u2AEC','NotCongruent':'\u2262','NotCupCap':'\u226D','NotDoubleVerticalBar':'\u2226','NotElement':'\u2209','NotEqual':'\u2260','NotEqualTilde':'\u2242\u0338','NotExists':'\u2204','NotGreater':'\u226F','NotGreaterEqual':'\u2271','NotGreaterFullEqual':'\u2267\u0338','NotGreaterGreater':'\u226B\u0338','NotGreaterLess':'\u2279','NotGreaterSlantEqual':'\u2A7E\u0338','NotGreaterTilde':'\u2275','NotHumpDownHump':'\u224E\u0338','NotHumpEqual':'\u224F\u0338','notin':'\u2209','notindot':'\u22F5\u0338','notinE':'\u22F9\u0338','notinva':'\u2209','notinvb':'\u22F7','notinvc':'\u22F6','NotLeftTriangle':'\u22EA','NotLeftTriangleBar':'\u29CF\u0338','NotLeftTriangleEqual':'\u22EC','NotLess':'\u226E','NotLessEqual':'\u2270','NotLessGreater':'\u2278','NotLessLess':'\u226A\u0338','NotLessSlantEqual':'\u2A7D\u0338','NotLessTilde':'\u2274','NotNestedGreaterGreater':'\u2AA2\u0338','NotNestedLessLess':'\u2AA1\u0338','notni':'\u220C','notniva':'\u220C','notnivb':'\u22FE','notnivc':'\u22FD','NotPrecedes':'\u2280','NotPrecedesEqual':'\u2AAF\u0338','NotPrecedesSlantEqual':'\u22E0','NotReverseElement':'\u220C','NotRightTriangle':'\u22EB','NotRightTriangleBar':'\u29D0\u0338','NotRightTriangleEqual':'\u22ED','NotSquareSubset':'\u228F\u0338','NotSquareSubsetEqual':'\u22E2','NotSquareSuperset':'\u2290\u0338','NotSquareSupersetEqual':'\u22E3','NotSubset':'\u2282\u20D2','NotSubsetEqual':'\u2288','NotSucceeds':'\u2281','NotSucceedsEqual':'\u2AB0\u0338','NotSucceedsSlantEqual':'\u22E1','NotSucceedsTilde':'\u227F\u0338','NotSuperset':'\u2283\u20D2','NotSupersetEqual':'\u2289','NotTilde':'\u2241','NotTildeEqual':'\u2244','NotTildeFullEqual':'\u2247','NotTildeTilde':'\u2249','NotVerticalBar':'\u2224','npar':'\u2226','nparallel':'\u2226','nparsl':'\u2AFD\u20E5','npart':'\u2202\u0338','npolint':'\u2A14','npr':'\u2280','nprcue':'\u22E0','npre':'\u2AAF\u0338','nprec':'\u2280','npreceq':'\u2AAF\u0338','nrarr':'\u219B','nrArr':'\u21CF','nrarrc':'\u2933\u0338','nrarrw':'\u219D\u0338','nrightarrow':'\u219B','nRightarrow':'\u21CF','nrtri':'\u22EB','nrtrie':'\u22ED','nsc':'\u2281','nsccue':'\u22E1','nsce':'\u2AB0\u0338','nscr':'\uD835\uDCC3','Nscr':'\uD835\uDCA9','nshortmid':'\u2224','nshortparallel':'\u2226','nsim':'\u2241','nsime':'\u2244','nsimeq':'\u2244','nsmid':'\u2224','nspar':'\u2226','nsqsube':'\u22E2','nsqsupe':'\u22E3','nsub':'\u2284','nsube':'\u2288','nsubE':'\u2AC5\u0338','nsubset':'\u2282\u20D2','nsubseteq':'\u2288','nsubseteqq':'\u2AC5\u0338','nsucc':'\u2281','nsucceq':'\u2AB0\u0338','nsup':'\u2285','nsupe':'\u2289','nsupE':'\u2AC6\u0338','nsupset':'\u2283\u20D2','nsupseteq':'\u2289','nsupseteqq':'\u2AC6\u0338','ntgl':'\u2279','ntilde':'\xF1','Ntilde':'\xD1','ntlg':'\u2278','ntriangleleft':'\u22EA','ntrianglelefteq':'\u22EC','ntriangleright':'\u22EB','ntrianglerighteq':'\u22ED','nu':'\u03BD','Nu':'\u039D','num':'#','numero':'\u2116','numsp':'\u2007','nvap':'\u224D\u20D2','nvdash':'\u22AC','nvDash':'\u22AD','nVdash':'\u22AE','nVDash':'\u22AF','nvge':'\u2265\u20D2','nvgt':'>\u20D2','nvHarr':'\u2904','nvinfin':'\u29DE','nvlArr':'\u2902','nvle':'\u2264\u20D2','nvlt':'<\u20D2','nvltrie':'\u22B4\u20D2','nvrArr':'\u2903','nvrtrie':'\u22B5\u20D2','nvsim':'\u223C\u20D2','nwarhk':'\u2923','nwarr':'\u2196','nwArr':'\u21D6','nwarrow':'\u2196','nwnear':'\u2927','oacute':'\xF3','Oacute':'\xD3','oast':'\u229B','ocir':'\u229A','ocirc':'\xF4','Ocirc':'\xD4','ocy':'\u043E','Ocy':'\u041E','odash':'\u229D','odblac':'\u0151','Odblac':'\u0150','odiv':'\u2A38','odot':'\u2299','odsold':'\u29BC','oelig':'\u0153','OElig':'\u0152','ofcir':'\u29BF','ofr':'\uD835\uDD2C','Ofr':'\uD835\uDD12','ogon':'\u02DB','ograve':'\xF2','Ograve':'\xD2','ogt':'\u29C1','ohbar':'\u29B5','ohm':'\u03A9','oint':'\u222E','olarr':'\u21BA','olcir':'\u29BE','olcross':'\u29BB','oline':'\u203E','olt':'\u29C0','omacr':'\u014D','Omacr':'\u014C','omega':'\u03C9','Omega':'\u03A9','omicron':'\u03BF','Omicron':'\u039F','omid':'\u29B6','ominus':'\u2296','oopf':'\uD835\uDD60','Oopf':'\uD835\uDD46','opar':'\u29B7','OpenCurlyDoubleQuote':'\u201C','OpenCurlyQuote':'\u2018','operp':'\u29B9','oplus':'\u2295','or':'\u2228','Or':'\u2A54','orarr':'\u21BB','ord':'\u2A5D','order':'\u2134','orderof':'\u2134','ordf':'\xAA','ordm':'\xBA','origof':'\u22B6','oror':'\u2A56','orslope':'\u2A57','orv':'\u2A5B','oS':'\u24C8','oscr':'\u2134','Oscr':'\uD835\uDCAA','oslash':'\xF8','Oslash':'\xD8','osol':'\u2298','otilde':'\xF5','Otilde':'\xD5','otimes':'\u2297','Otimes':'\u2A37','otimesas':'\u2A36','ouml':'\xF6','Ouml':'\xD6','ovbar':'\u233D','OverBar':'\u203E','OverBrace':'\u23DE','OverBracket':'\u23B4','OverParenthesis':'\u23DC','par':'\u2225','para':'\xB6','parallel':'\u2225','parsim':'\u2AF3','parsl':'\u2AFD','part':'\u2202','PartialD':'\u2202','pcy':'\u043F','Pcy':'\u041F','percnt':'%','period':'.','permil':'\u2030','perp':'\u22A5','pertenk':'\u2031','pfr':'\uD835\uDD2D','Pfr':'\uD835\uDD13','phi':'\u03C6','Phi':'\u03A6','phiv':'\u03D5','phmmat':'\u2133','phone':'\u260E','pi':'\u03C0','Pi':'\u03A0','pitchfork':'\u22D4','piv':'\u03D6','planck':'\u210F','planckh':'\u210E','plankv':'\u210F','plus':'+','plusacir':'\u2A23','plusb':'\u229E','pluscir':'\u2A22','plusdo':'\u2214','plusdu':'\u2A25','pluse':'\u2A72','PlusMinus':'\xB1','plusmn':'\xB1','plussim':'\u2A26','plustwo':'\u2A27','pm':'\xB1','Poincareplane':'\u210C','pointint':'\u2A15','popf':'\uD835\uDD61','Popf':'\u2119','pound':'\xA3','pr':'\u227A','Pr':'\u2ABB','prap':'\u2AB7','prcue':'\u227C','pre':'\u2AAF','prE':'\u2AB3','prec':'\u227A','precapprox':'\u2AB7','preccurlyeq':'\u227C','Precedes':'\u227A','PrecedesEqual':'\u2AAF','PrecedesSlantEqual':'\u227C','PrecedesTilde':'\u227E','preceq':'\u2AAF','precnapprox':'\u2AB9','precneqq':'\u2AB5','precnsim':'\u22E8','precsim':'\u227E','prime':'\u2032','Prime':'\u2033','primes':'\u2119','prnap':'\u2AB9','prnE':'\u2AB5','prnsim':'\u22E8','prod':'\u220F','Product':'\u220F','profalar':'\u232E','profline':'\u2312','profsurf':'\u2313','prop':'\u221D','Proportion':'\u2237','Proportional':'\u221D','propto':'\u221D','prsim':'\u227E','prurel':'\u22B0','pscr':'\uD835\uDCC5','Pscr':'\uD835\uDCAB','psi':'\u03C8','Psi':'\u03A8','puncsp':'\u2008','qfr':'\uD835\uDD2E','Qfr':'\uD835\uDD14','qint':'\u2A0C','qopf':'\uD835\uDD62','Qopf':'\u211A','qprime':'\u2057','qscr':'\uD835\uDCC6','Qscr':'\uD835\uDCAC','quaternions':'\u210D','quatint':'\u2A16','quest':'?','questeq':'\u225F','quot':'"','QUOT':'"','rAarr':'\u21DB','race':'\u223D\u0331','racute':'\u0155','Racute':'\u0154','radic':'\u221A','raemptyv':'\u29B3','rang':'\u27E9','Rang':'\u27EB','rangd':'\u2992','range':'\u29A5','rangle':'\u27E9','raquo':'\xBB','rarr':'\u2192','rArr':'\u21D2','Rarr':'\u21A0','rarrap':'\u2975','rarrb':'\u21E5','rarrbfs':'\u2920','rarrc':'\u2933','rarrfs':'\u291E','rarrhk':'\u21AA','rarrlp':'\u21AC','rarrpl':'\u2945','rarrsim':'\u2974','rarrtl':'\u21A3','Rarrtl':'\u2916','rarrw':'\u219D','ratail':'\u291A','rAtail':'\u291C','ratio':'\u2236','rationals':'\u211A','rbarr':'\u290D','rBarr':'\u290F','RBarr':'\u2910','rbbrk':'\u2773','rbrace':'}','rbrack':']','rbrke':'\u298C','rbrksld':'\u298E','rbrkslu':'\u2990','rcaron':'\u0159','Rcaron':'\u0158','rcedil':'\u0157','Rcedil':'\u0156','rceil':'\u2309','rcub':'}','rcy':'\u0440','Rcy':'\u0420','rdca':'\u2937','rdldhar':'\u2969','rdquo':'\u201D','rdquor':'\u201D','rdsh':'\u21B3','Re':'\u211C','real':'\u211C','realine':'\u211B','realpart':'\u211C','reals':'\u211D','rect':'\u25AD','reg':'\xAE','REG':'\xAE','ReverseElement':'\u220B','ReverseEquilibrium':'\u21CB','ReverseUpEquilibrium':'\u296F','rfisht':'\u297D','rfloor':'\u230B','rfr':'\uD835\uDD2F','Rfr':'\u211C','rHar':'\u2964','rhard':'\u21C1','rharu':'\u21C0','rharul':'\u296C','rho':'\u03C1','Rho':'\u03A1','rhov':'\u03F1','RightAngleBracket':'\u27E9','rightarrow':'\u2192','Rightarrow':'\u21D2','RightArrow':'\u2192','RightArrowBar':'\u21E5','RightArrowLeftArrow':'\u21C4','rightarrowtail':'\u21A3','RightCeiling':'\u2309','RightDoubleBracket':'\u27E7','RightDownTeeVector':'\u295D','RightDownVector':'\u21C2','RightDownVectorBar':'\u2955','RightFloor':'\u230B','rightharpoondown':'\u21C1','rightharpoonup':'\u21C0','rightleftarrows':'\u21C4','rightleftharpoons':'\u21CC','rightrightarrows':'\u21C9','rightsquigarrow':'\u219D','RightTee':'\u22A2','RightTeeArrow':'\u21A6','RightTeeVector':'\u295B','rightthreetimes':'\u22CC','RightTriangle':'\u22B3','RightTriangleBar':'\u29D0','RightTriangleEqual':'\u22B5','RightUpDownVector':'\u294F','RightUpTeeVector':'\u295C','RightUpVector':'\u21BE','RightUpVectorBar':'\u2954','RightVector':'\u21C0','RightVectorBar':'\u2953','ring':'\u02DA','risingdotseq':'\u2253','rlarr':'\u21C4','rlhar':'\u21CC','rlm':'\u200F','rmoust':'\u23B1','rmoustache':'\u23B1','rnmid':'\u2AEE','roang':'\u27ED','roarr':'\u21FE','robrk':'\u27E7','ropar':'\u2986','ropf':'\uD835\uDD63','Ropf':'\u211D','roplus':'\u2A2E','rotimes':'\u2A35','RoundImplies':'\u2970','rpar':')','rpargt':'\u2994','rppolint':'\u2A12','rrarr':'\u21C9','Rrightarrow':'\u21DB','rsaquo':'\u203A','rscr':'\uD835\uDCC7','Rscr':'\u211B','rsh':'\u21B1','Rsh':'\u21B1','rsqb':']','rsquo':'\u2019','rsquor':'\u2019','rthree':'\u22CC','rtimes':'\u22CA','rtri':'\u25B9','rtrie':'\u22B5','rtrif':'\u25B8','rtriltri':'\u29CE','RuleDelayed':'\u29F4','ruluhar':'\u2968','rx':'\u211E','sacute':'\u015B','Sacute':'\u015A','sbquo':'\u201A','sc':'\u227B','Sc':'\u2ABC','scap':'\u2AB8','scaron':'\u0161','Scaron':'\u0160','sccue':'\u227D','sce':'\u2AB0','scE':'\u2AB4','scedil':'\u015F','Scedil':'\u015E','scirc':'\u015D','Scirc':'\u015C','scnap':'\u2ABA','scnE':'\u2AB6','scnsim':'\u22E9','scpolint':'\u2A13','scsim':'\u227F','scy':'\u0441','Scy':'\u0421','sdot':'\u22C5','sdotb':'\u22A1','sdote':'\u2A66','searhk':'\u2925','searr':'\u2198','seArr':'\u21D8','searrow':'\u2198','sect':'\xA7','semi':';','seswar':'\u2929','setminus':'\u2216','setmn':'\u2216','sext':'\u2736','sfr':'\uD835\uDD30','Sfr':'\uD835\uDD16','sfrown':'\u2322','sharp':'\u266F','shchcy':'\u0449','SHCHcy':'\u0429','shcy':'\u0448','SHcy':'\u0428','ShortDownArrow':'\u2193','ShortLeftArrow':'\u2190','shortmid':'\u2223','shortparallel':'\u2225','ShortRightArrow':'\u2192','ShortUpArrow':'\u2191','shy':'\xAD','sigma':'\u03C3','Sigma':'\u03A3','sigmaf':'\u03C2','sigmav':'\u03C2','sim':'\u223C','simdot':'\u2A6A','sime':'\u2243','simeq':'\u2243','simg':'\u2A9E','simgE':'\u2AA0','siml':'\u2A9D','simlE':'\u2A9F','simne':'\u2246','simplus':'\u2A24','simrarr':'\u2972','slarr':'\u2190','SmallCircle':'\u2218','smallsetminus':'\u2216','smashp':'\u2A33','smeparsl':'\u29E4','smid':'\u2223','smile':'\u2323','smt':'\u2AAA','smte':'\u2AAC','smtes':'\u2AAC\uFE00','softcy':'\u044C','SOFTcy':'\u042C','sol':'/','solb':'\u29C4','solbar':'\u233F','sopf':'\uD835\uDD64','Sopf':'\uD835\uDD4A','spades':'\u2660','spadesuit':'\u2660','spar':'\u2225','sqcap':'\u2293','sqcaps':'\u2293\uFE00','sqcup':'\u2294','sqcups':'\u2294\uFE00','Sqrt':'\u221A','sqsub':'\u228F','sqsube':'\u2291','sqsubset':'\u228F','sqsubseteq':'\u2291','sqsup':'\u2290','sqsupe':'\u2292','sqsupset':'\u2290','sqsupseteq':'\u2292','squ':'\u25A1','square':'\u25A1','Square':'\u25A1','SquareIntersection':'\u2293','SquareSubset':'\u228F','SquareSubsetEqual':'\u2291','SquareSuperset':'\u2290','SquareSupersetEqual':'\u2292','SquareUnion':'\u2294','squarf':'\u25AA','squf':'\u25AA','srarr':'\u2192','sscr':'\uD835\uDCC8','Sscr':'\uD835\uDCAE','ssetmn':'\u2216','ssmile':'\u2323','sstarf':'\u22C6','star':'\u2606','Star':'\u22C6','starf':'\u2605','straightepsilon':'\u03F5','straightphi':'\u03D5','strns':'\xAF','sub':'\u2282','Sub':'\u22D0','subdot':'\u2ABD','sube':'\u2286','subE':'\u2AC5','subedot':'\u2AC3','submult':'\u2AC1','subne':'\u228A','subnE':'\u2ACB','subplus':'\u2ABF','subrarr':'\u2979','subset':'\u2282','Subset':'\u22D0','subseteq':'\u2286','subseteqq':'\u2AC5','SubsetEqual':'\u2286','subsetneq':'\u228A','subsetneqq':'\u2ACB','subsim':'\u2AC7','subsub':'\u2AD5','subsup':'\u2AD3','succ':'\u227B','succapprox':'\u2AB8','succcurlyeq':'\u227D','Succeeds':'\u227B','SucceedsEqual':'\u2AB0','SucceedsSlantEqual':'\u227D','SucceedsTilde':'\u227F','succeq':'\u2AB0','succnapprox':'\u2ABA','succneqq':'\u2AB6','succnsim':'\u22E9','succsim':'\u227F','SuchThat':'\u220B','sum':'\u2211','Sum':'\u2211','sung':'\u266A','sup':'\u2283','Sup':'\u22D1','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','supdot':'\u2ABE','supdsub':'\u2AD8','supe':'\u2287','supE':'\u2AC6','supedot':'\u2AC4','Superset':'\u2283','SupersetEqual':'\u2287','suphsol':'\u27C9','suphsub':'\u2AD7','suplarr':'\u297B','supmult':'\u2AC2','supne':'\u228B','supnE':'\u2ACC','supplus':'\u2AC0','supset':'\u2283','Supset':'\u22D1','supseteq':'\u2287','supseteqq':'\u2AC6','supsetneq':'\u228B','supsetneqq':'\u2ACC','supsim':'\u2AC8','supsub':'\u2AD4','supsup':'\u2AD6','swarhk':'\u2926','swarr':'\u2199','swArr':'\u21D9','swarrow':'\u2199','swnwar':'\u292A','szlig':'\xDF','Tab':'\t','target':'\u2316','tau':'\u03C4','Tau':'\u03A4','tbrk':'\u23B4','tcaron':'\u0165','Tcaron':'\u0164','tcedil':'\u0163','Tcedil':'\u0162','tcy':'\u0442','Tcy':'\u0422','tdot':'\u20DB','telrec':'\u2315','tfr':'\uD835\uDD31','Tfr':'\uD835\uDD17','there4':'\u2234','therefore':'\u2234','Therefore':'\u2234','theta':'\u03B8','Theta':'\u0398','thetasym':'\u03D1','thetav':'\u03D1','thickapprox':'\u2248','thicksim':'\u223C','ThickSpace':'\u205F\u200A','thinsp':'\u2009','ThinSpace':'\u2009','thkap':'\u2248','thksim':'\u223C','thorn':'\xFE','THORN':'\xDE','tilde':'\u02DC','Tilde':'\u223C','TildeEqual':'\u2243','TildeFullEqual':'\u2245','TildeTilde':'\u2248','times':'\xD7','timesb':'\u22A0','timesbar':'\u2A31','timesd':'\u2A30','tint':'\u222D','toea':'\u2928','top':'\u22A4','topbot':'\u2336','topcir':'\u2AF1','topf':'\uD835\uDD65','Topf':'\uD835\uDD4B','topfork':'\u2ADA','tosa':'\u2929','tprime':'\u2034','trade':'\u2122','TRADE':'\u2122','triangle':'\u25B5','triangledown':'\u25BF','triangleleft':'\u25C3','trianglelefteq':'\u22B4','triangleq':'\u225C','triangleright':'\u25B9','trianglerighteq':'\u22B5','tridot':'\u25EC','trie':'\u225C','triminus':'\u2A3A','TripleDot':'\u20DB','triplus':'\u2A39','trisb':'\u29CD','tritime':'\u2A3B','trpezium':'\u23E2','tscr':'\uD835\uDCC9','Tscr':'\uD835\uDCAF','tscy':'\u0446','TScy':'\u0426','tshcy':'\u045B','TSHcy':'\u040B','tstrok':'\u0167','Tstrok':'\u0166','twixt':'\u226C','twoheadleftarrow':'\u219E','twoheadrightarrow':'\u21A0','uacute':'\xFA','Uacute':'\xDA','uarr':'\u2191','uArr':'\u21D1','Uarr':'\u219F','Uarrocir':'\u2949','ubrcy':'\u045E','Ubrcy':'\u040E','ubreve':'\u016D','Ubreve':'\u016C','ucirc':'\xFB','Ucirc':'\xDB','ucy':'\u0443','Ucy':'\u0423','udarr':'\u21C5','udblac':'\u0171','Udblac':'\u0170','udhar':'\u296E','ufisht':'\u297E','ufr':'\uD835\uDD32','Ufr':'\uD835\uDD18','ugrave':'\xF9','Ugrave':'\xD9','uHar':'\u2963','uharl':'\u21BF','uharr':'\u21BE','uhblk':'\u2580','ulcorn':'\u231C','ulcorner':'\u231C','ulcrop':'\u230F','ultri':'\u25F8','umacr':'\u016B','Umacr':'\u016A','uml':'\xA8','UnderBar':'_','UnderBrace':'\u23DF','UnderBracket':'\u23B5','UnderParenthesis':'\u23DD','Union':'\u22C3','UnionPlus':'\u228E','uogon':'\u0173','Uogon':'\u0172','uopf':'\uD835\uDD66','Uopf':'\uD835\uDD4C','uparrow':'\u2191','Uparrow':'\u21D1','UpArrow':'\u2191','UpArrowBar':'\u2912','UpArrowDownArrow':'\u21C5','updownarrow':'\u2195','Updownarrow':'\u21D5','UpDownArrow':'\u2195','UpEquilibrium':'\u296E','upharpoonleft':'\u21BF','upharpoonright':'\u21BE','uplus':'\u228E','UpperLeftArrow':'\u2196','UpperRightArrow':'\u2197','upsi':'\u03C5','Upsi':'\u03D2','upsih':'\u03D2','upsilon':'\u03C5','Upsilon':'\u03A5','UpTee':'\u22A5','UpTeeArrow':'\u21A5','upuparrows':'\u21C8','urcorn':'\u231D','urcorner':'\u231D','urcrop':'\u230E','uring':'\u016F','Uring':'\u016E','urtri':'\u25F9','uscr':'\uD835\uDCCA','Uscr':'\uD835\uDCB0','utdot':'\u22F0','utilde':'\u0169','Utilde':'\u0168','utri':'\u25B5','utrif':'\u25B4','uuarr':'\u21C8','uuml':'\xFC','Uuml':'\xDC','uwangle':'\u29A7','vangrt':'\u299C','varepsilon':'\u03F5','varkappa':'\u03F0','varnothing':'\u2205','varphi':'\u03D5','varpi':'\u03D6','varpropto':'\u221D','varr':'\u2195','vArr':'\u21D5','varrho':'\u03F1','varsigma':'\u03C2','varsubsetneq':'\u228A\uFE00','varsubsetneqq':'\u2ACB\uFE00','varsupsetneq':'\u228B\uFE00','varsupsetneqq':'\u2ACC\uFE00','vartheta':'\u03D1','vartriangleleft':'\u22B2','vartriangleright':'\u22B3','vBar':'\u2AE8','Vbar':'\u2AEB','vBarv':'\u2AE9','vcy':'\u0432','Vcy':'\u0412','vdash':'\u22A2','vDash':'\u22A8','Vdash':'\u22A9','VDash':'\u22AB','Vdashl':'\u2AE6','vee':'\u2228','Vee':'\u22C1','veebar':'\u22BB','veeeq':'\u225A','vellip':'\u22EE','verbar':'|','Verbar':'\u2016','vert':'|','Vert':'\u2016','VerticalBar':'\u2223','VerticalLine':'|','VerticalSeparator':'\u2758','VerticalTilde':'\u2240','VeryThinSpace':'\u200A','vfr':'\uD835\uDD33','Vfr':'\uD835\uDD19','vltri':'\u22B2','vnsub':'\u2282\u20D2','vnsup':'\u2283\u20D2','vopf':'\uD835\uDD67','Vopf':'\uD835\uDD4D','vprop':'\u221D','vrtri':'\u22B3','vscr':'\uD835\uDCCB','Vscr':'\uD835\uDCB1','vsubne':'\u228A\uFE00','vsubnE':'\u2ACB\uFE00','vsupne':'\u228B\uFE00','vsupnE':'\u2ACC\uFE00','Vvdash':'\u22AA','vzigzag':'\u299A','wcirc':'\u0175','Wcirc':'\u0174','wedbar':'\u2A5F','wedge':'\u2227','Wedge':'\u22C0','wedgeq':'\u2259','weierp':'\u2118','wfr':'\uD835\uDD34','Wfr':'\uD835\uDD1A','wopf':'\uD835\uDD68','Wopf':'\uD835\uDD4E','wp':'\u2118','wr':'\u2240','wreath':'\u2240','wscr':'\uD835\uDCCC','Wscr':'\uD835\uDCB2','xcap':'\u22C2','xcirc':'\u25EF','xcup':'\u22C3','xdtri':'\u25BD','xfr':'\uD835\uDD35','Xfr':'\uD835\uDD1B','xharr':'\u27F7','xhArr':'\u27FA','xi':'\u03BE','Xi':'\u039E','xlarr':'\u27F5','xlArr':'\u27F8','xmap':'\u27FC','xnis':'\u22FB','xodot':'\u2A00','xopf':'\uD835\uDD69','Xopf':'\uD835\uDD4F','xoplus':'\u2A01','xotime':'\u2A02','xrarr':'\u27F6','xrArr':'\u27F9','xscr':'\uD835\uDCCD','Xscr':'\uD835\uDCB3','xsqcup':'\u2A06','xuplus':'\u2A04','xutri':'\u25B3','xvee':'\u22C1','xwedge':'\u22C0','yacute':'\xFD','Yacute':'\xDD','yacy':'\u044F','YAcy':'\u042F','ycirc':'\u0177','Ycirc':'\u0176','ycy':'\u044B','Ycy':'\u042B','yen':'\xA5','yfr':'\uD835\uDD36','Yfr':'\uD835\uDD1C','yicy':'\u0457','YIcy':'\u0407','yopf':'\uD835\uDD6A','Yopf':'\uD835\uDD50','yscr':'\uD835\uDCCE','Yscr':'\uD835\uDCB4','yucy':'\u044E','YUcy':'\u042E','yuml':'\xFF','Yuml':'\u0178','zacute':'\u017A','Zacute':'\u0179','zcaron':'\u017E','Zcaron':'\u017D','zcy':'\u0437','Zcy':'\u0417','zdot':'\u017C','Zdot':'\u017B','zeetrf':'\u2128','ZeroWidthSpace':'\u200B','zeta':'\u03B6','Zeta':'\u0396','zfr':'\uD835\uDD37','Zfr':'\u2128','zhcy':'\u0436','ZHcy':'\u0416','zigrarr':'\u21DD','zopf':'\uD835\uDD6B','Zopf':'\u2124','zscr':'\uD835\uDCCF','Zscr':'\uD835\uDCB5','zwj':'\u200D','zwnj':'\u200C'};
+       var decodeMapLegacy = {'aacute':'\xE1','Aacute':'\xC1','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','aelig':'\xE6','AElig':'\xC6','agrave':'\xE0','Agrave':'\xC0','amp':'&','AMP':'&','aring':'\xE5','Aring':'\xC5','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','brvbar':'\xA6','ccedil':'\xE7','Ccedil':'\xC7','cedil':'\xB8','cent':'\xA2','copy':'\xA9','COPY':'\xA9','curren':'\xA4','deg':'\xB0','divide':'\xF7','eacute':'\xE9','Eacute':'\xC9','ecirc':'\xEA','Ecirc':'\xCA','egrave':'\xE8','Egrave':'\xC8','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','frac12':'\xBD','frac14':'\xBC','frac34':'\xBE','gt':'>','GT':'>','iacute':'\xED','Iacute':'\xCD','icirc':'\xEE','Icirc':'\xCE','iexcl':'\xA1','igrave':'\xEC','Igrave':'\xCC','iquest':'\xBF','iuml':'\xEF','Iuml':'\xCF','laquo':'\xAB','lt':'<','LT':'<','macr':'\xAF','micro':'\xB5','middot':'\xB7','nbsp':'\xA0','not':'\xAC','ntilde':'\xF1','Ntilde':'\xD1','oacute':'\xF3','Oacute':'\xD3','ocirc':'\xF4','Ocirc':'\xD4','ograve':'\xF2','Ograve':'\xD2','ordf':'\xAA','ordm':'\xBA','oslash':'\xF8','Oslash':'\xD8','otilde':'\xF5','Otilde':'\xD5','ouml':'\xF6','Ouml':'\xD6','para':'\xB6','plusmn':'\xB1','pound':'\xA3','quot':'"','QUOT':'"','raquo':'\xBB','reg':'\xAE','REG':'\xAE','sect':'\xA7','shy':'\xAD','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','szlig':'\xDF','thorn':'\xFE','THORN':'\xDE','times':'\xD7','uacute':'\xFA','Uacute':'\xDA','ucirc':'\xFB','Ucirc':'\xDB','ugrave':'\xF9','Ugrave':'\xD9','uml':'\xA8','uuml':'\xFC','Uuml':'\xDC','yacute':'\xFD','Yacute':'\xDD','yen':'\xA5','yuml':'\xFF'};
+       var decodeMapNumeric = {'0':'\uFFFD','128':'\u20AC','130':'\u201A','131':'\u0192','132':'\u201E','133':'\u2026','134':'\u2020','135':'\u2021','136':'\u02C6','137':'\u2030','138':'\u0160','139':'\u2039','140':'\u0152','142':'\u017D','145':'\u2018','146':'\u2019','147':'\u201C','148':'\u201D','149':'\u2022','150':'\u2013','151':'\u2014','152':'\u02DC','153':'\u2122','154':'\u0161','155':'\u203A','156':'\u0153','158':'\u017E','159':'\u0178'};
+       var invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];
 
-  stream.on('data', function (chunk) {
-    debug('wrapped data');
-    if (state.decoder) chunk = state.decoder.write(chunk);
+       /*--------------------------------------------------------------------------*/
 
-    // don't skip over falsy values in objectMode
-    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
+       var stringFromCharCode = String.fromCharCode;
 
-    var ret = _this.push(chunk);
-    if (!ret) {
-      paused = true;
-      stream.pause();
-    }
-  });
+       var object = {};
+       var hasOwnProperty = object.hasOwnProperty;
+       var has = function(object, propertyName) {
+               return hasOwnProperty.call(object, propertyName);
+       };
 
-  // proxy all the other methods.
-  // important when wrapping filters and duplexes.
-  for (var i in stream) {
-    if (this[i] === undefined && typeof stream[i] === 'function') {
-      this[i] = function (method) {
-        return function () {
-          return stream[method].apply(stream, arguments);
-        };
-      }(i);
-    }
-  }
+       var contains = function(array, value) {
+               var index = -1;
+               var length = array.length;
+               while (++index < length) {
+                       if (array[index] == value) {
+                               return true;
+                       }
+               }
+               return false;
+       };
 
-  // proxy certain important events.
-  for (var n = 0; n < kProxyEvents.length; n++) {
-    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
-  }
+       var merge = function(options, defaults) {
+               if (!options) {
+                       return defaults;
+               }
+               var result = {};
+               var key;
+               for (key in defaults) {
+                       // A `hasOwnProperty` check is not needed here, since only recognized
+                       // option names are used anyway. Any others are ignored.
+                       result[key] = has(options, key) ? options[key] : defaults[key];
+               }
+               return result;
+       };
 
-  // when we try to consume some more bytes, simply unpause the
-  // underlying stream.
-  this._read = function (n) {
-    debug('wrapped _read', n);
-    if (paused) {
-      paused = false;
-      stream.resume();
-    }
-  };
+       // Modified version of `ucs2encode`; see https://mths.be/punycode.
+       var codePointToSymbol = function(codePoint, strict) {
+               var output = '';
+               if ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {
+                       // See issue #4:
+                       // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is
+                       // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD
+                       // REPLACEMENT CHARACTER.”
+                       if (strict) {
+                               parseError('character reference outside the permissible Unicode range');
+                       }
+                       return '\uFFFD';
+               }
+               if (has(decodeMapNumeric, codePoint)) {
+                       if (strict) {
+                               parseError('disallowed character reference');
+                       }
+                       return decodeMapNumeric[codePoint];
+               }
+               if (strict && contains(invalidReferenceCodePoints, codePoint)) {
+                       parseError('disallowed character reference');
+               }
+               if (codePoint > 0xFFFF) {
+                       codePoint -= 0x10000;
+                       output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);
+                       codePoint = 0xDC00 | codePoint & 0x3FF;
+               }
+               output += stringFromCharCode(codePoint);
+               return output;
+       };
 
-  return this;
-};
+       var hexEscape = function(codePoint) {
+               return '&#x' + codePoint.toString(16).toUpperCase() + ';';
+       };
 
-Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
-  // making it explicit this property is not enumerable
-  // because otherwise some prototype manipulation in
-  // userland will fail
-  enumerable: false,
-  get: function () {
-    return this._readableState.highWaterMark;
-  }
-});
+       var decEscape = function(codePoint) {
+               return '&#' + codePoint + ';';
+       };
 
-// exposed for testing purposes only.
-Readable._fromList = fromList;
+       var parseError = function(message) {
+               throw Error('Parse error: ' + message);
+       };
 
-// Pluck off n bytes from an array of buffers.
-// Length is the combined lengths of all the buffers in the list.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function fromList(n, state) {
-  // nothing buffered
-  if (state.length === 0) return null;
+       /*--------------------------------------------------------------------------*/
 
-  var ret;
-  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
-    // read it all, truncate the list
-    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
-    state.buffer.clear();
-  } else {
-    // read part of list
-    ret = fromListPartial(n, state.buffer, state.decoder);
-  }
+       var encode = function(string, options) {
+               options = merge(options, encode.options);
+               var strict = options.strict;
+               if (strict && regexInvalidRawCodePoint.test(string)) {
+                       parseError('forbidden code point');
+               }
+               var encodeEverything = options.encodeEverything;
+               var useNamedReferences = options.useNamedReferences;
+               var allowUnsafeSymbols = options.allowUnsafeSymbols;
+               var escapeCodePoint = options.decimal ? decEscape : hexEscape;
 
-  return ret;
-}
+               var escapeBmpSymbol = function(symbol) {
+                       return escapeCodePoint(symbol.charCodeAt(0));
+               };
 
-// Extracts only enough buffered data to satisfy the amount requested.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function fromListPartial(n, list, hasStrings) {
-  var ret;
-  if (n < list.head.data.length) {
-    // slice is the same for buffers and strings
-    ret = list.head.data.slice(0, n);
-    list.head.data = list.head.data.slice(n);
-  } else if (n === list.head.data.length) {
-    // first chunk is a perfect match
-    ret = list.shift();
-  } else {
-    // result spans more than one buffer
-    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
-  }
-  return ret;
-}
+               if (encodeEverything) {
+                       // Encode ASCII symbols.
+                       string = string.replace(regexAsciiWhitelist, function(symbol) {
+                               // Use named references if requested & possible.
+                               if (useNamedReferences && has(encodeMap, symbol)) {
+                                       return '&' + encodeMap[symbol] + ';';
+                               }
+                               return escapeBmpSymbol(symbol);
+                       });
+                       // Shorten a few escapes that represent two symbols, of which at least one
+                       // is within the ASCII range.
+                       if (useNamedReferences) {
+                               string = string
+                                       .replace(/&gt;\u20D2/g, '&nvgt;')
+                                       .replace(/&lt;\u20D2/g, '&nvlt;')
+                                       .replace(/&#x66;&#x6A;/g, '&fjlig;');
+                       }
+                       // Encode non-ASCII symbols.
+                       if (useNamedReferences) {
+                               // Encode non-ASCII symbols that can be replaced with a named reference.
+                               string = string.replace(regexEncodeNonAscii, function(string) {
+                                       // Note: there is no need to check `has(encodeMap, string)` here.
+                                       return '&' + encodeMap[string] + ';';
+                               });
+                       }
+                       // Note: any remaining non-ASCII symbols are handled outside of the `if`.
+               } else if (useNamedReferences) {
+                       // Apply named character references.
+                       // Encode `<>"'&` using named character references.
+                       if (!allowUnsafeSymbols) {
+                               string = string.replace(regexEscape, function(string) {
+                                       return '&' + encodeMap[string] + ';'; // no need to check `has()` here
+                               });
+                       }
+                       // Shorten escapes that represent two symbols, of which at least one is
+                       // `<>"'&`.
+                       string = string
+                               .replace(/&gt;\u20D2/g, '&nvgt;')
+                               .replace(/&lt;\u20D2/g, '&nvlt;');
+                       // Encode non-ASCII symbols that can be replaced with a named reference.
+                       string = string.replace(regexEncodeNonAscii, function(string) {
+                               // Note: there is no need to check `has(encodeMap, string)` here.
+                               return '&' + encodeMap[string] + ';';
+                       });
+               } else if (!allowUnsafeSymbols) {
+                       // Encode `<>"'&` using hexadecimal escapes, now that they’re not handled
+                       // using named character references.
+                       string = string.replace(regexEscape, escapeBmpSymbol);
+               }
+               return string
+                       // Encode astral symbols.
+                       .replace(regexAstralSymbols, function($0) {
+                               // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+                               var high = $0.charCodeAt(0);
+                               var low = $0.charCodeAt(1);
+                               var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;
+                               return escapeCodePoint(codePoint);
+                       })
+                       // Encode any remaining BMP symbols that are not printable ASCII symbols
+                       // using a hexadecimal escape.
+                       .replace(regexBmpWhitelist, escapeBmpSymbol);
+       };
+       // Expose default options (so they can be overridden globally).
+       encode.options = {
+               'allowUnsafeSymbols': false,
+               'encodeEverything': false,
+               'strict': false,
+               'useNamedReferences': false,
+               'decimal' : false
+       };
 
-// Copies a specified amount of characters from the list of buffered data
-// chunks.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function copyFromBufferString(n, list) {
-  var p = list.head;
-  var c = 1;
-  var ret = p.data;
-  n -= ret.length;
-  while (p = p.next) {
-    var str = p.data;
-    var nb = n > str.length ? str.length : n;
-    if (nb === str.length) ret += str;else ret += str.slice(0, n);
-    n -= nb;
-    if (n === 0) {
-      if (nb === str.length) {
-        ++c;
-        if (p.next) list.head = p.next;else list.head = list.tail = null;
-      } else {
-        list.head = p;
-        p.data = str.slice(nb);
-      }
-      break;
-    }
-    ++c;
-  }
-  list.length -= c;
-  return ret;
-}
+       var decode = function(html, options) {
+               options = merge(options, decode.options);
+               var strict = options.strict;
+               if (strict && regexInvalidEntity.test(html)) {
+                       parseError('malformed character reference');
+               }
+               return html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {
+                       var codePoint;
+                       var semicolon;
+                       var decDigits;
+                       var hexDigits;
+                       var reference;
+                       var next;
 
-// Copies a specified amount of bytes from the list of buffered data chunks.
-// This function is designed to be inlinable, so please take care when making
-// changes to the function body.
-function copyFromBuffer(n, list) {
-  var ret = Buffer.allocUnsafe(n);
-  var p = list.head;
-  var c = 1;
-  p.data.copy(ret);
-  n -= p.data.length;
-  while (p = p.next) {
-    var buf = p.data;
-    var nb = n > buf.length ? buf.length : n;
-    buf.copy(ret, ret.length - n, 0, nb);
-    n -= nb;
-    if (n === 0) {
-      if (nb === buf.length) {
-        ++c;
-        if (p.next) list.head = p.next;else list.head = list.tail = null;
-      } else {
-        list.head = p;
-        p.data = buf.slice(nb);
-      }
-      break;
-    }
-    ++c;
-  }
-  list.length -= c;
-  return ret;
-}
+                       if ($1) {
+                               reference = $1;
+                               // Note: there is no need to check `has(decodeMap, reference)`.
+                               return decodeMap[reference];
+                       }
 
-function endReadable(stream) {
-  var state = stream._readableState;
+                       if ($2) {
+                               // Decode named character references without trailing `;`, e.g. `&amp`.
+                               // This is only a parse error if it gets converted to `&`, or if it is
+                               // followed by `=` in an attribute context.
+                               reference = $2;
+                               next = $3;
+                               if (next && options.isAttributeValue) {
+                                       if (strict && next == '=') {
+                                               parseError('`&` did not start a character reference');
+                                       }
+                                       return $0;
+                               } else {
+                                       if (strict) {
+                                               parseError(
+                                                       'named character reference was not terminated by a semicolon'
+                                               );
+                                       }
+                                       // Note: there is no need to check `has(decodeMapLegacy, reference)`.
+                                       return decodeMapLegacy[reference] + (next || '');
+                               }
+                       }
 
-  // If we get here before consuming all the bytes, then that is a
-  // bug in node.  Should never happen.
-  if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
+                       if ($4) {
+                               // Decode decimal escapes, e.g. `&#119558;`.
+                               decDigits = $4;
+                               semicolon = $5;
+                               if (strict && !semicolon) {
+                                       parseError('character reference was not terminated by a semicolon');
+                               }
+                               codePoint = parseInt(decDigits, 10);
+                               return codePointToSymbol(codePoint, strict);
+                       }
 
-  if (!state.endEmitted) {
-    state.ended = true;
-    pna.nextTick(endReadableNT, state, stream);
-  }
-}
+                       if ($6) {
+                               // Decode hexadecimal escapes, e.g. `&#x1D306;`.
+                               hexDigits = $6;
+                               semicolon = $7;
+                               if (strict && !semicolon) {
+                                       parseError('character reference was not terminated by a semicolon');
+                               }
+                               codePoint = parseInt(hexDigits, 16);
+                               return codePointToSymbol(codePoint, strict);
+                       }
 
-function endReadableNT(state, stream) {
-  // Check that we didn't get one last unshift.
-  if (!state.endEmitted && state.length === 0) {
-    state.endEmitted = true;
-    stream.readable = false;
-    stream.emit('end');
-  }
-}
+                       // If we’re still here, `if ($7)` is implied; it’s an ambiguous
+                       // ampersand for sure. https://mths.be/notes/ambiguous-ampersands
+                       if (strict) {
+                               parseError(
+                                       'named character reference was not terminated by a semicolon'
+                               );
+                       }
+                       return $0;
+               });
+       };
+       // Expose default options (so they can be overridden globally).
+       decode.options = {
+               'isAttributeValue': false,
+               'strict': false
+       };
 
-function indexOf(xs, x) {
-  for (var i = 0, l = xs.length; i < l; i++) {
-    if (xs[i] === x) return i;
-  }
-  return -1;
-}
-}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"./_stream_duplex":117,"./internal/streams/BufferList":122,"./internal/streams/destroy":123,"./internal/streams/stream":124,"_process":112,"core-util-is":101,"events":102,"inherits":106,"isarray":108,"process-nextick-args":111,"safe-buffer":143,"string_decoder/":159,"util":2}],120:[function(require,module,exports){
-// 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 escape = function(string) {
+               return string.replace(regexEscape, function($0) {
+                       // Note: there is no need to check `has(escapeMap, $0)` here.
+                       return escapeMap[$0];
+               });
+       };
 
-// a transform stream is a readable/writable stream where you do
-// something with the data.  Sometimes it's called a "filter",
-// but that's not a great name for it, since that implies a thing where
-// some bits pass through, and others are simply ignored.  (That would
-// be a valid example of a transform, of course.)
-//
-// While the output is causally related to the input, it's not a
-// necessarily symmetric or synchronous transformation.  For example,
-// a zlib stream might take multiple plain-text writes(), and then
-// emit a single compressed chunk some time in the future.
-//
-// Here's how this works:
-//
-// The Transform stream has all the aspects of the readable and writable
-// stream classes.  When you write(chunk), that calls _write(chunk,cb)
-// internally, and returns false if there's a lot of pending writes
-// buffered up.  When you call read(), that calls _read(n) until
-// there's enough pending readable data buffered up.
-//
-// In a transform stream, the written data is placed in a buffer.  When
-// _read(n) is called, it transforms the queued up data, calling the
-// buffered _write cb's as it consumes chunks.  If consuming a single
-// written chunk would result in multiple output chunks, then the first
-// outputted bit calls the readcb, and subsequent chunks just go into
-// the read buffer, and will cause it to emit 'readable' if necessary.
-//
-// This way, back-pressure is actually determined by the reading side,
-// since _read has to be called to start processing a new chunk.  However,
-// a pathological inflate type of transform can cause excessive buffering
-// here.  For example, imagine a stream where every byte of input is
-// interpreted as an integer from 0-255, and then results in that many
-// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in
-// 1kb of data being output.  In this case, you could write a very small
-// amount of input, and end up with a very large amount of output.  In
-// such a pathological inflating mechanism, there'd be no way to tell
-// the system to stop doing the transform.  A single 4MB write could
-// cause the system to run out of memory.
-//
-// However, even in such a pathological case, only a single written chunk
-// would be consumed, and then the rest would wait (un-transformed) until
-// the results of the previous transformed chunk were consumed.
+       /*--------------------------------------------------------------------------*/
 
-'use strict';
+       var he = {
+               'version': '1.2.0',
+               'encode': encode,
+               'decode': decode,
+               'escape': escape,
+               'unescape': decode
+       };
+
+       // Some AMD build optimizers, like r.js, check for specific condition patterns
+       // like the following:
+       if (
+               typeof define == 'function' &&
+               typeof define.amd == 'object' &&
+               define.amd
+       ) {
+               define(function() {
+                       return he;
+               });
+       }       else if (freeExports && !freeExports.nodeType) {
+               if (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+
+                       freeModule.exports = he;
+               } else { // in Narwhal or RingoJS v0.7.0-
+                       for (var key in he) {
+                               has(he, key) && (freeExports[key] = he[key]);
+                       }
+               }
+       } else { // in Rhino or a web browser
+               root.he = he;
+       }
 
-module.exports = Transform;
+}(this));
 
-var Duplex = require('./_stream_duplex');
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],116:[function(require,module,exports){
+var http = require('http')
+var url = require('url')
 
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
+var https = module.exports
 
-util.inherits(Transform, Duplex);
+for (var key in http) {
+  if (http.hasOwnProperty(key)) https[key] = http[key]
+}
 
-function afterTransform(er, data) {
-  var ts = this._transformState;
-  ts.transforming = false;
+https.request = function (params, cb) {
+  params = validateParams(params)
+  return http.request.call(this, params, cb)
+}
 
-  var cb = ts.writecb;
+https.get = function (params, cb) {
+  params = validateParams(params)
+  return http.get.call(this, params, cb)
+}
 
-  if (!cb) {
-    return this.emit('error', new Error('write callback called multiple times'));
+function validateParams (params) {
+  if (typeof params === 'string') {
+    params = url.parse(params)
+  }
+  if (!params.protocol) {
+    params.protocol = 'https:'
+  }
+  if (params.protocol !== 'https:') {
+    throw new Error('Protocol "' + params.protocol + '" not supported. Expected "https:"')
   }
+  return params
+}
 
-  ts.writechunk = null;
-  ts.writecb = null;
+},{"http":156,"url":175}],117:[function(require,module,exports){
+exports.read = function (buffer, offset, isLE, mLen, nBytes) {
+  var e, m
+  var eLen = (nBytes * 8) - mLen - 1
+  var eMax = (1 << eLen) - 1
+  var eBias = eMax >> 1
+  var nBits = -7
+  var i = isLE ? (nBytes - 1) : 0
+  var d = isLE ? -1 : 1
+  var s = buffer[offset + i]
 
-  if (data != null) // single equals check for both `null` and `undefined`
-    this.push(data);
+  i += d
 
-  cb(er);
+  e = s & ((1 << (-nBits)) - 1)
+  s >>= (-nBits)
+  nBits += eLen
+  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
 
-  var rs = this._readableState;
-  rs.reading = false;
-  if (rs.needReadable || rs.length < rs.highWaterMark) {
-    this._read(rs.highWaterMark);
+  m = e & ((1 << (-nBits)) - 1)
+  e >>= (-nBits)
+  nBits += mLen
+  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
+
+  if (e === 0) {
+    e = 1 - eBias
+  } else if (e === eMax) {
+    return m ? NaN : ((s ? -1 : 1) * Infinity)
+  } else {
+    m = m + Math.pow(2, mLen)
+    e = e - eBias
   }
+  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
 }
 
-function Transform(options) {
-  if (!(this instanceof Transform)) return new Transform(options);
+exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
+  var e, m, c
+  var eLen = (nBytes * 8) - mLen - 1
+  var eMax = (1 << eLen) - 1
+  var eBias = eMax >> 1
+  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
+  var i = isLE ? 0 : (nBytes - 1)
+  var d = isLE ? 1 : -1
+  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
 
-  Duplex.call(this, options);
+  value = Math.abs(value)
 
-  this._transformState = {
-    afterTransform: afterTransform.bind(this),
-    needTransform: false,
-    transforming: false,
-    writecb: null,
-    writechunk: null,
-    writeencoding: null
-  };
+  if (isNaN(value) || value === Infinity) {
+    m = isNaN(value) ? 1 : 0
+    e = eMax
+  } else {
+    e = Math.floor(Math.log(value) / Math.LN2)
+    if (value * (c = Math.pow(2, -e)) < 1) {
+      e--
+      c *= 2
+    }
+    if (e + eBias >= 1) {
+      value += rt / c
+    } else {
+      value += rt * Math.pow(2, 1 - eBias)
+    }
+    if (value * c >= 2) {
+      e++
+      c /= 2
+    }
 
-  // start out asking for a readable event once data is transformed.
-  this._readableState.needReadable = true;
+    if (e + eBias >= eMax) {
+      m = 0
+      e = eMax
+    } else if (e + eBias >= 1) {
+      m = ((value * c) - 1) * Math.pow(2, mLen)
+      e = e + eBias
+    } else {
+      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
+      e = 0
+    }
+  }
 
-  // we have implemented the _read method, and done the other things
-  // that Readable wants before the first _read call, so unset the
-  // sync guard flag.
-  this._readableState.sync = false;
+  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
 
-  if (options) {
-    if (typeof options.transform === 'function') this._transform = options.transform;
+  e = (e << mLen) | m
+  eLen += mLen
+  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
 
-    if (typeof options.flush === 'function') this._flush = options.flush;
+  buffer[offset + i - d] |= s * 128
+}
+
+},{}],118:[function(require,module,exports){
+if (typeof Object.create === 'function') {
+  // implementation from standard node.js 'util' module
+  module.exports = function inherits(ctor, superCtor) {
+    ctor.super_ = superCtor
+    ctor.prototype = Object.create(superCtor.prototype, {
+      constructor: {
+        value: ctor,
+        enumerable: false,
+        writable: true,
+        configurable: true
+      }
+    });
+  };
+} else {
+  // old school shim for old browsers
+  module.exports = function inherits(ctor, superCtor) {
+    ctor.super_ = superCtor
+    var TempCtor = function () {}
+    TempCtor.prototype = superCtor.prototype
+    ctor.prototype = new TempCtor()
+    ctor.prototype.constructor = ctor
   }
+}
 
-  // When the writable side finishes, then flush out anything remaining.
-  this.on('prefinish', prefinish);
+},{}],119:[function(require,module,exports){
+/*!
+ * Determine if an object is a Buffer
+ *
+ * @author   Feross Aboukhadijeh <https://feross.org>
+ * @license  MIT
+ */
+
+// The _isBuffer check is for Safari 5-7 support, because it's missing
+// Object.prototype.constructor. Remove this eventually
+module.exports = function (obj) {
+  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
 }
 
-function prefinish() {
-  var _this = this;
+function isBuffer (obj) {
+  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
+}
 
-  if (typeof this._flush === 'function') {
-    this._flush(function (er, data) {
-      done(_this, er, data);
-    });
-  } else {
-    done(this, null, null);
-  }
+// For Node v0.10 support. Remove this eventually.
+function isSlowBuffer (obj) {
+  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
 }
 
-Transform.prototype.push = function (chunk, encoding) {
-  this._transformState.needTransform = false;
-  return Duplex.prototype.push.call(this, chunk, encoding);
+},{}],120:[function(require,module,exports){
+var toString = {}.toString;
+
+module.exports = Array.isArray || function (arr) {
+  return toString.call(arr) == '[object Array]';
 };
 
-// This is the part where you do stuff!
-// override this function in implementation classes.
-// 'chunk' is an input chunk.
-//
-// Call `push(newChunk)` to pass along transformed output
-// to the readable side.  You may call 'push' zero or more times.
-//
-// Call `cb(err)` when you are done with this chunk.  If you pass
-// an error, then that'll put the hurt on the whole operation.  If you
-// never call cb(), then you'll never get another chunk.
-Transform.prototype._transform = function (chunk, encoding, cb) {
-  throw new Error('_transform() is not implemented');
+},{}],121:[function(require,module,exports){
+exports.endianness = function () { return 'LE' };
+
+exports.hostname = function () {
+    if (typeof location !== 'undefined') {
+        return location.hostname
+    }
+    else return '';
 };
 
-Transform.prototype._write = function (chunk, encoding, cb) {
-  var ts = this._transformState;
-  ts.writecb = cb;
-  ts.writechunk = chunk;
-  ts.writeencoding = encoding;
-  if (!ts.transforming) {
-    var rs = this._readableState;
-    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
-  }
+exports.loadavg = function () { return [] };
+
+exports.uptime = function () { return 0 };
+
+exports.freemem = function () {
+    return Number.MAX_VALUE;
 };
 
-// Doesn't matter what the args are here.
-// _transform does all the work.
-// That we got here means that the readable side wants more data.
-Transform.prototype._read = function (n) {
-  var ts = this._transformState;
+exports.totalmem = function () {
+    return Number.MAX_VALUE;
+};
 
-  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
-    ts.transforming = true;
-    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
-  } else {
-    // mark that we need a transform, so that any data that comes in
-    // will get processed, now that we've asked for it.
-    ts.needTransform = true;
-  }
+exports.cpus = function () { return [] };
+
+exports.type = function () { return 'Browser' };
+
+exports.release = function () {
+    if (typeof navigator !== 'undefined') {
+        return navigator.appVersion;
+    }
+    return '';
 };
 
-Transform.prototype._destroy = function (err, cb) {
-  var _this2 = this;
+exports.networkInterfaces
+= exports.getNetworkInterfaces
+= function () { return {} };
 
-  Duplex.prototype._destroy.call(this, err, function (err2) {
-    cb(err2);
-    _this2.emit('close');
-  });
-};
+exports.arch = function () { return 'javascript' };
 
-function done(stream, er, data) {
-  if (er) return stream.emit('error', er);
+exports.platform = function () { return 'browser' };
 
-  if (data != null) // single equals check for both `null` and `undefined`
-    stream.push(data);
+exports.tmpdir = exports.tmpDir = function () {
+    return '/tmp';
+};
 
-  // if there's nothing in the write buffer, then that means
-  // that nothing more will ever be provided
-  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
+exports.EOL = '\n';
 
-  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
+exports.homedir = function () {
+       return '/'
+};
+
+},{}],122:[function(require,module,exports){
+(function (process){
+// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,
+// backported and transplited with Babel, with backwards-compat fixes
 
-  return stream.push(null);
-}
-},{"./_stream_duplex":117,"core-util-is":101,"inherits":106}],121:[function(require,module,exports){
-(function (process,global,setImmediate){
 // Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -17015,5208 +18002,4745 @@ function done(stream, er, data) {
 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-// A bit simpler than readable streams.
-// Implement an async ._write(chunk, encoding, cb), and it'll handle all
-// the drain event emission and buffering.
+// resolves . and .. elements in a path array with directory names there
+// must be no slashes, empty elements, or device names (c:\) in the array
+// (so also no leading and trailing slashes - it does not distinguish
+// relative and absolute paths)
+function normalizeArray(parts, allowAboveRoot) {
+  // if the path tries to go above the root, `up` ends up > 0
+  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--;
+    }
+  }
 
-'use strict';
+  // if the path is allowed to go above the root, restore leading ..s
+  if (allowAboveRoot) {
+    for (; up--; up) {
+      parts.unshift('..');
+    }
+  }
 
-/*<replacement>*/
+  return parts;
+}
 
-var pna = require('process-nextick-args');
-/*</replacement>*/
+// path.resolve([from ...], to)
+// posix version
+exports.resolve = function() {
+  var resolvedPath = '',
+      resolvedAbsolute = false;
 
-module.exports = Writable;
+  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
+    var path = (i >= 0) ? arguments[i] : process.cwd();
 
-/* <replacement> */
-function WriteReq(chunk, encoding, cb) {
-  this.chunk = chunk;
-  this.encoding = encoding;
-  this.callback = cb;
-  this.next = null;
-}
+    // Skip empty and invalid entries
+    if (typeof path !== 'string') {
+      throw new TypeError('Arguments to path.resolve must be strings');
+    } else if (!path) {
+      continue;
+    }
 
-// It seems a linked list but it is not
-// there will be only 2 of these for each stream
-function CorkedRequest(state) {
-  var _this = this;
+    resolvedPath = path + '/' + resolvedPath;
+    resolvedAbsolute = path.charAt(0) === '/';
+  }
 
-  this.next = null;
-  this.entry = null;
-  this.finish = function () {
-    onCorkedFinish(_this, state);
-  };
-}
-/* </replacement> */
+  // At this point the path should be resolved to a full absolute path, but
+  // handle relative paths to be safe (might happen when process.cwd() fails)
 
-/*<replacement>*/
-var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
-/*</replacement>*/
+  // Normalize the path
+  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
+    return !!p;
+  }), !resolvedAbsolute).join('/');
 
-/*<replacement>*/
-var Duplex;
-/*</replacement>*/
+  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
+};
 
-Writable.WritableState = WritableState;
+// path.normalize(path)
+// posix version
+exports.normalize = function(path) {
+  var isAbsolute = exports.isAbsolute(path),
+      trailingSlash = substr(path, -1) === '/';
 
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
+  // Normalize the path
+  path = normalizeArray(filter(path.split('/'), function(p) {
+    return !!p;
+  }), !isAbsolute).join('/');
 
-/*<replacement>*/
-var internalUtil = {
-  deprecate: require('util-deprecate')
+  if (!path && !isAbsolute) {
+    path = '.';
+  }
+  if (path && trailingSlash) {
+    path += '/';
+  }
+
+  return (isAbsolute ? '/' : '') + path;
 };
-/*</replacement>*/
 
-/*<replacement>*/
-var Stream = require('./internal/streams/stream');
-/*</replacement>*/
+// posix version
+exports.isAbsolute = function(path) {
+  return path.charAt(0) === '/';
+};
 
-/*<replacement>*/
+// posix version
+exports.join = function() {
+  var paths = Array.prototype.slice.call(arguments, 0);
+  return exports.normalize(filter(paths, function(p, index) {
+    if (typeof p !== 'string') {
+      throw new TypeError('Arguments to path.join must be strings');
+    }
+    return p;
+  }).join('/'));
+};
 
-var Buffer = require('safe-buffer').Buffer;
-var OurUint8Array = global.Uint8Array || function () {};
-function _uint8ArrayToBuffer(chunk) {
-  return Buffer.from(chunk);
-}
-function _isUint8Array(obj) {
-  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
-}
 
-/*</replacement>*/
+// path.relative(from, to)
+// posix version
+exports.relative = function(from, to) {
+  from = exports.resolve(from).substr(1);
+  to = exports.resolve(to).substr(1);
 
-var destroyImpl = require('./internal/streams/destroy');
+  function trim(arr) {
+    var start = 0;
+    for (; start < arr.length; start++) {
+      if (arr[start] !== '') break;
+    }
 
-util.inherits(Writable, Stream);
+    var end = arr.length - 1;
+    for (; end >= 0; end--) {
+      if (arr[end] !== '') break;
+    }
 
-function nop() {}
+    if (start > end) return [];
+    return arr.slice(start, end - start + 1);
+  }
 
-function WritableState(options, stream) {
-  Duplex = Duplex || require('./_stream_duplex');
+  var fromParts = trim(from.split('/'));
+  var toParts = trim(to.split('/'));
 
-  options = options || {};
+  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;
+    }
+  }
 
-  // Duplex streams are both readable and writable, but share
-  // the same options object.
-  // However, some cases require setting options to different
-  // values for the readable and the writable sides of the duplex stream.
-  // These options can be provided separately as readableXXX and writableXXX.
-  var isDuplex = stream instanceof Duplex;
+  var outputParts = [];
+  for (var i = samePartsLength; i < fromParts.length; i++) {
+    outputParts.push('..');
+  }
 
-  // object stream flag to indicate whether or not this stream
-  // contains buffers or objects.
-  this.objectMode = !!options.objectMode;
+  outputParts = outputParts.concat(toParts.slice(samePartsLength));
 
-  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
+  return outputParts.join('/');
+};
 
-  // the point at which write() starts returning false
-  // Note: 0 is a valid value, means that we always return false if
-  // the entire buffer is not flushed immediately on write()
-  var hwm = options.highWaterMark;
-  var writableHwm = options.writableHighWaterMark;
-  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
+exports.sep = '/';
+exports.delimiter = ':';
 
-  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
+exports.dirname = function (path) {
+  if (typeof path !== 'string') path = path + '';
+  if (path.length === 0) return '.';
+  var code = path.charCodeAt(0);
+  var hasRoot = code === 47 /*/*/;
+  var end = -1;
+  var matchedSlash = true;
+  for (var i = path.length - 1; i >= 1; --i) {
+    code = path.charCodeAt(i);
+    if (code === 47 /*/*/) {
+        if (!matchedSlash) {
+          end = i;
+          break;
+        }
+      } else {
+      // We saw the first non-path separator
+      matchedSlash = false;
+    }
+  }
 
-  // cast to ints.
-  this.highWaterMark = Math.floor(this.highWaterMark);
+  if (end === -1) return hasRoot ? '/' : '.';
+  if (hasRoot && end === 1) {
+    // return '//';
+    // Backwards-compat fix:
+    return '/';
+  }
+  return path.slice(0, end);
+};
 
-  // if _final has been called
-  this.finalCalled = false;
+function basename(path) {
+  if (typeof path !== 'string') path = path + '';
 
-  // drain event flag.
-  this.needDrain = false;
-  // at the start of calling end()
-  this.ending = false;
-  // when end() has been called, and returned
-  this.ended = false;
-  // when 'finish' is emitted
-  this.finished = false;
+  var start = 0;
+  var end = -1;
+  var matchedSlash = true;
+  var i;
 
-  // has it been destroyed
-  this.destroyed = false;
+  for (i = path.length - 1; i >= 0; --i) {
+    if (path.charCodeAt(i) === 47 /*/*/) {
+        // If we reached a path separator that was not part of a set of path
+        // separators at the end of the string, stop now
+        if (!matchedSlash) {
+          start = i + 1;
+          break;
+        }
+      } else if (end === -1) {
+      // We saw the first non-path separator, mark this as the end of our
+      // path component
+      matchedSlash = false;
+      end = i + 1;
+    }
+  }
 
-  // should we decode strings into buffers before passing to _write?
-  // this is here so that some node-core streams can optimize string
-  // handling at a lower level.
-  var noDecode = options.decodeStrings === false;
-  this.decodeStrings = !noDecode;
+  if (end === -1) return '';
+  return path.slice(start, end);
+}
 
-  // Crypto is kind of old and crusty.  Historically, its default string
-  // encoding is 'binary' so we have to make this configurable.
-  // Everything else in the universe uses 'utf8', though.
-  this.defaultEncoding = options.defaultEncoding || 'utf8';
+// Uses a mixed approach for backwards-compatibility, as ext behavior changed
+// in new Node.js versions, so only basename() above is backported here
+exports.basename = function (path, ext) {
+  var f = basename(path);
+  if (ext && f.substr(-1 * ext.length) === ext) {
+    f = f.substr(0, f.length - ext.length);
+  }
+  return f;
+};
 
-  // not an actual buffer we keep track of, but a measurement
-  // of how much we're waiting to get pushed to some underlying
-  // socket or file.
-  this.length = 0;
+exports.extname = function (path) {
+  if (typeof path !== 'string') path = path + '';
+  var startDot = -1;
+  var startPart = 0;
+  var end = -1;
+  var matchedSlash = true;
+  // Track the state of characters (if any) we see before our first dot and
+  // after any path separator we find
+  var preDotState = 0;
+  for (var i = path.length - 1; i >= 0; --i) {
+    var code = path.charCodeAt(i);
+    if (code === 47 /*/*/) {
+        // If we reached a path separator that was not part of a set of path
+        // separators at the end of the string, stop now
+        if (!matchedSlash) {
+          startPart = i + 1;
+          break;
+        }
+        continue;
+      }
+    if (end === -1) {
+      // We saw the first non-path separator, mark this as the end of our
+      // extension
+      matchedSlash = false;
+      end = i + 1;
+    }
+    if (code === 46 /*.*/) {
+        // If this is our first dot, mark it as the start of our extension
+        if (startDot === -1)
+          startDot = i;
+        else if (preDotState !== 1)
+          preDotState = 1;
+    } else if (startDot !== -1) {
+      // We saw a non-dot and non-path separator before our dot, so we should
+      // have a good chance at having a non-empty extension
+      preDotState = -1;
+    }
+  }
 
-  // a flag to see when we're in the middle of a write.
-  this.writing = false;
+  if (startDot === -1 || end === -1 ||
+      // We saw a non-dot character immediately before the dot
+      preDotState === 0 ||
+      // The (right-most) trimmed path component is exactly '..'
+      preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
+    return '';
+  }
+  return path.slice(startDot, end);
+};
 
-  // when true all writes will be buffered until .uncork() call
-  this.corked = 0;
+function filter (xs, f) {
+    if (xs.filter) return xs.filter(f);
+    var res = [];
+    for (var i = 0; i < xs.length; i++) {
+        if (f(xs[i], i, xs)) res.push(xs[i]);
+    }
+    return res;
+}
 
-  // a flag to be able to tell if the onwrite cb is called immediately,
-  // or on a later tick.  We set this to true at first, because any
-  // actions that shouldn't happen until "later" should generally also
-  // not happen before the first write call.
-  this.sync = true;
+// String.prototype.substr - negative index don't work in IE8
+var substr = 'ab'.substr(-1) === 'b'
+    ? function (str, start, len) { return str.substr(start, len) }
+    : function (str, start, len) {
+        if (start < 0) start = str.length + start;
+        return str.substr(start, len);
+    }
+;
 
-  // a flag to know if we're processing previously buffered items, which
-  // may call the _write() callback in the same tick, so that we don't
-  // end up in an overlapped onwrite situation.
-  this.bufferProcessing = false;
+}).call(this,require('_process'))
+},{"_process":124}],123:[function(require,module,exports){
+(function (process){
+'use strict';
 
-  // the callback that's passed to _write(chunk,cb)
-  this.onwrite = function (er) {
-    onwrite(stream, er);
-  };
+if (!process.version ||
+    process.version.indexOf('v0.') === 0 ||
+    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
+  module.exports = { nextTick: nextTick };
+} else {
+  module.exports = process
+}
 
-  // the callback that the user supplies to write(chunk,encoding,cb)
-  this.writecb = null;
+function nextTick(fn, arg1, arg2, arg3) {
+  if (typeof fn !== 'function') {
+    throw new TypeError('"callback" argument must be a function');
+  }
+  var len = arguments.length;
+  var args, i;
+  switch (len) {
+  case 0:
+  case 1:
+    return process.nextTick(fn);
+  case 2:
+    return process.nextTick(function afterTickOne() {
+      fn.call(null, arg1);
+    });
+  case 3:
+    return process.nextTick(function afterTickTwo() {
+      fn.call(null, arg1, arg2);
+    });
+  case 4:
+    return process.nextTick(function afterTickThree() {
+      fn.call(null, arg1, arg2, arg3);
+    });
+  default:
+    args = new Array(len - 1);
+    i = 0;
+    while (i < args.length) {
+      args[i++] = arguments[i];
+    }
+    return process.nextTick(function afterTick() {
+      fn.apply(null, args);
+    });
+  }
+}
 
-  // the amount that is being written when _write is called.
-  this.writelen = 0;
 
-  this.bufferedRequest = null;
-  this.lastBufferedRequest = null;
+}).call(this,require('_process'))
+},{"_process":124}],124:[function(require,module,exports){
+// shim for using process in browser
+var process = module.exports = {};
 
-  // number of pending user-supplied write callbacks
-  // this must be 0 before 'finish' can be emitted
-  this.pendingcb = 0;
+// cached from whatever global is present so that test runners that stub it
+// don't break things.  But we need to wrap it in a try catch in case it is
+// wrapped in strict mode code which doesn't define any globals.  It's inside a
+// function because try/catches deoptimize in certain engines.
 
-  // emit prefinish if the only thing we're waiting for is _write cbs
-  // This is relevant for synchronous Transform streams
-  this.prefinished = false;
+var cachedSetTimeout;
+var cachedClearTimeout;
 
-  // True if the error was already emitted and should not be thrown again
-  this.errorEmitted = false;
+function defaultSetTimout() {
+    throw new Error('setTimeout has not been defined');
+}
+function defaultClearTimeout () {
+    throw new Error('clearTimeout has not been defined');
+}
+(function () {
+    try {
+        if (typeof setTimeout === 'function') {
+            cachedSetTimeout = setTimeout;
+        } else {
+            cachedSetTimeout = defaultSetTimout;
+        }
+    } catch (e) {
+        cachedSetTimeout = defaultSetTimout;
+    }
+    try {
+        if (typeof clearTimeout === 'function') {
+            cachedClearTimeout = clearTimeout;
+        } else {
+            cachedClearTimeout = defaultClearTimeout;
+        }
+    } catch (e) {
+        cachedClearTimeout = defaultClearTimeout;
+    }
+} ())
+function runTimeout(fun) {
+    if (cachedSetTimeout === setTimeout) {
+        //normal enviroments in sane situations
+        return setTimeout(fun, 0);
+    }
+    // if setTimeout wasn't available but was latter defined
+    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+        cachedSetTimeout = setTimeout;
+        return setTimeout(fun, 0);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedSetTimeout(fun, 0);
+    } catch(e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+            return cachedSetTimeout.call(null, fun, 0);
+        } catch(e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+            return cachedSetTimeout.call(this, fun, 0);
+        }
+    }
 
-  // count buffered requests
-  this.bufferedRequestCount = 0;
 
-  // allocate the first CorkedRequest, there is always
-  // one allocated and free to use, and we maintain at most two
-  this.corkedRequestsFree = new CorkedRequest(this);
 }
+function runClearTimeout(marker) {
+    if (cachedClearTimeout === clearTimeout) {
+        //normal enviroments in sane situations
+        return clearTimeout(marker);
+    }
+    // if clearTimeout wasn't available but was latter defined
+    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+        cachedClearTimeout = clearTimeout;
+        return clearTimeout(marker);
+    }
+    try {
+        // when when somebody has screwed with setTimeout but no I.E. maddness
+        return cachedClearTimeout(marker);
+    } catch (e){
+        try {
+            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
+            return cachedClearTimeout.call(null, marker);
+        } catch (e){
+            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+            return cachedClearTimeout.call(this, marker);
+        }
+    }
 
-WritableState.prototype.getBuffer = function getBuffer() {
-  var current = this.bufferedRequest;
-  var out = [];
-  while (current) {
-    out.push(current);
-    current = current.next;
-  }
-  return out;
-};
 
-(function () {
-  try {
-    Object.defineProperty(WritableState.prototype, 'buffer', {
-      get: internalUtil.deprecate(function () {
-        return this.getBuffer();
-      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
-    });
-  } catch (_) {}
-})();
 
-// Test _writableState for inheritance to account for Duplex streams,
-// whose prototype chain only points to Readable.
-var realHasInstance;
-if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
-  realHasInstance = Function.prototype[Symbol.hasInstance];
-  Object.defineProperty(Writable, Symbol.hasInstance, {
-    value: function (object) {
-      if (realHasInstance.call(this, object)) return true;
-      if (this !== Writable) return false;
+}
+var queue = [];
+var draining = false;
+var currentQueue;
+var queueIndex = -1;
 
-      return object && object._writableState instanceof WritableState;
+function cleanUpNextTick() {
+    if (!draining || !currentQueue) {
+        return;
+    }
+    draining = false;
+    if (currentQueue.length) {
+        queue = currentQueue.concat(queue);
+    } else {
+        queueIndex = -1;
+    }
+    if (queue.length) {
+        drainQueue();
     }
-  });
-} else {
-  realHasInstance = function (object) {
-    return object instanceof this;
-  };
 }
 
-function Writable(options) {
-  Duplex = Duplex || require('./_stream_duplex');
+function drainQueue() {
+    if (draining) {
+        return;
+    }
+    var timeout = runTimeout(cleanUpNextTick);
+    draining = true;
 
-  // Writable ctor is applied to Duplexes, too.
-  // `realHasInstance` is necessary because using plain `instanceof`
-  // would return false, as no `_writableState` property is attached.
+    var len = queue.length;
+    while(len) {
+        currentQueue = queue;
+        queue = [];
+        while (++queueIndex < len) {
+            if (currentQueue) {
+                currentQueue[queueIndex].run();
+            }
+        }
+        queueIndex = -1;
+        len = queue.length;
+    }
+    currentQueue = null;
+    draining = false;
+    runClearTimeout(timeout);
+}
 
-  // Trying to use the custom `instanceof` for Writable here will also break the
-  // Node.js LazyTransform implementation, which has a non-trivial getter for
-  // `_writableState` that would lead to infinite recursion.
-  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
-    return new Writable(options);
-  }
+process.nextTick = function (fun) {
+    var args = new Array(arguments.length - 1);
+    if (arguments.length > 1) {
+        for (var i = 1; i < arguments.length; i++) {
+            args[i - 1] = arguments[i];
+        }
+    }
+    queue.push(new Item(fun, args));
+    if (queue.length === 1 && !draining) {
+        runTimeout(drainQueue);
+    }
+};
 
-  this._writableState = new WritableState(options, this);
+// v8 likes predictible objects
+function Item(fun, array) {
+    this.fun = fun;
+    this.array = array;
+}
+Item.prototype.run = function () {
+    this.fun.apply(null, this.array);
+};
+process.title = 'browser';
+process.browser = true;
+process.env = {};
+process.argv = [];
+process.version = ''; // empty string to avoid regexp issues
+process.versions = {};
 
-  // legacy.
-  this.writable = true;
+function noop() {}
 
-  if (options) {
-    if (typeof options.write === 'function') this._write = options.write;
+process.on = noop;
+process.addListener = noop;
+process.once = noop;
+process.off = noop;
+process.removeListener = noop;
+process.removeAllListeners = noop;
+process.emit = noop;
+process.prependListener = noop;
+process.prependOnceListener = noop;
 
-    if (typeof options.writev === 'function') this._writev = options.writev;
+process.listeners = function (name) { return [] }
 
-    if (typeof options.destroy === 'function') this._destroy = options.destroy;
+process.binding = function (name) {
+    throw new Error('process.binding is not supported');
+};
 
-    if (typeof options.final === 'function') this._final = options.final;
-  }
+process.cwd = function () { return '/' };
+process.chdir = function (dir) {
+    throw new Error('process.chdir is not supported');
+};
+process.umask = function() { return 0; };
 
-  Stream.call(this);
-}
+},{}],125:[function(require,module,exports){
+(function (global){
+/*! https://mths.be/punycode v1.4.1 by @mathias */
+;(function(root) {
 
-// Otherwise people can pipe Writable streams, which is just wrong.
-Writable.prototype.pipe = function () {
-  this.emit('error', new Error('Cannot pipe, not readable'));
-};
+       /** Detect free variables */
+       var freeExports = typeof exports == 'object' && exports &&
+               !exports.nodeType && exports;
+       var freeModule = typeof module == 'object' && module &&
+               !module.nodeType && module;
+       var freeGlobal = typeof global == 'object' && global;
+       if (
+               freeGlobal.global === freeGlobal ||
+               freeGlobal.window === freeGlobal ||
+               freeGlobal.self === freeGlobal
+       ) {
+               root = freeGlobal;
+       }
 
-function writeAfterEnd(stream, cb) {
-  var er = new Error('write after end');
-  // TODO: defer error events consistently everywhere, not just the cb
-  stream.emit('error', er);
-  pna.nextTick(cb, er);
-}
+       /**
+        * The `punycode` object.
+        * @name punycode
+        * @type Object
+        */
+       var punycode,
 
-// Checks that a user-supplied chunk is valid, especially for the particular
-// mode the stream is in. Currently this means that `null` is never accepted
-// and undefined/non-string values are only allowed in object mode.
-function validChunk(stream, state, chunk, cb) {
-  var valid = true;
-  var er = false;
+       /** Highest positive signed 32-bit float value */
+       maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
 
-  if (chunk === null) {
-    er = new TypeError('May not write null values to stream');
-  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
-    er = new TypeError('Invalid non-string/buffer chunk');
-  }
-  if (er) {
-    stream.emit('error', er);
-    pna.nextTick(cb, er);
-    valid = false;
-  }
-  return valid;
-}
+       /** Bootstring parameters */
+       base = 36,
+       tMin = 1,
+       tMax = 26,
+       skew = 38,
+       damp = 700,
+       initialBias = 72,
+       initialN = 128, // 0x80
+       delimiter = '-', // '\x2D'
 
-Writable.prototype.write = function (chunk, encoding, cb) {
-  var state = this._writableState;
-  var ret = false;
-  var isBuf = !state.objectMode && _isUint8Array(chunk);
+       /** Regular expressions */
+       regexPunycode = /^xn--/,
+       regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
+       regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
 
-  if (isBuf && !Buffer.isBuffer(chunk)) {
-    chunk = _uint8ArrayToBuffer(chunk);
-  }
+       /** Error messages */
+       errors = {
+               'overflow': 'Overflow: input needs wider integers to process',
+               'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
+               'invalid-input': 'Invalid input'
+       },
 
-  if (typeof encoding === 'function') {
-    cb = encoding;
-    encoding = null;
-  }
+       /** Convenience shortcuts */
+       baseMinusTMin = base - tMin,
+       floor = Math.floor,
+       stringFromCharCode = String.fromCharCode,
+
+       /** Temporary variable */
+       key;
 
-  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
+       /*--------------------------------------------------------------------------*/
 
-  if (typeof cb !== 'function') cb = nop;
+       /**
+        * A generic error utility function.
+        * @private
+        * @param {String} type The error type.
+        * @returns {Error} Throws a `RangeError` with the applicable error message.
+        */
+       function error(type) {
+               throw new RangeError(errors[type]);
+       }
 
-  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
-    state.pendingcb++;
-    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
-  }
+       /**
+        * A generic `Array#map` utility function.
+        * @private
+        * @param {Array} array The array to iterate over.
+        * @param {Function} callback The function that gets called for every array
+        * item.
+        * @returns {Array} A new array of values returned by the callback function.
+        */
+       function map(array, fn) {
+               var length = array.length;
+               var result = [];
+               while (length--) {
+                       result[length] = fn(array[length]);
+               }
+               return result;
+       }
 
-  return ret;
-};
+       /**
+        * A simple `Array#map`-like wrapper to work with domain name strings or email
+        * addresses.
+        * @private
+        * @param {String} domain The domain name or email address.
+        * @param {Function} callback The function that gets called for every
+        * character.
+        * @returns {Array} A new string of characters returned by the callback
+        * function.
+        */
+       function mapDomain(string, fn) {
+               var parts = string.split('@');
+               var result = '';
+               if (parts.length > 1) {
+                       // In email addresses, only the domain name should be punycoded. Leave
+                       // the local part (i.e. everything up to `@`) intact.
+                       result = parts[0] + '@';
+                       string = parts[1];
+               }
+               // Avoid `split(regex)` for IE8 compatibility. See #17.
+               string = string.replace(regexSeparators, '\x2E');
+               var labels = string.split('.');
+               var encoded = map(labels, fn).join('.');
+               return result + encoded;
+       }
 
-Writable.prototype.cork = function () {
-  var state = this._writableState;
+       /**
+        * Creates an array containing the numeric code points of each Unicode
+        * character in the string. While JavaScript uses UCS-2 internally,
+        * this function will convert a pair of surrogate halves (each of which
+        * UCS-2 exposes as separate characters) into a single code point,
+        * matching UTF-16.
+        * @see `punycode.ucs2.encode`
+        * @see <https://mathiasbynens.be/notes/javascript-encoding>
+        * @memberOf punycode.ucs2
+        * @name decode
+        * @param {String} string The Unicode input string (UCS-2).
+        * @returns {Array} The new array of code points.
+        */
+       function ucs2decode(string) {
+               var output = [],
+                   counter = 0,
+                   length = string.length,
+                   value,
+                   extra;
+               while (counter < length) {
+                       value = string.charCodeAt(counter++);
+                       if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
+                               // high surrogate, and there is a next character
+                               extra = string.charCodeAt(counter++);
+                               if ((extra & 0xFC00) == 0xDC00) { // low surrogate
+                                       output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
+                               } else {
+                                       // unmatched surrogate; only append this code unit, in case the next
+                                       // code unit is the high surrogate of a surrogate pair
+                                       output.push(value);
+                                       counter--;
+                               }
+                       } else {
+                               output.push(value);
+                       }
+               }
+               return output;
+       }
 
-  state.corked++;
-};
+       /**
+        * Creates a string based on an array of numeric code points.
+        * @see `punycode.ucs2.decode`
+        * @memberOf punycode.ucs2
+        * @name encode
+        * @param {Array} codePoints The array of numeric code points.
+        * @returns {String} The new Unicode string (UCS-2).
+        */
+       function ucs2encode(array) {
+               return map(array, function(value) {
+                       var output = '';
+                       if (value > 0xFFFF) {
+                               value -= 0x10000;
+                               output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
+                               value = 0xDC00 | value & 0x3FF;
+                       }
+                       output += stringFromCharCode(value);
+                       return output;
+               }).join('');
+       }
 
-Writable.prototype.uncork = function () {
-  var state = this._writableState;
+       /**
+        * Converts a basic code point into a digit/integer.
+        * @see `digitToBasic()`
+        * @private
+        * @param {Number} codePoint The basic numeric code point value.
+        * @returns {Number} The numeric value of a basic code point (for use in
+        * representing integers) in the range `0` to `base - 1`, or `base` if
+        * the code point does not represent a value.
+        */
+       function basicToDigit(codePoint) {
+               if (codePoint - 48 < 10) {
+                       return codePoint - 22;
+               }
+               if (codePoint - 65 < 26) {
+                       return codePoint - 65;
+               }
+               if (codePoint - 97 < 26) {
+                       return codePoint - 97;
+               }
+               return base;
+       }
 
-  if (state.corked) {
-    state.corked--;
+       /**
+        * Converts a digit/integer into a basic code point.
+        * @see `basicToDigit()`
+        * @private
+        * @param {Number} digit The numeric value of a basic code point.
+        * @returns {Number} The basic code point whose value (when used for
+        * representing integers) is `digit`, which needs to be in the range
+        * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
+        * used; else, the lowercase form is used. The behavior is undefined
+        * if `flag` is non-zero and `digit` has no uppercase form.
+        */
+       function digitToBasic(digit, flag) {
+               //  0..25 map to ASCII a..z or A..Z
+               // 26..35 map to ASCII 0..9
+               return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
+       }
 
-    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
-  }
-};
+       /**
+        * Bias adaptation function as per section 3.4 of RFC 3492.
+        * https://tools.ietf.org/html/rfc3492#section-3.4
+        * @private
+        */
+       function adapt(delta, numPoints, firstTime) {
+               var k = 0;
+               delta = firstTime ? floor(delta / damp) : delta >> 1;
+               delta += floor(delta / numPoints);
+               for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
+                       delta = floor(delta / baseMinusTMin);
+               }
+               return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
+       }
 
-Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
-  // node::ParseEncoding() requires lower case.
-  if (typeof encoding === 'string') encoding = encoding.toLowerCase();
-  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
-  this._writableState.defaultEncoding = encoding;
-  return this;
-};
+       /**
+        * Converts a Punycode string of ASCII-only symbols to a string of Unicode
+        * symbols.
+        * @memberOf punycode
+        * @param {String} input The Punycode string of ASCII-only symbols.
+        * @returns {String} The resulting string of Unicode symbols.
+        */
+       function decode(input) {
+               // Don't use UCS-2
+               var output = [],
+                   inputLength = input.length,
+                   out,
+                   i = 0,
+                   n = initialN,
+                   bias = initialBias,
+                   basic,
+                   j,
+                   index,
+                   oldi,
+                   w,
+                   k,
+                   digit,
+                   t,
+                   /** Cached calculation results */
+                   baseMinusT;
 
-function decodeChunk(state, chunk, encoding) {
-  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
-    chunk = Buffer.from(chunk, encoding);
-  }
-  return chunk;
-}
+               // Handle the basic code points: let `basic` be the number of input code
+               // points before the last delimiter, or `0` if there is none, then copy
+               // the first basic code points to the output.
 
-Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
-  // making it explicit this property is not enumerable
-  // because otherwise some prototype manipulation in
-  // userland will fail
-  enumerable: false,
-  get: function () {
-    return this._writableState.highWaterMark;
-  }
-});
+               basic = input.lastIndexOf(delimiter);
+               if (basic < 0) {
+                       basic = 0;
+               }
 
-// if we're already writing something, then just put this
-// in the queue, and wait our turn.  Otherwise, call _write
-// If we return false, then we need a drain event, so set that flag.
-function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
-  if (!isBuf) {
-    var newChunk = decodeChunk(state, chunk, encoding);
-    if (chunk !== newChunk) {
-      isBuf = true;
-      encoding = 'buffer';
-      chunk = newChunk;
-    }
-  }
-  var len = state.objectMode ? 1 : chunk.length;
+               for (j = 0; j < basic; ++j) {
+                       // if it's not a basic code point
+                       if (input.charCodeAt(j) >= 0x80) {
+                               error('not-basic');
+                       }
+                       output.push(input.charCodeAt(j));
+               }
+
+               // Main decoding loop: start just after the last delimiter if any basic code
+               // points were copied; start at the beginning otherwise.
 
-  state.length += len;
+               for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
 
-  var ret = state.length < state.highWaterMark;
-  // we must ensure that previous needDrain will not be reset to false.
-  if (!ret) state.needDrain = true;
+                       // `index` is the index of the next character to be consumed.
+                       // Decode a generalized variable-length integer into `delta`,
+                       // which gets added to `i`. The overflow checking is easier
+                       // if we increase `i` as we go, then subtract off its starting
+                       // value at the end to obtain `delta`.
+                       for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
 
-  if (state.writing || state.corked) {
-    var last = state.lastBufferedRequest;
-    state.lastBufferedRequest = {
-      chunk: chunk,
-      encoding: encoding,
-      isBuf: isBuf,
-      callback: cb,
-      next: null
-    };
-    if (last) {
-      last.next = state.lastBufferedRequest;
-    } else {
-      state.bufferedRequest = state.lastBufferedRequest;
-    }
-    state.bufferedRequestCount += 1;
-  } else {
-    doWrite(stream, state, false, len, chunk, encoding, cb);
-  }
+                               if (index >= inputLength) {
+                                       error('invalid-input');
+                               }
 
-  return ret;
-}
+                               digit = basicToDigit(input.charCodeAt(index++));
 
-function doWrite(stream, state, writev, len, chunk, encoding, cb) {
-  state.writelen = len;
-  state.writecb = cb;
-  state.writing = true;
-  state.sync = true;
-  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
-  state.sync = false;
-}
+                               if (digit >= base || digit > floor((maxInt - i) / w)) {
+                                       error('overflow');
+                               }
 
-function onwriteError(stream, state, sync, er, cb) {
-  --state.pendingcb;
+                               i += digit * w;
+                               t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
 
-  if (sync) {
-    // defer the callback if we are being called synchronously
-    // to avoid piling up things on the stack
-    pna.nextTick(cb, er);
-    // this can emit finish, and it will always happen
-    // after error
-    pna.nextTick(finishMaybe, stream, state);
-    stream._writableState.errorEmitted = true;
-    stream.emit('error', er);
-  } else {
-    // the caller expect this to happen before if
-    // it is async
-    cb(er);
-    stream._writableState.errorEmitted = true;
-    stream.emit('error', er);
-    // this can emit finish, but finish must
-    // always follow error
-    finishMaybe(stream, state);
-  }
-}
+                               if (digit < t) {
+                                       break;
+                               }
 
-function onwriteStateUpdate(state) {
-  state.writing = false;
-  state.writecb = null;
-  state.length -= state.writelen;
-  state.writelen = 0;
-}
+                               baseMinusT = base - t;
+                               if (w > floor(maxInt / baseMinusT)) {
+                                       error('overflow');
+                               }
 
-function onwrite(stream, er) {
-  var state = stream._writableState;
-  var sync = state.sync;
-  var cb = state.writecb;
+                               w *= baseMinusT;
 
-  onwriteStateUpdate(state);
+                       }
 
-  if (er) onwriteError(stream, state, sync, er, cb);else {
-    // Check if we're actually ready to finish, but don't emit yet
-    var finished = needFinish(state);
+                       out = output.length + 1;
+                       bias = adapt(i - oldi, out, oldi == 0);
 
-    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
-      clearBuffer(stream, state);
-    }
+                       // `i` was supposed to wrap around from `out` to `0`,
+                       // incrementing `n` each time, so we'll fix that now:
+                       if (floor(i / out) > maxInt - n) {
+                               error('overflow');
+                       }
 
-    if (sync) {
-      /*<replacement>*/
-      asyncWrite(afterWrite, stream, state, finished, cb);
-      /*</replacement>*/
-    } else {
-      afterWrite(stream, state, finished, cb);
-    }
-  }
-}
+                       n += floor(i / out);
+                       i %= out;
 
-function afterWrite(stream, state, finished, cb) {
-  if (!finished) onwriteDrain(stream, state);
-  state.pendingcb--;
-  cb();
-  finishMaybe(stream, state);
-}
+                       // Insert `n` at position `i` of the output
+                       output.splice(i++, 0, n);
 
-// Must force callback to be called on nextTick, so that we don't
-// emit 'drain' before the write() consumer gets the 'false' return
-// value, and has a chance to attach a 'drain' listener.
-function onwriteDrain(stream, state) {
-  if (state.length === 0 && state.needDrain) {
-    state.needDrain = false;
-    stream.emit('drain');
-  }
-}
+               }
 
-// if there's something in the buffer waiting, then process it
-function clearBuffer(stream, state) {
-  state.bufferProcessing = true;
-  var entry = state.bufferedRequest;
+               return ucs2encode(output);
+       }
 
-  if (stream._writev && entry && entry.next) {
-    // Fast case, write everything using _writev()
-    var l = state.bufferedRequestCount;
-    var buffer = new Array(l);
-    var holder = state.corkedRequestsFree;
-    holder.entry = entry;
+       /**
+        * Converts a string of Unicode symbols (e.g. a domain name label) to a
+        * Punycode string of ASCII-only symbols.
+        * @memberOf punycode
+        * @param {String} input The string of Unicode symbols.
+        * @returns {String} The resulting Punycode string of ASCII-only symbols.
+        */
+       function encode(input) {
+               var n,
+                   delta,
+                   handledCPCount,
+                   basicLength,
+                   bias,
+                   j,
+                   m,
+                   q,
+                   k,
+                   t,
+                   currentValue,
+                   output = [],
+                   /** `inputLength` will hold the number of code points in `input`. */
+                   inputLength,
+                   /** Cached calculation results */
+                   handledCPCountPlusOne,
+                   baseMinusT,
+                   qMinusT;
 
-    var count = 0;
-    var allBuffers = true;
-    while (entry) {
-      buffer[count] = entry;
-      if (!entry.isBuf) allBuffers = false;
-      entry = entry.next;
-      count += 1;
-    }
-    buffer.allBuffers = allBuffers;
+               // Convert the input in UCS-2 to Unicode
+               input = ucs2decode(input);
 
-    doWrite(stream, state, true, state.length, buffer, '', holder.finish);
+               // Cache the length
+               inputLength = input.length;
 
-    // doWrite is almost always async, defer these to save a bit of time
-    // as the hot path ends with doWrite
-    state.pendingcb++;
-    state.lastBufferedRequest = null;
-    if (holder.next) {
-      state.corkedRequestsFree = holder.next;
-      holder.next = null;
-    } else {
-      state.corkedRequestsFree = new CorkedRequest(state);
-    }
-    state.bufferedRequestCount = 0;
-  } else {
-    // Slow case, write chunks one-by-one
-    while (entry) {
-      var chunk = entry.chunk;
-      var encoding = entry.encoding;
-      var cb = entry.callback;
-      var len = state.objectMode ? 1 : chunk.length;
+               // Initialize the state
+               n = initialN;
+               delta = 0;
+               bias = initialBias;
 
-      doWrite(stream, state, false, len, chunk, encoding, cb);
-      entry = entry.next;
-      state.bufferedRequestCount--;
-      // if we didn't call the onwrite immediately, then
-      // it means that we need to wait until it does.
-      // also, that means that the chunk and cb are currently
-      // being processed, so move the buffer counter past them.
-      if (state.writing) {
-        break;
-      }
-    }
+               // Handle the basic code points
+               for (j = 0; j < inputLength; ++j) {
+                       currentValue = input[j];
+                       if (currentValue < 0x80) {
+                               output.push(stringFromCharCode(currentValue));
+                       }
+               }
 
-    if (entry === null) state.lastBufferedRequest = null;
-  }
+               handledCPCount = basicLength = output.length;
 
-  state.bufferedRequest = entry;
-  state.bufferProcessing = false;
-}
+               // `handledCPCount` is the number of code points that have been handled;
+               // `basicLength` is the number of basic code points.
 
-Writable.prototype._write = function (chunk, encoding, cb) {
-  cb(new Error('_write() is not implemented'));
-};
+               // Finish the basic string - if it is not empty - with a delimiter
+               if (basicLength) {
+                       output.push(delimiter);
+               }
 
-Writable.prototype._writev = null;
+               // Main encoding loop:
+               while (handledCPCount < inputLength) {
+
+                       // All non-basic code points < n have been handled already. Find the next
+                       // larger one:
+                       for (m = maxInt, j = 0; j < inputLength; ++j) {
+                               currentValue = input[j];
+                               if (currentValue >= n && currentValue < m) {
+                                       m = currentValue;
+                               }
+                       }
+
+                       // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
+                       // but guard against overflow
+                       handledCPCountPlusOne = handledCPCount + 1;
+                       if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
+                               error('overflow');
+                       }
 
-Writable.prototype.end = function (chunk, encoding, cb) {
-  var state = this._writableState;
+                       delta += (m - n) * handledCPCountPlusOne;
+                       n = m;
 
-  if (typeof chunk === 'function') {
-    cb = chunk;
-    chunk = null;
-    encoding = null;
-  } else if (typeof encoding === 'function') {
-    cb = encoding;
-    encoding = null;
-  }
+                       for (j = 0; j < inputLength; ++j) {
+                               currentValue = input[j];
 
-  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
+                               if (currentValue < n && ++delta > maxInt) {
+                                       error('overflow');
+                               }
 
-  // .end() fully uncorks
-  if (state.corked) {
-    state.corked = 1;
-    this.uncork();
-  }
+                               if (currentValue == n) {
+                                       // Represent delta as a generalized variable-length integer
+                                       for (q = delta, k = base; /* no condition */; k += base) {
+                                               t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
+                                               if (q < t) {
+                                                       break;
+                                               }
+                                               qMinusT = q - t;
+                                               baseMinusT = base - t;
+                                               output.push(
+                                                       stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
+                                               );
+                                               q = floor(qMinusT / baseMinusT);
+                                       }
 
-  // ignore unnecessary end() calls.
-  if (!state.ending && !state.finished) endWritable(this, state, cb);
-};
+                                       output.push(stringFromCharCode(digitToBasic(q, 0)));
+                                       bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
+                                       delta = 0;
+                                       ++handledCPCount;
+                               }
+                       }
 
-function needFinish(state) {
-  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
-}
-function callFinal(stream, state) {
-  stream._final(function (err) {
-    state.pendingcb--;
-    if (err) {
-      stream.emit('error', err);
-    }
-    state.prefinished = true;
-    stream.emit('prefinish');
-    finishMaybe(stream, state);
-  });
-}
-function prefinish(stream, state) {
-  if (!state.prefinished && !state.finalCalled) {
-    if (typeof stream._final === 'function') {
-      state.pendingcb++;
-      state.finalCalled = true;
-      pna.nextTick(callFinal, stream, state);
-    } else {
-      state.prefinished = true;
-      stream.emit('prefinish');
-    }
-  }
-}
+                       ++delta;
+                       ++n;
 
-function finishMaybe(stream, state) {
-  var need = needFinish(state);
-  if (need) {
-    prefinish(stream, state);
-    if (state.pendingcb === 0) {
-      state.finished = true;
-      stream.emit('finish');
-    }
-  }
-  return need;
-}
+               }
+               return output.join('');
+       }
 
-function endWritable(stream, state, cb) {
-  state.ending = true;
-  finishMaybe(stream, state);
-  if (cb) {
-    if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
-  }
-  state.ended = true;
-  stream.writable = false;
-}
+       /**
+        * Converts a Punycode string representing a domain name or an email address
+        * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
+        * it doesn't matter if you call it on a string that has already been
+        * converted to Unicode.
+        * @memberOf punycode
+        * @param {String} input The Punycoded domain name or email address to
+        * convert to Unicode.
+        * @returns {String} The Unicode representation of the given Punycode
+        * string.
+        */
+       function toUnicode(input) {
+               return mapDomain(input, function(string) {
+                       return regexPunycode.test(string)
+                               ? decode(string.slice(4).toLowerCase())
+                               : string;
+               });
+       }
 
-function onCorkedFinish(corkReq, state, err) {
-  var entry = corkReq.entry;
-  corkReq.entry = null;
-  while (entry) {
-    var cb = entry.callback;
-    state.pendingcb--;
-    cb(err);
-    entry = entry.next;
-  }
-  if (state.corkedRequestsFree) {
-    state.corkedRequestsFree.next = corkReq;
-  } else {
-    state.corkedRequestsFree = corkReq;
-  }
-}
+       /**
+        * Converts a Unicode string representing a domain name or an email address to
+        * Punycode. Only the non-ASCII parts of the domain name will be converted,
+        * i.e. it doesn't matter if you call it with a domain that's already in
+        * ASCII.
+        * @memberOf punycode
+        * @param {String} input The domain name or email address to convert, as a
+        * Unicode string.
+        * @returns {String} The Punycode representation of the given domain name or
+        * email address.
+        */
+       function toASCII(input) {
+               return mapDomain(input, function(string) {
+                       return regexNonASCII.test(string)
+                               ? 'xn--' + encode(string)
+                               : string;
+               });
+       }
 
-Object.defineProperty(Writable.prototype, 'destroyed', {
-  get: function () {
-    if (this._writableState === undefined) {
-      return false;
-    }
-    return this._writableState.destroyed;
-  },
-  set: function (value) {
-    // we ignore the value if the stream
-    // has not been initialized yet
-    if (!this._writableState) {
-      return;
-    }
+       /*--------------------------------------------------------------------------*/
 
-    // backward compatibility, the user is explicitly
-    // managing destroyed
-    this._writableState.destroyed = value;
-  }
-});
+       /** Define the public API */
+       punycode = {
+               /**
+                * A string representing the current Punycode.js version number.
+                * @memberOf punycode
+                * @type String
+                */
+               'version': '1.4.1',
+               /**
+                * An object of methods to convert from JavaScript's internal character
+                * representation (UCS-2) to Unicode code points, and back.
+                * @see <https://mathiasbynens.be/notes/javascript-encoding>
+                * @memberOf punycode
+                * @type Object
+                */
+               'ucs2': {
+                       'decode': ucs2decode,
+                       'encode': ucs2encode
+               },
+               'decode': decode,
+               'encode': encode,
+               'toASCII': toASCII,
+               'toUnicode': toUnicode
+       };
 
-Writable.prototype.destroy = destroyImpl.destroy;
-Writable.prototype._undestroy = destroyImpl.undestroy;
-Writable.prototype._destroy = function (err, cb) {
-  this.end();
-  cb(err);
-};
-}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate)
-},{"./_stream_duplex":117,"./internal/streams/destroy":123,"./internal/streams/stream":124,"_process":112,"core-util-is":101,"inherits":106,"process-nextick-args":111,"safe-buffer":143,"timers":160,"util-deprecate":164}],122:[function(require,module,exports){
-'use strict';
+       /** Expose `punycode` */
+       // Some AMD build optimizers, like r.js, check for specific condition patterns
+       // like the following:
+       if (
+               typeof define == 'function' &&
+               typeof define.amd == 'object' &&
+               define.amd
+       ) {
+               define('punycode', function() {
+                       return punycode;
+               });
+       } else if (freeExports && freeModule) {
+               if (module.exports == freeExports) {
+                       // in Node.js, io.js, or RingoJS v0.8.0+
+                       freeModule.exports = punycode;
+               } else {
+                       // in Narwhal or RingoJS v0.7.0-
+                       for (key in punycode) {
+                               punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
+                       }
+               }
+       } else {
+               // in Rhino or a web browser
+               root.punycode = punycode;
+       }
 
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+}(this));
 
-var Buffer = require('safe-buffer').Buffer;
-var util = require('util');
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],126:[function(require,module,exports){
+// 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.
 
-function copyBuffer(src, target, offset) {
-  src.copy(target, offset);
+'use strict';
+
+// If obj.hasOwnProperty has been overridden, then calling
+// obj.hasOwnProperty(prop) will break.
+// See: https://github.com/joyent/node/issues/1707
+function hasOwnProperty(obj, prop) {
+  return Object.prototype.hasOwnProperty.call(obj, prop);
 }
 
-module.exports = function () {
-  function BufferList() {
-    _classCallCheck(this, BufferList);
+module.exports = function(qs, sep, eq, options) {
+  sep = sep || '&';
+  eq = eq || '=';
+  var obj = {};
 
-    this.head = null;
-    this.tail = null;
-    this.length = 0;
+  if (typeof qs !== 'string' || qs.length === 0) {
+    return obj;
   }
 
-  BufferList.prototype.push = function push(v) {
-    var entry = { data: v, next: null };
-    if (this.length > 0) this.tail.next = entry;else this.head = entry;
-    this.tail = entry;
-    ++this.length;
-  };
-
-  BufferList.prototype.unshift = function unshift(v) {
-    var entry = { data: v, next: this.head };
-    if (this.length === 0) this.tail = entry;
-    this.head = entry;
-    ++this.length;
-  };
+  var regexp = /\+/g;
+  qs = qs.split(sep);
 
-  BufferList.prototype.shift = function shift() {
-    if (this.length === 0) return;
-    var ret = this.head.data;
-    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
-    --this.length;
-    return ret;
-  };
+  var maxKeys = 1000;
+  if (options && typeof options.maxKeys === 'number') {
+    maxKeys = options.maxKeys;
+  }
 
-  BufferList.prototype.clear = function clear() {
-    this.head = this.tail = null;
-    this.length = 0;
-  };
+  var len = qs.length;
+  // maxKeys <= 0 means that we should not limit keys count
+  if (maxKeys > 0 && len > maxKeys) {
+    len = maxKeys;
+  }
 
-  BufferList.prototype.join = function join(s) {
-    if (this.length === 0) return '';
-    var p = this.head;
-    var ret = '' + p.data;
-    while (p = p.next) {
-      ret += s + p.data;
-    }return ret;
-  };
+  for (var i = 0; i < len; ++i) {
+    var x = qs[i].replace(regexp, '%20'),
+        idx = x.indexOf(eq),
+        kstr, vstr, k, v;
 
-  BufferList.prototype.concat = function concat(n) {
-    if (this.length === 0) return Buffer.alloc(0);
-    if (this.length === 1) return this.head.data;
-    var ret = Buffer.allocUnsafe(n >>> 0);
-    var p = this.head;
-    var i = 0;
-    while (p) {
-      copyBuffer(p.data, ret, i);
-      i += p.data.length;
-      p = p.next;
+    if (idx >= 0) {
+      kstr = x.substr(0, idx);
+      vstr = x.substr(idx + 1);
+    } else {
+      kstr = x;
+      vstr = '';
     }
-    return ret;
-  };
 
-  return BufferList;
-}();
+    k = decodeURIComponent(kstr);
+    v = decodeURIComponent(vstr);
 
-if (util && util.inspect && util.inspect.custom) {
-  module.exports.prototype[util.inspect.custom] = function () {
-    var obj = util.inspect({ length: this.length });
-    return this.constructor.name + ' ' + obj;
-  };
-}
-},{"safe-buffer":143,"util":2}],123:[function(require,module,exports){
-'use strict';
+    if (!hasOwnProperty(obj, k)) {
+      obj[k] = v;
+    } else if (isArray(obj[k])) {
+      obj[k].push(v);
+    } else {
+      obj[k] = [obj[k], v];
+    }
+  }
 
-/*<replacement>*/
+  return obj;
+};
 
-var pna = require('process-nextick-args');
-/*</replacement>*/
+var isArray = Array.isArray || function (xs) {
+  return Object.prototype.toString.call(xs) === '[object Array]';
+};
 
-// undocumented cb() API, needed for core, not for public API
-function destroy(err, cb) {
-  var _this = this;
+},{}],127:[function(require,module,exports){
+// 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 readableDestroyed = this._readableState && this._readableState.destroyed;
-  var writableDestroyed = this._writableState && this._writableState.destroyed;
+'use strict';
 
-  if (readableDestroyed || writableDestroyed) {
-    if (cb) {
-      cb(err);
-    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
-      pna.nextTick(emitErrorNT, this, err);
-    }
-    return this;
-  }
+var stringifyPrimitive = function(v) {
+  switch (typeof v) {
+    case 'string':
+      return v;
 
-  // we set destroyed to true before firing error callbacks in order
-  // to make it re-entrance safe in case destroy() is called within callbacks
+    case 'boolean':
+      return v ? 'true' : 'false';
 
-  if (this._readableState) {
-    this._readableState.destroyed = true;
+    case 'number':
+      return isFinite(v) ? v : '';
+
+    default:
+      return '';
   }
+};
 
-  // if this is a duplex stream mark the writable part as destroyed as well
-  if (this._writableState) {
-    this._writableState.destroyed = true;
+module.exports = function(obj, sep, eq, name) {
+  sep = sep || '&';
+  eq = eq || '=';
+  if (obj === null) {
+    obj = undefined;
   }
 
-  this._destroy(err || null, function (err) {
-    if (!cb && err) {
-      pna.nextTick(emitErrorNT, _this, err);
-      if (_this._writableState) {
-        _this._writableState.errorEmitted = true;
+  if (typeof obj === 'object') {
+    return map(objectKeys(obj), function(k) {
+      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
+      if (isArray(obj[k])) {
+        return map(obj[k], function(v) {
+          return ks + encodeURIComponent(stringifyPrimitive(v));
+        }).join(sep);
+      } else {
+        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
       }
-    } else if (cb) {
-      cb(err);
-    }
-  });
-
-  return this;
-}
-
-function undestroy() {
-  if (this._readableState) {
-    this._readableState.destroyed = false;
-    this._readableState.reading = false;
-    this._readableState.ended = false;
-    this._readableState.endEmitted = false;
-  }
+    }).join(sep);
 
-  if (this._writableState) {
-    this._writableState.destroyed = false;
-    this._writableState.ended = false;
-    this._writableState.ending = false;
-    this._writableState.finished = false;
-    this._writableState.errorEmitted = false;
   }
-}
-
-function emitErrorNT(self, err) {
-  self.emit('error', err);
-}
 
-module.exports = {
-  destroy: destroy,
-  undestroy: undestroy
+  if (!name) return '';
+  return encodeURIComponent(stringifyPrimitive(name)) + eq +
+         encodeURIComponent(stringifyPrimitive(obj));
 };
-},{"process-nextick-args":111}],124:[function(require,module,exports){
-module.exports = require('events').EventEmitter;
-
-},{"events":102}],125:[function(require,module,exports){
-exports = module.exports = require('./lib/_stream_readable.js');
-exports.Stream = exports;
-exports.Readable = exports;
-exports.Writable = require('./lib/_stream_writable.js');
-exports.Duplex = require('./lib/_stream_duplex.js');
-exports.Transform = require('./lib/_stream_transform.js');
-exports.PassThrough = require('./lib/_stream_passthrough.js');
-
-},{"./lib/_stream_duplex.js":117,"./lib/_stream_passthrough.js":118,"./lib/_stream_readable.js":119,"./lib/_stream_transform.js":120,"./lib/_stream_writable.js":121}],126:[function(require,module,exports){
-"use strict";
 
-module.exports =
-{
-       // Output
-       ABSOLUTE:      "absolute",
-       PATH_RELATIVE: "pathRelative",
-       ROOT_RELATIVE: "rootRelative",
-       SHORTEST:      "shortest"
+var isArray = Array.isArray || function (xs) {
+  return Object.prototype.toString.call(xs) === '[object Array]';
 };
 
-},{}],127:[function(require,module,exports){
-"use strict";
-
-var constants = require("./constants");
-
-
-
-function formatAuth(urlObj, options)
-{
-       if (urlObj.auth && !options.removeAuth && (urlObj.extra.relation.maximumHost || options.output===constants.ABSOLUTE))
-       {
-               return urlObj.auth + "@";
-       }
-       
-       return "";
+function map (xs, f) {
+  if (xs.map) return xs.map(f);
+  var res = [];
+  for (var i = 0; i < xs.length; i++) {
+    res.push(f(xs[i], i));
+  }
+  return res;
 }
 
+var objectKeys = Object.keys || function (obj) {
+  var res = [];
+  for (var key in obj) {
+    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
+  }
+  return res;
+};
 
+},{}],128:[function(require,module,exports){
+'use strict';
 
-function formatHash(urlObj, options)
-{
-       return urlObj.hash ? urlObj.hash : "";
-}
-
+exports.decode = exports.parse = require('./decode');
+exports.encode = exports.stringify = require('./encode');
 
+},{"./decode":126,"./encode":127}],129:[function(require,module,exports){
+// 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.
 
-function formatHost(urlObj, options)
-{
-       if (urlObj.host.full && (urlObj.extra.relation.maximumAuth || options.output===constants.ABSOLUTE))
-       {
-               return urlObj.host.full;
-       }
-       
-       return "";
-}
+// a duplex stream is just a stream that is both readable and writable.
+// Since JS doesn't have multiple prototypal inheritance, this class
+// prototypally inherits from Readable, and then parasitically from
+// Writable.
 
+'use strict';
 
+/*<replacement>*/
 
-function formatPath(urlObj, options)
-{
-       var str = "";
-       
-       var absolutePath = urlObj.path.absolute.string;
-       var relativePath = urlObj.path.relative.string;
-       var resource = showResource(urlObj, options);
-       
-       if (urlObj.extra.relation.maximumHost || options.output===constants.ABSOLUTE || options.output===constants.ROOT_RELATIVE)
-       {
-               str = absolutePath;
-       }
-       else if (relativePath.length<=absolutePath.length && options.output===constants.SHORTEST || options.output===constants.PATH_RELATIVE)
-       {
-               str = relativePath;
-               
-               if (str === "")
-               {
-                       var query = showQuery(urlObj,options) && !!getQuery(urlObj,options);
-                       
-                       if (urlObj.extra.relation.maximumPath && !resource)
-                       {
-                               str = "./";
-                       }
-                       else if (urlObj.extra.relation.overridesQuery && !resource && !query)
-                       {
-                               str = "./";
-                       }
-               }
-       }
-       else
-       {
-               str = absolutePath;
-       }
-       
-       if ( str==="/" && !resource && options.removeRootTrailingSlash && (!urlObj.extra.relation.minimumPort || options.output===constants.ABSOLUTE) )
-       {
-               str = "";
-       }
-       
-       return str;
-}
+var pna = require('process-nextick-args');
+/*</replacement>*/
 
+/*<replacement>*/
+var objectKeys = Object.keys || function (obj) {
+  var keys = [];
+  for (var key in obj) {
+    keys.push(key);
+  }return keys;
+};
+/*</replacement>*/
 
+module.exports = Duplex;
 
-function formatPort(urlObj, options)
-{
-       if (urlObj.port && !urlObj.extra.portIsDefault && urlObj.extra.relation.maximumHost)
-       {
-               return ":" + urlObj.port;
-       }
-       
-       return "";
-}
+/*<replacement>*/
+var util = require('core-util-is');
+util.inherits = require('inherits');
+/*</replacement>*/
 
+var Readable = require('./_stream_readable');
+var Writable = require('./_stream_writable');
 
+util.inherits(Duplex, Readable);
 
-function formatQuery(urlObj, options)
 {
-       return showQuery(urlObj,options) ? getQuery(urlObj, options) : "";
+  // avoid scope creep, the keys array can then be collected
+  var keys = objectKeys(Writable.prototype);
+  for (var v = 0; v < keys.length; v++) {
+    var method = keys[v];
+    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
+  }
 }
 
+function Duplex(options) {
+  if (!(this instanceof Duplex)) return new Duplex(options);
 
+  Readable.call(this, options);
+  Writable.call(this, options);
 
-function formatResource(urlObj, options)
-{
-       return showResource(urlObj,options) ? urlObj.resource : "";
-}
+  if (options && options.readable === false) this.readable = false;
 
+  if (options && options.writable === false) this.writable = false;
 
+  this.allowHalfOpen = true;
+  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
 
-function formatScheme(urlObj, options)
-{
-       var str = "";
-       
-       if (urlObj.extra.relation.maximumHost || options.output===constants.ABSOLUTE)
-       {
-               if (!urlObj.extra.relation.minimumScheme || !options.schemeRelative || options.output===constants.ABSOLUTE)
-               {
-                       str += urlObj.scheme + "://";
-               }
-               else
-               {
-                       str += "//";
-               }
-       }
-       
-       return str;
+  this.once('end', onend);
 }
 
+Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
+  // making it explicit this property is not enumerable
+  // because otherwise some prototype manipulation in
+  // userland will fail
+  enumerable: false,
+  get: function () {
+    return this._writableState.highWaterMark;
+  }
+});
 
+// the no-half-open enforcer
+function onend() {
+  // if we allow half-open state, or if the writable side ended,
+  // then we're ok.
+  if (this.allowHalfOpen || this._writableState.ended) return;
 
-function formatUrl(urlObj, options)
-{
-       var url = "";
-       
-       url += formatScheme(urlObj, options);
-       url += formatAuth(urlObj, options);
-       url += formatHost(urlObj, options);
-       url += formatPort(urlObj, options);
-       url += formatPath(urlObj, options);
-       url += formatResource(urlObj, options);
-       url += formatQuery(urlObj, options);
-       url += formatHash(urlObj, options);
-       
-       return url;
+  // no more data can be written.
+  // But allow more writes to happen in this tick.
+  pna.nextTick(onEndNT, this);
 }
 
-
-
-function getQuery(urlObj, options)
-{
-       var stripQuery = options.removeEmptyQueries && urlObj.extra.relation.minimumPort;
-       
-       return urlObj.query.string[ stripQuery ? "stripped" : "full" ];
+function onEndNT(self) {
+  self.end();
 }
 
+Object.defineProperty(Duplex.prototype, 'destroyed', {
+  get: function () {
+    if (this._readableState === undefined || this._writableState === undefined) {
+      return false;
+    }
+    return this._readableState.destroyed && this._writableState.destroyed;
+  },
+  set: function (value) {
+    // we ignore the value if the stream
+    // has not been initialized yet
+    if (this._readableState === undefined || this._writableState === undefined) {
+      return;
+    }
 
+    // backward compatibility, the user is explicitly
+    // managing destroyed
+    this._readableState.destroyed = value;
+    this._writableState.destroyed = value;
+  }
+});
 
-function showQuery(urlObj, options)
-{
-       return !urlObj.extra.relation.minimumQuery || options.output===constants.ABSOLUTE || options.output===constants.ROOT_RELATIVE;
-}
-
-
+Duplex.prototype._destroy = function (err, cb) {
+  this.push(null);
+  this.end();
 
-function showResource(urlObj, options)
-{
-       var removeIndex = options.removeDirectoryIndexes && urlObj.extra.resourceIsIndex;
-       var removeMatchingResource = urlObj.extra.relation.minimumResource && options.output!==constants.ABSOLUTE && options.output!==constants.ROOT_RELATIVE;
-       
-       return !!urlObj.resource && !removeMatchingResource && !removeIndex;
-}
+  pna.nextTick(cb, err);
+};
+},{"./_stream_readable":131,"./_stream_writable":133,"core-util-is":113,"inherits":118,"process-nextick-args":123}],130:[function(require,module,exports){
+// 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.
 
+// a passthrough stream.
+// basically just the most minimal sort of Transform stream.
+// Every written chunk gets output as-is.
 
+'use strict';
 
-module.exports = formatUrl;
+module.exports = PassThrough;
 
-},{"./constants":126}],128:[function(require,module,exports){
-"use strict";
+var Transform = require('./_stream_transform');
 
-var constants  = require("./constants");
-var formatUrl  = require("./format");
-var getOptions = require("./options");
-var objUtils   = require("./util/object");
-var parseUrl   = require("./parse");
-var relateUrl  = require("./relate");
+/*<replacement>*/
+var util = require('core-util-is');
+util.inherits = require('inherits');
+/*</replacement>*/
 
+util.inherits(PassThrough, Transform);
 
+function PassThrough(options) {
+  if (!(this instanceof PassThrough)) return new PassThrough(options);
 
-function RelateUrl(from, options)
-{
-       this.options = getOptions(options,
-       {
-               defaultPorts: {ftp:21, http:80, https:443},
-               directoryIndexes: ["index.html"],
-               ignore_www: false,
-               output: RelateUrl.SHORTEST,
-               rejectedSchemes: ["data","javascript","mailto"],
-               removeAuth: false,
-               removeDirectoryIndexes: true,
-               removeEmptyQueries: false,
-               removeRootTrailingSlash: true,
-               schemeRelative: true,
-               site: undefined,
-               slashesDenoteHost: true
-       });
-       
-       this.from = parseUrl.from(from, this.options, null);
+  Transform.call(this, options);
 }
 
+PassThrough.prototype._transform = function (chunk, encoding, cb) {
+  cb(null, chunk);
+};
+},{"./_stream_transform":132,"core-util-is":113,"inherits":118}],131:[function(require,module,exports){
+(function (process,global){
+// 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.
 
+'use strict';
 
-/*
-       Usage: instance=new RelateUrl(); instance.relate();
-*/
-RelateUrl.prototype.relate = function(from, to, options)
-{
-       // relate(to,options)
-       if ( objUtils.isPlainObject(to) )
-       {
-               options = to;
-               to = from;
-               from = null;
-       }
-       // relate(to)
-       else if (!to)
-       {
-               to = from;
-               from = null;
-       }
-       
-       options = getOptions(options, this.options);
-       from = from || options.site;
-       from = parseUrl.from(from, options, this.from);
-       
-       if (!from || !from.href)
-       {
-               throw new Error("from value not defined.");
-       }
-       else if (from.extra.hrefInfo.minimumPathOnly)
-       {
-               throw new Error("from value supplied is not absolute: "+from.href);
-       }
-       
-       to = parseUrl.to(to, options);
-       
-       if (to.valid===false) return to.href;
-       
-       to = relateUrl(from, to, options);
-       to = formatUrl(to, options);
-       
-       return to;
-}
-
+/*<replacement>*/
 
+var pna = require('process-nextick-args');
+/*</replacement>*/
 
-/*
-       Usage: RelateUrl.relate();
-*/
-RelateUrl.relate = function(from, to, options)
-{
-       return new RelateUrl().relate(from, to, options);
-}
+module.exports = Readable;
 
+/*<replacement>*/
+var isArray = require('isarray');
+/*</replacement>*/
 
+/*<replacement>*/
+var Duplex;
+/*</replacement>*/
 
-// Make constants accessible from API
-objUtils.shallowMerge(RelateUrl, constants);
+Readable.ReadableState = ReadableState;
 
+/*<replacement>*/
+var EE = require('events').EventEmitter;
 
+var EElistenerCount = function (emitter, type) {
+  return emitter.listeners(type).length;
+};
+/*</replacement>*/
 
-module.exports = RelateUrl;
+/*<replacement>*/
+var Stream = require('./internal/streams/stream');
+/*</replacement>*/
 
-},{"./constants":126,"./format":127,"./options":129,"./parse":132,"./relate":139,"./util/object":141}],129:[function(require,module,exports){
-"use strict";
+/*<replacement>*/
 
-var objUtils = require("./util/object");
+var Buffer = require('safe-buffer').Buffer;
+var OurUint8Array = global.Uint8Array || function () {};
+function _uint8ArrayToBuffer(chunk) {
+  return Buffer.from(chunk);
+}
+function _isUint8Array(obj) {
+  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
+}
 
+/*</replacement>*/
 
+/*<replacement>*/
+var util = require('core-util-is');
+util.inherits = require('inherits');
+/*</replacement>*/
 
-function getOptions(options, defaults)
-{
-       if ( objUtils.isPlainObject(options) )
-       {
-               var newOptions = {};
-               
-               for (var i in defaults)
-               {
-                       if ( defaults.hasOwnProperty(i) )
-                       {
-                               if (options[i] !== undefined)
-                               {
-                                       newOptions[i] = mergeOption(options[i], defaults[i]);
-                               }
-                               else
-                               {
-                                       newOptions[i] = defaults[i];
-                               }
-                       }
-               }
-               
-               return newOptions;
-       }
-       else
-       {
-               return defaults;
-       }
+/*<replacement>*/
+var debugUtil = require('util');
+var debug = void 0;
+if (debugUtil && debugUtil.debuglog) {
+  debug = debugUtil.debuglog('stream');
+} else {
+  debug = function () {};
 }
+/*</replacement>*/
+
+var BufferList = require('./internal/streams/BufferList');
+var destroyImpl = require('./internal/streams/destroy');
+var StringDecoder;
 
+util.inherits(Readable, Stream);
 
+var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
 
-function mergeOption(newValues, defaultValues)
-{
-       if (defaultValues instanceof Object && newValues instanceof Object)
-       {
-               if (defaultValues instanceof Array && newValues instanceof Array)
-               {
-                       return defaultValues.concat(newValues);
-               }
-               else
-               {
-                       return objUtils.shallowMerge(newValues, defaultValues);
-               }
-       }
-       
-       return newValues;
+function prependListener(emitter, event, fn) {
+  // Sadly this is not cacheable as some libraries bundle their own
+  // event emitter implementation with them.
+  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
+
+  // This is a hack to make sure that our error handler is attached before any
+  // userland ones.  NEVER DO THIS. This is here only because this code needs
+  // to continue to work with older versions of Node.js that do not include
+  // the prependListener() method. The goal is to eventually remove this hack.
+  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
 }
 
+function ReadableState(options, stream) {
+  Duplex = Duplex || require('./_stream_duplex');
 
+  options = options || {};
 
-module.exports = getOptions;
+  // Duplex streams are both readable and writable, but share
+  // the same options object.
+  // However, some cases require setting options to different
+  // values for the readable and the writable sides of the duplex stream.
+  // These options can be provided separately as readableXXX and writableXXX.
+  var isDuplex = stream instanceof Duplex;
 
-},{"./util/object":141}],130:[function(require,module,exports){
-"use strict";
+  // object stream flag. Used to make read(n) ignore n and to
+  // make all the buffer merging and length checks go away
+  this.objectMode = !!options.objectMode;
 
-function parseHost(urlObj, options)
-{
-       // TWEAK :: condition only for speed optimization
-       if (options.ignore_www)
-       {
-               var host = urlObj.host.full;
-               
-               if (host)
-               {
-                       var stripped = host;
-                       
-                       if (host.indexOf("www.") === 0)
-                       {
-                               stripped = host.substr(4);
-                       }
-                       
-                       urlObj.host.stripped = stripped;
-               }
-       }
-}
+  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
+
+  // the point at which it stops calling _read() to fill the buffer
+  // Note: 0 is a valid value, means "don't call _read preemptively ever"
+  var hwm = options.highWaterMark;
+  var readableHwm = options.readableHighWaterMark;
+  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
 
+  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
 
+  // cast to ints.
+  this.highWaterMark = Math.floor(this.highWaterMark);
 
-module.exports = parseHost;
+  // A linked list is used to store data chunks instead of an array because the
+  // linked list can remove elements from the beginning faster than
+  // array.shift()
+  this.buffer = new BufferList();
+  this.length = 0;
+  this.pipes = null;
+  this.pipesCount = 0;
+  this.flowing = null;
+  this.ended = false;
+  this.endEmitted = false;
+  this.reading = false;
 
-},{}],131:[function(require,module,exports){
-"use strict";
+  // a flag to be able to tell if the event 'readable'/'data' is emitted
+  // immediately, or on a later tick.  We set this to true at first, because
+  // any actions that shouldn't happen until "later" should generally also
+  // not happen before the first read call.
+  this.sync = true;
 
-function hrefInfo(urlObj)
-{
-       var minimumPathOnly     = (!urlObj.scheme && !urlObj.auth && !urlObj.host.full && !urlObj.port);
-       var minimumResourceOnly = (minimumPathOnly && !urlObj.path.absolute.string);
-       var minimumQueryOnly    = (minimumResourceOnly && !urlObj.resource);
-       var minimumHashOnly     = (minimumQueryOnly && !urlObj.query.string.full.length);
-       var empty               = (minimumHashOnly && !urlObj.hash);
-       
-       urlObj.extra.hrefInfo.minimumPathOnly     = minimumPathOnly;
-       urlObj.extra.hrefInfo.minimumResourceOnly = minimumResourceOnly;
-       urlObj.extra.hrefInfo.minimumQueryOnly    = minimumQueryOnly;
-       urlObj.extra.hrefInfo.minimumHashOnly     = minimumHashOnly;
-       urlObj.extra.hrefInfo.empty = empty;
-}
+  // whenever we return null, then we set a flag to say
+  // that we're awaiting a 'readable' event emission.
+  this.needReadable = false;
+  this.emittedReadable = false;
+  this.readableListening = false;
+  this.resumeScheduled = false;
 
+  // has it been destroyed
+  this.destroyed = false;
 
+  // Crypto is kind of old and crusty.  Historically, its default string
+  // encoding is 'binary' so we have to make this configurable.
+  // Everything else in the universe uses 'utf8', though.
+  this.defaultEncoding = options.defaultEncoding || 'utf8';
 
-module.exports = hrefInfo;
+  // the number of writers that are awaiting a drain event in .pipe()s
+  this.awaitDrain = 0;
 
-},{}],132:[function(require,module,exports){
-"use strict";
+  // if true, a maybeReadMore has been scheduled
+  this.readingMore = false;
 
-var hrefInfo   = require("./hrefInfo");
-var parseHost  = require("./host");
-var parsePath  = require("./path");
-var parsePort  = require("./port");
-var parseQuery = require("./query");
-var parseUrlString = require("./urlstring");
-var pathUtils      = require("../util/path");
+  this.decoder = null;
+  this.encoding = null;
+  if (options.encoding) {
+    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
+    this.decoder = new StringDecoder(options.encoding);
+    this.encoding = options.encoding;
+  }
+}
 
+function Readable(options) {
+  Duplex = Duplex || require('./_stream_duplex');
 
+  if (!(this instanceof Readable)) return new Readable(options);
 
-function parseFromUrl(url, options, fallback)
-{
-       if (url)
-       {
-               var urlObj = parseUrl(url, options);
-               
-               // Because the following occurs in the relate stage for "to" URLs,
-               // such had to be mostly duplicated here
-               
-               var pathArray = pathUtils.resolveDotSegments(urlObj.path.absolute.array);
-               
-               urlObj.path.absolute.array  = pathArray;
-               urlObj.path.absolute.string = "/" + pathUtils.join(pathArray);
-               
-               return urlObj;
-       }
-       else
-       {
-               return fallback;
-       }
-}
+  this._readableState = new ReadableState(options, this);
 
+  // legacy
+  this.readable = true;
 
+  if (options) {
+    if (typeof options.read === 'function') this._read = options.read;
 
-function parseUrl(url, options)
-{
-       var urlObj = parseUrlString(url, options);
-       
-       if (urlObj.valid===false) return urlObj;
-       
-       parseHost(urlObj, options);
-       parsePort(urlObj, options);
-       parsePath(urlObj, options);
-       parseQuery(urlObj, options);
-       hrefInfo(urlObj);
-       
-       return urlObj;
+    if (typeof options.destroy === 'function') this._destroy = options.destroy;
+  }
+
+  Stream.call(this);
 }
 
+Object.defineProperty(Readable.prototype, 'destroyed', {
+  get: function () {
+    if (this._readableState === undefined) {
+      return false;
+    }
+    return this._readableState.destroyed;
+  },
+  set: function (value) {
+    // we ignore the value if the stream
+    // has not been initialized yet
+    if (!this._readableState) {
+      return;
+    }
 
+    // backward compatibility, the user is explicitly
+    // managing destroyed
+    this._readableState.destroyed = value;
+  }
+});
 
-module.exports =
-{
-       from: parseFromUrl,
-       to:   parseUrl
+Readable.prototype.destroy = destroyImpl.destroy;
+Readable.prototype._undestroy = destroyImpl.undestroy;
+Readable.prototype._destroy = function (err, cb) {
+  this.push(null);
+  cb(err);
 };
 
-},{"../util/path":142,"./host":130,"./hrefInfo":131,"./path":133,"./port":134,"./query":135,"./urlstring":136}],133:[function(require,module,exports){
-"use strict";
+// Manually shove something into the read() buffer.
+// This returns true if the highWaterMark has not been hit yet,
+// similar to how Writable.write() returns true if you should
+// write() some more.
+Readable.prototype.push = function (chunk, encoding) {
+  var state = this._readableState;
+  var skipChunkCheck;
 
-function isDirectoryIndex(resource, options)
-{
-       var verdict = false;
-       
-       options.directoryIndexes.every( function(index)
-       {
-               if (index === resource)
-               {
-                       verdict = true;
-                       return false;
-               }
-               
-               return true;
-       });
-       
-       return verdict;
-}
+  if (!state.objectMode) {
+    if (typeof chunk === 'string') {
+      encoding = encoding || state.defaultEncoding;
+      if (encoding !== state.encoding) {
+        chunk = Buffer.from(chunk, encoding);
+        encoding = '';
+      }
+      skipChunkCheck = true;
+    }
+  } else {
+    skipChunkCheck = true;
+  }
 
+  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
+};
 
+// Unshift should *always* be something directly out of read()
+Readable.prototype.unshift = function (chunk) {
+  return readableAddChunk(this, chunk, null, true, false);
+};
 
-function parsePath(urlObj, options)
-{
-       var path = urlObj.path.absolute.string;
-       
-       if (path)
-       {
-               var lastSlash = path.lastIndexOf("/");
-               
-               if (lastSlash > -1)
-               {
-                       if (++lastSlash < path.length)
-                       {
-                               var resource = path.substr(lastSlash);
-                               
-                               if (resource!=="." && resource!=="..")
-                               {
-                                       urlObj.resource = resource;
-                                       path = path.substr(0, lastSlash);
-                               }
-                               else
-                               {
-                                       path += "/";
-                               }
-                       }
-                       
-                       urlObj.path.absolute.string = path;
-                       urlObj.path.absolute.array = splitPath(path);
-               }
-               else if (path==="." || path==="..")
-               {
-                       // "..?var", "..#anchor", etc ... not "..index.html"
-                       path += "/";
-                       
-                       urlObj.path.absolute.string = path;
-                       urlObj.path.absolute.array = splitPath(path);
-               }
-               else
-               {
-                       // Resource-only
-                       urlObj.resource = path;
-                       urlObj.path.absolute.string = null;
-               }
-               
-               urlObj.extra.resourceIsIndex = isDirectoryIndex(urlObj.resource, options);
-       }
-       // Else: query/hash-only or empty
+function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
+  var state = stream._readableState;
+  if (chunk === null) {
+    state.reading = false;
+    onEofChunk(stream, state);
+  } else {
+    var er;
+    if (!skipChunkCheck) er = chunkInvalid(state, chunk);
+    if (er) {
+      stream.emit('error', er);
+    } else if (state.objectMode || chunk && chunk.length > 0) {
+      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
+        chunk = _uint8ArrayToBuffer(chunk);
+      }
+
+      if (addToFront) {
+        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
+      } else if (state.ended) {
+        stream.emit('error', new Error('stream.push() after EOF'));
+      } else {
+        state.reading = false;
+        if (state.decoder && !encoding) {
+          chunk = state.decoder.write(chunk);
+          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
+        } else {
+          addChunk(stream, state, chunk, false);
+        }
+      }
+    } else if (!addToFront) {
+      state.reading = false;
+    }
+  }
+
+  return needMoreData(state);
 }
 
+function addChunk(stream, state, chunk, addToFront) {
+  if (state.flowing && state.length === 0 && !state.sync) {
+    stream.emit('data', chunk);
+    stream.read(0);
+  } else {
+    // update the buffer info.
+    state.length += state.objectMode ? 1 : chunk.length;
+    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
 
+    if (state.needReadable) emitReadable(stream);
+  }
+  maybeReadMore(stream, state);
+}
 
-function splitPath(path)
-{
-       // TWEAK :: condition only for speed optimization
-       if (path !== "/")
-       {
-               var cleaned = [];
-               
-               path.split("/").forEach( function(dir)
-               {
-                       // Cleanup -- splitting "/dir/" becomes ["","dir",""]
-                       if (dir !== "")
-                       {
-                               cleaned.push(dir);
-                       }
-               });
-               
-               return cleaned;
-       }
-       else
-       {
-               // Faster to skip the above block and just create an array
-               return [];
-       }
+function chunkInvalid(state, chunk) {
+  var er;
+  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
+    er = new TypeError('Invalid non-string/buffer chunk');
+  }
+  return er;
 }
 
+// if it's past the high water mark, we can push in some more.
+// Also, if we have no data yet, we can stand some
+// more bytes.  This is to work around cases where hwm=0,
+// such as the repl.  Also, if the push() triggered a
+// readable event, and the user called read(largeNumber) such that
+// needReadable was set, then we ought to push more, so that another
+// 'readable' event will be triggered.
+function needMoreData(state) {
+  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
+}
 
+Readable.prototype.isPaused = function () {
+  return this._readableState.flowing === false;
+};
 
-module.exports = parsePath;
+// backwards compatibility.
+Readable.prototype.setEncoding = function (enc) {
+  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
+  this._readableState.decoder = new StringDecoder(enc);
+  this._readableState.encoding = enc;
+  return this;
+};
 
-},{}],134:[function(require,module,exports){
-"use strict";
+// Don't raise the hwm > 8MB
+var MAX_HWM = 0x800000;
+function computeNewHighWaterMark(n) {
+  if (n >= MAX_HWM) {
+    n = MAX_HWM;
+  } else {
+    // Get the next highest power of 2 to prevent increasing hwm excessively in
+    // tiny amounts
+    n--;
+    n |= n >>> 1;
+    n |= n >>> 2;
+    n |= n >>> 4;
+    n |= n >>> 8;
+    n |= n >>> 16;
+    n++;
+  }
+  return n;
+}
 
-function parsePort(urlObj, options)
-{
-       var defaultPort = -1;
-       
-       for (var i in options.defaultPorts)
-       {
-               if ( i===urlObj.scheme && options.defaultPorts.hasOwnProperty(i) )
-               {
-                       defaultPort = options.defaultPorts[i];
-                       break;
-               }
-       }
-       
-       if (defaultPort > -1)
-       {
-               // Force same type as urlObj.port
-               defaultPort = defaultPort.toString();
-               
-               if (urlObj.port === null)
-               {
-                       urlObj.port = defaultPort;
-               }
-               
-               urlObj.extra.portIsDefault = (urlObj.port === defaultPort);
-       }
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function howMuchToRead(n, state) {
+  if (n <= 0 || state.length === 0 && state.ended) return 0;
+  if (state.objectMode) return 1;
+  if (n !== n) {
+    // Only flow one buffer at a time
+    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
+  }
+  // If we're asking for more than the current hwm, then raise the hwm.
+  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
+  if (n <= state.length) return n;
+  // Don't have enough
+  if (!state.ended) {
+    state.needReadable = true;
+    return 0;
+  }
+  return state.length;
 }
 
+// you can override either this method, or the async _read(n) below.
+Readable.prototype.read = function (n) {
+  debug('read', n);
+  n = parseInt(n, 10);
+  var state = this._readableState;
+  var nOrig = n;
 
+  if (n !== 0) state.emittedReadable = false;
 
-module.exports = parsePort;
+  // if we're doing read(0) to trigger a readable event, but we
+  // already have a bunch of data in the buffer, then just trigger
+  // the 'readable' event and move on.
+  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
+    debug('read: emitReadable', state.length, state.ended);
+    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
+    return null;
+  }
 
-},{}],135:[function(require,module,exports){
-"use strict";
-var hasOwnProperty = Object.prototype.hasOwnProperty;
+  n = howMuchToRead(n, state);
 
+  // if we've ended, and we're now clear, then finish it up.
+  if (n === 0 && state.ended) {
+    if (state.length === 0) endReadable(this);
+    return null;
+  }
 
+  // All the actual chunk generation logic needs to be
+  // *below* the call to _read.  The reason is that in certain
+  // synthetic stream cases, such as passthrough streams, _read
+  // may be a completely synchronous operation which may change
+  // the state of the read buffer, providing enough data when
+  // before there was *not* enough.
+  //
+  // So, the steps are:
+  // 1. Figure out what the state of things will be after we do
+  // a read from the buffer.
+  //
+  // 2. If that resulting state will trigger a _read, then call _read.
+  // Note that this may be asynchronous, or synchronous.  Yes, it is
+  // deeply ugly to write APIs this way, but that still doesn't mean
+  // that the Readable class should behave improperly, as streams are
+  // designed to be sync/async agnostic.
+  // Take note if the _read call is sync or async (ie, if the read call
+  // has returned yet), so that we know whether or not it's safe to emit
+  // 'readable' etc.
+  //
+  // 3. Actually pull the requested chunks out of the buffer and return.
 
-function parseQuery(urlObj, options)
-{
-       urlObj.query.string.full = stringify(urlObj.query.object, false);
-       
-       // TWEAK :: condition only for speed optimization
-       if (options.removeEmptyQueries)
-       {
-               urlObj.query.string.stripped = stringify(urlObj.query.object, true);
-       }
-}
+  // if we need a readable event, then we need to do some reading.
+  var doRead = state.needReadable;
+  debug('need readable', doRead);
 
+  // if we currently have less than the highWaterMark, then also read some
+  if (state.length === 0 || state.length - n < state.highWaterMark) {
+    doRead = true;
+    debug('length less than watermark', doRead);
+  }
 
+  // however, if we've ended, then there's no point, and if we're already
+  // reading, then it's unnecessary.
+  if (state.ended || state.reading) {
+    doRead = false;
+    debug('reading or ended', doRead);
+  } else if (doRead) {
+    debug('do read');
+    state.reading = true;
+    state.sync = true;
+    // if the length is currently zero, then we *need* a readable event.
+    if (state.length === 0) state.needReadable = true;
+    // call internal read method
+    this._read(state.highWaterMark);
+    state.sync = false;
+    // If _read pushed data synchronously, then `reading` will be false,
+    // and we need to re-evaluate how much data we can return to the user.
+    if (!state.reading) n = howMuchToRead(nOrig, state);
+  }
 
-function stringify(queryObj, removeEmptyQueries)
-{
-       var count = 0;
-       var str = "";
-       
-       for (var i in queryObj)
-       {
-               if ( i!=="" && hasOwnProperty.call(queryObj, i)===true )
-               {
-                       var value = queryObj[i];
-                       
-                       if (value !== "" || !removeEmptyQueries)
-                       {
-                               str += (++count===1) ? "?" : "&";
-                               
-                               i = encodeURIComponent(i);
-                               
-                               if (value !== "")
-                               {
-                                       str += i +"="+ encodeURIComponent(value).replace(/%20/g,"+");
-                               }
-                               else
-                               {
-                                       str += i;
-                               }
-                       }
-               }
-       }
-       
-       return str;
-}
+  var ret;
+  if (n > 0) ret = fromList(n, state);else ret = null;
 
+  if (ret === null) {
+    state.needReadable = true;
+    n = 0;
+  } else {
+    state.length -= n;
+  }
 
+  if (state.length === 0) {
+    // If we have nothing in the buffer, then we want to know
+    // as soon as we *do* get something into the buffer.
+    if (!state.ended) state.needReadable = true;
 
-module.exports = parseQuery;
+    // If we tried to read() past the EOF, then emit end on the next tick.
+    if (nOrig !== n && state.ended) endReadable(this);
+  }
 
-},{}],136:[function(require,module,exports){
-"use strict";
+  if (ret !== null) this.emit('data', ret);
 
-var _parseUrl = require("url").parse;
+  return ret;
+};
 
+function onEofChunk(stream, state) {
+  if (state.ended) return;
+  if (state.decoder) {
+    var chunk = state.decoder.end();
+    if (chunk && chunk.length) {
+      state.buffer.push(chunk);
+      state.length += state.objectMode ? 1 : chunk.length;
+    }
+  }
+  state.ended = true;
 
+  // emit 'readable' now to make sure it gets picked up.
+  emitReadable(stream);
+}
 
-/*
-       Customize the URL object that Node generates
-       because:
-       
-       * necessary data for later
-       * urlObj.host is useless
-       * urlObj.hostname is too long
-       * urlObj.path is useless
-       * urlObj.pathname is too long
-       * urlObj.protocol is inaccurate; should be called "scheme"
-       * urlObj.search is mostly useless
-*/
-function clean(urlObj)
-{
-       var scheme = urlObj.protocol;
-       
-       if (scheme)
-       {
-               // Remove ":" suffix
-               if (scheme.indexOf(":") === scheme.length-1)
-               {
-                       scheme = scheme.substr(0, scheme.length-1);
-               }
-       }
-       
-       urlObj.host =
-       {
-               // TODO :: unescape(encodeURIComponent(s)) ? ... http://ecmanaut.blogspot.ca/2006/07/encoding-decoding-utf8-in-javascript.html
-               full: urlObj.hostname,
-               stripped: null
-       };
-       
-       urlObj.path =
-       {
-               absolute:
-               {
-                       array: null,
-                       string: urlObj.pathname
-               },
-               relative:
-               {
-                       array: null,
-                       string: null
-               }
-       };
-       
-       urlObj.query =
-       {
-               object: urlObj.query,
-               string:
-               {
-                       full: null,
-                       stripped: null
-               }
-       };
-       
-       urlObj.extra =
-       {
-               hrefInfo:
-               {
-                       minimumPathOnly: null,
-                       minimumResourceOnly: null,
-                       minimumQueryOnly: null,
-                       minimumHashOnly: null,
-                       empty: null,
-                       
-                       separatorOnlyQuery: urlObj.search==="?"
-               },
-               portIsDefault: null,
-               relation:
-               {
-                       maximumScheme: null,
-                       maximumAuth: null,
-                       maximumHost: null,
-                       maximumPort: null,
-                       maximumPath: null,
-                       maximumResource: null,
-                       maximumQuery: null,
-                       maximumHash: null,
-                       
-                       minimumScheme: null,
-                       minimumAuth: null,
-                       minimumHost: null,
-                       minimumPort: null,
-                       minimumPath: null,
-                       minimumResource: null,
-                       minimumQuery: null,
-                       minimumHash: null,
-                       
-                       overridesQuery: null
-               },
-               resourceIsIndex: null,
-               slashes: urlObj.slashes
-       };
-       
-       urlObj.resource = null;
-       urlObj.scheme = scheme;
-       delete urlObj.hostname;
-       delete urlObj.pathname;
-       delete urlObj.protocol;
-       delete urlObj.search;
-       delete urlObj.slashes;
-       
-       return urlObj;
+// Don't emit readable right away in sync mode, because this can trigger
+// another read() call => stack overflow.  This way, it might trigger
+// a nextTick recursion warning, but that's not so bad.
+function emitReadable(stream) {
+  var state = stream._readableState;
+  state.needReadable = false;
+  if (!state.emittedReadable) {
+    debug('emitReadable', state.flowing);
+    state.emittedReadable = true;
+    if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
+  }
 }
 
+function emitReadable_(stream) {
+  debug('emit readable');
+  stream.emit('readable');
+  flow(stream);
+}
 
+// at this point, the user has presumably seen the 'readable' event,
+// and called read() to consume some data.  that may have triggered
+// in turn another _read(n) call, in which case reading = true if
+// it's in progress.
+// However, if we're not ended, or reading, and the length < hwm,
+// then go ahead and try to read some more preemptively.
+function maybeReadMore(stream, state) {
+  if (!state.readingMore) {
+    state.readingMore = true;
+    pna.nextTick(maybeReadMore_, stream, state);
+  }
+}
 
-function validScheme(url, options)
-{
-       var valid = true;
-       
-       options.rejectedSchemes.every( function(rejectedScheme)
-       {
-               valid = !(url.indexOf(rejectedScheme+":") === 0);
-               
-               // Break loop
-               return valid;
-       });
-       
-       return valid;
+function maybeReadMore_(stream, state) {
+  var len = state.length;
+  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
+    debug('maybeReadMore read 0');
+    stream.read(0);
+    if (len === state.length)
+      // didn't get any data, stop spinning.
+      break;else len = state.length;
+  }
+  state.readingMore = false;
 }
 
+// abstract method.  to be overridden in specific implementation classes.
+// call cb(er, data) where data is <= n in length.
+// for virtual (non-string, non-buffer) streams, "length" is somewhat
+// arbitrary, and perhaps not very meaningful.
+Readable.prototype._read = function (n) {
+  this.emit('error', new Error('_read() is not implemented'));
+};
+
+Readable.prototype.pipe = function (dest, pipeOpts) {
+  var src = this;
+  var state = this._readableState;
+
+  switch (state.pipesCount) {
+    case 0:
+      state.pipes = dest;
+      break;
+    case 1:
+      state.pipes = [state.pipes, dest];
+      break;
+    default:
+      state.pipes.push(dest);
+      break;
+  }
+  state.pipesCount += 1;
+  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
+
+  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
 
+  var endFn = doEnd ? onend : unpipe;
+  if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);
 
-function parseUrlString(url, options)
-{
-       if ( validScheme(url,options) )
-       {
-               return clean( _parseUrl(url, true, options.slashesDenoteHost) );
-       }
-       else
-       {
-               return {href:url, valid:false};
-       }
-}
+  dest.on('unpipe', onunpipe);
+  function onunpipe(readable, unpipeInfo) {
+    debug('onunpipe');
+    if (readable === src) {
+      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
+        unpipeInfo.hasUnpiped = true;
+        cleanup();
+      }
+    }
+  }
+
+  function onend() {
+    debug('onend');
+    dest.end();
+  }
+
+  // when the dest drains, it reduces the awaitDrain counter
+  // on the source.  This would be more elegant with a .once()
+  // handler in flow(), but adding and removing repeatedly is
+  // too slow.
+  var ondrain = pipeOnDrain(src);
+  dest.on('drain', ondrain);
+
+  var cleanedUp = false;
+  function cleanup() {
+    debug('cleanup');
+    // cleanup event handlers once the pipe is broken
+    dest.removeListener('close', onclose);
+    dest.removeListener('finish', onfinish);
+    dest.removeListener('drain', ondrain);
+    dest.removeListener('error', onerror);
+    dest.removeListener('unpipe', onunpipe);
+    src.removeListener('end', onend);
+    src.removeListener('end', unpipe);
+    src.removeListener('data', ondata);
 
+    cleanedUp = true;
 
+    // if the reader is waiting for a drain event from this
+    // specific writer, then it would cause it to never start
+    // flowing again.
+    // So, if this is awaiting a drain, then we just call it now.
+    // If we don't know, then assume that we are waiting for one.
+    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
+  }
 
-module.exports = parseUrlString;
+  // If the user pushes more data while we're writing to dest then we'll end up
+  // in ondata again. However, we only want to increase awaitDrain once because
+  // dest will only emit one 'drain' event for the multiple writes.
+  // => Introduce a guard on increasing awaitDrain.
+  var increasedAwaitDrain = false;
+  src.on('data', ondata);
+  function ondata(chunk) {
+    debug('ondata');
+    increasedAwaitDrain = false;
+    var ret = dest.write(chunk);
+    if (false === ret && !increasedAwaitDrain) {
+      // If the user unpiped during `dest.write()`, it is possible
+      // to get stuck in a permanently paused state if that write
+      // also returned false.
+      // => Check whether `dest` is still a piping destination.
+      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
+        debug('false write response, pause', src._readableState.awaitDrain);
+        src._readableState.awaitDrain++;
+        increasedAwaitDrain = true;
+      }
+      src.pause();
+    }
+  }
 
-},{"url":162}],137:[function(require,module,exports){
-"use strict";
+  // if the dest has an error, then stop piping into it.
+  // however, don't suppress the throwing behavior for this.
+  function onerror(er) {
+    debug('onerror', er);
+    unpipe();
+    dest.removeListener('error', onerror);
+    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
+  }
 
-var findRelation = require("./findRelation");
-var objUtils     = require("../util/object");
-var pathUtils    = require("../util/path");
+  // Make sure our error handler is attached before userland ones.
+  prependListener(dest, 'error', onerror);
 
+  // Both close and finish should trigger unpipe, but only once.
+  function onclose() {
+    dest.removeListener('finish', onfinish);
+    unpipe();
+  }
+  dest.once('close', onclose);
+  function onfinish() {
+    debug('onfinish');
+    dest.removeListener('close', onclose);
+    unpipe();
+  }
+  dest.once('finish', onfinish);
 
+  function unpipe() {
+    debug('unpipe');
+    src.unpipe(dest);
+  }
 
-function absolutize(urlObj, siteUrlObj, options)
-{
-       findRelation.upToPath(urlObj, siteUrlObj, options);
-       
-       // Fill in relative URLs
-       if (urlObj.extra.relation.minimumScheme) urlObj.scheme = siteUrlObj.scheme;
-       if (urlObj.extra.relation.minimumAuth)   urlObj.auth   = siteUrlObj.auth;
-       if (urlObj.extra.relation.minimumHost)   urlObj.host   = objUtils.clone(siteUrlObj.host);
-       if (urlObj.extra.relation.minimumPort)   copyPort(urlObj, siteUrlObj);
-       if (urlObj.extra.relation.minimumScheme) copyPath(urlObj, siteUrlObj);
-       
-       // Check remaining relativeness now that path has been copied and/or resolved
-       findRelation.pathOn(urlObj, siteUrlObj, options);
-       
-       // Fill in relative URLs
-       if (urlObj.extra.relation.minimumResource) copyResource(urlObj, siteUrlObj);
-       if (urlObj.extra.relation.minimumQuery)    urlObj.query = objUtils.clone(siteUrlObj.query);
-       if (urlObj.extra.relation.minimumHash)     urlObj.hash  = siteUrlObj.hash;
-}
+  // tell the dest that it's being piped to
+  dest.emit('pipe', src);
 
+  // start the flow if it hasn't been started already.
+  if (!state.flowing) {
+    debug('pipe resume');
+    src.resume();
+  }
 
+  return dest;
+};
 
-/*
-       Get an absolute path that's relative to site url.
-*/
-function copyPath(urlObj, siteUrlObj)
-{
-       if (urlObj.extra.relation.maximumHost || !urlObj.extra.hrefInfo.minimumResourceOnly)
-       {
-               var pathArray = urlObj.path.absolute.array;
-               var pathString = "/";
-               
-               // If not erroneous URL
-               if (pathArray)
-               {
-                       // If is relative path
-                       if (urlObj.extra.hrefInfo.minimumPathOnly && urlObj.path.absolute.string.indexOf("/")!==0)
-                       {
-                               // Append path to site path
-                               pathArray = siteUrlObj.path.absolute.array.concat(pathArray);
-                       }
-                       
-                       pathArray   = pathUtils.resolveDotSegments(pathArray);
-                       pathString += pathUtils.join(pathArray);
-               }
-               else
-               {
-                       pathArray = [];
-               }
-               
-               urlObj.path.absolute.array  = pathArray;
-               urlObj.path.absolute.string = pathString;
-       }
-       else
-       {
-               // Resource-, query- or hash-only or empty
-               urlObj.path = objUtils.clone(siteUrlObj.path);
-       }
+function pipeOnDrain(src) {
+  return function () {
+    var state = src._readableState;
+    debug('pipeOnDrain', state.awaitDrain);
+    if (state.awaitDrain) state.awaitDrain--;
+    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
+      state.flowing = true;
+      flow(src);
+    }
+  };
 }
 
+Readable.prototype.unpipe = function (dest) {
+  var state = this._readableState;
+  var unpipeInfo = { hasUnpiped: false };
 
+  // if we're not piping anywhere, then do nothing.
+  if (state.pipesCount === 0) return this;
 
-function copyPort(urlObj, siteUrlObj)
-{
-       urlObj.port = siteUrlObj.port;
-       
-       urlObj.extra.portIsDefault = siteUrlObj.extra.portIsDefault;
-}
-
+  // just one destination.  most common case.
+  if (state.pipesCount === 1) {
+    // passed in one, but it's not the right one.
+    if (dest && dest !== state.pipes) return this;
 
+    if (!dest) dest = state.pipes;
 
-function copyResource(urlObj, siteUrlObj)
-{
-       urlObj.resource = siteUrlObj.resource;
-       
-       urlObj.extra.resourceIsIndex = siteUrlObj.extra.resourceIsIndex;
-}
+    // got a match.
+    state.pipes = null;
+    state.pipesCount = 0;
+    state.flowing = false;
+    if (dest) dest.emit('unpipe', this, unpipeInfo);
+    return this;
+  }
 
+  // slow case. multiple pipe destinations.
 
+  if (!dest) {
+    // remove all.
+    var dests = state.pipes;
+    var len = state.pipesCount;
+    state.pipes = null;
+    state.pipesCount = 0;
+    state.flowing = false;
 
-module.exports = absolutize;
+    for (var i = 0; i < len; i++) {
+      dests[i].emit('unpipe', this, unpipeInfo);
+    }return this;
+  }
 
-},{"../util/object":141,"../util/path":142,"./findRelation":138}],138:[function(require,module,exports){
-"use strict";
+  // try to find the right one.
+  var index = indexOf(state.pipes, dest);
+  if (index === -1) return this;
 
-function findRelation_upToPath(urlObj, siteUrlObj, options)
-{
-       // Path- or root-relative URL
-       var pathOnly = urlObj.extra.hrefInfo.minimumPathOnly;
-       
-       // Matching scheme, scheme-relative or path-only
-       var minimumScheme = (urlObj.scheme===siteUrlObj.scheme || !urlObj.scheme);
-       
-       // Matching auth, ignoring auth or path-only
-       var minimumAuth = minimumScheme && (urlObj.auth===siteUrlObj.auth || options.removeAuth || pathOnly);
-       
-       // Matching host or path-only
-       var www = options.ignore_www ? "stripped" : "full";
-       var minimumHost = minimumAuth && (urlObj.host[www]===siteUrlObj.host[www] || pathOnly);
-       
-       // Matching port or path-only
-       var minimumPort = minimumHost && (urlObj.port===siteUrlObj.port || pathOnly);
-       
-       urlObj.extra.relation.minimumScheme = minimumScheme;
-       urlObj.extra.relation.minimumAuth   = minimumAuth;
-       urlObj.extra.relation.minimumHost   = minimumHost;
-       urlObj.extra.relation.minimumPort   = minimumPort;
-       
-       urlObj.extra.relation.maximumScheme = !minimumScheme || minimumScheme && !minimumAuth;
-       urlObj.extra.relation.maximumAuth   = !minimumScheme || minimumScheme && !minimumHost;
-       urlObj.extra.relation.maximumHost   = !minimumScheme || minimumScheme && !minimumPort;
-}
+  state.pipes.splice(index, 1);
+  state.pipesCount -= 1;
+  if (state.pipesCount === 1) state.pipes = state.pipes[0];
 
+  dest.emit('unpipe', this, unpipeInfo);
 
+  return this;
+};
 
-function findRelation_pathOn(urlObj, siteUrlObj, options)
-{
-       var queryOnly = urlObj.extra.hrefInfo.minimumQueryOnly;
-       var hashOnly  = urlObj.extra.hrefInfo.minimumHashOnly;
-       var empty     = urlObj.extra.hrefInfo.empty;    // not required, but self-documenting
-       
-       // From upToPath()
-       var minimumPort   = urlObj.extra.relation.minimumPort;
-       var minimumScheme = urlObj.extra.relation.minimumScheme;
-       
-       // Matching port and path
-       var minimumPath = minimumPort && urlObj.path.absolute.string===siteUrlObj.path.absolute.string;
-       
-       // Matching resource or query/hash-only or empty
-       var matchingResource = (urlObj.resource===siteUrlObj.resource || !urlObj.resource && siteUrlObj.extra.resourceIsIndex) || (options.removeDirectoryIndexes && urlObj.extra.resourceIsIndex && !siteUrlObj.resource);
-       var minimumResource = minimumPath && (matchingResource || queryOnly || hashOnly || empty);
-       
-       // Matching query or hash-only/empty
-       var query = options.removeEmptyQueries ? "stripped" : "full";
-       var urlQuery = urlObj.query.string[query];
-       var siteUrlQuery = siteUrlObj.query.string[query];
-       var minimumQuery = (minimumResource && !!urlQuery && urlQuery===siteUrlQuery) || ((hashOnly || empty) && !urlObj.extra.hrefInfo.separatorOnlyQuery);
-       
-       var minimumHash = minimumQuery && urlObj.hash===siteUrlObj.hash;
-       
-       urlObj.extra.relation.minimumPath     = minimumPath;
-       urlObj.extra.relation.minimumResource = minimumResource;
-       urlObj.extra.relation.minimumQuery    = minimumQuery;
-       urlObj.extra.relation.minimumHash     = minimumHash;
-       
-       urlObj.extra.relation.maximumPort     = !minimumScheme || minimumScheme && !minimumPath;
-       urlObj.extra.relation.maximumPath     = !minimumScheme || minimumScheme && !minimumResource;
-       urlObj.extra.relation.maximumResource = !minimumScheme || minimumScheme && !minimumQuery;
-       urlObj.extra.relation.maximumQuery    = !minimumScheme || minimumScheme && !minimumHash;
-       urlObj.extra.relation.maximumHash     = !minimumScheme || minimumScheme && !minimumHash;        // there's nothing after hash, so it's the same as maximumQuery
-       
-       // Matching path and/or resource with existing but non-matching site query
-       urlObj.extra.relation.overridesQuery  = minimumPath && urlObj.extra.relation.maximumResource && !minimumQuery && !!siteUrlQuery;
-}
+// set up data events if they are asked for
+// Ensure readable listeners eventually get something
+Readable.prototype.on = function (ev, fn) {
+  var res = Stream.prototype.on.call(this, ev, fn);
+
+  if (ev === 'data') {
+    // Start flowing on next tick if stream isn't explicitly paused
+    if (this._readableState.flowing !== false) this.resume();
+  } else if (ev === 'readable') {
+    var state = this._readableState;
+    if (!state.endEmitted && !state.readableListening) {
+      state.readableListening = state.needReadable = true;
+      state.emittedReadable = false;
+      if (!state.reading) {
+        pna.nextTick(nReadingNextTick, this);
+      } else if (state.length) {
+        emitReadable(this);
+      }
+    }
+  }
 
+  return res;
+};
+Readable.prototype.addListener = Readable.prototype.on;
 
+function nReadingNextTick(self) {
+  debug('readable nexttick read 0');
+  self.read(0);
+}
 
-module.exports =
-{
-       pathOn:   findRelation_pathOn,
-       upToPath: findRelation_upToPath
+// pause() and resume() are remnants of the legacy readable stream API
+// If the user uses them, then switch into old mode.
+Readable.prototype.resume = function () {
+  var state = this._readableState;
+  if (!state.flowing) {
+    debug('resume');
+    state.flowing = true;
+    resume(this, state);
+  }
+  return this;
 };
 
-},{}],139:[function(require,module,exports){
-"use strict";
+function resume(stream, state) {
+  if (!state.resumeScheduled) {
+    state.resumeScheduled = true;
+    pna.nextTick(resume_, stream, state);
+  }
+}
 
-var absolutize = require("./absolutize");
-var relativize = require("./relativize");
+function resume_(stream, state) {
+  if (!state.reading) {
+    debug('resume read 0');
+    stream.read(0);
+  }
 
+  state.resumeScheduled = false;
+  state.awaitDrain = 0;
+  stream.emit('resume');
+  flow(stream);
+  if (state.flowing && !state.reading) stream.read(0);
+}
 
+Readable.prototype.pause = function () {
+  debug('call pause flowing=%j', this._readableState.flowing);
+  if (false !== this._readableState.flowing) {
+    debug('pause');
+    this._readableState.flowing = false;
+    this.emit('pause');
+  }
+  return this;
+};
 
-function relateUrl(siteUrlObj, urlObj, options)
-{
-       absolutize(urlObj, siteUrlObj, options);
-       relativize(urlObj, siteUrlObj, options);
-       
-       return urlObj;
+function flow(stream) {
+  var state = stream._readableState;
+  debug('flow', state.flowing);
+  while (state.flowing && stream.read() !== null) {}
 }
 
+// wrap an old-style stream as the async data source.
+// This is *not* part of the readable stream interface.
+// It is an ugly unfortunate mess of history.
+Readable.prototype.wrap = function (stream) {
+  var _this = this;
 
+  var state = this._readableState;
+  var paused = false;
 
-module.exports = relateUrl;
+  stream.on('end', function () {
+    debug('wrapped end');
+    if (state.decoder && !state.ended) {
+      var chunk = state.decoder.end();
+      if (chunk && chunk.length) _this.push(chunk);
+    }
 
-},{"./absolutize":137,"./relativize":140}],140:[function(require,module,exports){
-"use strict";
+    _this.push(null);
+  });
 
-var pathUtils = require("../util/path");
+  stream.on('data', function (chunk) {
+    debug('wrapped data');
+    if (state.decoder) chunk = state.decoder.write(chunk);
 
+    // don't skip over falsy values in objectMode
+    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
 
+    var ret = _this.push(chunk);
+    if (!ret) {
+      paused = true;
+      stream.pause();
+    }
+  });
 
-/*
-       Get a path relative to the site path.
-*/
-function relatePath(absolutePath, siteAbsolutePath)
-{
-       var relativePath = [];
-       
-       // At this point, it's related to the host/port
-       var related = true;
-       var parentIndex = -1;
-       
-       // Find parents
-       siteAbsolutePath.forEach( function(siteAbsoluteDir, i)
-       {
-               if (related)
-               {
-                       if (absolutePath[i] !== siteAbsoluteDir)
-                       {
-                               related = false;
-                       }
-                       else
-                       {
-                               parentIndex = i;
-                       }
-               }
-               
-               if (!related)
-               {
-                       // Up one level
-                       relativePath.push("..");
-               }
-       });
-       
-       // Form path
-       absolutePath.forEach( function(dir, i)
-       {
-               if (i > parentIndex)
-               {
-                       relativePath.push(dir);
-               }
-       });
-       
-       return relativePath;
-}
+  // proxy all the other methods.
+  // important when wrapping filters and duplexes.
+  for (var i in stream) {
+    if (this[i] === undefined && typeof stream[i] === 'function') {
+      this[i] = function (method) {
+        return function () {
+          return stream[method].apply(stream, arguments);
+        };
+      }(i);
+    }
+  }
+
+  // proxy certain important events.
+  for (var n = 0; n < kProxyEvents.length; n++) {
+    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
+  }
 
+  // when we try to consume some more bytes, simply unpause the
+  // underlying stream.
+  this._read = function (n) {
+    debug('wrapped _read', n);
+    if (paused) {
+      paused = false;
+      stream.resume();
+    }
+  };
 
+  return this;
+};
 
-function relativize(urlObj, siteUrlObj, options)
-{
-       if (urlObj.extra.relation.minimumScheme)
-       {
-               var pathArray = relatePath(urlObj.path.absolute.array, siteUrlObj.path.absolute.array);
-               
-               urlObj.path.relative.array  = pathArray;
-               urlObj.path.relative.string = pathUtils.join(pathArray);
-       }
-}
+Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
+  // making it explicit this property is not enumerable
+  // because otherwise some prototype manipulation in
+  // userland will fail
+  enumerable: false,
+  get: function () {
+    return this._readableState.highWaterMark;
+  }
+});
 
+// exposed for testing purposes only.
+Readable._fromList = fromList;
 
+// Pluck off n bytes from an array of buffers.
+// Length is the combined lengths of all the buffers in the list.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function fromList(n, state) {
+  // nothing buffered
+  if (state.length === 0) return null;
 
-module.exports = relativize;
+  var ret;
+  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
+    // read it all, truncate the list
+    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
+    state.buffer.clear();
+  } else {
+    // read part of list
+    ret = fromListPartial(n, state.buffer, state.decoder);
+  }
 
-},{"../util/path":142}],141:[function(require,module,exports){
-"use strict";
+  return ret;
+}
 
-/*
-       Deep-clone an object.
-*/
-function clone(obj)
-{
-       if (obj instanceof Object)
-       {
-               var clonedObj = (obj instanceof Array) ? [] : {};
-               
-               for (var i in obj)
-               {
-                       if ( obj.hasOwnProperty(i) )
-                       {
-                               clonedObj[i] = clone( obj[i] );
-                       }
-               }
-               
-               return clonedObj;
-       }
-       
-       return obj;
+// Extracts only enough buffered data to satisfy the amount requested.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function fromListPartial(n, list, hasStrings) {
+  var ret;
+  if (n < list.head.data.length) {
+    // slice is the same for buffers and strings
+    ret = list.head.data.slice(0, n);
+    list.head.data = list.head.data.slice(n);
+  } else if (n === list.head.data.length) {
+    // first chunk is a perfect match
+    ret = list.shift();
+  } else {
+    // result spans more than one buffer
+    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
+  }
+  return ret;
 }
 
-
-
-/*
-       https://github.com/jonschlinkert/is-plain-object
-*/
-function isPlainObject(obj)
-{
-       return !!obj && typeof obj==="object" && obj.constructor===Object;
+// Copies a specified amount of characters from the list of buffered data
+// chunks.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function copyFromBufferString(n, list) {
+  var p = list.head;
+  var c = 1;
+  var ret = p.data;
+  n -= ret.length;
+  while (p = p.next) {
+    var str = p.data;
+    var nb = n > str.length ? str.length : n;
+    if (nb === str.length) ret += str;else ret += str.slice(0, n);
+    n -= nb;
+    if (n === 0) {
+      if (nb === str.length) {
+        ++c;
+        if (p.next) list.head = p.next;else list.head = list.tail = null;
+      } else {
+        list.head = p;
+        p.data = str.slice(nb);
+      }
+      break;
+    }
+    ++c;
+  }
+  list.length -= c;
+  return ret;
 }
 
-
-
-/*
-       Shallow-merge two objects.
-*/
-function shallowMerge(target, source)
-{
-       if (target instanceof Object && source instanceof Object)
-       {
-               for (var i in source)
-               {
-                       if ( source.hasOwnProperty(i) )
-                       {
-                               target[i] = source[i];
-                       }
-               }
-       }
-       
-       return target;
+// Copies a specified amount of bytes from the list of buffered data chunks.
+// This function is designed to be inlinable, so please take care when making
+// changes to the function body.
+function copyFromBuffer(n, list) {
+  var ret = Buffer.allocUnsafe(n);
+  var p = list.head;
+  var c = 1;
+  p.data.copy(ret);
+  n -= p.data.length;
+  while (p = p.next) {
+    var buf = p.data;
+    var nb = n > buf.length ? buf.length : n;
+    buf.copy(ret, ret.length - n, 0, nb);
+    n -= nb;
+    if (n === 0) {
+      if (nb === buf.length) {
+        ++c;
+        if (p.next) list.head = p.next;else list.head = list.tail = null;
+      } else {
+        list.head = p;
+        p.data = buf.slice(nb);
+      }
+      break;
+    }
+    ++c;
+  }
+  list.length -= c;
+  return ret;
 }
 
+function endReadable(stream) {
+  var state = stream._readableState;
 
+  // If we get here before consuming all the bytes, then that is a
+  // bug in node.  Should never happen.
+  if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
 
-module.exports =
-{
-       clone: clone,
-       isPlainObject: isPlainObject,
-       shallowMerge: shallowMerge
-};
+  if (!state.endEmitted) {
+    state.ended = true;
+    pna.nextTick(endReadableNT, state, stream);
+  }
+}
 
-},{}],142:[function(require,module,exports){
-"use strict";
+function endReadableNT(state, stream) {
+  // Check that we didn't get one last unshift.
+  if (!state.endEmitted && state.length === 0) {
+    state.endEmitted = true;
+    stream.readable = false;
+    stream.emit('end');
+  }
+}
 
-function joinPath(pathArray)
-{
-       if (pathArray.length > 0)
-       {
-               return pathArray.join("/") + "/";
-       }
-       else
-       {
-               return "";
-       }
+function indexOf(xs, x) {
+  for (var i = 0, l = xs.length; i < l; i++) {
+    if (xs[i] === x) return i;
+  }
+  return -1;
 }
+}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"./_stream_duplex":129,"./internal/streams/BufferList":134,"./internal/streams/destroy":135,"./internal/streams/stream":136,"_process":124,"core-util-is":113,"events":114,"inherits":118,"isarray":120,"process-nextick-args":123,"safe-buffer":155,"string_decoder/":160,"util":109}],132:[function(require,module,exports){
+// 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.
 
+// a transform stream is a readable/writable stream where you do
+// something with the data.  Sometimes it's called a "filter",
+// but that's not a great name for it, since that implies a thing where
+// some bits pass through, and others are simply ignored.  (That would
+// be a valid example of a transform, of course.)
+//
+// While the output is causally related to the input, it's not a
+// necessarily symmetric or synchronous transformation.  For example,
+// a zlib stream might take multiple plain-text writes(), and then
+// emit a single compressed chunk some time in the future.
+//
+// Here's how this works:
+//
+// The Transform stream has all the aspects of the readable and writable
+// stream classes.  When you write(chunk), that calls _write(chunk,cb)
+// internally, and returns false if there's a lot of pending writes
+// buffered up.  When you call read(), that calls _read(n) until
+// there's enough pending readable data buffered up.
+//
+// In a transform stream, the written data is placed in a buffer.  When
+// _read(n) is called, it transforms the queued up data, calling the
+// buffered _write cb's as it consumes chunks.  If consuming a single
+// written chunk would result in multiple output chunks, then the first
+// outputted bit calls the readcb, and subsequent chunks just go into
+// the read buffer, and will cause it to emit 'readable' if necessary.
+//
+// This way, back-pressure is actually determined by the reading side,
+// since _read has to be called to start processing a new chunk.  However,
+// a pathological inflate type of transform can cause excessive buffering
+// here.  For example, imagine a stream where every byte of input is
+// interpreted as an integer from 0-255, and then results in that many
+// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in
+// 1kb of data being output.  In this case, you could write a very small
+// amount of input, and end up with a very large amount of output.  In
+// such a pathological inflating mechanism, there'd be no way to tell
+// the system to stop doing the transform.  A single 4MB write could
+// cause the system to run out of memory.
+//
+// However, even in such a pathological case, only a single written chunk
+// would be consumed, and then the rest would wait (un-transformed) until
+// the results of the previous transformed chunk were consumed.
 
+'use strict';
 
-function resolveDotSegments(pathArray)
-{
-       var pathAbsolute = [];
-       
-       pathArray.forEach( function(dir)
-       {
-               if (dir !== "..")
-               {
-                       if (dir !== ".")
-                       {
-                               pathAbsolute.push(dir);
-                       }
-               }
-               else
-               {
-                       // Remove parent
-                       if (pathAbsolute.length > 0)
-                       {
-                               pathAbsolute.splice(pathAbsolute.length-1, 1);
-                       }
-               }
-       });
-       
-       return pathAbsolute;
-}
+module.exports = Transform;
 
+var Duplex = require('./_stream_duplex');
 
+/*<replacement>*/
+var util = require('core-util-is');
+util.inherits = require('inherits');
+/*</replacement>*/
 
-module.exports =
-{
-       join: joinPath,
-       resolveDotSegments: resolveDotSegments
-};
+util.inherits(Transform, Duplex);
 
-},{}],143:[function(require,module,exports){
-/* eslint-disable node/no-deprecated-api */
-var buffer = require('buffer')
-var Buffer = buffer.Buffer
+function afterTransform(er, data) {
+  var ts = this._transformState;
+  ts.transforming = false;
 
-// alternative to using Object.keys for old browsers
-function copyProps (src, dst) {
-  for (var key in src) {
-    dst[key] = src[key]
+  var cb = ts.writecb;
+
+  if (!cb) {
+    return this.emit('error', new Error('write callback called multiple times'));
   }
-}
-if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
-  module.exports = buffer
-} else {
-  // Copy properties from require('buffer')
-  copyProps(buffer, exports)
-  exports.Buffer = SafeBuffer
-}
 
-function SafeBuffer (arg, encodingOrOffset, length) {
-  return Buffer(arg, encodingOrOffset, length)
-}
+  ts.writechunk = null;
+  ts.writecb = null;
+
+  if (data != null) // single equals check for both `null` and `undefined`
+    this.push(data);
 
-// Copy static methods from Buffer
-copyProps(Buffer, SafeBuffer)
+  cb(er);
 
-SafeBuffer.from = function (arg, encodingOrOffset, length) {
-  if (typeof arg === 'number') {
-    throw new TypeError('Argument must not be a number')
+  var rs = this._readableState;
+  rs.reading = false;
+  if (rs.needReadable || rs.length < rs.highWaterMark) {
+    this._read(rs.highWaterMark);
   }
-  return Buffer(arg, encodingOrOffset, length)
 }
 
-SafeBuffer.alloc = function (size, fill, encoding) {
-  if (typeof size !== 'number') {
-    throw new TypeError('Argument must be a number')
-  }
-  var buf = Buffer(size)
-  if (fill !== undefined) {
-    if (typeof encoding === 'string') {
-      buf.fill(fill, encoding)
-    } else {
-      buf.fill(fill)
-    }
-  } else {
-    buf.fill(0)
-  }
-  return buf
-}
+function Transform(options) {
+  if (!(this instanceof Transform)) return new Transform(options);
 
-SafeBuffer.allocUnsafe = function (size) {
-  if (typeof size !== 'number') {
-    throw new TypeError('Argument must be a number')
-  }
-  return Buffer(size)
-}
+  Duplex.call(this, options);
 
-SafeBuffer.allocUnsafeSlow = function (size) {
-  if (typeof size !== 'number') {
-    throw new TypeError('Argument must be a number')
-  }
-  return buffer.SlowBuffer(size)
-}
+  this._transformState = {
+    afterTransform: afterTransform.bind(this),
+    needTransform: false,
+    transforming: false,
+    writecb: null,
+    writechunk: null,
+    writeencoding: null
+  };
 
-},{"buffer":4}],144:[function(require,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
- */
+  // start out asking for a readable event once data is transformed.
+  this._readableState.needReadable = true;
 
-var util = require('./util');
-var has = Object.prototype.hasOwnProperty;
-var hasNativeMap = typeof Map !== "undefined";
+  // we have implemented the _read method, and done the other things
+  // that Readable wants before the first _read call, so unset the
+  // sync guard flag.
+  this._readableState.sync = false;
 
-/**
- * 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);
+  if (options) {
+    if (typeof options.transform === 'function') this._transform = options.transform;
+
+    if (typeof options.flush === 'function') this._flush = options.flush;
+  }
+
+  // When the writable side finishes, then flush out anything remaining.
+  this.on('prefinish', prefinish);
 }
 
-/**
- * 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);
+function prefinish() {
+  var _this = this;
+
+  if (typeof this._flush === 'function') {
+    this._flush(function (er, data) {
+      done(_this, er, data);
+    });
+  } else {
+    done(this, null, null);
   }
-  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;
+Transform.prototype.push = function (chunk, encoding) {
+  this._transformState.needTransform = false;
+  return Duplex.prototype.push.call(this, chunk, encoding);
 };
 
-/**
- * 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;
-    }
-  }
+// This is the part where you do stuff!
+// override this function in implementation classes.
+// 'chunk' is an input chunk.
+//
+// Call `push(newChunk)` to pass along transformed output
+// to the readable side.  You may call 'push' zero or more times.
+//
+// Call `cb(err)` when you are done with this chunk.  If you pass
+// an error, then that'll put the hurt on the whole operation.  If you
+// never call cb(), then you'll never get another chunk.
+Transform.prototype._transform = function (chunk, encoding, cb) {
+  throw new Error('_transform() is not implemented');
 };
 
-/**
- * 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);
+Transform.prototype._write = function (chunk, encoding, cb) {
+  var ts = this._transformState;
+  ts.writecb = cb;
+  ts.writechunk = chunk;
+  ts.writeencoding = encoding;
+  if (!ts.transforming) {
+    var rs = this._readableState;
+    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
   }
 };
 
-/**
- * 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;
-    }
+// Doesn't matter what the args are here.
+// _transform does all the work.
+// That we got here means that the readable side wants more data.
+Transform.prototype._read = function (n) {
+  var ts = this._transformState;
+
+  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
+    ts.transforming = true;
+    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
   } else {
-    var sStr = util.toSetString(aStr);
-    if (has.call(this._set, sStr)) {
-      return this._set[sStr];
-    }
+    // mark that we need a transform, so that any data that comes in
+    // will get processed, now that we've asked for it.
+    ts.needTransform = true;
   }
-
-  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);
-};
+Transform.prototype._destroy = function (err, cb) {
+  var _this2 = this;
 
-/**
- * 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();
+  Duplex.prototype._destroy.call(this, err, function (err2) {
+    cb(err2);
+    _this2.emit('close');
+  });
 };
 
-exports.ArraySet = ArraySet;
-
-},{"./util":153}],145:[function(require,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
- *
- * 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.
- */
+function done(stream, er, data) {
+  if (er) return stream.emit('error', er);
 
-var base64 = require('./base64');
+  if (data != null) // single equals check for both `null` and `undefined`
+    stream.push(data);
 
-// 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.
+  // if there's nothing in the write buffer, then that means
+  // that nothing more will ever be provided
+  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
+
+  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
+
+  return stream.push(null);
+}
+},{"./_stream_duplex":129,"core-util-is":113,"inherits":118}],133:[function(require,module,exports){
+(function (process,global,setImmediate){
+// Copyright Joyent, Inc. and other Node contributors.
 //
-//   Continuation
-//   |    Sign
-//   |    |
-//   V    V
-//   101011
+// 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 VLQ_BASE_SHIFT = 5;
+// A bit simpler than readable streams.
+// Implement an async ._write(chunk, encoding, cb), and it'll handle all
+// the drain event emission and buffering.
 
-// binary: 100000
-var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+'use strict';
 
-// binary: 011111
-var VLQ_BASE_MASK = VLQ_BASE - 1;
+/*<replacement>*/
 
-// binary: 100000
-var VLQ_CONTINUATION_BIT = VLQ_BASE;
+var pna = require('process-nextick-args');
+/*</replacement>*/
 
-/**
- * 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;
+module.exports = Writable;
+
+/* <replacement> */
+function WriteReq(chunk, encoding, cb) {
+  this.chunk = chunk;
+  this.encoding = encoding;
+  this.callback = cb;
+  this.next = null;
 }
 
-/**
- * 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;
+// It seems a linked list but it is not
+// there will be only 2 of these for each stream
+function CorkedRequest(state) {
+  var _this = this;
+
+  this.next = null;
+  this.entry = null;
+  this.finish = function () {
+    onCorkedFinish(_this, state);
+  };
 }
+/* </replacement> */
 
-/**
- * Returns the base 64 VLQ encoded value.
- */
-exports.encode = function base64VLQ_encode(aValue) {
-  var encoded = "";
-  var digit;
+/*<replacement>*/
+var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
+/*</replacement>*/
 
-  var vlq = toVLQSigned(aValue);
+/*<replacement>*/
+var Duplex;
+/*</replacement>*/
 
-  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);
+Writable.WritableState = WritableState;
 
-  return encoded;
+/*<replacement>*/
+var util = require('core-util-is');
+util.inherits = require('inherits');
+/*</replacement>*/
+
+/*<replacement>*/
+var internalUtil = {
+  deprecate: require('util-deprecate')
 };
+/*</replacement>*/
 
-/**
- * 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;
+/*<replacement>*/
+var Stream = require('./internal/streams/stream');
+/*</replacement>*/
 
-  do {
-    if (aIndex >= strLen) {
-      throw new Error("Expected more digits in base 64 VLQ value.");
-    }
+/*<replacement>*/
 
-    digit = base64.decode(aStr.charCodeAt(aIndex++));
-    if (digit === -1) {
-      throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
-    }
+var Buffer = require('safe-buffer').Buffer;
+var OurUint8Array = global.Uint8Array || function () {};
+function _uint8ArrayToBuffer(chunk) {
+  return Buffer.from(chunk);
+}
+function _isUint8Array(obj) {
+  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
+}
 
-    continuation = !!(digit & VLQ_CONTINUATION_BIT);
-    digit &= VLQ_BASE_MASK;
-    result = result + (digit << shift);
-    shift += VLQ_BASE_SHIFT;
-  } while (continuation);
+/*</replacement>*/
 
-  aOutParam.value = fromVLQSigned(result);
-  aOutParam.rest = aIndex;
-};
+var destroyImpl = require('./internal/streams/destroy');
 
-},{"./base64":146}],146:[function(require,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
- */
+util.inherits(Writable, Stream);
 
-var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+function nop() {}
 
-/**
- * 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);
-};
+function WritableState(options, stream) {
+  Duplex = Duplex || require('./_stream_duplex');
 
-/**
- * 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'
+  options = options || {};
 
-  var littleA = 97;  // 'a'
-  var littleZ = 122; // 'z'
+  // Duplex streams are both readable and writable, but share
+  // the same options object.
+  // However, some cases require setting options to different
+  // values for the readable and the writable sides of the duplex stream.
+  // These options can be provided separately as readableXXX and writableXXX.
+  var isDuplex = stream instanceof Duplex;
 
-  var zero = 48;     // '0'
-  var nine = 57;     // '9'
+  // object stream flag to indicate whether or not this stream
+  // contains buffers or objects.
+  this.objectMode = !!options.objectMode;
 
-  var plus = 43;     // '+'
-  var slash = 47;    // '/'
+  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
 
-  var littleOffset = 26;
-  var numberOffset = 52;
+  // the point at which write() starts returning false
+  // Note: 0 is a valid value, means that we always return false if
+  // the entire buffer is not flushed immediately on write()
+  var hwm = options.highWaterMark;
+  var writableHwm = options.writableHighWaterMark;
+  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
+
+  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
+
+  // cast to ints.
+  this.highWaterMark = Math.floor(this.highWaterMark);
+
+  // if _final has been called
+  this.finalCalled = false;
+
+  // drain event flag.
+  this.needDrain = false;
+  // at the start of calling end()
+  this.ending = false;
+  // when end() has been called, and returned
+  this.ended = false;
+  // when 'finish' is emitted
+  this.finished = false;
+
+  // has it been destroyed
+  this.destroyed = false;
+
+  // should we decode strings into buffers before passing to _write?
+  // this is here so that some node-core streams can optimize string
+  // handling at a lower level.
+  var noDecode = options.decodeStrings === false;
+  this.decodeStrings = !noDecode;
+
+  // Crypto is kind of old and crusty.  Historically, its default string
+  // encoding is 'binary' so we have to make this configurable.
+  // Everything else in the universe uses 'utf8', though.
+  this.defaultEncoding = options.defaultEncoding || 'utf8';
+
+  // not an actual buffer we keep track of, but a measurement
+  // of how much we're waiting to get pushed to some underlying
+  // socket or file.
+  this.length = 0;
 
-  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
-  if (bigA <= charCode && charCode <= bigZ) {
-    return (charCode - bigA);
-  }
+  // a flag to see when we're in the middle of a write.
+  this.writing = false;
 
-  // 26 - 51: abcdefghijklmnopqrstuvwxyz
-  if (littleA <= charCode && charCode <= littleZ) {
-    return (charCode - littleA + littleOffset);
-  }
+  // when true all writes will be buffered until .uncork() call
+  this.corked = 0;
 
-  // 52 - 61: 0123456789
-  if (zero <= charCode && charCode <= nine) {
-    return (charCode - zero + numberOffset);
-  }
+  // a flag to be able to tell if the onwrite cb is called immediately,
+  // or on a later tick.  We set this to true at first, because any
+  // actions that shouldn't happen until "later" should generally also
+  // not happen before the first write call.
+  this.sync = true;
 
-  // 62: +
-  if (charCode == plus) {
-    return 62;
-  }
+  // a flag to know if we're processing previously buffered items, which
+  // may call the _write() callback in the same tick, so that we don't
+  // end up in an overlapped onwrite situation.
+  this.bufferProcessing = false;
 
-  // 63: /
-  if (charCode == slash) {
-    return 63;
-  }
+  // the callback that's passed to _write(chunk,cb)
+  this.onwrite = function (er) {
+    onwrite(stream, er);
+  };
 
-  // Invalid base64 digit.
-  return -1;
-};
+  // the callback that the user supplies to write(chunk,encoding,cb)
+  this.writecb = null;
 
-},{}],147:[function(require,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
- */
+  // the amount that is being written when _write is called.
+  this.writelen = 0;
 
-exports.GREATEST_LOWER_BOUND = 1;
-exports.LEAST_UPPER_BOUND = 2;
+  this.bufferedRequest = null;
+  this.lastBufferedRequest = null;
 
-/**
- * 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);
-    }
+  // number of pending user-supplied write callbacks
+  // this must be 0 before 'finish' can be emitted
+  this.pendingcb = 0;
 
-    // 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);
-    }
+  // emit prefinish if the only thing we're waiting for is _write cbs
+  // This is relevant for synchronous Transform streams
+  this.prefinished = false;
 
-    // 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;
-    }
-  }
-}
+  // True if the error was already emitted and should not be thrown again
+  this.errorEmitted = false;
 
-/**
- * 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;
-  }
+  // count buffered requests
+  this.bufferedRequestCount = 0;
 
-  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
-                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);
-  if (index < 0) {
-    return -1;
-  }
+  // allocate the first CorkedRequest, there is always
+  // one allocated and free to use, and we maintain at most two
+  this.corkedRequestsFree = new CorkedRequest(this);
+}
 
-  // 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;
+WritableState.prototype.getBuffer = function getBuffer() {
+  var current = this.bufferedRequest;
+  var out = [];
+  while (current) {
+    out.push(current);
+    current = current.next;
   }
-
-  return index;
+  return out;
 };
 
-},{}],148:[function(require,module,exports){
-/* -*- 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 = require('./util');
+(function () {
+  try {
+    Object.defineProperty(WritableState.prototype, 'buffer', {
+      get: internalUtil.deprecate(function () {
+        return this.getBuffer();
+      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
+    });
+  } catch (_) {}
+})();
 
-/**
- * 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;
-}
+// Test _writableState for inheritance to account for Duplex streams,
+// whose prototype chain only points to Readable.
+var realHasInstance;
+if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
+  realHasInstance = Function.prototype[Symbol.hasInstance];
+  Object.defineProperty(Writable, Symbol.hasInstance, {
+    value: function (object) {
+      if (realHasInstance.call(this, object)) return true;
+      if (this !== Writable) return false;
 
-/**
- * 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};
+      return object && object._writableState instanceof WritableState;
+    }
+  });
+} else {
+  realHasInstance = function (object) {
+    return object instanceof this;
+  };
 }
 
-/**
- * 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);
-  };
+function Writable(options) {
+  Duplex = Duplex || require('./_stream_duplex');
 
-/**
- * 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);
-  }
-};
+  // Writable ctor is applied to Duplexes, too.
+  // `realHasInstance` is necessary because using plain `instanceof`
+  // would return false, as no `_writableState` property is attached.
 
-/**
- * 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;
+  // Trying to use the custom `instanceof` for Writable here will also break the
+  // Node.js LazyTransform implementation, which has a non-trivial getter for
+  // `_writableState` that would lead to infinite recursion.
+  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
+    return new Writable(options);
   }
-  return this._array;
-};
 
-exports.MappingList = MappingList;
+  this._writableState = new WritableState(options, this);
 
-},{"./util":153}],149:[function(require,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
- */
+  // legacy.
+  this.writable = true;
 
-// 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`.
+  if (options) {
+    if (typeof options.write === 'function') this._write = options.write;
 
-/**
- * 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;
+    if (typeof options.writev === 'function') this._writev = options.writev;
+
+    if (typeof options.destroy === 'function') this._destroy = options.destroy;
+
+    if (typeof options.final === 'function') this._final = options.final;
+  }
+
+  Stream.call(this);
 }
 
-/**
- * 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)));
+// Otherwise people can pipe Writable streams, which is just wrong.
+Writable.prototype.pipe = function () {
+  this.emit('error', new Error('Cannot pipe, not readable'));
+};
+
+function writeAfterEnd(stream, cb) {
+  var er = new Error('write after end');
+  // TODO: defer error events consistently everywhere, not just the cb
+  stream.emit('error', er);
+  pna.nextTick(cb, er);
 }
 
-/**
- * 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.
+// Checks that a user-supplied chunk is valid, especially for the particular
+// mode the stream is in. Currently this means that `null` is never accepted
+// and undefined/non-string values are only allowed in object mode.
+function validChunk(stream, state, chunk, cb) {
+  var valid = true;
+  var er = false;
 
-  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.
+  if (chunk === null) {
+    er = new TypeError('May not write null values to stream');
+  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
+    er = new TypeError('Invalid non-string/buffer chunk');
+  }
+  if (er) {
+    stream.emit('error', er);
+    pna.nextTick(cb, er);
+    valid = false;
+  }
+  return valid;
+}
 
-    // 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;
+Writable.prototype.write = function (chunk, encoding, cb) {
+  var state = this._writableState;
+  var ret = false;
+  var isBuf = !state.objectMode && _isUint8Array(chunk);
 
-    swap(ary, pivotIndex, r);
-    var pivot = ary[r];
+  if (isBuf && !Buffer.isBuffer(chunk)) {
+    chunk = _uint8ArrayToBuffer(chunk);
+  }
 
-    // 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);
-      }
-    }
+  if (typeof encoding === 'function') {
+    cb = encoding;
+    encoding = null;
+  }
 
-    swap(ary, i + 1, j);
-    var q = i + 1;
+  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
 
-    // (2) Recurse on each half.
+  if (typeof cb !== 'function') cb = nop;
 
-    doQuickSort(ary, comparator, p, q - 1);
-    doQuickSort(ary, comparator, q + 1, r);
+  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
+    state.pendingcb++;
+    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
   }
-}
 
-/**
- * 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);
+  return ret;
 };
 
-},{}],150:[function(require,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
- */
+Writable.prototype.cork = function () {
+  var state = this._writableState;
 
-var util = require('./util');
-var binarySearch = require('./binary-search');
-var ArraySet = require('./array-set').ArraySet;
-var base64VLQ = require('./base64-vlq');
-var quickSort = require('./quick-sort').quickSort;
+  state.corked++;
+};
 
-function SourceMapConsumer(aSourceMap, aSourceMapURL) {
-  var sourceMap = aSourceMap;
-  if (typeof aSourceMap === 'string') {
-    sourceMap = util.parseSourceMapInput(aSourceMap);
-  }
+Writable.prototype.uncork = function () {
+  var state = this._writableState;
 
-  return sourceMap.sections != null
-    ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)
-    : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);
-}
+  if (state.corked) {
+    state.corked--;
 
-SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {
-  return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);
-}
+    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
+  }
+};
 
-/**
- * The version of the source mapping spec that we are consuming.
- */
-SourceMapConsumer.prototype._version = 3;
+Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
+  // node::ParseEncoding() requires lower case.
+  if (typeof encoding === 'string') encoding = encoding.toLowerCase();
+  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
+  this._writableState.defaultEncoding = encoding;
+  return this;
+};
 
-// `__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.
+function decodeChunk(state, chunk, encoding) {
+  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
+    chunk = Buffer.from(chunk, encoding);
+  }
+  return chunk;
+}
 
-SourceMapConsumer.prototype.__generatedMappings = null;
-Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
-  configurable: true,
-  enumerable: true,
+Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
+  // making it explicit this property is not enumerable
+  // because otherwise some prototype manipulation in
+  // userland will fail
+  enumerable: false,
   get: function () {
-    if (!this.__generatedMappings) {
-      this._parseMappings(this._mappings, this.sourceRoot);
-    }
-
-    return this.__generatedMappings;
+    return this._writableState.highWaterMark;
   }
 });
 
-SourceMapConsumer.prototype.__originalMappings = null;
-Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
-  configurable: true,
-  enumerable: true,
-  get: function () {
-    if (!this.__originalMappings) {
-      this._parseMappings(this._mappings, this.sourceRoot);
+// if we're already writing something, then just put this
+// in the queue, and wait our turn.  Otherwise, call _write
+// If we return false, then we need a drain event, so set that flag.
+function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
+  if (!isBuf) {
+    var newChunk = decodeChunk(state, chunk, encoding);
+    if (chunk !== newChunk) {
+      isBuf = true;
+      encoding = 'buffer';
+      chunk = newChunk;
     }
+  }
+  var len = state.objectMode ? 1 : chunk.length;
 
-    return this.__originalMappings;
+  state.length += len;
+
+  var ret = state.length < state.highWaterMark;
+  // we must ensure that previous needDrain will not be reset to false.
+  if (!ret) state.needDrain = true;
+
+  if (state.writing || state.corked) {
+    var last = state.lastBufferedRequest;
+    state.lastBufferedRequest = {
+      chunk: chunk,
+      encoding: encoding,
+      isBuf: isBuf,
+      callback: cb,
+      next: null
+    };
+    if (last) {
+      last.next = state.lastBufferedRequest;
+    } else {
+      state.bufferedRequest = state.lastBufferedRequest;
+    }
+    state.bufferedRequestCount += 1;
+  } else {
+    doWrite(stream, state, false, len, chunk, encoding, cb);
   }
-});
 
-SourceMapConsumer.prototype._charIsMappingSeparator =
-  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
-    var c = aStr.charAt(index);
-    return c === ";" || c === ",";
-  };
+  return ret;
+}
 
-/**
- * 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");
-  };
+function doWrite(stream, state, writev, len, chunk, encoding, cb) {
+  state.writelen = len;
+  state.writecb = cb;
+  state.writing = true;
+  state.sync = true;
+  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
+  state.sync = false;
+}
 
-SourceMapConsumer.GENERATED_ORDER = 1;
-SourceMapConsumer.ORIGINAL_ORDER = 2;
+function onwriteError(stream, state, sync, er, cb) {
+  --state.pendingcb;
 
-SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
-SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+  if (sync) {
+    // defer the callback if we are being called synchronously
+    // to avoid piling up things on the stack
+    pna.nextTick(cb, er);
+    // this can emit finish, and it will always happen
+    // after error
+    pna.nextTick(finishMaybe, stream, state);
+    stream._writableState.errorEmitted = true;
+    stream.emit('error', er);
+  } else {
+    // the caller expect this to happen before if
+    // it is async
+    cb(er);
+    stream._writableState.errorEmitted = true;
+    stream.emit('error', er);
+    // this can emit finish, but finish must
+    // always follow error
+    finishMaybe(stream, state);
+  }
+}
 
-/**
- * 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;
+function onwriteStateUpdate(state) {
+  state.writing = false;
+  state.writecb = null;
+  state.length -= state.writelen;
+  state.writelen = 0;
+}
 
-    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.");
-    }
+function onwrite(stream, er) {
+  var state = stream._writableState;
+  var sync = state.sync;
+  var cb = state.writecb;
 
-    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);
-  };
+  onwriteStateUpdate(state);
 
-/**
- * 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');
+  if (er) onwriteError(stream, state, sync, er, cb);else {
+    // Check if we're actually ready to finish, but don't emit yet
+    var finished = needFinish(state);
 
-    // 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)
-    };
+    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
+      clearBuffer(stream, state);
+    }
 
-    needle.source = this._findSourceIndex(needle.source);
-    if (needle.source < 0) {
-      return [];
+    if (sync) {
+      /*<replacement>*/
+      asyncWrite(afterWrite, stream, state, finished, cb);
+      /*</replacement>*/
+    } else {
+      afterWrite(stream, state, finished, cb);
     }
+  }
+}
 
-    var mappings = [];
+function afterWrite(stream, state, finished, cb) {
+  if (!finished) onwriteDrain(stream, state);
+  state.pendingcb--;
+  cb();
+  finishMaybe(stream, state);
+}
 
-    var index = this._findMapping(needle,
-                                  this._originalMappings,
-                                  "originalLine",
-                                  "originalColumn",
-                                  util.compareByOriginalPositions,
-                                  binarySearch.LEAST_UPPER_BOUND);
-    if (index >= 0) {
-      var mapping = this._originalMappings[index];
+// Must force callback to be called on nextTick, so that we don't
+// emit 'drain' before the write() consumer gets the 'false' return
+// value, and has a chance to attach a 'drain' listener.
+function onwriteDrain(stream, state) {
+  if (state.length === 0 && state.needDrain) {
+    state.needDrain = false;
+    stream.emit('drain');
+  }
+}
 
-      if (aArgs.column === undefined) {
-        var originalLine = mapping.originalLine;
+// if there's something in the buffer waiting, then process it
+function clearBuffer(stream, state) {
+  state.bufferProcessing = true;
+  var entry = state.bufferedRequest;
+
+  if (stream._writev && entry && entry.next) {
+    // Fast case, write everything using _writev()
+    var l = state.bufferedRequestCount;
+    var buffer = new Array(l);
+    var holder = state.corkedRequestsFree;
+    holder.entry = entry;
 
-        // 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)
-          });
+    var count = 0;
+    var allBuffers = true;
+    while (entry) {
+      buffer[count] = entry;
+      if (!entry.isBuf) allBuffers = false;
+      entry = entry.next;
+      count += 1;
+    }
+    buffer.allBuffers = allBuffers;
 
-          mapping = this._originalMappings[++index];
-        }
-      } else {
-        var originalColumn = mapping.originalColumn;
+    doWrite(stream, state, true, state.length, buffer, '', holder.finish);
 
-        // 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)
-          });
+    // doWrite is almost always async, defer these to save a bit of time
+    // as the hot path ends with doWrite
+    state.pendingcb++;
+    state.lastBufferedRequest = null;
+    if (holder.next) {
+      state.corkedRequestsFree = holder.next;
+      holder.next = null;
+    } else {
+      state.corkedRequestsFree = new CorkedRequest(state);
+    }
+    state.bufferedRequestCount = 0;
+  } else {
+    // Slow case, write chunks one-by-one
+    while (entry) {
+      var chunk = entry.chunk;
+      var encoding = entry.encoding;
+      var cb = entry.callback;
+      var len = state.objectMode ? 1 : chunk.length;
 
-          mapping = this._originalMappings[++index];
-        }
+      doWrite(stream, state, false, len, chunk, encoding, cb);
+      entry = entry.next;
+      state.bufferedRequestCount--;
+      // if we didn't call the onwrite immediately, then
+      // it means that we need to wait until it does.
+      // also, that means that the chunk and cb are currently
+      // being processed, so move the buffer counter past them.
+      if (state.writing) {
+        break;
       }
     }
 
-    return mappings;
-  };
+    if (entry === null) state.lastBufferedRequest = null;
+  }
 
-exports.SourceMapConsumer = SourceMapConsumer;
+  state.bufferedRequest = entry;
+  state.bufferProcessing = false;
+}
 
-/**
- * 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);
-  }
+Writable.prototype._write = function (chunk, encoding, cb) {
+  cb(new Error('_write() is not implemented'));
+};
 
-  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);
+Writable.prototype._writev = 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);
-  }
+Writable.prototype.end = function (chunk, encoding, cb) {
+  var state = this._writableState;
 
-  if (sourceRoot) {
-    sourceRoot = util.normalize(sourceRoot);
+  if (typeof chunk === 'function') {
+    cb = chunk;
+    chunk = null;
+    encoding = null;
+  } else if (typeof encoding === 'function') {
+    cb = encoding;
+    encoding = null;
   }
 
-  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;
-    });
+  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
 
-  // 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);
+  // .end() fully uncorks
+  if (state.corked) {
+    state.corked = 1;
+    this.uncork();
+  }
 
-  this._absoluteSources = this._sources.toArray().map(function (s) {
-    return util.computeSourceURL(sourceRoot, s, aSourceMapURL);
-  });
+  // ignore unnecessary end() calls.
+  if (!state.ending && !state.finished) endWritable(this, state, cb);
+};
 
-  this.sourceRoot = sourceRoot;
-  this.sourcesContent = sourcesContent;
-  this._mappings = mappings;
-  this._sourceMapURL = aSourceMapURL;
-  this.file = file;
+function needFinish(state) {
+  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
+}
+function callFinal(stream, state) {
+  stream._final(function (err) {
+    state.pendingcb--;
+    if (err) {
+      stream.emit('error', err);
+    }
+    state.prefinished = true;
+    stream.emit('prefinish');
+    finishMaybe(stream, state);
+  });
+}
+function prefinish(stream, state) {
+  if (!state.prefinished && !state.finalCalled) {
+    if (typeof stream._final === 'function') {
+      state.pendingcb++;
+      state.finalCalled = true;
+      pna.nextTick(callFinal, stream, state);
+    } else {
+      state.prefinished = true;
+      stream.emit('prefinish');
+    }
+  }
 }
 
-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);
+function finishMaybe(stream, state) {
+  var need = needFinish(state);
+  if (need) {
+    prefinish(stream, state);
+    if (state.pendingcb === 0) {
+      state.finished = true;
+      stream.emit('finish');
+    }
   }
+  return need;
+}
 
-  if (this._sources.has(relativeSource)) {
-    return this._sources.indexOf(relativeSource);
+function endWritable(stream, state, cb) {
+  state.ending = true;
+  finishMaybe(stream, state);
+  if (cb) {
+    if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
   }
+  state.ended = true;
+  stream.writable = false;
+}
 
-  // 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;
+function onCorkedFinish(corkReq, state, err) {
+  var entry = corkReq.entry;
+  corkReq.entry = null;
+  while (entry) {
+    var cb = entry.callback;
+    state.pendingcb--;
+    cb(err);
+    entry = entry.next;
+  }
+  if (state.corkedRequestsFree) {
+    state.corkedRequestsFree.next = corkReq;
+  } else {
+    state.corkedRequestsFree = corkReq;
+  }
+}
+
+Object.defineProperty(Writable.prototype, 'destroyed', {
+  get: function () {
+    if (this._writableState === undefined) {
+      return false;
+    }
+    return this._writableState.destroyed;
+  },
+  set: function (value) {
+    // we ignore the value if the stream
+    // has not been initialized yet
+    if (!this._writableState) {
+      return;
     }
+
+    // backward compatibility, the user is explicitly
+    // managing destroyed
+    this._writableState.destroyed = value;
   }
+});
 
-  return -1;
+Writable.prototype.destroy = destroyImpl.destroy;
+Writable.prototype._undestroy = destroyImpl.undestroy;
+Writable.prototype._destroy = function (err, cb) {
+  this.end();
+  cb(err);
 };
+}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate)
+},{"./_stream_duplex":129,"./internal/streams/destroy":135,"./internal/streams/stream":136,"_process":124,"core-util-is":113,"inherits":118,"process-nextick-args":123,"safe-buffer":155,"timers":161,"util-deprecate":177}],134:[function(require,module,exports){
+'use strict';
 
-/**
- * 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);
-    });
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-    // 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 Buffer = require('safe-buffer').Buffer;
+var util = require('util');
 
-    var generatedMappings = aSourceMap._mappings.toArray().slice();
-    var destGeneratedMappings = smc.__generatedMappings = [];
-    var destOriginalMappings = smc.__originalMappings = [];
+function copyBuffer(src, target, offset) {
+  src.copy(target, offset);
+}
 
-    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;
+module.exports = function () {
+  function BufferList() {
+    _classCallCheck(this, BufferList);
 
-      if (srcMapping.source) {
-        destMapping.source = sources.indexOf(srcMapping.source);
-        destMapping.originalLine = srcMapping.originalLine;
-        destMapping.originalColumn = srcMapping.originalColumn;
+    this.head = null;
+    this.tail = null;
+    this.length = 0;
+  }
 
-        if (srcMapping.name) {
-          destMapping.name = names.indexOf(srcMapping.name);
-        }
+  BufferList.prototype.push = function push(v) {
+    var entry = { data: v, next: null };
+    if (this.length > 0) this.tail.next = entry;else this.head = entry;
+    this.tail = entry;
+    ++this.length;
+  };
 
-        destOriginalMappings.push(destMapping);
-      }
+  BufferList.prototype.unshift = function unshift(v) {
+    var entry = { data: v, next: this.head };
+    if (this.length === 0) this.tail = entry;
+    this.head = entry;
+    ++this.length;
+  };
 
-      destGeneratedMappings.push(destMapping);
-    }
+  BufferList.prototype.shift = function shift() {
+    if (this.length === 0) return;
+    var ret = this.head.data;
+    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
+    --this.length;
+    return ret;
+  };
 
-    quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+  BufferList.prototype.clear = function clear() {
+    this.head = this.tail = null;
+    this.length = 0;
+  };
 
-    return smc;
+  BufferList.prototype.join = function join(s) {
+    if (this.length === 0) return '';
+    var p = this.head;
+    var ret = '' + p.data;
+    while (p = p.next) {
+      ret += s + p.data;
+    }return ret;
   };
 
-/**
- * The version of the source mapping spec that we are consuming.
- */
-BasicSourceMapConsumer.prototype._version = 3;
+  BufferList.prototype.concat = function concat(n) {
+    if (this.length === 0) return Buffer.alloc(0);
+    if (this.length === 1) return this.head.data;
+    var ret = Buffer.allocUnsafe(n >>> 0);
+    var p = this.head;
+    var i = 0;
+    while (p) {
+      copyBuffer(p.data, ret, i);
+      i += p.data.length;
+      p = p.next;
+    }
+    return ret;
+  };
 
-/**
- * The list of original sources.
- */
-Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
-  get: function () {
-    return this._absoluteSources.slice();
-  }
-});
+  return BufferList;
+}();
 
-/**
- * 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;
+if (util && util.inspect && util.inspect.custom) {
+  module.exports.prototype[util.inspect.custom] = function () {
+    var obj = util.inspect({ length: this.length });
+    return this.constructor.name + ' ' + obj;
+  };
 }
+},{"safe-buffer":155,"util":109}],135:[function(require,module,exports){
+'use strict';
 
-/**
- * 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');
-          }
+/*<replacement>*/
 
-          if (segment.length === 3) {
-            throw new Error('Found a source and line, but no column');
-          }
+var pna = require('process-nextick-args');
+/*</replacement>*/
 
-          cachedSegments[str] = segment;
-        }
+// undocumented cb() API, needed for core, not for public API
+function destroy(err, cb) {
+  var _this = this;
 
-        // Generated column.
-        mapping.generatedColumn = previousGeneratedColumn + segment[0];
-        previousGeneratedColumn = mapping.generatedColumn;
+  var readableDestroyed = this._readableState && this._readableState.destroyed;
+  var writableDestroyed = this._writableState && this._writableState.destroyed;
 
-        if (segment.length > 1) {
-          // Original source.
-          mapping.source = previousSource + segment[1];
-          previousSource += segment[1];
+  if (readableDestroyed || writableDestroyed) {
+    if (cb) {
+      cb(err);
+    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
+      pna.nextTick(emitErrorNT, this, err);
+    }
+    return this;
+  }
 
-          // Original line.
-          mapping.originalLine = previousOriginalLine + segment[2];
-          previousOriginalLine = mapping.originalLine;
-          // Lines are stored 0-based
-          mapping.originalLine += 1;
+  // we set destroyed to true before firing error callbacks in order
+  // to make it re-entrance safe in case destroy() is called within callbacks
 
-          // Original column.
-          mapping.originalColumn = previousOriginalColumn + segment[3];
-          previousOriginalColumn = mapping.originalColumn;
+  if (this._readableState) {
+    this._readableState.destroyed = true;
+  }
 
-          if (segment.length > 4) {
-            // Original name.
-            mapping.name = previousName + segment[4];
-            previousName += segment[4];
-          }
-        }
+  // if this is a duplex stream mark the writable part as destroyed as well
+  if (this._writableState) {
+    this._writableState.destroyed = true;
+  }
 
-        generatedMappings.push(mapping);
-        if (typeof mapping.originalLine === 'number') {
-          originalMappings.push(mapping);
-        }
+  this._destroy(err || null, function (err) {
+    if (!cb && err) {
+      pna.nextTick(emitErrorNT, _this, err);
+      if (_this._writableState) {
+        _this._writableState.errorEmitted = true;
       }
+    } else if (cb) {
+      cb(err);
     }
+  });
 
-    quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
-    this.__generatedMappings = generatedMappings;
+  return this;
+}
 
-    quickSort(originalMappings, util.compareByOriginalPositions);
-    this.__originalMappings = originalMappings;
-  };
+function undestroy() {
+  if (this._readableState) {
+    this._readableState.destroyed = false;
+    this._readableState.reading = false;
+    this._readableState.ended = false;
+    this._readableState.endEmitted = false;
+  }
 
-/**
- * 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 (this._writableState) {
+    this._writableState.destroyed = false;
+    this._writableState.ended = false;
+    this._writableState.ending = false;
+    this._writableState.finished = false;
+    this._writableState.errorEmitted = false;
+  }
+}
 
-    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]);
-    }
+function emitErrorNT(self, err) {
+  self.emit('error', err);
+}
 
-    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
-  };
+module.exports = {
+  destroy: destroy,
+  undestroy: undestroy
+};
+},{"process-nextick-args":123}],136:[function(require,module,exports){
+module.exports = require('events').EventEmitter;
 
-/**
- * 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];
+},{"events":114}],137:[function(require,module,exports){
+exports = module.exports = require('./lib/_stream_readable.js');
+exports.Stream = exports;
+exports.Readable = exports;
+exports.Writable = require('./lib/_stream_writable.js');
+exports.Duplex = require('./lib/_stream_duplex.js');
+exports.Transform = require('./lib/_stream_transform.js');
+exports.PassThrough = require('./lib/_stream_passthrough.js');
 
-      // 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];
+},{"./lib/_stream_duplex.js":129,"./lib/_stream_passthrough.js":130,"./lib/_stream_readable.js":131,"./lib/_stream_transform.js":132,"./lib/_stream_writable.js":133}],138:[function(require,module,exports){
+"use strict";
 
-        if (mapping.generatedLine === nextMapping.generatedLine) {
-          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
-          continue;
-        }
-      }
+module.exports =
+{
+       // Output
+       ABSOLUTE:      "absolute",
+       PATH_RELATIVE: "pathRelative",
+       ROOT_RELATIVE: "rootRelative",
+       SHORTEST:      "shortest"
+};
 
-      // The last mapping for each line spans the entire line.
-      mapping.lastGeneratedColumn = Infinity;
-    }
-  };
+},{}],139:[function(require,module,exports){
+"use strict";
 
-/**
- * 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 constants = require("./constants");
 
-    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
-        };
-      }
-    }
+function formatAuth(urlObj, options)
+{
+       if (urlObj.auth && !options.removeAuth && (urlObj.extra.relation.maximumHost || options.output===constants.ABSOLUTE))
+       {
+               return urlObj.auth + "@";
+       }
+       
+       return "";
+}
 
-    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;
-    }
+function formatHash(urlObj, options)
+{
+       return urlObj.hash ? urlObj.hash : "";
+}
 
-    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)]
-      }
+function formatHost(urlObj, options)
+{
+       if (urlObj.host.full && (urlObj.extra.relation.maximumAuth || options.output===constants.ABSOLUTE))
+       {
+               return urlObj.host.full;
+       }
+       
+       return "";
+}
+
 
-      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.');
-    }
-  };
+function formatPath(urlObj, options)
+{
+       var str = "";
+       
+       var absolutePath = urlObj.path.absolute.string;
+       var relativePath = urlObj.path.relative.string;
+       var resource = showResource(urlObj, options);
+       
+       if (urlObj.extra.relation.maximumHost || options.output===constants.ABSOLUTE || options.output===constants.ROOT_RELATIVE)
+       {
+               str = absolutePath;
+       }
+       else if (relativePath.length<=absolutePath.length && options.output===constants.SHORTEST || options.output===constants.PATH_RELATIVE)
+       {
+               str = relativePath;
+               
+               if (str === "")
+               {
+                       var query = showQuery(urlObj,options) && !!getQuery(urlObj,options);
+                       
+                       if (urlObj.extra.relation.maximumPath && !resource)
+                       {
+                               str = "./";
+                       }
+                       else if (urlObj.extra.relation.overridesQuery && !resource && !query)
+                       {
+                               str = "./";
+                       }
+               }
+       }
+       else
+       {
+               str = absolutePath;
+       }
+       
+       if ( str==="/" && !resource && options.removeRootTrailingSlash && (!urlObj.extra.relation.minimumPort || options.output===constants.ABSOLUTE) )
+       {
+               str = "";
+       }
+       
+       return str;
+}
 
-/**
- * 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)
-    );
+function formatPort(urlObj, options)
+{
+       if (urlObj.port && !urlObj.extra.portIsDefault && urlObj.extra.relation.maximumHost)
+       {
+               return ":" + urlObj.port;
+       }
+       
+       return "";
+}
 
-    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
-    };
-  };
+function formatQuery(urlObj, options)
+{
+       return showQuery(urlObj,options) ? getQuery(urlObj, options) : "";
+}
 
-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');
+function formatResource(urlObj, options)
+{
+       return showResource(urlObj,options) ? urlObj.resource : "";
+}
 
-  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');
+function formatScheme(urlObj, options)
+{
+       var str = "";
+       
+       if (urlObj.extra.relation.maximumHost || options.output===constants.ABSOLUTE)
+       {
+               if (!urlObj.extra.relation.minimumScheme || !options.schemeRelative || options.output===constants.ABSOLUTE)
+               {
+                       str += urlObj.scheme + "://";
+               }
+               else
+               {
+                       str += "//";
+               }
+       }
+       
+       return str;
+}
 
-    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)
-    }
-  });
+
+function formatUrl(urlObj, options)
+{
+       var url = "";
+       
+       url += formatScheme(urlObj, options);
+       url += formatAuth(urlObj, options);
+       url += formatHost(urlObj, options);
+       url += formatPort(urlObj, options);
+       url += formatPath(urlObj, options);
+       url += formatResource(urlObj, options);
+       url += formatQuery(urlObj, options);
+       url += formatHash(urlObj, options);
+       
+       return url;
 }
 
-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;
-  }
-});
+function getQuery(urlObj, options)
+{
+       var stripQuery = options.removeEmptyQueries && urlObj.extra.relation.minimumPort;
+       
+       return urlObj.query.string[ stripQuery ? "stripped" : "full" ];
+}
 
-/**
- * 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];
+function showQuery(urlObj, options)
+{
+       return !urlObj.extra.relation.minimumQuery || options.output===constants.ABSOLUTE || options.output===constants.ROOT_RELATIVE;
+}
 
-    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();
-    });
-  };
+function showResource(urlObj, options)
+{
+       var removeIndex = options.removeDirectoryIndexes && urlObj.extra.resourceIsIndex;
+       var removeMatchingResource = urlObj.extra.relation.minimumResource && options.output!==constants.ABSOLUTE && options.output!==constants.ROOT_RELATIVE;
+       
+       return !!urlObj.resource && !removeMatchingResource && !removeIndex;
+}
 
-/**
- * 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];
+module.exports = formatUrl;
 
-      // 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;
-      }
-    }
+},{"./constants":138}],140:[function(require,module,exports){
+"use strict";
 
-    return {
-      line: null,
-      column: null
-    };
-  };
+var constants  = require("./constants");
+var formatUrl  = require("./format");
+var getOptions = require("./options");
+var objUtils   = require("./util/object");
+var parseUrl   = require("./parse");
+var relateUrl  = require("./relate");
 
-/**
- * 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);
-        }
+function RelateUrl(from, options)
+{
+       this.options = getOptions(options,
+       {
+               defaultPorts: {ftp:21, http:80, https:443},
+               directoryIndexes: ["index.html"],
+               ignore_www: false,
+               output: RelateUrl.SHORTEST,
+               rejectedSchemes: ["data","javascript","mailto"],
+               removeAuth: false,
+               removeDirectoryIndexes: true,
+               removeEmptyQueries: false,
+               removeRootTrailingSlash: true,
+               schemeRelative: true,
+               site: undefined,
+               slashesDenoteHost: true
+       });
+       
+       this.from = parseUrl.from(from, this.options, null);
+}
+
+
+
+/*
+       Usage: instance=new RelateUrl(); instance.relate();
+*/
+RelateUrl.prototype.relate = function(from, to, options)
+{
+       // relate(to,options)
+       if ( objUtils.isPlainObject(to) )
+       {
+               options = to;
+               to = from;
+               from = null;
+       }
+       // relate(to)
+       else if (!to)
+       {
+               to = from;
+               from = null;
+       }
+       
+       options = getOptions(options, this.options);
+       from = from || options.site;
+       from = parseUrl.from(from, options, this.from);
+       
+       if (!from || !from.href)
+       {
+               throw new Error("from value not defined.");
+       }
+       else if (from.extra.hrefInfo.minimumPathOnly)
+       {
+               throw new Error("from value supplied is not absolute: "+from.href);
+       }
+       
+       to = parseUrl.to(to, options);
+       
+       if (to.valid===false) return to.href;
+       
+       to = relateUrl(from, to, options);
+       to = formatUrl(to, options);
+       
+       return to;
+}
+
+
 
-        // 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
-        };
+/*
+       Usage: RelateUrl.relate();
+*/
+RelateUrl.relate = function(from, to, options)
+{
+       return new RelateUrl().relate(from, to, options);
+}
 
-        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;
+// Make constants accessible from API
+objUtils.shallowMerge(RelateUrl, constants);
 
-},{"./array-set":144,"./base64-vlq":145,"./binary-search":147,"./quick-sort":149,"./util":153}],151:[function(require,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 base64VLQ = require('./base64-vlq');
-var util = require('./util');
-var ArraySet = require('./array-set').ArraySet;
-var MappingList = require('./mapping-list').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;
+module.exports = RelateUrl;
+
+},{"./constants":138,"./format":139,"./options":141,"./parse":144,"./relate":151,"./util/object":153}],141:[function(require,module,exports){
+"use strict";
+
+var objUtils = require("./util/object");
+
+
+
+function getOptions(options, defaults)
+{
+       if ( objUtils.isPlainObject(options) )
+       {
+               var newOptions = {};
+               
+               for (var i in defaults)
+               {
+                       if ( defaults.hasOwnProperty(i) )
+                       {
+                               if (options[i] !== undefined)
+                               {
+                                       newOptions[i] = mergeOption(options[i], defaults[i]);
+                               }
+                               else
+                               {
+                                       newOptions[i] = defaults[i];
+                               }
+                       }
+               }
+               
+               return newOptions;
+       }
+       else
+       {
+               return defaults;
+       }
 }
 
-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);
-        }
+function mergeOption(newValues, defaultValues)
+{
+       if (defaultValues instanceof Object && newValues instanceof Object)
+       {
+               if (defaultValues instanceof Array && newValues instanceof Array)
+               {
+                       return defaultValues.concat(newValues);
+               }
+               else
+               {
+                       return objUtils.shallowMerge(newValues, defaultValues);
+               }
+       }
+       
+       return newValues;
+}
 
-        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);
-      }
+module.exports = getOptions;
 
-      if (!generator._sources.has(sourceRelative)) {
-        generator._sources.add(sourceRelative);
-      }
+},{"./util/object":153}],142:[function(require,module,exports){
+"use strict";
 
-      var content = aSourceMapConsumer.sourceContentFor(sourceFile);
-      if (content != null) {
-        generator.setSourceContent(sourceFile, content);
-      }
-    });
-    return generator;
-  };
+function parseHost(urlObj, options)
+{
+       // TWEAK :: condition only for speed optimization
+       if (options.ignore_www)
+       {
+               var host = urlObj.host.full;
+               
+               if (host)
+               {
+                       var stripped = host;
+                       
+                       if (host.indexOf("www.") === 0)
+                       {
+                               stripped = host.substr(4);
+                       }
+                       
+                       urlObj.host.stripped = stripped;
+               }
+       }
+}
 
-/**
- * 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);
-      }
-    }
+module.exports = parseHost;
+
+},{}],143:[function(require,module,exports){
+"use strict";
+
+function hrefInfo(urlObj)
+{
+       var minimumPathOnly     = (!urlObj.scheme && !urlObj.auth && !urlObj.host.full && !urlObj.port);
+       var minimumResourceOnly = (minimumPathOnly && !urlObj.path.absolute.string);
+       var minimumQueryOnly    = (minimumResourceOnly && !urlObj.resource);
+       var minimumHashOnly     = (minimumQueryOnly && !urlObj.query.string.full.length);
+       var empty               = (minimumHashOnly && !urlObj.hash);
+       
+       urlObj.extra.hrefInfo.minimumPathOnly     = minimumPathOnly;
+       urlObj.extra.hrefInfo.minimumResourceOnly = minimumResourceOnly;
+       urlObj.extra.hrefInfo.minimumQueryOnly    = minimumQueryOnly;
+       urlObj.extra.hrefInfo.minimumHashOnly     = minimumHashOnly;
+       urlObj.extra.hrefInfo.empty = empty;
+}
 
-    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);
-    }
+module.exports = hrefInfo;
 
-    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;
-      }
-    }
-  };
+},{}],144:[function(require,module,exports){
+"use strict";
 
-/**
- * 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();
+var hrefInfo   = require("./hrefInfo");
+var parseHost  = require("./host");
+var parsePath  = require("./path");
+var parsePort  = require("./port");
+var parseQuery = require("./query");
+var parseUrlString = require("./urlstring");
+var pathUtils      = require("../util/path");
 
-    // 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);
-      }
+function parseFromUrl(url, options, fallback)
+{
+       if (url)
+       {
+               var urlObj = parseUrl(url, options);
+               
+               // Because the following occurs in the relate stage for "to" URLs,
+               // such had to be mostly duplicated here
+               
+               var pathArray = pathUtils.resolveDotSegments(urlObj.path.absolute.array);
+               
+               urlObj.path.absolute.array  = pathArray;
+               urlObj.path.absolute.string = "/" + pathUtils.join(pathArray);
+               
+               return urlObj;
+       }
+       else
+       {
+               return fallback;
+       }
+}
 
-    }, 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.'
-        );
-    }
+function parseUrl(url, options)
+{
+       var urlObj = parseUrlString(url, options);
+       
+       if (urlObj.valid===false) return urlObj;
+       
+       parseHost(urlObj, options);
+       parsePort(urlObj, options);
+       parsePath(urlObj, options);
+       parseQuery(urlObj, options);
+       hrefInfo(urlObj);
+       
+       return urlObj;
+}
 
-    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 = ''
+module.exports =
+{
+       from: parseFromUrl,
+       to:   parseUrl
+};
 
-      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 += ',';
-        }
-      }
+},{"../util/path":154,"./host":142,"./hrefInfo":143,"./path":145,"./port":146,"./query":147,"./urlstring":148}],145:[function(require,module,exports){
+"use strict";
+
+function isDirectoryIndex(resource, options)
+{
+       var verdict = false;
+       
+       options.directoryIndexes.every( function(index)
+       {
+               if (index === resource)
+               {
+                       verdict = true;
+                       return false;
+               }
+               
+               return true;
+       });
+       
+       return verdict;
+}
 
-      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;
+function parsePath(urlObj, options)
+{
+       var path = urlObj.path.absolute.string;
+       
+       if (path)
+       {
+               var lastSlash = path.lastIndexOf("/");
+               
+               if (lastSlash > -1)
+               {
+                       if (++lastSlash < path.length)
+                       {
+                               var resource = path.substr(lastSlash);
+                               
+                               if (resource!=="." && resource!=="..")
+                               {
+                                       urlObj.resource = resource;
+                                       path = path.substr(0, lastSlash);
+                               }
+                               else
+                               {
+                                       path += "/";
+                               }
+                       }
+                       
+                       urlObj.path.absolute.string = path;
+                       urlObj.path.absolute.array = splitPath(path);
+               }
+               else if (path==="." || path==="..")
+               {
+                       // "..?var", "..#anchor", etc ... not "..index.html"
+                       path += "/";
+                       
+                       urlObj.path.absolute.string = path;
+                       urlObj.path.absolute.array = splitPath(path);
+               }
+               else
+               {
+                       // Resource-only
+                       urlObj.resource = path;
+                       urlObj.path.absolute.string = null;
+               }
+               
+               urlObj.extra.resourceIsIndex = isDirectoryIndex(urlObj.resource, options);
+       }
+       // Else: query/hash-only or empty
+}
 
-        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;
-    }
+function splitPath(path)
+{
+       // TWEAK :: condition only for speed optimization
+       if (path !== "/")
+       {
+               var cleaned = [];
+               
+               path.split("/").forEach( function(dir)
+               {
+                       // Cleanup -- splitting "/dir/" becomes ["","dir",""]
+                       if (dir !== "")
+                       {
+                               cleaned.push(dir);
+                       }
+               });
+               
+               return cleaned;
+       }
+       else
+       {
+               // Faster to skip the above block and just create an array
+               return [];
+       }
+}
 
-    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);
-    }
+module.exports = parsePath;
 
-    return map;
-  };
+},{}],146:[function(require,module,exports){
+"use strict";
 
-/**
- * Render the source map being generated to a string.
- */
-SourceMapGenerator.prototype.toString =
-  function SourceMapGenerator_toString() {
-    return JSON.stringify(this.toJSON());
-  };
+function parsePort(urlObj, options)
+{
+       var defaultPort = -1;
+       
+       for (var i in options.defaultPorts)
+       {
+               if ( i===urlObj.scheme && options.defaultPorts.hasOwnProperty(i) )
+               {
+                       defaultPort = options.defaultPorts[i];
+                       break;
+               }
+       }
+       
+       if (defaultPort > -1)
+       {
+               // Force same type as urlObj.port
+               defaultPort = defaultPort.toString();
+               
+               if (urlObj.port === null)
+               {
+                       urlObj.port = defaultPort;
+               }
+               
+               urlObj.extra.portIsDefault = (urlObj.port === defaultPort);
+       }
+}
 
-exports.SourceMapGenerator = SourceMapGenerator;
 
-},{"./array-set":144,"./base64-vlq":145,"./mapping-list":148,"./util":153}],152:[function(require,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 SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;
-var util = require('./util');
+module.exports = parsePort;
 
-// 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)/;
+},{}],147:[function(require,module,exports){
+"use strict";
+var hasOwnProperty = Object.prototype.hasOwnProperty;
 
-// 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);
+function parseQuery(urlObj, options)
+{
+       urlObj.query.string.full = stringify(urlObj.query.object, false);
+       
+       // TWEAK :: condition only for speed optimization
+       if (options.removeEmptyQueries)
+       {
+               urlObj.query.string.stripped = stringify(urlObj.query.object, true);
+       }
+}
+
+
+
+function stringify(queryObj, removeEmptyQueries)
+{
+       var count = 0;
+       var str = "";
+       
+       for (var i in queryObj)
+       {
+               if ( i!=="" && hasOwnProperty.call(queryObj, i)===true )
+               {
+                       var value = queryObj[i];
+                       
+                       if (value !== "" || !removeEmptyQueries)
+                       {
+                               str += (++count===1) ? "?" : "&";
+                               
+                               i = encodeURIComponent(i);
+                               
+                               if (value !== "")
+                               {
+                                       str += i +"="+ encodeURIComponent(value).replace(/%20/g,"+");
+                               }
+                               else
+                               {
+                                       str += i;
+                               }
+                       }
+               }
+       }
+       
+       return str;
 }
 
-/**
- * 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;
-      }
-    };
+module.exports = parseQuery;
 
-    // We need to remember the position of "remainingLines"
-    var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+},{}],148:[function(require,module,exports){
+"use strict";
 
-    // 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;
+var _parseUrl = require("url").parse;
 
-    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;
+/*
+       Customize the URL object that Node generates
+       because:
+       
+       * necessary data for later
+       * urlObj.host is useless
+       * urlObj.hostname is too long
+       * urlObj.path is useless
+       * urlObj.pathname is too long
+       * urlObj.protocol is inaccurate; should be called "scheme"
+       * urlObj.search is mostly useless
+*/
+function clean(urlObj)
+{
+       var scheme = urlObj.protocol;
+       
+       if (scheme)
+       {
+               // Remove ":" suffix
+               if (scheme.indexOf(":") === scheme.length-1)
+               {
+                       scheme = scheme.substr(0, scheme.length-1);
+               }
+       }
+       
+       urlObj.host =
+       {
+               // TODO :: unescape(encodeURIComponent(s)) ? ... http://ecmanaut.blogspot.ca/2006/07/encoding-decoding-utf8-in-javascript.html
+               full: urlObj.hostname,
+               stripped: null
+       };
+       
+       urlObj.path =
+       {
+               absolute:
+               {
+                       array: null,
+                       string: urlObj.pathname
+               },
+               relative:
+               {
+                       array: null,
+                       string: null
+               }
+       };
+       
+       urlObj.query =
+       {
+               object: urlObj.query,
+               string:
+               {
+                       full: null,
+                       stripped: null
+               }
+       };
+       
+       urlObj.extra =
+       {
+               hrefInfo:
+               {
+                       minimumPathOnly: null,
+                       minimumResourceOnly: null,
+                       minimumQueryOnly: null,
+                       minimumHashOnly: null,
+                       empty: null,
+                       
+                       separatorOnlyQuery: urlObj.search==="?"
+               },
+               portIsDefault: null,
+               relation:
+               {
+                       maximumScheme: null,
+                       maximumAuth: null,
+                       maximumHost: null,
+                       maximumPort: null,
+                       maximumPath: null,
+                       maximumResource: null,
+                       maximumQuery: null,
+                       maximumHash: null,
+                       
+                       minimumScheme: null,
+                       minimumAuth: null,
+                       minimumHost: null,
+                       minimumPort: null,
+                       minimumPath: null,
+                       minimumResource: null,
+                       minimumQuery: null,
+                       minimumHash: null,
+                       
+                       overridesQuery: null
+               },
+               resourceIsIndex: null,
+               slashes: urlObj.slashes
+       };
+       
+       urlObj.resource = null;
+       urlObj.scheme = scheme;
+       delete urlObj.hostname;
+       delete urlObj.pathname;
+       delete urlObj.protocol;
+       delete urlObj.search;
+       delete urlObj.slashes;
+       
+       return urlObj;
+}
 
-    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;
-};
+function validScheme(url, options)
+{
+       var valid = true;
+       
+       options.rejectedSchemes.every( function(rejectedScheme)
+       {
+               valid = !(url.indexOf(rejectedScheme+":") === 0);
+               
+               // Break loop
+               return valid;
+       });
+       
+       return valid;
+}
+
 
-/**
- * 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;
-};
+function parseUrlString(url, options)
+{
+       if ( validScheme(url,options) )
+       {
+               return clean( _parseUrl(url, true, options.slashesDenoteHost) );
+       }
+       else
+       {
+               return {href:url, valid:false};
+       }
+}
 
-/**
- * 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);
-      }
-    }
+module.exports = parseUrlString;
 
-    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]]);
-    }
-  };
+},{"url":175}],149:[function(require,module,exports){
+"use strict";
 
-/**
- * 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;
-};
+var findRelation = require("./findRelation");
+var objUtils     = require("../util/object");
+var pathUtils    = require("../util/path");
 
-/**
- * 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;
+function absolutize(urlObj, siteUrlObj, options)
+{
+       findRelation.upToPath(urlObj, siteUrlObj, options);
+       
+       // Fill in relative URLs
+       if (urlObj.extra.relation.minimumScheme) urlObj.scheme = siteUrlObj.scheme;
+       if (urlObj.extra.relation.minimumAuth)   urlObj.auth   = siteUrlObj.auth;
+       if (urlObj.extra.relation.minimumHost)   urlObj.host   = objUtils.clone(siteUrlObj.host);
+       if (urlObj.extra.relation.minimumPort)   copyPort(urlObj, siteUrlObj);
+       if (urlObj.extra.relation.minimumScheme) copyPath(urlObj, siteUrlObj);
+       
+       // Check remaining relativeness now that path has been copied and/or resolved
+       findRelation.pathOn(urlObj, siteUrlObj, options);
+       
+       // Fill in relative URLs
+       if (urlObj.extra.relation.minimumResource) copyResource(urlObj, siteUrlObj);
+       if (urlObj.extra.relation.minimumQuery)    urlObj.query = objUtils.clone(siteUrlObj.query);
+       if (urlObj.extra.relation.minimumHash)     urlObj.hash  = siteUrlObj.hash;
+}
+
 
-},{"./source-map-generator":151,"./util":153}],153:[function(require,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.');
-  }
+/*
+       Get an absolute path that's relative to site url.
+*/
+function copyPath(urlObj, siteUrlObj)
+{
+       if (urlObj.extra.relation.maximumHost || !urlObj.extra.hrefInfo.minimumResourceOnly)
+       {
+               var pathArray = urlObj.path.absolute.array;
+               var pathString = "/";
+               
+               // If not erroneous URL
+               if (pathArray)
+               {
+                       // If is relative path
+                       if (urlObj.extra.hrefInfo.minimumPathOnly && urlObj.path.absolute.string.indexOf("/")!==0)
+                       {
+                               // Append path to site path
+                               pathArray = siteUrlObj.path.absolute.array.concat(pathArray);
+                       }
+                       
+                       pathArray   = pathUtils.resolveDotSegments(pathArray);
+                       pathString += pathUtils.join(pathArray);
+               }
+               else
+               {
+                       pathArray = [];
+               }
+               
+               urlObj.path.absolute.array  = pathArray;
+               urlObj.path.absolute.string = pathString;
+       }
+       else
+       {
+               // Resource-, query- or hash-only or empty
+               urlObj.path = objUtils.clone(siteUrlObj.path);
+       }
 }
-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]
-  };
+
+function copyPort(urlObj, siteUrlObj)
+{
+       urlObj.port = siteUrlObj.port;
+       
+       urlObj.extra.portIsDefault = siteUrlObj.extra.portIsDefault;
 }
-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;
+
+
+function copyResource(urlObj, siteUrlObj)
+{
+       urlObj.resource = siteUrlObj.resource;
+       
+       urlObj.extra.resourceIsIndex = siteUrlObj.extra.resourceIsIndex;
 }
-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 ? '/' : '.';
-  }
+module.exports = absolutize;
 
-  if (url) {
-    url.path = path;
-    return urlGenerate(url);
-  }
-  return path;
-}
-exports.normalize = normalize;
+},{"../util/object":153,"../util/path":154,"./findRelation":150}],150:[function(require,module,exports){
+"use strict";
 
-/**
- * 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 || '/';
-  }
+function findRelation_upToPath(urlObj, siteUrlObj, options)
+{
+       // Path- or root-relative URL
+       var pathOnly = urlObj.extra.hrefInfo.minimumPathOnly;
+       
+       // Matching scheme, scheme-relative or path-only
+       var minimumScheme = (urlObj.scheme===siteUrlObj.scheme || !urlObj.scheme);
+       
+       // Matching auth, ignoring auth or path-only
+       var minimumAuth = minimumScheme && (urlObj.auth===siteUrlObj.auth || options.removeAuth || pathOnly);
+       
+       // Matching host or path-only
+       var www = options.ignore_www ? "stripped" : "full";
+       var minimumHost = minimumAuth && (urlObj.host[www]===siteUrlObj.host[www] || pathOnly);
+       
+       // Matching port or path-only
+       var minimumPort = minimumHost && (urlObj.port===siteUrlObj.port || pathOnly);
+       
+       urlObj.extra.relation.minimumScheme = minimumScheme;
+       urlObj.extra.relation.minimumAuth   = minimumAuth;
+       urlObj.extra.relation.minimumHost   = minimumHost;
+       urlObj.extra.relation.minimumPort   = minimumPort;
+       
+       urlObj.extra.relation.maximumScheme = !minimumScheme || minimumScheme && !minimumAuth;
+       urlObj.extra.relation.maximumAuth   = !minimumScheme || minimumScheme && !minimumHost;
+       urlObj.extra.relation.maximumHost   = !minimumScheme || minimumScheme && !minimumPort;
+}
 
-  // `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);
-  }
+function findRelation_pathOn(urlObj, siteUrlObj, options)
+{
+       var queryOnly = urlObj.extra.hrefInfo.minimumQueryOnly;
+       var hashOnly  = urlObj.extra.hrefInfo.minimumHashOnly;
+       var empty     = urlObj.extra.hrefInfo.empty;    // not required, but self-documenting
+       
+       // From upToPath()
+       var minimumPort   = urlObj.extra.relation.minimumPort;
+       var minimumScheme = urlObj.extra.relation.minimumScheme;
+       
+       // Matching port and path
+       var minimumPath = minimumPort && urlObj.path.absolute.string===siteUrlObj.path.absolute.string;
+       
+       // Matching resource or query/hash-only or empty
+       var matchingResource = (urlObj.resource===siteUrlObj.resource || !urlObj.resource && siteUrlObj.extra.resourceIsIndex) || (options.removeDirectoryIndexes && urlObj.extra.resourceIsIndex && !siteUrlObj.resource);
+       var minimumResource = minimumPath && (matchingResource || queryOnly || hashOnly || empty);
+       
+       // Matching query or hash-only/empty
+       var query = options.removeEmptyQueries ? "stripped" : "full";
+       var urlQuery = urlObj.query.string[query];
+       var siteUrlQuery = siteUrlObj.query.string[query];
+       var minimumQuery = (minimumResource && !!urlQuery && urlQuery===siteUrlQuery) || ((hashOnly || empty) && !urlObj.extra.hrefInfo.separatorOnlyQuery);
+       
+       var minimumHash = minimumQuery && urlObj.hash===siteUrlObj.hash;
+       
+       urlObj.extra.relation.minimumPath     = minimumPath;
+       urlObj.extra.relation.minimumResource = minimumResource;
+       urlObj.extra.relation.minimumQuery    = minimumQuery;
+       urlObj.extra.relation.minimumHash     = minimumHash;
+       
+       urlObj.extra.relation.maximumPort     = !minimumScheme || minimumScheme && !minimumPath;
+       urlObj.extra.relation.maximumPath     = !minimumScheme || minimumScheme && !minimumResource;
+       urlObj.extra.relation.maximumResource = !minimumScheme || minimumScheme && !minimumQuery;
+       urlObj.extra.relation.maximumQuery    = !minimumScheme || minimumScheme && !minimumHash;
+       urlObj.extra.relation.maximumHash     = !minimumScheme || minimumScheme && !minimumHash;        // there's nothing after hash, so it's the same as maximumQuery
+       
+       // Matching path and/or resource with existing but non-matching site query
+       urlObj.extra.relation.overridesQuery  = minimumPath && urlObj.extra.relation.maximumResource && !minimumQuery && !!siteUrlQuery;
+}
 
-  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);
+module.exports =
+{
+       pathOn:   findRelation_pathOn,
+       upToPath: findRelation_upToPath
 };
 
-/**
- * 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(/\/$/, '');
+},{}],151:[function(require,module,exports){
+"use strict";
 
-  // 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;
-    }
+var absolutize = require("./absolutize");
+var relativize = require("./relativize");
 
-    // 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);
+function relateUrl(siteUrlObj, urlObj, options)
+{
+       absolutize(urlObj, siteUrlObj, options);
+       relativize(urlObj, siteUrlObj, options);
+       
+       return urlObj;
 }
-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;
+module.exports = relateUrl;
 
-function fromSetString(aStr) {
-  if (isProtoString(aStr)) {
-    return aStr.slice(1);
-  }
+},{"./absolutize":149,"./relativize":152}],152:[function(require,module,exports){
+"use strict";
 
-  return aStr;
-}
-exports.fromSetString = supportsNullProto ? identity : fromSetString;
+var pathUtils = require("../util/path");
 
-function isProtoString(s) {
-  if (!s) {
-    return false;
-  }
 
-  var length = s.length;
 
-  if (length < 9 /* "__proto__".length */) {
-    return false;
-  }
+/*
+       Get a path relative to the site path.
+*/
+function relatePath(absolutePath, siteAbsolutePath)
+{
+       var relativePath = [];
+       
+       // At this point, it's related to the host/port
+       var related = true;
+       var parentIndex = -1;
+       
+       // Find parents
+       siteAbsolutePath.forEach( function(siteAbsoluteDir, i)
+       {
+               if (related)
+               {
+                       if (absolutePath[i] !== siteAbsoluteDir)
+                       {
+                               related = false;
+                       }
+                       else
+                       {
+                               parentIndex = i;
+                       }
+               }
+               
+               if (!related)
+               {
+                       // Up one level
+                       relativePath.push("..");
+               }
+       });
+       
+       // Form path
+       absolutePath.forEach( function(dir, i)
+       {
+               if (i > parentIndex)
+               {
+                       relativePath.push(dir);
+               }
+       });
+       
+       return relativePath;
+}
 
-  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;
+function relativize(urlObj, siteUrlObj, options)
+{
+       if (urlObj.extra.relation.minimumScheme)
+       {
+               var pathArray = relatePath(urlObj.path.absolute.array, siteUrlObj.path.absolute.array);
+               
+               urlObj.path.relative.array  = pathArray;
+               urlObj.path.relative.string = pathUtils.join(pathArray);
+       }
 }
 
-/**
- * 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;
-  }
+module.exports = relativize;
 
-  return strcmp(mappingA.name, mappingB.name);
-}
-exports.compareByOriginalPositions = compareByOriginalPositions;
+},{"../util/path":154}],153:[function(require,module,exports){
+"use strict";
 
-/**
- * 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;
-  }
+/*
+       Deep-clone an object.
+*/
+function clone(obj)
+{
+       if (obj instanceof Object)
+       {
+               var clonedObj = (obj instanceof Array) ? [] : {};
+               
+               for (var i in obj)
+               {
+                       if ( obj.hasOwnProperty(i) )
+                       {
+                               clonedObj[i] = clone( obj[i] );
+                       }
+               }
+               
+               return clonedObj;
+       }
+       
+       return obj;
+}
 
-  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;
-  }
+/*
+       https://github.com/jonschlinkert/is-plain-object
+*/
+function isPlainObject(obj)
+{
+       return !!obj && typeof obj==="object" && obj.constructor===Object;
+}
 
-  cmp = mappingA.originalColumn - mappingB.originalColumn;
-  if (cmp !== 0) {
-    return cmp;
-  }
 
-  return strcmp(mappingA.name, mappingB.name);
+
+/*
+       Shallow-merge two objects.
+*/
+function shallowMerge(target, source)
+{
+       if (target instanceof Object && source instanceof Object)
+       {
+               for (var i in source)
+               {
+                       if ( source.hasOwnProperty(i) )
+                       {
+                               target[i] = source[i];
+                       }
+               }
+       }
+       
+       return target;
 }
-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
-  }
+module.exports =
+{
+       clone: clone,
+       isPlainObject: isPlainObject,
+       shallowMerge: shallowMerge
+};
 
-  if (aStr1 > aStr2) {
-    return 1;
-  }
+},{}],154:[function(require,module,exports){
+"use strict";
 
-  return -1;
+function joinPath(pathArray)
+{
+       if (pathArray.length > 0)
+       {
+               return pathArray.join("/") + "/";
+       }
+       else
+       {
+               return "";
+       }
 }
 
-/**
- * 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;
-  }
+function resolveDotSegments(pathArray)
+{
+       var pathAbsolute = [];
+       
+       pathArray.forEach( function(dir)
+       {
+               if (dir !== "..")
+               {
+                       if (dir !== ".")
+                       {
+                               pathAbsolute.push(dir);
+                       }
+               }
+               else
+               {
+                       // Remove parent
+                       if (pathAbsolute.length > 0)
+                       {
+                               pathAbsolute.splice(pathAbsolute.length-1, 1);
+                       }
+               }
+       });
+       
+       return pathAbsolute;
+}
 
-  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);
+module.exports =
+{
+       join: joinPath,
+       resolveDotSegments: resolveDotSegments
+};
+
+},{}],155:[function(require,module,exports){
+/* eslint-disable node/no-deprecated-api */
+var buffer = require('buffer')
+var Buffer = buffer.Buffer
+
+// alternative to using Object.keys for old browsers
+function copyProps (src, dst) {
+  for (var key in src) {
+    dst[key] = src[key]
+  }
+}
+if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
+  module.exports = buffer
+} else {
+  // Copy properties from require('buffer')
+  copyProps(buffer, exports)
+  exports.Buffer = SafeBuffer
 }
-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/, ''));
+function SafeBuffer (arg, encodingOrOffset, length) {
+  return Buffer(arg, encodingOrOffset, length)
 }
-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 || '';
+// Copy static methods from Buffer
+copyProps(Buffer, SafeBuffer)
 
-  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;
+SafeBuffer.from = function (arg, encodingOrOffset, length) {
+  if (typeof arg === 'number') {
+    throw new TypeError('Argument must not be a number')
   }
+  return Buffer(arg, encodingOrOffset, length)
+}
 
-  // 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);
-      }
+SafeBuffer.alloc = function (size, fill, encoding) {
+  if (typeof size !== 'number') {
+    throw new TypeError('Argument must be a number')
+  }
+  var buf = Buffer(size)
+  if (fill !== undefined) {
+    if (typeof encoding === 'string') {
+      buf.fill(fill, encoding)
+    } else {
+      buf.fill(fill)
     }
-    sourceURL = join(urlGenerate(parsed), sourceURL);
+  } else {
+    buf.fill(0)
   }
+  return buf
+}
 
-  return normalize(sourceURL);
+SafeBuffer.allocUnsafe = function (size) {
+  if (typeof size !== 'number') {
+    throw new TypeError('Argument must be a number')
+  }
+  return Buffer(size)
 }
-exports.computeSourceURL = computeSourceURL;
 
-},{}],154:[function(require,module,exports){
-/*
- * 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 = require('./lib/source-map-generator').SourceMapGenerator;
-exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;
-exports.SourceNode = require('./lib/source-node').SourceNode;
+SafeBuffer.allocUnsafeSlow = function (size) {
+  if (typeof size !== 'number') {
+    throw new TypeError('Argument must be a number')
+  }
+  return buffer.SlowBuffer(size)
+}
 
-},{"./lib/source-map-consumer":150,"./lib/source-map-generator":151,"./lib/source-node":152}],155:[function(require,module,exports){
+},{"buffer":111}],156:[function(require,module,exports){
 (function (global){
 var ClientRequest = require('./lib/request')
 var response = require('./lib/response')
@@ -22304,7 +22828,7 @@ http.METHODS = [
        'UNSUBSCRIBE'
 ]
 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"./lib/request":157,"./lib/response":158,"builtin-status-codes":5,"url":162,"xtend":165}],156:[function(require,module,exports){
+},{"./lib/request":158,"./lib/response":159,"builtin-status-codes":112,"url":175,"xtend":181}],157:[function(require,module,exports){
 (function (global){
 exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)
 
@@ -22381,7 +22905,7 @@ function isFunction (value) {
 xhr = null // Help gc
 
 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{}],157:[function(require,module,exports){
+},{}],158:[function(require,module,exports){
 (function (process,global,Buffer){
 var capability = require('./capability')
 var inherits = require('inherits')
@@ -22712,7 +23236,7 @@ var unsafeHeaders = [
 ]
 
 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
-},{"./capability":156,"./response":158,"_process":112,"buffer":4,"inherits":106,"readable-stream":125,"to-arraybuffer":161}],158:[function(require,module,exports){
+},{"./capability":157,"./response":159,"_process":124,"buffer":111,"inherits":118,"readable-stream":137,"to-arraybuffer":162}],159:[function(require,module,exports){
 (function (process,global,Buffer){
 var capability = require('./capability')
 var inherits = require('inherits')
@@ -22940,7 +23464,7 @@ IncomingMessage.prototype._onXHRProgress = function () {
 }
 
 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
-},{"./capability":156,"_process":112,"buffer":4,"inherits":106,"readable-stream":125}],159:[function(require,module,exports){
+},{"./capability":157,"_process":124,"buffer":111,"inherits":118,"readable-stream":137}],160:[function(require,module,exports){
 // Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -23237,7 +23761,7 @@ function simpleWrite(buf) {
 function simpleEnd(buf) {
   return buf && buf.length ? this.write(buf) : '';
 }
-},{"safe-buffer":143}],160:[function(require,module,exports){
+},{"safe-buffer":155}],161:[function(require,module,exports){
 (function (setImmediate,clearImmediate){
 var nextTick = require('process/browser.js').nextTick;
 var apply = Function.prototype.apply;
@@ -23316,7 +23840,7 @@ exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate :
   delete immediateIds[id];
 };
 }).call(this,require("timers").setImmediate,require("timers").clearImmediate)
-},{"process/browser.js":112,"timers":160}],161:[function(require,module,exports){
+},{"process/browser.js":124,"timers":161}],162:[function(require,module,exports){
 var Buffer = require('buffer').Buffer
 
 module.exports = function (buf) {
@@ -23345,7 +23869,113 @@ module.exports = function (buf) {
        }
 }
 
-},{"buffer":4}],162:[function(require,module,exports){
+},{"buffer":111}],163:[function(require,module,exports){
+arguments[4][96][0].apply(exports,arguments)
+},{"./util":172,"dup":96}],164:[function(require,module,exports){
+arguments[4][97][0].apply(exports,arguments)
+},{"./base64":165,"dup":97}],165:[function(require,module,exports){
+arguments[4][98][0].apply(exports,arguments)
+},{"dup":98}],166:[function(require,module,exports){
+arguments[4][99][0].apply(exports,arguments)
+},{"dup":99}],167:[function(require,module,exports){
+arguments[4][100][0].apply(exports,arguments)
+},{"./util":172,"dup":100}],168:[function(require,module,exports){
+arguments[4][101][0].apply(exports,arguments)
+},{"dup":101}],169:[function(require,module,exports){
+arguments[4][102][0].apply(exports,arguments)
+},{"./array-set":163,"./base64-vlq":164,"./binary-search":166,"./quick-sort":168,"./util":172,"dup":102}],170:[function(require,module,exports){
+arguments[4][103][0].apply(exports,arguments)
+},{"./array-set":163,"./base64-vlq":164,"./mapping-list":167,"./util":172,"dup":103}],171:[function(require,module,exports){
+arguments[4][104][0].apply(exports,arguments)
+},{"./source-map-generator":170,"./util":172,"dup":104}],172:[function(require,module,exports){
+arguments[4][105][0].apply(exports,arguments)
+},{"dup":105}],173:[function(require,module,exports){
+arguments[4][106][0].apply(exports,arguments)
+},{"./lib/source-map-consumer":169,"./lib/source-map-generator":170,"./lib/source-node":171,"dup":106}],174:[function(require,module,exports){
+var fs = require("fs");
+
+var UglifyJS = exports;
+var FILES = UglifyJS.FILES = [
+    "../lib/utils.js",
+    "../lib/ast.js",
+    "../lib/parse.js",
+    "../lib/transform.js",
+    "../lib/scope.js",
+    "../lib/output.js",
+    "../lib/compress.js",
+    "../lib/sourcemap.js",
+    "../lib/mozilla-ast.js",
+    "../lib/propmangle.js",
+    "../lib/minify.js",
+    "./exports.js",
+].map(function(file){
+    return require.resolve(file);
+});
+
+new Function("MOZ_SourceMap", "exports", function() {
+    var code = FILES.map(function(file) {
+        return fs.readFileSync(file, "utf8");
+    });
+    code.push("exports.describe_ast = " + describe_ast.toString());
+    return code.join("\n\n");
+}())(
+    require("source-map"),
+    UglifyJS
+);
+
+function describe_ast() {
+    var out = OutputStream({ beautify: true });
+    function doitem(ctor) {
+        out.print("AST_" + ctor.TYPE);
+        var props = ctor.SELF_PROPS.filter(function(prop){
+            return !/^\$/.test(prop);
+        });
+        if (props.length > 0) {
+            out.space();
+            out.with_parens(function(){
+                props.forEach(function(prop, i){
+                    if (i) out.space();
+                    out.print(prop);
+                });
+            });
+        }
+        if (ctor.documentation) {
+            out.space();
+            out.print_string(ctor.documentation);
+        }
+        if (ctor.SUBCLASSES.length > 0) {
+            out.space();
+            out.with_block(function(){
+                ctor.SUBCLASSES.forEach(function(ctor, i){
+                    out.indent();
+                    doitem(ctor);
+                    out.newline();
+                });
+            });
+        }
+    };
+    doitem(AST_Node);
+    return out + "\n";
+}
+
+function infer_options(options) {
+    var result = UglifyJS.minify("", options);
+    return result.error && result.error.defs;
+}
+
+UglifyJS.default_options = function() {
+    var defs = {};
+    Object.keys(infer_options({ 0: 0 })).forEach(function(component) {
+        var options = {};
+        options[component] = { 0: 0 };
+        if (options = infer_options(options)) {
+            defs[component] = options;
+        }
+    });
+    return defs;
+};
+
+},{"fs":110,"source-map":173}],175:[function(require,module,exports){
 // Copyright Joyent, Inc. and other Node contributors.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -24015,160 +24645,759 @@ Url.prototype.resolveObject = function(relative) {
     }
   }
 
-  if (mustEndAbs && srcPath[0] !== '' &&
-      (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
-    srcPath.unshift('');
+  if (mustEndAbs && srcPath[0] !== '' &&
+      (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
+    srcPath.unshift('');
+  }
+
+  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {
+    srcPath.push('');
+  }
+
+  var isAbsolute = srcPath[0] === '' ||
+      (srcPath[0] && srcPath[0].charAt(0) === '/');
+
+  // put the host back
+  if (psychotic) {
+    result.hostname = result.host = isAbsolute ? '' :
+                                    srcPath.length ? srcPath.shift() : '';
+    //occationaly the auth can get stuck only in host
+    //this especially happens in cases like
+    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
+    var authInHost = result.host && result.host.indexOf('@') > 0 ?
+                     result.host.split('@') : false;
+    if (authInHost) {
+      result.auth = authInHost.shift();
+      result.host = result.hostname = authInHost.shift();
+    }
+  }
+
+  mustEndAbs = mustEndAbs || (result.host && srcPath.length);
+
+  if (mustEndAbs && !isAbsolute) {
+    srcPath.unshift('');
+  }
+
+  if (!srcPath.length) {
+    result.pathname = null;
+    result.path = null;
+  } else {
+    result.pathname = srcPath.join('/');
+  }
+
+  //to support request.http
+  if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
+    result.path = (result.pathname ? result.pathname : '') +
+                  (result.search ? result.search : '');
+  }
+  result.auth = relative.auth || result.auth;
+  result.slashes = result.slashes || relative.slashes;
+  result.href = result.format();
+  return result;
+};
+
+Url.prototype.parseHost = function() {
+  var host = this.host;
+  var port = portPattern.exec(host);
+  if (port) {
+    port = port[0];
+    if (port !== ':') {
+      this.port = port.substr(1);
+    }
+    host = host.substr(0, host.length - port.length);
+  }
+  if (host) this.hostname = host;
+};
+
+},{"./util":176,"punycode":125,"querystring":128}],176:[function(require,module,exports){
+'use strict';
+
+module.exports = {
+  isString: function(arg) {
+    return typeof(arg) === 'string';
+  },
+  isObject: function(arg) {
+    return typeof(arg) === 'object' && arg !== null;
+  },
+  isNull: function(arg) {
+    return arg === null;
+  },
+  isNullOrUndefined: function(arg) {
+    return arg == null;
+  }
+};
+
+},{}],177:[function(require,module,exports){
+(function (global){
+
+/**
+ * Module exports.
+ */
+
+module.exports = deprecate;
+
+/**
+ * Mark that a method should not be used.
+ * Returns a modified function which warns once by default.
+ *
+ * If `localStorage.noDeprecation = true` is set, then it is a no-op.
+ *
+ * If `localStorage.throwDeprecation = true` is set, then deprecated functions
+ * will throw an Error when invoked.
+ *
+ * If `localStorage.traceDeprecation = true` is set, then deprecated functions
+ * will invoke `console.trace()` instead of `console.error()`.
+ *
+ * @param {Function} fn - the function to deprecate
+ * @param {String} msg - the string to print to the console when `fn` is invoked
+ * @returns {Function} a new "deprecated" version of `fn`
+ * @api public
+ */
+
+function deprecate (fn, msg) {
+  if (config('noDeprecation')) {
+    return fn;
+  }
+
+  var warned = false;
+  function deprecated() {
+    if (!warned) {
+      if (config('throwDeprecation')) {
+        throw new Error(msg);
+      } else if (config('traceDeprecation')) {
+        console.trace(msg);
+      } else {
+        console.warn(msg);
+      }
+      warned = true;
+    }
+    return fn.apply(this, arguments);
+  }
+
+  return deprecated;
+}
+
+/**
+ * Checks `localStorage` for boolean values for the given `name`.
+ *
+ * @param {String} name
+ * @returns {Boolean}
+ * @api private
+ */
+
+function config (name) {
+  // accessing global.localStorage can trigger a DOMException in sandboxed iframes
+  try {
+    if (!global.localStorage) return false;
+  } catch (_) {
+    return false;
+  }
+  var val = global.localStorage[name];
+  if (null == val) return false;
+  return String(val).toLowerCase() === 'true';
+}
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],178:[function(require,module,exports){
+arguments[4][118][0].apply(exports,arguments)
+},{"dup":118}],179:[function(require,module,exports){
+module.exports = function isBuffer(arg) {
+  return arg && typeof arg === 'object'
+    && typeof arg.copy === 'function'
+    && typeof arg.fill === 'function'
+    && typeof arg.readUInt8 === 'function';
+}
+},{}],180:[function(require,module,exports){
+(function (process,global){
+// 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 formatRegExp = /%[sdj%]/g;
+exports.format = function(f) {
+  if (!isString(f)) {
+    var objects = [];
+    for (var i = 0; i < arguments.length; i++) {
+      objects.push(inspect(arguments[i]));
+    }
+    return objects.join(' ');
+  }
+
+  var i = 1;
+  var args = arguments;
+  var len = args.length;
+  var str = String(f).replace(formatRegExp, function(x) {
+    if (x === '%%') return '%';
+    if (i >= len) return x;
+    switch (x) {
+      case '%s': return String(args[i++]);
+      case '%d': return Number(args[i++]);
+      case '%j':
+        try {
+          return JSON.stringify(args[i++]);
+        } catch (_) {
+          return '[Circular]';
+        }
+      default:
+        return x;
+    }
+  });
+  for (var x = args[i]; i < len; x = args[++i]) {
+    if (isNull(x) || !isObject(x)) {
+      str += ' ' + x;
+    } else {
+      str += ' ' + inspect(x);
+    }
+  }
+  return str;
+};
+
+
+// Mark that a method should not be used.
+// Returns a modified function which warns once by default.
+// If --no-deprecation is set, then it is a no-op.
+exports.deprecate = function(fn, msg) {
+  // Allow for deprecating things in the process of starting up.
+  if (isUndefined(global.process)) {
+    return function() {
+      return exports.deprecate(fn, msg).apply(this, arguments);
+    };
+  }
+
+  if (process.noDeprecation === true) {
+    return fn;
+  }
+
+  var warned = false;
+  function deprecated() {
+    if (!warned) {
+      if (process.throwDeprecation) {
+        throw new Error(msg);
+      } else if (process.traceDeprecation) {
+        console.trace(msg);
+      } else {
+        console.error(msg);
+      }
+      warned = true;
+    }
+    return fn.apply(this, arguments);
+  }
+
+  return deprecated;
+};
+
+
+var debugs = {};
+var debugEnviron;
+exports.debuglog = function(set) {
+  if (isUndefined(debugEnviron))
+    debugEnviron = process.env.NODE_DEBUG || '';
+  set = set.toUpperCase();
+  if (!debugs[set]) {
+    if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
+      var pid = process.pid;
+      debugs[set] = function() {
+        var msg = exports.format.apply(exports, arguments);
+        console.error('%s %d: %s', set, pid, msg);
+      };
+    } else {
+      debugs[set] = function() {};
+    }
+  }
+  return debugs[set];
+};
+
+
+/**
+ * Echos the value of a value. Trys to print the value out
+ * in the best way possible given the different types.
+ *
+ * @param {Object} obj The object to print out.
+ * @param {Object} opts Optional options object that alters the output.
+ */
+/* legacy: obj, showHidden, depth, colors*/
+function inspect(obj, opts) {
+  // default options
+  var ctx = {
+    seen: [],
+    stylize: stylizeNoColor
+  };
+  // legacy...
+  if (arguments.length >= 3) ctx.depth = arguments[2];
+  if (arguments.length >= 4) ctx.colors = arguments[3];
+  if (isBoolean(opts)) {
+    // legacy...
+    ctx.showHidden = opts;
+  } else if (opts) {
+    // got an "options" object
+    exports._extend(ctx, opts);
+  }
+  // set default options
+  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
+  if (isUndefined(ctx.depth)) ctx.depth = 2;
+  if (isUndefined(ctx.colors)) ctx.colors = false;
+  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
+  if (ctx.colors) ctx.stylize = stylizeWithColor;
+  return formatValue(ctx, obj, ctx.depth);
+}
+exports.inspect = inspect;
+
+
+// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
+inspect.colors = {
+  'bold' : [1, 22],
+  'italic' : [3, 23],
+  'underline' : [4, 24],
+  'inverse' : [7, 27],
+  'white' : [37, 39],
+  'grey' : [90, 39],
+  'black' : [30, 39],
+  'blue' : [34, 39],
+  'cyan' : [36, 39],
+  'green' : [32, 39],
+  'magenta' : [35, 39],
+  'red' : [31, 39],
+  'yellow' : [33, 39]
+};
+
+// Don't use 'blue' not visible on cmd.exe
+inspect.styles = {
+  'special': 'cyan',
+  'number': 'yellow',
+  'boolean': 'yellow',
+  'undefined': 'grey',
+  'null': 'bold',
+  'string': 'green',
+  'date': 'magenta',
+  // "name": intentionally not styling
+  'regexp': 'red'
+};
+
+
+function stylizeWithColor(str, styleType) {
+  var style = inspect.styles[styleType];
+
+  if (style) {
+    return '\u001b[' + inspect.colors[style][0] + 'm' + str +
+           '\u001b[' + inspect.colors[style][1] + 'm';
+  } else {
+    return str;
+  }
+}
+
+
+function stylizeNoColor(str, styleType) {
+  return str;
+}
+
+
+function arrayToHash(array) {
+  var hash = {};
+
+  array.forEach(function(val, idx) {
+    hash[val] = true;
+  });
+
+  return hash;
+}
+
+
+function formatValue(ctx, value, recurseTimes) {
+  // Provide a hook for user-specified inspect functions.
+  // Check that value is an object with an inspect function on it
+  if (ctx.customInspect &&
+      value &&
+      isFunction(value.inspect) &&
+      // Filter out the util module, it's inspect function is special
+      value.inspect !== exports.inspect &&
+      // Also filter out any prototype objects using the circular check.
+      !(value.constructor && value.constructor.prototype === value)) {
+    var ret = value.inspect(recurseTimes, ctx);
+    if (!isString(ret)) {
+      ret = formatValue(ctx, ret, recurseTimes);
+    }
+    return ret;
+  }
+
+  // Primitive types cannot have properties
+  var primitive = formatPrimitive(ctx, value);
+  if (primitive) {
+    return primitive;
   }
 
-  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {
-    srcPath.push('');
+  // Look up the keys of the object.
+  var keys = Object.keys(value);
+  var visibleKeys = arrayToHash(keys);
+
+  if (ctx.showHidden) {
+    keys = Object.getOwnPropertyNames(value);
   }
 
-  var isAbsolute = srcPath[0] === '' ||
-      (srcPath[0] && srcPath[0].charAt(0) === '/');
+  // IE doesn't make error fields non-enumerable
+  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
+  if (isError(value)
+      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
+    return formatError(value);
+  }
 
-  // put the host back
-  if (psychotic) {
-    result.hostname = result.host = isAbsolute ? '' :
-                                    srcPath.length ? srcPath.shift() : '';
-    //occationaly the auth can get stuck only in host
-    //this especially happens in cases like
-    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
-    var authInHost = result.host && result.host.indexOf('@') > 0 ?
-                     result.host.split('@') : false;
-    if (authInHost) {
-      result.auth = authInHost.shift();
-      result.host = result.hostname = authInHost.shift();
+  // Some type of object without properties can be shortcutted.
+  if (keys.length === 0) {
+    if (isFunction(value)) {
+      var name = value.name ? ': ' + value.name : '';
+      return ctx.stylize('[Function' + name + ']', 'special');
+    }
+    if (isRegExp(value)) {
+      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+    }
+    if (isDate(value)) {
+      return ctx.stylize(Date.prototype.toString.call(value), 'date');
+    }
+    if (isError(value)) {
+      return formatError(value);
     }
   }
 
-  mustEndAbs = mustEndAbs || (result.host && srcPath.length);
+  var base = '', array = false, braces = ['{', '}'];
 
-  if (mustEndAbs && !isAbsolute) {
-    srcPath.unshift('');
+  // Make Array say that they are Array
+  if (isArray(value)) {
+    array = true;
+    braces = ['[', ']'];
   }
 
-  if (!srcPath.length) {
-    result.pathname = null;
-    result.path = null;
-  } else {
-    result.pathname = srcPath.join('/');
+  // Make functions say that they are functions
+  if (isFunction(value)) {
+    var n = value.name ? ': ' + value.name : '';
+    base = ' [Function' + n + ']';
   }
 
-  //to support request.http
-  if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
-    result.path = (result.pathname ? result.pathname : '') +
-                  (result.search ? result.search : '');
+  // Make RegExps say that they are RegExps
+  if (isRegExp(value)) {
+    base = ' ' + RegExp.prototype.toString.call(value);
   }
-  result.auth = relative.auth || result.auth;
-  result.slashes = result.slashes || relative.slashes;
-  result.href = result.format();
-  return result;
-};
 
-Url.prototype.parseHost = function() {
-  var host = this.host;
-  var port = portPattern.exec(host);
-  if (port) {
-    port = port[0];
-    if (port !== ':') {
-      this.port = port.substr(1);
+  // Make dates with properties first say the date
+  if (isDate(value)) {
+    base = ' ' + Date.prototype.toUTCString.call(value);
+  }
+
+  // Make error with message first say the error
+  if (isError(value)) {
+    base = ' ' + formatError(value);
+  }
+
+  if (keys.length === 0 && (!array || value.length == 0)) {
+    return braces[0] + base + braces[1];
+  }
+
+  if (recurseTimes < 0) {
+    if (isRegExp(value)) {
+      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+    } else {
+      return ctx.stylize('[Object]', 'special');
     }
-    host = host.substr(0, host.length - port.length);
   }
-  if (host) this.hostname = host;
-};
 
-},{"./util":163,"punycode":113,"querystring":116}],163:[function(require,module,exports){
-'use strict';
+  ctx.seen.push(value);
 
-module.exports = {
-  isString: function(arg) {
-    return typeof(arg) === 'string';
-  },
-  isObject: function(arg) {
-    return typeof(arg) === 'object' && arg !== null;
-  },
-  isNull: function(arg) {
-    return arg === null;
-  },
-  isNullOrUndefined: function(arg) {
-    return arg == null;
+  var output;
+  if (array) {
+    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
+  } else {
+    output = keys.map(function(key) {
+      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
+    });
   }
-};
 
-},{}],164:[function(require,module,exports){
-(function (global){
+  ctx.seen.pop();
 
-/**
- * Module exports.
- */
+  return reduceToSingleString(output, base, braces);
+}
 
-module.exports = deprecate;
 
-/**
- * Mark that a method should not be used.
- * Returns a modified function which warns once by default.
- *
- * If `localStorage.noDeprecation = true` is set, then it is a no-op.
- *
- * If `localStorage.throwDeprecation = true` is set, then deprecated functions
- * will throw an Error when invoked.
- *
- * If `localStorage.traceDeprecation = true` is set, then deprecated functions
- * will invoke `console.trace()` instead of `console.error()`.
- *
- * @param {Function} fn - the function to deprecate
- * @param {String} msg - the string to print to the console when `fn` is invoked
- * @returns {Function} a new "deprecated" version of `fn`
- * @api public
- */
+function formatPrimitive(ctx, value) {
+  if (isUndefined(value))
+    return ctx.stylize('undefined', 'undefined');
+  if (isString(value)) {
+    var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
+                                             .replace(/'/g, "\\'")
+                                             .replace(/\\"/g, '"') + '\'';
+    return ctx.stylize(simple, 'string');
+  }
+  if (isNumber(value))
+    return ctx.stylize('' + value, 'number');
+  if (isBoolean(value))
+    return ctx.stylize('' + value, 'boolean');
+  // For some reason typeof null is "object", so special case here.
+  if (isNull(value))
+    return ctx.stylize('null', 'null');
+}
 
-function deprecate (fn, msg) {
-  if (config('noDeprecation')) {
-    return fn;
+
+function formatError(value) {
+  return '[' + Error.prototype.toString.call(value) + ']';
+}
+
+
+function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
+  var output = [];
+  for (var i = 0, l = value.length; i < l; ++i) {
+    if (hasOwnProperty(value, String(i))) {
+      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+          String(i), true));
+    } else {
+      output.push('');
+    }
   }
+  keys.forEach(function(key) {
+    if (!key.match(/^\d+$/)) {
+      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+          key, true));
+    }
+  });
+  return output;
+}
 
-  var warned = false;
-  function deprecated() {
-    if (!warned) {
-      if (config('throwDeprecation')) {
-        throw new Error(msg);
-      } else if (config('traceDeprecation')) {
-        console.trace(msg);
+
+function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
+  var name, str, desc;
+  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
+  if (desc.get) {
+    if (desc.set) {
+      str = ctx.stylize('[Getter/Setter]', 'special');
+    } else {
+      str = ctx.stylize('[Getter]', 'special');
+    }
+  } else {
+    if (desc.set) {
+      str = ctx.stylize('[Setter]', 'special');
+    }
+  }
+  if (!hasOwnProperty(visibleKeys, key)) {
+    name = '[' + key + ']';
+  }
+  if (!str) {
+    if (ctx.seen.indexOf(desc.value) < 0) {
+      if (isNull(recurseTimes)) {
+        str = formatValue(ctx, desc.value, null);
       } else {
-        console.warn(msg);
+        str = formatValue(ctx, desc.value, recurseTimes - 1);
       }
-      warned = true;
+      if (str.indexOf('\n') > -1) {
+        if (array) {
+          str = str.split('\n').map(function(line) {
+            return '  ' + line;
+          }).join('\n').substr(2);
+        } else {
+          str = '\n' + str.split('\n').map(function(line) {
+            return '   ' + line;
+          }).join('\n');
+        }
+      }
+    } else {
+      str = ctx.stylize('[Circular]', 'special');
+    }
+  }
+  if (isUndefined(name)) {
+    if (array && key.match(/^\d+$/)) {
+      return str;
+    }
+    name = JSON.stringify('' + key);
+    if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
+      name = name.substr(1, name.length - 2);
+      name = ctx.stylize(name, 'name');
+    } else {
+      name = name.replace(/'/g, "\\'")
+                 .replace(/\\"/g, '"')
+                 .replace(/(^"|"$)/g, "'");
+      name = ctx.stylize(name, 'string');
     }
-    return fn.apply(this, arguments);
   }
 
-  return deprecated;
+  return name + ': ' + str;
+}
+
+
+function reduceToSingleString(output, base, braces) {
+  var numLinesEst = 0;
+  var length = output.reduce(function(prev, cur) {
+    numLinesEst++;
+    if (cur.indexOf('\n') >= 0) numLinesEst++;
+    return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
+  }, 0);
+
+  if (length > 60) {
+    return braces[0] +
+           (base === '' ? '' : base + '\n ') +
+           ' ' +
+           output.join(',\n  ') +
+           ' ' +
+           braces[1];
+  }
+
+  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
+}
+
+
+// NOTE: These type checking functions intentionally don't use `instanceof`
+// because it is fragile and can be easily faked with `Object.create()`.
+function isArray(ar) {
+  return Array.isArray(ar);
+}
+exports.isArray = isArray;
+
+function isBoolean(arg) {
+  return typeof arg === 'boolean';
+}
+exports.isBoolean = isBoolean;
+
+function isNull(arg) {
+  return arg === null;
+}
+exports.isNull = isNull;
+
+function isNullOrUndefined(arg) {
+  return arg == null;
+}
+exports.isNullOrUndefined = isNullOrUndefined;
+
+function isNumber(arg) {
+  return typeof arg === 'number';
+}
+exports.isNumber = isNumber;
+
+function isString(arg) {
+  return typeof arg === 'string';
+}
+exports.isString = isString;
+
+function isSymbol(arg) {
+  return typeof arg === 'symbol';
+}
+exports.isSymbol = isSymbol;
+
+function isUndefined(arg) {
+  return arg === void 0;
+}
+exports.isUndefined = isUndefined;
+
+function isRegExp(re) {
+  return isObject(re) && objectToString(re) === '[object RegExp]';
+}
+exports.isRegExp = isRegExp;
+
+function isObject(arg) {
+  return typeof arg === 'object' && arg !== null;
+}
+exports.isObject = isObject;
+
+function isDate(d) {
+  return isObject(d) && objectToString(d) === '[object Date]';
+}
+exports.isDate = isDate;
+
+function isError(e) {
+  return isObject(e) &&
+      (objectToString(e) === '[object Error]' || e instanceof Error);
+}
+exports.isError = isError;
+
+function isFunction(arg) {
+  return typeof arg === 'function';
+}
+exports.isFunction = isFunction;
+
+function isPrimitive(arg) {
+  return arg === null ||
+         typeof arg === 'boolean' ||
+         typeof arg === 'number' ||
+         typeof arg === 'string' ||
+         typeof arg === 'symbol' ||  // ES6 symbol
+         typeof arg === 'undefined';
+}
+exports.isPrimitive = isPrimitive;
+
+exports.isBuffer = require('./support/isBuffer');
+
+function objectToString(o) {
+  return Object.prototype.toString.call(o);
 }
 
+
+function pad(n) {
+  return n < 10 ? '0' + n.toString(10) : n.toString(10);
+}
+
+
+var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
+              'Oct', 'Nov', 'Dec'];
+
+// 26 Feb 16:19:34
+function timestamp() {
+  var d = new Date();
+  var time = [pad(d.getHours()),
+              pad(d.getMinutes()),
+              pad(d.getSeconds())].join(':');
+  return [d.getDate(), months[d.getMonth()], time].join(' ');
+}
+
+
+// log is just a thin wrapper to console.log that prepends a timestamp
+exports.log = function() {
+  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
+};
+
+
 /**
- * Checks `localStorage` for boolean values for the given `name`.
+ * Inherit the prototype methods from one constructor into another.
  *
- * @param {String} name
- * @returns {Boolean}
- * @api private
+ * The Function.prototype.inherits from lang.js rewritten as a standalone
+ * function (not on Function.prototype). NOTE: If this file is to be loaded
+ * during bootstrapping this function needs to be rewritten using some native
+ * functions as prototype setup using normal JavaScript does not work as
+ * expected during bootstrapping (see mirror.js in r114903).
+ *
+ * @param {function} ctor Constructor function which needs to inherit the
+ *     prototype.
+ * @param {function} superCtor Constructor function to inherit prototype from.
  */
+exports.inherits = require('inherits');
 
-function config (name) {
-  // accessing global.localStorage can trigger a DOMException in sandboxed iframes
-  try {
-    if (!global.localStorage) return false;
-  } catch (_) {
-    return false;
+exports._extend = function(origin, add) {
+  // Don't do anything if add isn't an object
+  if (!add || !isObject(add)) return origin;
+
+  var keys = Object.keys(add);
+  var i = keys.length;
+  while (i--) {
+    origin[keys[i]] = add[keys[i]];
   }
-  var val = global.localStorage[name];
-  if (null == val) return false;
-  return String(val).toLowerCase() === 'true';
+  return origin;
+};
+
+function hasOwnProperty(obj, prop) {
+  return Object.prototype.hasOwnProperty.call(obj, prop);
 }
 
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{}],165:[function(require,module,exports){
+}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"./support/isBuffer":179,"_process":124,"inherits":178}],181:[function(require,module,exports){
 module.exports = extend
 
 var hasOwnProperty = Object.prototype.hasOwnProperty;
@@ -24189,7 +25418,7 @@ function extend() {
     return target
 }
 
-},{}],166:[function(require,module,exports){
+},{}],182:[function(require,module,exports){
 /*!
  * HTML Parser By John Resig (ejohn.org)
  * Modified by Juriy "kangax" Zaytsev
@@ -24754,7 +25983,7 @@ exports.HTMLtoDOM = function(html, doc) {
   return doc;
 };
 
-},{"./utils":168}],167:[function(require,module,exports){
+},{"./utils":184}],183:[function(require,module,exports){
 'use strict';
 
 function Sorter() {
@@ -24827,7 +26056,7 @@ TokenChain.prototype = {
 
 module.exports = TokenChain;
 
-},{}],168:[function(require,module,exports){
+},{}],184:[function(require,module,exports){
 'use strict';
 
 function createMap(values, ignoreCase) {
@@ -24850,12 +26079,12 @@ exports.createMapFromString = function(values, ignoreCase) {
 },{}],"html-minifier":[function(require,module,exports){
 'use strict';
 
-var CleanCSS = require('clean-css');
+var CleanCSS = require('@ndcode/clean-css');
 var decode = require('he').decode;
 var HTMLParser = require('./htmlparser').HTMLParser;
 var RelateUrl = require('relateurl');
 var TokenChain = require('./tokenchain');
-var UglifyJS = require('uglify-js');
+var UglifyES = require('uglify-es');
 var utils = require('./utils');
 
 function trimWhitespace(str) {
@@ -25534,7 +26763,7 @@ function processOptions(values) {
         var start = text.match(/^\s*<!--.*/);
         var code = start ? text.slice(start[0].length).replace(/\n\s*-->\s*$/, '') : text;
         value.parse.bare_returns = inline;
-        var result = UglifyJS.minify(code, value);
+        var result = UglifyES.minify(code, value);
         if (result.error) {
           options.log(result.error);
           return text;
@@ -26178,8 +27407,8 @@ exports.minify = function(value, options) {
   return result;
 };
 
-},{"./htmlparser":166,"./tokenchain":167,"./utils":168,"clean-css":6,"he":103,"relateurl":128,"uglify-js":"uglify-js"}],"uglify-js":[function(require,module,exports){
+},{"./htmlparser":182,"./tokenchain":183,"./utils":184,"@ndcode/clean-css":1,"he":115,"relateurl":140,"uglify-es":174}],"uglify-js":[function(require,module,exports){
 (function (Buffer){
 (function(exports){"use strict";function characters(str){return str.split("")}function member(name,array){return array.indexOf(name)>=0}function find_if(func,array){for(var i=array.length;--i>=0;)if(func(array[i]))return array[i]}function repeat_string(str,i){if(i<=0)return"";if(i==1)return str;var d=repeat_string(str,i>>1);d+=d;return i&1?d+str:d}function configure_error_stack(fn){Object.defineProperty(fn.prototype,"stack",{get:function(){var err=new Error(this.message);err.name=this.name;try{throw err}catch(e){return e.stack}}})}function DefaultsError(msg,defs){this.message=msg;this.defs=defs}DefaultsError.prototype=Object.create(Error.prototype);DefaultsError.prototype.constructor=DefaultsError;DefaultsError.prototype.name="DefaultsError";configure_error_stack(DefaultsError);function defaults(args,defs,croak){if(args===true)args={};var ret=args||{};if(croak)for(var i in ret)if(HOP(ret,i)&&!HOP(defs,i)){throw new DefaultsError("`"+i+"` is not a supported option",defs)}for(var i in defs)if(HOP(defs,i)){ret[i]=args&&HOP(args,i)?args[i]:defs[i]}return ret}function merge(obj,ext){var count=0;for(var i in ext)if(HOP(ext,i)){obj[i]=ext[i];count++}return count}function noop(){}function return_false(){return false}function return_true(){return true}function return_this(){return this}function return_null(){return null}var MAP=function(){function MAP(a,f,backwards){var ret=[],top=[],i;function doit(){var val=f(a[i],i);var is_last=val instanceof Last;if(is_last)val=val.v;if(val instanceof AtTop){val=val.v;if(val instanceof Splice){top.push.apply(top,backwards?val.v.slice().reverse():val.v)}else{top.push(val)}}else if(val!==skip){if(val instanceof Splice){ret.push.apply(ret,backwards?val.v.slice().reverse():val.v)}else{ret.push(val)}}return is_last}if(Array.isArray(a)){if(backwards){for(i=a.length;--i>=0;)if(doit())break;ret.reverse();top.reverse()}else{for(i=0;i<a.length;++i)if(doit())break}}else{for(i in a)if(HOP(a,i))if(doit())break}return top.concat(ret)}MAP.at_top=function(val){return new AtTop(val)};MAP.splice=function(val){return new Splice(val)};MAP.last=function(val){return new Last(val)};var skip=MAP.skip={};function AtTop(val){this.v=val}function Splice(val){this.v=val}function Last(val){this.v=val}return MAP}();function push_uniq(array,el){if(array.indexOf(el)<0)return array.push(el)}function string_template(text,props){return text.replace(/\{(.+?)\}/g,function(str,p){return props&&props[p]})}function remove(array,el){var index=array.indexOf(el);if(index>=0)array.splice(index,1)}function makePredicate(words){if(!Array.isArray(words))words=words.split(" ");var map=Object.create(null);words.forEach(function(word){map[word]=true});return map}function all(array,predicate){for(var i=array.length;--i>=0;)if(!predicate(array[i]))return false;return true}function Dictionary(){this._values=Object.create(null);this._size=0}Dictionary.prototype={set:function(key,val){if(!this.has(key))++this._size;this._values["$"+key]=val;return this},add:function(key,val){if(this.has(key)){this.get(key).push(val)}else{this.set(key,[val])}return this},get:function(key){return this._values["$"+key]},del:function(key){if(this.has(key)){--this._size;delete this._values["$"+key]}return this},has:function(key){return"$"+key in this._values},each:function(f){for(var i in this._values)f(this._values[i],i.substr(1))},size:function(){return this._size},map:function(f){var ret=[];for(var i in this._values)ret.push(f(this._values[i],i.substr(1)));return ret},clone:function(){var ret=new Dictionary;for(var i in this._values)ret._values[i]=this._values[i];ret._size=this._size;return ret},toObject:function(){return this._values}};Dictionary.fromObject=function(obj){var dict=new Dictionary;dict._size=merge(dict._values,obj);return dict};function HOP(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}function first_in_statement(stack){var node=stack.parent(-1);for(var i=0,p;p=stack.parent(i++);node=p){if(p.TYPE=="Call"){if(p.expression===node)continue}else if(p instanceof AST_Binary){if(p.left===node)continue}else if(p instanceof AST_Conditional){if(p.condition===node)continue}else if(p instanceof AST_PropAccess){if(p.expression===node)continue}else if(p instanceof AST_Sequence){if(p.expressions[0]===node)continue}else if(p instanceof AST_Statement){return p.body===node}else if(p instanceof AST_UnaryPostfix){if(p.expression===node)continue}return false}}"use strict";function DEFNODE(type,props,methods,base){if(typeof base==="undefined")base=AST_Node;props=props?props.split(/\s+/):[];var self_props=props;if(base&&base.PROPS)props=props.concat(base.PROPS);var code=["return function AST_",type,"(props){","if(props){"];props.forEach(function(prop){code.push("this.",prop,"=props.",prop,";")});var proto=base&&new base;if(proto&&proto.initialize||methods&&methods.initialize)code.push("this.initialize();");code.push("}}");var ctor=new Function(code.join(""))();if(proto){ctor.prototype=proto;ctor.BASE=base}if(base)base.SUBCLASSES.push(ctor);ctor.prototype.CTOR=ctor;ctor.PROPS=props||null;ctor.SELF_PROPS=self_props;ctor.SUBCLASSES=[];if(type){ctor.prototype.TYPE=ctor.TYPE=type}if(methods)for(var name in methods)if(HOP(methods,name)){if(/^\$/.test(name)){ctor[name.substr(1)]=methods[name]}else{ctor.prototype[name]=methods[name]}}ctor.DEFMETHOD=function(name,method){this.prototype[name]=method};if(typeof exports!=="undefined"){exports["AST_"+type]=ctor}return ctor}var AST_Token=DEFNODE("Token","type value line col pos endline endcol endpos nlb comments_before comments_after file raw",{},null);var AST_Node=DEFNODE("Node","start end",{_clone:function(deep){if(deep){var self=this.clone();return self.transform(new TreeTransformer(function(node){if(node!==self){return node.clone(true)}}))}return new this.CTOR(this)},clone:function(deep){return this._clone(deep)},$documentation:"Base class of all AST nodes",$propdoc:{start:"[AST_Token] The first token of this node",end:"[AST_Token] The last token of this node"},_walk:function(visitor){return visitor._visit(this)},walk:function(visitor){return this._walk(visitor)}},null);AST_Node.warn=function(txt,props){if(AST_Node.warn_function)AST_Node.warn_function(string_template(txt,props))};var AST_Statement=DEFNODE("Statement",null,{$documentation:"Base class of all statements"});var AST_Debugger=DEFNODE("Debugger",null,{$documentation:"Represents a debugger statement"},AST_Statement);var AST_Directive=DEFNODE("Directive","value quote",{$documentation:'Represents a directive, like "use strict";',$propdoc:{value:"[string] The value of this directive as a plain string (it's not an AST_String!)",quote:"[string] the original quote character"}},AST_Statement);var AST_SimpleStatement=DEFNODE("SimpleStatement","body",{$documentation:"A statement consisting of an expression, i.e. a = 1 + 2",$propdoc:{body:"[AST_Node] an expression node (should not be instanceof AST_Statement)"},_walk:function(visitor){return visitor._visit(this,function(){this.body._walk(visitor)})}},AST_Statement);function walk_body(node,visitor){var body=node.body;if(body instanceof AST_Statement){body._walk(visitor)}else body.forEach(function(node){node._walk(visitor)})}var AST_Block=DEFNODE("Block","body",{$documentation:"A body of statements (usually braced)",$propdoc:{body:"[AST_Statement*] an array of statements"},_walk:function(visitor){return visitor._visit(this,function(){walk_body(this,visitor)})}},AST_Statement);var AST_BlockStatement=DEFNODE("BlockStatement",null,{$documentation:"A block statement"},AST_Block);var AST_EmptyStatement=DEFNODE("EmptyStatement",null,{$documentation:"The empty statement (empty block or simply a semicolon)"},AST_Statement);var AST_StatementWithBody=DEFNODE("StatementWithBody","body",{$documentation:"Base class for all statements that contain one nested body: `For`, `ForIn`, `Do`, `While`, `With`",$propdoc:{body:"[AST_Statement] the body; this should always be present, even if it's an AST_EmptyStatement"}},AST_Statement);var AST_LabeledStatement=DEFNODE("LabeledStatement","label",{$documentation:"Statement with a label",$propdoc:{label:"[AST_Label] a label definition"},_walk:function(visitor){return visitor._visit(this,function(){this.label._walk(visitor);this.body._walk(visitor)})},clone:function(deep){var node=this._clone(deep);if(deep){var label=node.label;var def=this.label;node.walk(new TreeWalker(function(node){if(node instanceof AST_LoopControl&&node.label&&node.label.thedef===def){node.label.thedef=label;label.references.push(node)}}))}return node}},AST_StatementWithBody);var AST_IterationStatement=DEFNODE("IterationStatement",null,{$documentation:"Internal class.  All loops inherit from it."},AST_StatementWithBody);var AST_DWLoop=DEFNODE("DWLoop","condition",{$documentation:"Base class for do/while statements",$propdoc:{condition:"[AST_Node] the loop condition.  Should not be instanceof AST_Statement"}},AST_IterationStatement);var AST_Do=DEFNODE("Do",null,{$documentation:"A `do` statement",_walk:function(visitor){return visitor._visit(this,function(){this.body._walk(visitor);this.condition._walk(visitor)})}},AST_DWLoop);var AST_While=DEFNODE("While",null,{$documentation:"A `while` statement",_walk:function(visitor){return visitor._visit(this,function(){this.condition._walk(visitor);this.body._walk(visitor)})}},AST_DWLoop);var AST_For=DEFNODE("For","init condition step",{$documentation:"A `for` statement",$propdoc:{init:"[AST_Node?] the `for` initialization code, or null if empty",condition:"[AST_Node?] the `for` termination clause, or null if empty",step:"[AST_Node?] the `for` update clause, or null if empty"},_walk:function(visitor){return visitor._visit(this,function(){if(this.init)this.init._walk(visitor);if(this.condition)this.condition._walk(visitor);if(this.step)this.step._walk(visitor);this.body._walk(visitor)})}},AST_IterationStatement);var AST_ForIn=DEFNODE("ForIn","init object",{$documentation:"A `for ... in` statement",$propdoc:{init:"[AST_Node] the `for/in` initialization code",object:"[AST_Node] the object that we're looping through"},_walk:function(visitor){return visitor._visit(this,function(){this.init._walk(visitor);this.object._walk(visitor);this.body._walk(visitor)})}},AST_IterationStatement);var AST_With=DEFNODE("With","expression",{$documentation:"A `with` statement",$propdoc:{expression:"[AST_Node] the `with` expression"},_walk:function(visitor){return visitor._visit(this,function(){this.expression._walk(visitor);this.body._walk(visitor)})}},AST_StatementWithBody);var AST_Scope=DEFNODE("Scope","variables functions uses_with uses_eval parent_scope enclosed cname",{$documentation:"Base class for all statements introducing a lexical scope",$propdoc:{variables:"[Object/S] a map of name -> SymbolDef for all variables/functions defined in this scope",functions:"[Object/S] like `variables`, but only lists function declarations",uses_with:"[boolean/S] tells whether this scope uses the `with` statement",uses_eval:"[boolean/S] tells whether this scope contains a direct call to the global `eval`",parent_scope:"[AST_Scope?/S] link to the parent scope",enclosed:"[SymbolDef*/S] a list of all symbol definitions that are accessed from this scope or any subscopes",cname:"[integer/S] current index for mangling variables (used internally by the mangler)"},clone:function(deep){var node=this._clone(deep);if(this.variables)node.variables=this.variables.clone();if(this.functions)node.functions=this.functions.clone();if(this.enclosed)node.enclosed=this.enclosed.slice();return node},pinned:function(){return this.uses_eval||this.uses_with}},AST_Block);var AST_Toplevel=DEFNODE("Toplevel","globals",{$documentation:"The toplevel scope",$propdoc:{globals:"[Object/S] a map of name -> SymbolDef for all undeclared names"},wrap_commonjs:function(name){var body=this.body;var wrapped_tl="(function(exports){'$ORIG';})(typeof "+name+"=='undefined'?("+name+"={}):"+name+");";wrapped_tl=parse(wrapped_tl);wrapped_tl=wrapped_tl.transform(new TreeTransformer(function(node){if(node instanceof AST_Directive&&node.value=="$ORIG"){return MAP.splice(body)}}));return wrapped_tl},wrap_enclose:function(args_values){if(typeof args_values!="string")args_values="";var index=args_values.indexOf(":");if(index<0)index=args_values.length;var body=this.body;return parse(["(function(",args_values.slice(0,index),'){"$ORIG"})(',args_values.slice(index+1),")"].join("")).transform(new TreeTransformer(function(node){if(node instanceof AST_Directive&&node.value=="$ORIG"){return MAP.splice(body)}}))}},AST_Scope);var AST_Lambda=DEFNODE("Lambda","name argnames uses_arguments",{$documentation:"Base class for functions",$propdoc:{name:"[AST_SymbolDeclaration?] the name of this function",argnames:"[AST_SymbolFunarg*] array of function arguments",uses_arguments:"[boolean/S] tells whether this function accesses the arguments array"},_walk:function(visitor){return visitor._visit(this,function(){if(this.name)this.name._walk(visitor);this.argnames.forEach(function(argname){argname._walk(visitor)});walk_body(this,visitor)})}},AST_Scope);var AST_Accessor=DEFNODE("Accessor",null,{$documentation:"A setter/getter function.  The `name` property is always null."},AST_Lambda);var AST_Function=DEFNODE("Function","inlined",{$documentation:"A function expression"},AST_Lambda);var AST_Defun=DEFNODE("Defun","inlined",{$documentation:"A function definition"},AST_Lambda);var AST_Jump=DEFNODE("Jump",null,{$documentation:"Base class for “jumps” (for now that's `return`, `throw`, `break` and `continue`)"},AST_Statement);var AST_Exit=DEFNODE("Exit","value",{$documentation:"Base class for “exits” (`return` and `throw`)",$propdoc:{value:"[AST_Node?] the value returned or thrown by this statement; could be null for AST_Return"},_walk:function(visitor){return visitor._visit(this,this.value&&function(){this.value._walk(visitor)})}},AST_Jump);var AST_Return=DEFNODE("Return",null,{$documentation:"A `return` statement"},AST_Exit);var AST_Throw=DEFNODE("Throw",null,{$documentation:"A `throw` statement"},AST_Exit);var AST_LoopControl=DEFNODE("LoopControl","label",{$documentation:"Base class for loop control statements (`break` and `continue`)",$propdoc:{label:"[AST_LabelRef?] the label, or null if none"},_walk:function(visitor){return visitor._visit(this,this.label&&function(){this.label._walk(visitor)})}},AST_Jump);var AST_Break=DEFNODE("Break",null,{$documentation:"A `break` statement"},AST_LoopControl);var AST_Continue=DEFNODE("Continue",null,{$documentation:"A `continue` statement"},AST_LoopControl);var AST_If=DEFNODE("If","condition alternative",{$documentation:"A `if` statement",$propdoc:{condition:"[AST_Node] the `if` condition",alternative:"[AST_Statement?] the `else` part, or null if not present"},_walk:function(visitor){return visitor._visit(this,function(){this.condition._walk(visitor);this.body._walk(visitor);if(this.alternative)this.alternative._walk(visitor)})}},AST_StatementWithBody);var AST_Switch=DEFNODE("Switch","expression",{$documentation:"A `switch` statement",$propdoc:{expression:"[AST_Node] the `switch` “discriminant”"},_walk:function(visitor){return visitor._visit(this,function(){this.expression._walk(visitor);walk_body(this,visitor)})}},AST_Block);var AST_SwitchBranch=DEFNODE("SwitchBranch",null,{$documentation:"Base class for `switch` branches"},AST_Block);var AST_Default=DEFNODE("Default",null,{$documentation:"A `default` switch branch"},AST_SwitchBranch);var AST_Case=DEFNODE("Case","expression",{$documentation:"A `case` switch branch",$propdoc:{expression:"[AST_Node] the `case` expression"},_walk:function(visitor){return visitor._visit(this,function(){this.expression._walk(visitor);walk_body(this,visitor)})}},AST_SwitchBranch);var AST_Try=DEFNODE("Try","bcatch bfinally",{$documentation:"A `try` statement",$propdoc:{bcatch:"[AST_Catch?] the catch block, or null if not present",bfinally:"[AST_Finally?] the finally block, or null if not present"},_walk:function(visitor){return visitor._visit(this,function(){walk_body(this,visitor);if(this.bcatch)this.bcatch._walk(visitor);if(this.bfinally)this.bfinally._walk(visitor)})}},AST_Block);var AST_Catch=DEFNODE("Catch","argname",{$documentation:"A `catch` node; only makes sense as part of a `try` statement",$propdoc:{argname:"[AST_SymbolCatch] symbol for the exception"},_walk:function(visitor){return visitor._visit(this,function(){this.argname._walk(visitor);walk_body(this,visitor)})}},AST_Block);var AST_Finally=DEFNODE("Finally",null,{$documentation:"A `finally` node; only makes sense as part of a `try` statement"},AST_Block);var AST_Definitions=DEFNODE("Definitions","definitions",{$documentation:"Base class for `var` nodes (variable declarations/initializations)",$propdoc:{definitions:"[AST_VarDef*] array of variable definitions"},_walk:function(visitor){return visitor._visit(this,function(){this.definitions.forEach(function(defn){defn._walk(visitor)})})}},AST_Statement);var AST_Var=DEFNODE("Var",null,{$documentation:"A `var` statement"},AST_Definitions);var AST_VarDef=DEFNODE("VarDef","name value",{$documentation:"A variable declaration; only appears in a AST_Definitions node",$propdoc:{name:"[AST_SymbolVar] name of the variable",value:"[AST_Node?] initializer, or null of there's no initializer"},_walk:function(visitor){return visitor._visit(this,function(){this.name._walk(visitor);if(this.value)this.value._walk(visitor)})}});var AST_Call=DEFNODE("Call","expression args",{$documentation:"A function call expression",$propdoc:{expression:"[AST_Node] expression to invoke as function",args:"[AST_Node*] array of arguments"},_walk:function(visitor){return visitor._visit(this,function(){this.expression._walk(visitor);this.args.forEach(function(node){node._walk(visitor)})})}});var AST_New=DEFNODE("New",null,{$documentation:"An object instantiation.  Derives from a function call since it has exactly the same properties"},AST_Call);var AST_Sequence=DEFNODE("Sequence","expressions",{$documentation:"A sequence expression (comma-separated expressions)",$propdoc:{expressions:"[AST_Node*] array of expressions (at least two)"},_walk:function(visitor){return visitor._visit(this,function(){this.expressions.forEach(function(node){node._walk(visitor)})})}});var AST_PropAccess=DEFNODE("PropAccess","expression property",{$documentation:'Base class for property access expressions, i.e. `a.foo` or `a["foo"]`',$propdoc:{expression:"[AST_Node] the “container” expression",property:"[AST_Node|string] the property to access.  For AST_Dot this is always a plain string, while for AST_Sub it's an arbitrary AST_Node"}});var AST_Dot=DEFNODE("Dot",null,{$documentation:"A dotted property access expression",_walk:function(visitor){return visitor._visit(this,function(){this.expression._walk(visitor)})}},AST_PropAccess);var AST_Sub=DEFNODE("Sub",null,{$documentation:'Index-style property access, i.e. `a["foo"]`',_walk:function(visitor){return visitor._visit(this,function(){this.expression._walk(visitor);this.property._walk(visitor)})}},AST_PropAccess);var AST_Unary=DEFNODE("Unary","operator expression",{$documentation:"Base class for unary expressions",$propdoc:{operator:"[string] the operator",expression:"[AST_Node] expression that this unary operator applies to"},_walk:function(visitor){return visitor._visit(this,function(){this.expression._walk(visitor)})}});var AST_UnaryPrefix=DEFNODE("UnaryPrefix",null,{$documentation:"Unary prefix expression, i.e. `typeof i` or `++i`"},AST_Unary);var AST_UnaryPostfix=DEFNODE("UnaryPostfix",null,{$documentation:"Unary postfix expression, i.e. `i++`"},AST_Unary);var AST_Binary=DEFNODE("Binary","operator left right",{$documentation:"Binary expression, i.e. `a + b`",$propdoc:{left:"[AST_Node] left-hand side expression",operator:"[string] the operator",right:"[AST_Node] right-hand side expression"},_walk:function(visitor){return visitor._visit(this,function(){this.left._walk(visitor);this.right._walk(visitor)})}});var AST_Conditional=DEFNODE("Conditional","condition consequent alternative",{$documentation:"Conditional expression using the ternary operator, i.e. `a ? b : c`",$propdoc:{condition:"[AST_Node]",consequent:"[AST_Node]",alternative:"[AST_Node]"},_walk:function(visitor){return visitor._visit(this,function(){this.condition._walk(visitor);this.consequent._walk(visitor);this.alternative._walk(visitor)})}});var AST_Assign=DEFNODE("Assign",null,{$documentation:"An assignment expression — `a = b + 5`"},AST_Binary);var AST_Array=DEFNODE("Array","elements",{$documentation:"An array literal",$propdoc:{elements:"[AST_Node*] array of elements"},_walk:function(visitor){return visitor._visit(this,function(){this.elements.forEach(function(element){element._walk(visitor)})})}});var AST_Object=DEFNODE("Object","properties",{$documentation:"An object literal",$propdoc:{properties:"[AST_ObjectProperty*] array of properties"},_walk:function(visitor){return visitor._visit(this,function(){this.properties.forEach(function(prop){prop._walk(visitor)})})}});var AST_ObjectProperty=DEFNODE("ObjectProperty","key value",{$documentation:"Base class for literal object properties",$propdoc:{key:"[string|AST_SymbolAccessor] property name. For ObjectKeyVal this is a string. For getters and setters this is an AST_SymbolAccessor.",value:"[AST_Node] property value.  For getters and setters this is an AST_Accessor."},_walk:function(visitor){return visitor._visit(this,function(){this.value._walk(visitor)})}});var AST_ObjectKeyVal=DEFNODE("ObjectKeyVal","quote",{$documentation:"A key: value object property",$propdoc:{quote:"[string] the original quote character"}},AST_ObjectProperty);var AST_ObjectSetter=DEFNODE("ObjectSetter",null,{$documentation:"An object setter property"},AST_ObjectProperty);var AST_ObjectGetter=DEFNODE("ObjectGetter",null,{$documentation:"An object getter property"},AST_ObjectProperty);var AST_Symbol=DEFNODE("Symbol","scope name thedef",{$propdoc:{name:"[string] name of this symbol",scope:"[AST_Scope/S] the current scope (not necessarily the definition scope)",thedef:"[SymbolDef/S] the definition of this symbol"},$documentation:"Base class for all symbols"});var AST_SymbolAccessor=DEFNODE("SymbolAccessor",null,{$documentation:"The name of a property accessor (setter/getter function)"},AST_Symbol);var AST_SymbolDeclaration=DEFNODE("SymbolDeclaration","init",{$documentation:"A declaration symbol (symbol in var, function name or argument, symbol in catch)"},AST_Symbol);var AST_SymbolVar=DEFNODE("SymbolVar",null,{$documentation:"Symbol defining a variable"},AST_SymbolDeclaration);var AST_SymbolFunarg=DEFNODE("SymbolFunarg",null,{$documentation:"Symbol naming a function argument"},AST_SymbolVar);var AST_SymbolDefun=DEFNODE("SymbolDefun",null,{$documentation:"Symbol defining a function"},AST_SymbolDeclaration);var AST_SymbolLambda=DEFNODE("SymbolLambda",null,{$documentation:"Symbol naming a function expression"},AST_SymbolDeclaration);var AST_SymbolCatch=DEFNODE("SymbolCatch",null,{$documentation:"Symbol naming the exception in catch"},AST_SymbolDeclaration);var AST_Label=DEFNODE("Label","references",{$documentation:"Symbol naming a label (declaration)",$propdoc:{references:"[AST_LoopControl*] a list of nodes referring to this label"},initialize:function(){this.references=[];this.thedef=this}},AST_Symbol);var AST_SymbolRef=DEFNODE("SymbolRef",null,{$documentation:"Reference to some symbol (not definition/declaration)"},AST_Symbol);var AST_LabelRef=DEFNODE("LabelRef",null,{$documentation:"Reference to a label symbol"},AST_Symbol);var AST_This=DEFNODE("This",null,{$documentation:"The `this` symbol"},AST_Symbol);var AST_Constant=DEFNODE("Constant",null,{$documentation:"Base class for all constants",getValue:function(){return this.value}});var AST_String=DEFNODE("String","value quote",{$documentation:"A string literal",$propdoc:{value:"[string] the contents of this string",quote:"[string] the original quote character"}},AST_Constant);var AST_Number=DEFNODE("Number","value literal",{$documentation:"A number literal",$propdoc:{value:"[number] the numeric value",literal:"[string] numeric value as string (optional)"}},AST_Constant);var AST_RegExp=DEFNODE("RegExp","value",{$documentation:"A regexp literal",$propdoc:{value:"[RegExp] the actual regexp"}},AST_Constant);var AST_Atom=DEFNODE("Atom",null,{$documentation:"Base class for atoms"},AST_Constant);var AST_Null=DEFNODE("Null",null,{$documentation:"The `null` atom",value:null},AST_Atom);var AST_NaN=DEFNODE("NaN",null,{$documentation:"The impossible value",value:0/0},AST_Atom);var AST_Undefined=DEFNODE("Undefined",null,{$documentation:"The `undefined` value",value:function(){}()},AST_Atom);var AST_Hole=DEFNODE("Hole",null,{$documentation:"A hole in an array",value:function(){}()},AST_Atom);var AST_Infinity=DEFNODE("Infinity",null,{$documentation:"The `Infinity` value",value:1/0},AST_Atom);var AST_Boolean=DEFNODE("Boolean",null,{$documentation:"Base class for booleans"},AST_Atom);var AST_False=DEFNODE("False",null,{$documentation:"The `false` atom",value:false},AST_Boolean);var AST_True=DEFNODE("True",null,{$documentation:"The `true` atom",value:true},AST_Boolean);function TreeWalker(callback){this.visit=callback;this.stack=[];this.directives=Object.create(null)}TreeWalker.prototype={_visit:function(node,descend){this.push(node);var ret=this.visit(node,descend?function(){descend.call(node)}:noop);if(!ret&&descend){descend.call(node)}this.pop();return ret},parent:function(n){return this.stack[this.stack.length-2-(n||0)]},push:function(node){if(node instanceof AST_Lambda){this.directives=Object.create(this.directives)}else if(node instanceof AST_Directive&&!this.directives[node.value]){this.directives[node.value]=node}this.stack.push(node)},pop:function(){if(this.stack.pop()instanceof AST_Lambda){this.directives=Object.getPrototypeOf(this.directives)}},self:function(){return this.stack[this.stack.length-1]},find_parent:function(type){var stack=this.stack;for(var i=stack.length;--i>=0;){var x=stack[i];if(x instanceof type)return x}},has_directive:function(type){var dir=this.directives[type];if(dir)return dir;var node=this.stack[this.stack.length-1];if(node instanceof AST_Scope){for(var i=0;i<node.body.length;++i){var st=node.body[i];if(!(st instanceof AST_Directive))break;if(st.value==type)return st}}},loopcontrol_target:function(node){var stack=this.stack;if(node.label)for(var i=stack.length;--i>=0;){var x=stack[i];if(x instanceof AST_LabeledStatement&&x.label.name==node.label.name)return x.body}else for(var i=stack.length;--i>=0;){var x=stack[i];if(x instanceof AST_IterationStatement||node instanceof AST_Break&&x instanceof AST_Switch)return x}},in_boolean_context:function(){var self=this.self();for(var i=0,p;p=this.parent(i);i++){if(p instanceof AST_SimpleStatement||p instanceof AST_Conditional&&p.condition===self||p instanceof AST_DWLoop&&p.condition===self||p instanceof AST_For&&p.condition===self||p instanceof AST_If&&p.condition===self||p instanceof AST_UnaryPrefix&&p.operator=="!"&&p.expression===self){return true}if(p instanceof AST_Binary&&(p.operator=="&&"||p.operator=="||")||p instanceof AST_Conditional||p.tail_node()===self){self=p}else{return false}}}};"use strict";var KEYWORDS="break case catch const continue debugger default delete do else finally for function if in instanceof new return switch throw try typeof var void while with";var KEYWORDS_ATOM="false null true";var RESERVED_WORDS="abstract boolean byte char class double enum export extends final float goto implements import int interface let long native package private protected public short static super synchronized this throws transient volatile yield"+" "+KEYWORDS_ATOM+" "+KEYWORDS;var KEYWORDS_BEFORE_EXPRESSION="return new delete throw else case";KEYWORDS=makePredicate(KEYWORDS);RESERVED_WORDS=makePredicate(RESERVED_WORDS);KEYWORDS_BEFORE_EXPRESSION=makePredicate(KEYWORDS_BEFORE_EXPRESSION);KEYWORDS_ATOM=makePredicate(KEYWORDS_ATOM);var OPERATOR_CHARS=makePredicate(characters("+-*&%=<>!?|~^"));var RE_HEX_NUMBER=/^0x[0-9a-f]+$/i;var RE_OCT_NUMBER=/^0[0-7]+$/;var OPERATORS=makePredicate(["in","instanceof","typeof","new","void","delete","++","--","+","-","!","~","&","|","^","*","/","%",">>","<<",">>>","<",">","<=",">=","==","===","!=","!==","?","=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&=","&&","||"]);var WHITESPACE_CHARS=makePredicate(characters("  \n\r\t\f\v​           \u2028\u2029   \ufeff"));var NEWLINE_CHARS=makePredicate(characters("\n\r\u2028\u2029"));var PUNC_BEFORE_EXPRESSION=makePredicate(characters("[{(,;:"));var PUNC_CHARS=makePredicate(characters("[]{}(),;:"));var UNICODE={letter:new RegExp("[\\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\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\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-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\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-\\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\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\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\\u2160-\\u2188\\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-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\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-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\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]"),digit:new RegExp("[\\u0030-\\u0039\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]"),non_spacing_mark:new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"),space_combining_mark:new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"),connector_punctuation:new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]")};function is_letter(code){return code>=97&&code<=122||code>=65&&code<=90||code>=170&&UNICODE.letter.test(String.fromCharCode(code))}function is_surrogate_pair_head(code){if(typeof code=="string")code=code.charCodeAt(0);return code>=55296&&code<=56319}function is_surrogate_pair_tail(code){if(typeof code=="string")code=code.charCodeAt(0);return code>=56320&&code<=57343}function is_digit(code){return code>=48&&code<=57}function is_alphanumeric_char(code){return is_digit(code)||is_letter(code)}function is_unicode_digit(code){return UNICODE.digit.test(String.fromCharCode(code))}function is_unicode_combining_mark(ch){return UNICODE.non_spacing_mark.test(ch)||UNICODE.space_combining_mark.test(ch)}function is_unicode_connector_punctuation(ch){return UNICODE.connector_punctuation.test(ch)}function is_identifier(name){return!RESERVED_WORDS[name]&&/^[a-z_$][a-z0-9_$]*$/i.test(name)}function is_identifier_start(code){return code==36||code==95||is_letter(code)}function is_identifier_char(ch){var code=ch.charCodeAt(0);return is_identifier_start(code)||is_digit(code)||code==8204||code==8205||is_unicode_combining_mark(ch)||is_unicode_connector_punctuation(ch)||is_unicode_digit(code)}function is_identifier_string(str){return/^[a-z_$][a-z0-9_$]*$/i.test(str)}function parse_js_number(num){if(RE_HEX_NUMBER.test(num)){return parseInt(num.substr(2),16)}else if(RE_OCT_NUMBER.test(num)){return parseInt(num.substr(1),8)}else{var val=parseFloat(num);if(val==num)return val}}function JS_Parse_Error(message,filename,line,col,pos){this.message=message;this.filename=filename;this.line=line;this.col=col;this.pos=pos}JS_Parse_Error.prototype=Object.create(Error.prototype);JS_Parse_Error.prototype.constructor=JS_Parse_Error;JS_Parse_Error.prototype.name="SyntaxError";configure_error_stack(JS_Parse_Error);function js_error(message,filename,line,col,pos){throw new JS_Parse_Error(message,filename,line,col,pos)}function is_token(token,type,val){return token.type==type&&(val==null||token.value==val)}var EX_EOF={};function tokenizer($TEXT,filename,html5_comments,shebang){var S={text:$TEXT,filename:filename,pos:0,tokpos:0,line:1,tokline:0,col:0,tokcol:0,newline_before:false,regex_allowed:false,comments_before:[],directives:{},directive_stack:[]};function peek(){return S.text.charAt(S.pos)}function next(signal_eof,in_string){var ch=S.text.charAt(S.pos++);if(signal_eof&&!ch)throw EX_EOF;if(NEWLINE_CHARS[ch]){S.newline_before=S.newline_before||!in_string;++S.line;S.col=0;if(!in_string&&ch=="\r"&&peek()=="\n"){++S.pos;ch="\n"}}else{++S.col}return ch}function forward(i){while(i-- >0)next()}function looking_at(str){return S.text.substr(S.pos,str.length)==str}function find_eol(){var text=S.text;for(var i=S.pos,n=S.text.length;i<n;++i){var ch=text[i];if(NEWLINE_CHARS[ch])return i}return-1}function find(what,signal_eof){var pos=S.text.indexOf(what,S.pos);if(signal_eof&&pos==-1)throw EX_EOF;return pos}function start_token(){S.tokline=S.line;S.tokcol=S.col;S.tokpos=S.pos}var prev_was_dot=false;function token(type,value,is_comment){S.regex_allowed=type=="operator"&&!UNARY_POSTFIX[value]||type=="keyword"&&KEYWORDS_BEFORE_EXPRESSION[value]||type=="punc"&&PUNC_BEFORE_EXPRESSION[value];if(type=="punc"&&value=="."){prev_was_dot=true}else if(!is_comment){prev_was_dot=false}var ret={type:type,value:value,line:S.tokline,col:S.tokcol,pos:S.tokpos,endline:S.line,endcol:S.col,endpos:S.pos,nlb:S.newline_before,file:filename};if(/^(?:num|string|regexp)$/i.test(type)){ret.raw=$TEXT.substring(ret.pos,ret.endpos)}if(!is_comment){ret.comments_before=S.comments_before;ret.comments_after=S.comments_before=[]}S.newline_before=false;return new AST_Token(ret)}function skip_whitespace(){while(WHITESPACE_CHARS[peek()])next()}function read_while(pred){var ret="",ch,i=0;while((ch=peek())&&pred(ch,i++))ret+=next();return ret}function parse_error(err){js_error(err,filename,S.tokline,S.tokcol,S.tokpos)}function read_num(prefix){var has_e=false,after_e=false,has_x=false,has_dot=prefix==".";var num=read_while(function(ch,i){var code=ch.charCodeAt(0);switch(code){case 120:case 88:return has_x?false:has_x=true;case 101:case 69:return has_x?true:has_e?false:has_e=after_e=true;case 45:return after_e||i==0&&!prefix;case 43:return after_e;case after_e=false,46:return!has_dot&&!has_x&&!has_e?has_dot=true:false}return is_alphanumeric_char(code)});if(prefix)num=prefix+num;if(RE_OCT_NUMBER.test(num)&&next_token.has_directive("use strict")){parse_error("Legacy octal literals are not allowed in strict mode")}var valid=parse_js_number(num);if(!isNaN(valid)){return token("num",valid)}else{parse_error("Invalid syntax: "+num)}}function read_escaped_char(in_string){var ch=next(true,in_string);switch(ch.charCodeAt(0)){case 110:return"\n";case 114:return"\r";case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 120:return String.fromCharCode(hex_bytes(2));case 117:return String.fromCharCode(hex_bytes(4));case 10:return"";case 13:if(peek()=="\n"){next(true,in_string);return""}}if(ch>="0"&&ch<="7")return read_octal_escape_sequence(ch);return ch}function read_octal_escape_sequence(ch){var p=peek();if(p>="0"&&p<="7"){ch+=next(true);if(ch[0]<="3"&&(p=peek())>="0"&&p<="7")ch+=next(true)}if(ch==="0")return"\0";if(ch.length>0&&next_token.has_directive("use strict"))parse_error("Legacy octal escape sequences are not allowed in strict mode");return String.fromCharCode(parseInt(ch,8))}function hex_bytes(n){var num=0;for(;n>0;--n){var digit=parseInt(next(true),16);if(isNaN(digit))parse_error("Invalid hex-character pattern in string");num=num<<4|digit}return num}var read_string=with_eof_error("Unterminated string constant",function(quote_char){var quote=next(),ret="";for(;;){var ch=next(true,true);if(ch=="\\")ch=read_escaped_char(true);else if(NEWLINE_CHARS[ch])parse_error("Unterminated string constant");else if(ch==quote)break;ret+=ch}var tok=token("string",ret);tok.quote=quote_char;return tok});function skip_line_comment(type){var regex_allowed=S.regex_allowed;var i=find_eol(),ret;if(i==-1){ret=S.text.substr(S.pos);S.pos=S.text.length}else{ret=S.text.substring(S.pos,i);S.pos=i}S.col=S.tokcol+(S.pos-S.tokpos);S.comments_before.push(token(type,ret,true));S.regex_allowed=regex_allowed;return next_token}var skip_multiline_comment=with_eof_error("Unterminated multiline comment",function(){var regex_allowed=S.regex_allowed;var i=find("*/",true);var text=S.text.substring(S.pos,i).replace(/\r\n|\r|\u2028|\u2029/g,"\n");forward(text.length+2);S.comments_before.push(token("comment2",text,true));S.regex_allowed=regex_allowed;return next_token});function read_name(){var backslash=false,name="",ch,escaped=false,hex;while((ch=peek())!=null){if(!backslash){if(ch=="\\")escaped=backslash=true,next();else if(is_identifier_char(ch))name+=next();else break}else{if(ch!="u")parse_error("Expecting UnicodeEscapeSequence -- uXXXX");ch=read_escaped_char();if(!is_identifier_char(ch))parse_error("Unicode char: "+ch.charCodeAt(0)+" is not valid in identifier");name+=ch;backslash=false}}if(KEYWORDS[name]&&escaped){hex=name.charCodeAt(0).toString(16).toUpperCase();name="\\u"+"0000".substr(hex.length)+hex+name.slice(1)}return name}var read_regexp=with_eof_error("Unterminated regular expression",function(source){var prev_backslash=false,ch,in_class=false;while(ch=next(true))if(NEWLINE_CHARS[ch]){parse_error("Unexpected line terminator")}else if(prev_backslash){source+="\\"+ch;prev_backslash=false}else if(ch=="["){in_class=true;source+=ch}else if(ch=="]"&&in_class){in_class=false;source+=ch}else if(ch=="/"&&!in_class){break}else if(ch=="\\"){prev_backslash=true}else{source+=ch}var mods=read_name();try{var regexp=new RegExp(source,mods);regexp.raw_source=source;return token("regexp",regexp)}catch(e){parse_error(e.message)}});function read_operator(prefix){function grow(op){if(!peek())return op;var bigger=op+peek();if(OPERATORS[bigger]){next();return grow(bigger)}else{return op}}return token("operator",grow(prefix||next()))}function handle_slash(){next();switch(peek()){case"/":next();return skip_line_comment("comment1");case"*":next();return skip_multiline_comment()}return S.regex_allowed?read_regexp(""):read_operator("/")}function handle_dot(){next();return is_digit(peek().charCodeAt(0))?read_num("."):token("punc",".")}function read_word(){var word=read_name();if(prev_was_dot)return token("name",word);return KEYWORDS_ATOM[word]?token("atom",word):!KEYWORDS[word]?token("name",word):OPERATORS[word]?token("operator",word):token("keyword",word)}function with_eof_error(eof_error,cont){return function(x){try{return cont(x)}catch(ex){if(ex===EX_EOF)parse_error(eof_error);else throw ex}}}function next_token(force_regexp){if(force_regexp!=null)return read_regexp(force_regexp);if(shebang&&S.pos==0&&looking_at("#!")){start_token();forward(2);skip_line_comment("comment5")}for(;;){skip_whitespace();start_token();if(html5_comments){if(looking_at("\x3c!--")){forward(4);skip_line_comment("comment3");continue}if(looking_at("--\x3e")&&S.newline_before){forward(3);skip_line_comment("comment4");continue}}var ch=peek();if(!ch)return token("eof");var code=ch.charCodeAt(0);switch(code){case 34:case 39:return read_string(ch);case 46:return handle_dot();case 47:{var tok=handle_slash();if(tok===next_token)continue;return tok}}if(is_digit(code))return read_num();if(PUNC_CHARS[ch])return token("punc",next());if(OPERATOR_CHARS[ch])return read_operator();if(code==92||is_identifier_start(code))return read_word();break}parse_error("Unexpected character '"+ch+"'")}next_token.context=function(nc){if(nc)S=nc;return S};next_token.add_directive=function(directive){S.directive_stack[S.directive_stack.length-1].push(directive);if(S.directives[directive]===undefined){S.directives[directive]=1}else{S.directives[directive]++}};next_token.push_directives_stack=function(){S.directive_stack.push([])};next_token.pop_directives_stack=function(){var directives=S.directive_stack[S.directive_stack.length-1];for(var i=0;i<directives.length;i++){S.directives[directives[i]]--}S.directive_stack.pop()};next_token.has_directive=function(directive){return S.directives[directive]>0};return next_token}var UNARY_PREFIX=makePredicate(["typeof","void","delete","--","++","!","~","-","+"]);var UNARY_POSTFIX=makePredicate(["--","++"]);var ASSIGNMENT=makePredicate(["=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&="]);var PRECEDENCE=function(a,ret){for(var i=0;i<a.length;++i){var b=a[i];for(var j=0;j<b.length;++j){ret[b[j]]=i+1}}return ret}([["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]],{});var ATOMIC_START_TOKEN=makePredicate(["atom","num","string","regexp","name"]);function parse($TEXT,options){options=defaults(options,{bare_returns:false,expression:false,filename:null,html5_comments:true,shebang:true,strict:false,toplevel:null},true);var S={input:typeof $TEXT=="string"?tokenizer($TEXT,options.filename,options.html5_comments,options.shebang):$TEXT,token:null,prev:null,peeked:null,in_function:0,in_directives:true,in_loop:0,labels:[]};S.token=next();function is(type,value){return is_token(S.token,type,value)}function peek(){return S.peeked||(S.peeked=S.input())}function next(){S.prev=S.token;if(S.peeked){S.token=S.peeked;S.peeked=null}else{S.token=S.input()}S.in_directives=S.in_directives&&(S.token.type=="string"||is("punc",";"));return S.token}function prev(){return S.prev}function croak(msg,line,col,pos){var ctx=S.input.context();js_error(msg,ctx.filename,line!=null?line:ctx.tokline,col!=null?col:ctx.tokcol,pos!=null?pos:ctx.tokpos)}function token_error(token,msg){croak(msg,token.line,token.col)}function unexpected(token){if(token==null)token=S.token;token_error(token,"Unexpected token: "+token.type+" ("+token.value+")")}function expect_token(type,val){if(is(type,val)){return next()}token_error(S.token,"Unexpected token "+S.token.type+" «"+S.token.value+"»"+", expected "+type+" «"+val+"»")}function expect(punc){return expect_token("punc",punc)}function has_newline_before(token){return token.nlb||!all(token.comments_before,function(comment){return!comment.nlb})}function can_insert_semicolon(){return!options.strict&&(is("eof")||is("punc","}")||has_newline_before(S.token))}function semicolon(optional){if(is("punc",";"))next();else if(!optional&&!can_insert_semicolon())unexpected()}function parenthesised(){expect("(");var exp=expression(true);expect(")");return exp}function embed_tokens(parser){return function(){var start=S.token;var expr=parser.apply(null,arguments);var end=prev();expr.start=start;expr.end=end;return expr}}function handle_regexp(){if(is("operator","/")||is("operator","/=")){S.peeked=null;S.token=S.input(S.token.value.substr(1))}}var statement=embed_tokens(function(strict_defun){handle_regexp();switch(S.token.type){case"string":if(S.in_directives){var token=peek();if(S.token.raw.indexOf("\\")==-1&&(is_token(token,"punc",";")||is_token(token,"punc","}")||has_newline_before(token)||is_token(token,"eof"))){S.input.add_directive(S.token.value)}else{S.in_directives=false}}var dir=S.in_directives,stat=simple_statement();return dir?new AST_Directive(stat.body):stat;case"num":case"regexp":case"operator":case"atom":return simple_statement();case"name":return is_token(peek(),"punc",":")?labeled_statement():simple_statement();case"punc":switch(S.token.value){case"{":return new AST_BlockStatement({start:S.token,body:block_(),end:prev()});case"[":case"(":return simple_statement();case";":S.in_directives=false;next();return new AST_EmptyStatement;default:unexpected()}case"keyword":switch(S.token.value){case"break":next();return break_cont(AST_Break);case"continue":next();return break_cont(AST_Continue);case"debugger":next();semicolon();return new AST_Debugger;case"do":next();var body=in_loop(statement);expect_token("keyword","while");var condition=parenthesised();semicolon(true);return new AST_Do({body:body,condition:condition});case"while":next();return new AST_While({condition:parenthesised(),body:in_loop(statement)});case"for":next();return for_();case"function":if(!strict_defun&&S.input.has_directive("use strict")){croak("In strict mode code, functions can only be declared at top level or immediately within another function.")}next();return function_(AST_Defun);case"if":next();return if_();case"return":if(S.in_function==0&&!options.bare_returns)croak("'return' outside of function");next();var value=null;if(is("punc",";")){next()}else if(!can_insert_semicolon()){value=expression(true);semicolon()}return new AST_Return({value:value});case"switch":next();return new AST_Switch({expression:parenthesised(),body:in_loop(switch_body_)});case"throw":next();if(has_newline_before(S.token))croak("Illegal newline after 'throw'");var value=expression(true);semicolon();return new AST_Throw({value:value});case"try":next();return try_();case"var":next();var node=var_();semicolon();return node;case"with":if(S.input.has_directive("use strict")){croak("Strict mode may not include a with statement")}next();return new AST_With({expression:parenthesised(),body:statement()})}}unexpected()});function labeled_statement(){var label=as_symbol(AST_Label);if(!all(S.labels,function(l){return l.name!=label.name})){croak("Label "+label.name+" defined twice")}expect(":");S.labels.push(label);var stat=statement();S.labels.pop();if(!(stat instanceof AST_IterationStatement)){label.references.forEach(function(ref){if(ref instanceof AST_Continue){ref=ref.label.start;croak("Continue label `"+label.name+"` refers to non-IterationStatement.",ref.line,ref.col,ref.pos)}})}return new AST_LabeledStatement({body:stat,label:label})}function simple_statement(tmp){return new AST_SimpleStatement({body:(tmp=expression(true),semicolon(),tmp)})}function break_cont(type){var label=null,ldef;if(!can_insert_semicolon()){label=as_symbol(AST_LabelRef,true)}if(label!=null){ldef=find_if(function(l){return l.name==label.name},S.labels);if(!ldef)croak("Undefined label "+label.name);label.thedef=ldef}else if(S.in_loop==0)croak(type.TYPE+" not inside a loop or switch");semicolon();var stat=new type({label:label});if(ldef)ldef.references.push(stat);return stat}function for_(){expect("(");var init=null;if(!is("punc",";")){init=is("keyword","var")?(next(),var_(true)):expression(true,true);if(is("operator","in")){if(init instanceof AST_Var){if(init.definitions.length>1)croak("Only one variable declaration allowed in for..in loop",init.start.line,init.start.col,init.start.pos)}else if(!is_assignable(init)){croak("Invalid left-hand side in for..in loop",init.start.line,init.start.col,init.start.pos)}next();return for_in(init)}}return regular_for(init)}function regular_for(init){expect(";");var test=is("punc",";")?null:expression(true);expect(";");var step=is("punc",")")?null:expression(true);expect(")");return new AST_For({init:init,condition:test,step:step,body:in_loop(statement)})}function for_in(init){var obj=expression(true);expect(")");return new AST_ForIn({init:init,object:obj,body:in_loop(statement)})}var function_=function(ctor){var in_statement=ctor===AST_Defun;var name=is("name")?as_symbol(in_statement?AST_SymbolDefun:AST_SymbolLambda):null;if(in_statement&&!name)unexpected();if(name&&ctor!==AST_Accessor&&!(name instanceof AST_SymbolDeclaration))unexpected(prev());expect("(");var argnames=[];for(var first=true;!is("punc",")");){if(first)first=false;else expect(",");argnames.push(as_symbol(AST_SymbolFunarg))}next();var loop=S.in_loop;var labels=S.labels;++S.in_function;S.in_directives=true;S.input.push_directives_stack();S.in_loop=0;S.labels=[];var body=block_(true);if(S.input.has_directive("use strict")){if(name)strict_verify_symbol(name);argnames.forEach(strict_verify_symbol)}S.input.pop_directives_stack();--S.in_function;S.in_loop=loop;S.labels=labels;return new ctor({name:name,argnames:argnames,body:body})};function if_(){var cond=parenthesised(),body=statement(),belse=null;if(is("keyword","else")){next();belse=statement()}return new AST_If({condition:cond,body:body,alternative:belse})}function block_(strict_defun){expect("{");var a=[];while(!is("punc","}")){if(is("eof"))unexpected();a.push(statement(strict_defun))}next();return a}function switch_body_(){expect("{");var a=[],cur=null,branch=null,tmp;while(!is("punc","}")){if(is("eof"))unexpected();if(is("keyword","case")){if(branch)branch.end=prev();cur=[];branch=new AST_Case({start:(tmp=S.token,next(),tmp),expression:expression(true),body:cur});a.push(branch);expect(":")}else if(is("keyword","default")){if(branch)branch.end=prev();cur=[];branch=new AST_Default({start:(tmp=S.token,next(),expect(":"),tmp),body:cur});a.push(branch)}else{if(!cur)unexpected();cur.push(statement())}}if(branch)branch.end=prev();next();return a}function try_(){var body=block_(),bcatch=null,bfinally=null;if(is("keyword","catch")){var start=S.token;next();expect("(");var name=as_symbol(AST_SymbolCatch);expect(")");bcatch=new AST_Catch({start:start,argname:name,body:block_(),end:prev()})}if(is("keyword","finally")){var start=S.token;next();bfinally=new AST_Finally({start:start,body:block_(),end:prev()})}if(!bcatch&&!bfinally)croak("Missing catch/finally blocks");return new AST_Try({body:body,bcatch:bcatch,bfinally:bfinally})}function vardefs(no_in){var a=[];for(;;){a.push(new AST_VarDef({start:S.token,name:as_symbol(AST_SymbolVar),value:is("operator","=")?(next(),expression(false,no_in)):null,end:prev()}));if(!is("punc",","))break;next()}return a}var var_=function(no_in){return new AST_Var({start:prev(),definitions:vardefs(no_in),end:prev()})};var new_=function(allow_calls){var start=S.token;expect_token("operator","new");var newexp=expr_atom(false),args;if(is("punc","(")){next();args=expr_list(")")}else{args=[]}var call=new AST_New({start:start,expression:newexp,args:args,end:prev()});mark_pure(call);return subscripts(call,allow_calls)};function as_atom_node(){var tok=S.token,ret;switch(tok.type){case"name":ret=_make_symbol(AST_SymbolRef);break;case"num":ret=new AST_Number({start:tok,end:tok,value:tok.value});break;case"string":ret=new AST_String({start:tok,end:tok,value:tok.value,quote:tok.quote});break;case"regexp":ret=new AST_RegExp({start:tok,end:tok,value:tok.value});break;case"atom":switch(tok.value){case"false":ret=new AST_False({start:tok,end:tok});break;case"true":ret=new AST_True({start:tok,end:tok});break;case"null":ret=new AST_Null({start:tok,end:tok});break}break}next();return ret}var expr_atom=function(allow_calls){if(is("operator","new")){return new_(allow_calls)}var start=S.token;if(is("punc")){switch(start.value){case"(":next();var ex=expression(true);var len=start.comments_before.length;[].unshift.apply(ex.start.comments_before,start.comments_before);start.comments_before=ex.start.comments_before;start.comments_before_length=len;if(len==0&&start.comments_before.length>0){var comment=start.comments_before[0];if(!comment.nlb){comment.nlb=start.nlb;start.nlb=false}}start.comments_after=ex.start.comments_after;ex.start=start;expect(")");var end=prev();end.comments_before=ex.end.comments_before;[].push.apply(ex.end.comments_after,end.comments_after);end.comments_after=ex.end.comments_after;ex.end=end;if(ex instanceof AST_Call)mark_pure(ex);return subscripts(ex,allow_calls);case"[":return subscripts(array_(),allow_calls);case"{":return subscripts(object_(),allow_calls)}unexpected()}if(is("keyword","function")){next();var func=function_(AST_Function);func.start=start;func.end=prev();return subscripts(func,allow_calls)}if(ATOMIC_START_TOKEN[S.token.type]){return subscripts(as_atom_node(),allow_calls)}unexpected()};function expr_list(closing,allow_trailing_comma,allow_empty){var first=true,a=[];while(!is("punc",closing)){if(first)first=false;else expect(",");if(allow_trailing_comma&&is("punc",closing))break;if(is("punc",",")&&allow_empty){a.push(new AST_Hole({start:S.token,end:S.token}))}else{a.push(expression(false))}}next();return a}var array_=embed_tokens(function(){expect("[");return new AST_Array({elements:expr_list("]",!options.strict,true)})});var create_accessor=embed_tokens(function(){return function_(AST_Accessor)});var object_=embed_tokens(function(){expect("{");var first=true,a=[];while(!is("punc","}")){if(first)first=false;else expect(",");if(!options.strict&&is("punc","}"))break;var start=S.token;var type=start.type;var name=as_property_name();if(type=="name"&&!is("punc",":")){var key=new AST_SymbolAccessor({start:S.token,name:""+as_property_name(),end:prev()});if(name=="get"){a.push(new AST_ObjectGetter({start:start,key:key,value:create_accessor(),end:prev()}));continue}if(name=="set"){a.push(new AST_ObjectSetter({start:start,key:key,value:create_accessor(),end:prev()}));continue}}expect(":");a.push(new AST_ObjectKeyVal({start:start,quote:start.quote,key:""+name,value:expression(false),end:prev()}))}next();return new AST_Object({properties:a})});function as_property_name(){var tmp=S.token;switch(tmp.type){case"operator":if(!KEYWORDS[tmp.value])unexpected();case"num":case"string":case"name":case"keyword":case"atom":next();return tmp.value;default:unexpected()}}function as_name(){var tmp=S.token;if(tmp.type!="name")unexpected();next();return tmp.value}function _make_symbol(type){var name=S.token.value;return new(name=="this"?AST_This:type)({name:String(name),start:S.token,end:S.token})}function strict_verify_symbol(sym){if(sym.name=="arguments"||sym.name=="eval")croak("Unexpected "+sym.name+" in strict mode",sym.start.line,sym.start.col,sym.start.pos)}function as_symbol(type,noerror){if(!is("name")){if(!noerror)croak("Name expected");return null}var sym=_make_symbol(type);if(S.input.has_directive("use strict")&&sym instanceof AST_SymbolDeclaration){strict_verify_symbol(sym)}next();return sym}function mark_pure(call){var start=call.start;var comments=start.comments_before;var i=HOP(start,"comments_before_length")?start.comments_before_length:comments.length;while(--i>=0){var comment=comments[i];if(/[@#]__PURE__/.test(comment.value)){call.pure=comment;break}}}var subscripts=function(expr,allow_calls){var start=expr.start;if(is("punc",".")){next();return subscripts(new AST_Dot({start:start,expression:expr,property:as_name(),end:prev()}),allow_calls)}if(is("punc","[")){next();var prop=expression(true);expect("]");return subscripts(new AST_Sub({start:start,expression:expr,property:prop,end:prev()}),allow_calls)}if(allow_calls&&is("punc","(")){next();var call=new AST_Call({start:start,expression:expr,args:expr_list(")"),end:prev()});mark_pure(call);return subscripts(call,true)}return expr};var maybe_unary=function(allow_calls){var start=S.token;if(is("operator")&&UNARY_PREFIX[start.value]){next();handle_regexp();var ex=make_unary(AST_UnaryPrefix,start,maybe_unary(allow_calls));ex.start=start;ex.end=prev();return ex}var val=expr_atom(allow_calls);while(is("operator")&&UNARY_POSTFIX[S.token.value]&&!has_newline_before(S.token)){val=make_unary(AST_UnaryPostfix,S.token,val);val.start=start;val.end=S.token;next()}return val};function make_unary(ctor,token,expr){var op=token.value;switch(op){case"++":case"--":if(!is_assignable(expr))croak("Invalid use of "+op+" operator",token.line,token.col,token.pos);break;case"delete":if(expr instanceof AST_SymbolRef&&S.input.has_directive("use strict"))croak("Calling delete on expression not allowed in strict mode",expr.start.line,expr.start.col,expr.start.pos);break}return new ctor({operator:op,expression:expr})}var expr_op=function(left,min_prec,no_in){var op=is("operator")?S.token.value:null;if(op=="in"&&no_in)op=null;var prec=op!=null?PRECEDENCE[op]:null;if(prec!=null&&prec>min_prec){next();var right=expr_op(maybe_unary(true),prec,no_in);return expr_op(new AST_Binary({start:left.start,left:left,operator:op,right:right,end:right.end}),min_prec,no_in)}return left};function expr_ops(no_in){return expr_op(maybe_unary(true),0,no_in)}var maybe_conditional=function(no_in){var start=S.token;var expr=expr_ops(no_in);if(is("operator","?")){next();var yes=expression(false);expect(":");return new AST_Conditional({start:start,condition:expr,consequent:yes,alternative:expression(false,no_in),end:prev()})}return expr};function is_assignable(expr){return expr instanceof AST_PropAccess||expr instanceof AST_SymbolRef}var maybe_assign=function(no_in){var start=S.token;var left=maybe_conditional(no_in),val=S.token.value;if(is("operator")&&ASSIGNMENT[val]){if(is_assignable(left)){next();return new AST_Assign({start:start,left:left,operator:val,right:maybe_assign(no_in),end:prev()})}croak("Invalid assignment")}return left};var expression=function(commas,no_in){var start=S.token;var exprs=[];while(true){exprs.push(maybe_assign(no_in));if(!commas||!is("punc",","))break;next();commas=true}return exprs.length==1?exprs[0]:new AST_Sequence({start:start,expressions:exprs,end:peek()})};function in_loop(cont){++S.in_loop;var ret=cont();--S.in_loop;return ret}if(options.expression){return expression(true)}return function(){var start=S.token;var body=[];S.input.push_directives_stack();while(!is("eof"))body.push(statement(true));S.input.pop_directives_stack();var end=prev();var toplevel=options.toplevel;if(toplevel){toplevel.body=toplevel.body.concat(body);toplevel.end=end}else{toplevel=new AST_Toplevel({start:start,body:body,end:end})}return toplevel}()}"use strict";function TreeTransformer(before,after){TreeWalker.call(this);this.before=before;this.after=after}TreeTransformer.prototype=new TreeWalker;(function(DEF){function do_list(list,tw){return MAP(list,function(node){return node.transform(tw,true)})}DEF(AST_Node,noop);DEF(AST_LabeledStatement,function(self,tw){self.label=self.label.transform(tw);self.body=self.body.transform(tw)});DEF(AST_SimpleStatement,function(self,tw){self.body=self.body.transform(tw)});DEF(AST_Block,function(self,tw){self.body=do_list(self.body,tw)});DEF(AST_Do,function(self,tw){self.body=self.body.transform(tw);self.condition=self.condition.transform(tw)});DEF(AST_While,function(self,tw){self.condition=self.condition.transform(tw);self.body=self.body.transform(tw)});DEF(AST_For,function(self,tw){if(self.init)self.init=self.init.transform(tw);if(self.condition)self.condition=self.condition.transform(tw);if(self.step)self.step=self.step.transform(tw);self.body=self.body.transform(tw)});DEF(AST_ForIn,function(self,tw){self.init=self.init.transform(tw);self.object=self.object.transform(tw);self.body=self.body.transform(tw)});DEF(AST_With,function(self,tw){self.expression=self.expression.transform(tw);self.body=self.body.transform(tw)});DEF(AST_Exit,function(self,tw){if(self.value)self.value=self.value.transform(tw)});DEF(AST_LoopControl,function(self,tw){if(self.label)self.label=self.label.transform(tw)});DEF(AST_If,function(self,tw){self.condition=self.condition.transform(tw);self.body=self.body.transform(tw);if(self.alternative)self.alternative=self.alternative.transform(tw)});DEF(AST_Switch,function(self,tw){self.expression=self.expression.transform(tw);self.body=do_list(self.body,tw)});DEF(AST_Case,function(self,tw){self.expression=self.expression.transform(tw);self.body=do_list(self.body,tw)});DEF(AST_Try,function(self,tw){self.body=do_list(self.body,tw);if(self.bcatch)self.bcatch=self.bcatch.transform(tw);if(self.bfinally)self.bfinally=self.bfinally.transform(tw)});DEF(AST_Catch,function(self,tw){self.argname=self.argname.transform(tw);self.body=do_list(self.body,tw)});DEF(AST_Definitions,function(self,tw){self.definitions=do_list(self.definitions,tw)});DEF(AST_VarDef,function(self,tw){self.name=self.name.transform(tw);if(self.value)self.value=self.value.transform(tw)});DEF(AST_Lambda,function(self,tw){if(self.name)self.name=self.name.transform(tw);self.argnames=do_list(self.argnames,tw);self.body=do_list(self.body,tw)});DEF(AST_Call,function(self,tw){self.expression=self.expression.transform(tw);self.args=do_list(self.args,tw)});DEF(AST_Sequence,function(self,tw){self.expressions=do_list(self.expressions,tw)});DEF(AST_Dot,function(self,tw){self.expression=self.expression.transform(tw)});DEF(AST_Sub,function(self,tw){self.expression=self.expression.transform(tw);self.property=self.property.transform(tw)});DEF(AST_Unary,function(self,tw){self.expression=self.expression.transform(tw)});DEF(AST_Binary,function(self,tw){self.left=self.left.transform(tw);self.right=self.right.transform(tw)});DEF(AST_Conditional,function(self,tw){self.condition=self.condition.transform(tw);self.consequent=self.consequent.transform(tw);self.alternative=self.alternative.transform(tw)});DEF(AST_Array,function(self,tw){self.elements=do_list(self.elements,tw)});DEF(AST_Object,function(self,tw){self.properties=do_list(self.properties,tw)});DEF(AST_ObjectProperty,function(self,tw){self.value=self.value.transform(tw)})})(function(node,descend){node.DEFMETHOD("transform",function(tw,in_list){var x,y;tw.push(this);if(tw.before)x=tw.before(this,descend,in_list);if(typeof x==="undefined"){x=this;descend(x,tw);if(tw.after){y=tw.after(x,in_list);if(typeof y!=="undefined")x=y}}tw.pop();return x})});"use strict";function SymbolDef(scope,orig,init){this.name=orig.name;this.orig=[orig];this.init=init;this.eliminated=0;this.scope=scope;this.references=[];this.replaced=0;this.global=false;this.mangled_name=null;this.undeclared=false;this.id=SymbolDef.next_id++}SymbolDef.next_id=1;SymbolDef.prototype={unmangleable:function(options){if(!options)options={};return this.global&&!options.toplevel||this.undeclared||!options.eval&&this.scope.pinned()||options.keep_fnames&&(this.orig[0]instanceof AST_SymbolLambda||this.orig[0]instanceof AST_SymbolDefun)},mangle:function(options){var cache=options.cache&&options.cache.props;if(this.global&&cache&&cache.has(this.name)){this.mangled_name=cache.get(this.name)}else if(!this.mangled_name&&!this.unmangleable(options)){var def;if(def=this.redefined()){this.mangled_name=def.mangled_name||def.name}else{this.mangled_name=next_mangled_name(this.scope,options,this)}if(this.global&&cache){cache.set(this.name,this.mangled_name)}}},redefined:function(){return this.defun&&this.defun.variables.get(this.name)}};AST_Toplevel.DEFMETHOD("figure_out_scope",function(options){options=defaults(options,{cache:null,ie8:false});var self=this;var scope=self.parent_scope=null;var defun=null;var tw=new TreeWalker(function(node,descend){if(node instanceof AST_Catch){var save_scope=scope;scope=new AST_Scope(node);scope.init_scope_vars(save_scope);descend();scope=save_scope;return true}if(node instanceof AST_Scope){node.init_scope_vars(scope);var save_scope=scope;var save_defun=defun;defun=scope=node;descend();scope=save_scope;defun=save_defun;return true}if(node instanceof AST_With){for(var s=scope;s;s=s.parent_scope)s.uses_with=true;return}if(node instanceof AST_Symbol){node.scope=scope}if(node instanceof AST_Label){node.thedef=node;node.references=[]}if(node instanceof AST_SymbolDefun){(node.scope=defun.parent_scope.resolve()).def_function(node,defun)}else if(node instanceof AST_SymbolLambda){var def=defun.def_function(node,node.name=="arguments"?undefined:defun);if(options.ie8)def.defun=defun.parent_scope.resolve()}else if(node instanceof AST_SymbolVar){defun.def_variable(node,node.TYPE=="SymbolVar"?null:undefined);if(defun!==scope){node.mark_enclosed(options);var def=scope.find_variable(node);if(node.thedef!==def){node.thedef=def}node.reference(options)}}else if(node instanceof AST_SymbolCatch){scope.def_variable(node).defun=defun}});self.walk(tw);self.globals=new Dictionary;var tw=new TreeWalker(function(node){if(node instanceof AST_LoopControl){if(node.label)node.label.thedef.references.push(node);return true}if(node instanceof AST_SymbolRef){var name=node.name;if(name=="eval"&&tw.parent()instanceof AST_Call){for(var s=node.scope;s&&!s.uses_eval;s=s.parent_scope){s.uses_eval=true}}var sym=node.scope.find_variable(name);if(!sym){sym=self.def_global(node)}else if(sym.scope instanceof AST_Lambda&&name=="arguments"){sym.scope.uses_arguments=true}node.thedef=sym;node.reference(options);return true}if(node instanceof AST_SymbolCatch){var def=node.definition().redefined();if(def)for(var s=node.scope;s;s=s.parent_scope){push_uniq(s.enclosed,def);if(s===def.scope)break}return true}});self.walk(tw);if(options.ie8)self.walk(new TreeWalker(function(node){if(node instanceof AST_SymbolCatch){redefine(node,node.thedef.defun);return true}if(node instanceof AST_SymbolLambda){var def=node.thedef;if(def.orig.length==1){redefine(node,node.scope.parent_scope);node.thedef.init=def.init}return true}}));function redefine(node,scope){var name=node.name;var refs=node.thedef.references;var def=scope.find_variable(name)||self.globals.get(name)||scope.def_variable(node);refs.forEach(function(ref){ref.thedef=def;ref.reference(options)});node.thedef=def;node.reference(options)}});AST_Toplevel.DEFMETHOD("def_global",function(node){var globals=this.globals,name=node.name;if(globals.has(name)){return globals.get(name)}else{var g=new SymbolDef(this,node);g.undeclared=true;g.global=true;globals.set(name,g);return g}});AST_Scope.DEFMETHOD("init_scope_vars",function(parent_scope){this.variables=new Dictionary;this.functions=new Dictionary;this.uses_with=false;this.uses_eval=false;this.parent_scope=parent_scope;this.enclosed=[];this.cname=-1});AST_Lambda.DEFMETHOD("init_scope_vars",function(){AST_Scope.prototype.init_scope_vars.apply(this,arguments);this.uses_arguments=false;this.def_variable(new AST_SymbolFunarg({name:"arguments",start:this.start,end:this.end}))});AST_Symbol.DEFMETHOD("mark_enclosed",function(options){var def=this.definition();for(var s=this.scope;s;s=s.parent_scope){push_uniq(s.enclosed,def);if(options.keep_fnames){s.functions.each(function(d){push_uniq(def.scope.enclosed,d)})}if(s===def.scope)break}});AST_Symbol.DEFMETHOD("reference",function(options){this.definition().references.push(this);this.mark_enclosed(options)});AST_Scope.DEFMETHOD("find_variable",function(name){if(name instanceof AST_Symbol)name=name.name;return this.variables.get(name)||this.parent_scope&&this.parent_scope.find_variable(name)});AST_Scope.DEFMETHOD("def_function",function(symbol,init){var def=this.def_variable(symbol,init);if(!def.init||def.init instanceof AST_Defun)def.init=init;this.functions.set(symbol.name,def);return def});AST_Scope.DEFMETHOD("def_variable",function(symbol,init){var def=this.variables.get(symbol.name);if(def){def.orig.push(symbol);if(def.init&&(def.scope!==symbol.scope||def.init instanceof AST_Function)){def.init=init}}else{def=new SymbolDef(this,symbol,init);this.variables.set(symbol.name,def);def.global=!this.parent_scope}return symbol.thedef=def});AST_Lambda.DEFMETHOD("resolve",return_this);AST_Scope.DEFMETHOD("resolve",function(){return this.parent_scope});AST_Toplevel.DEFMETHOD("resolve",return_this);function names_in_use(scope,options){var names=scope.names_in_use;if(!names){scope.names_in_use=names=Object.create(scope.mangled_names||null);scope.cname_holes=[];scope.enclosed.forEach(function(def){if(def.unmangleable(options))names[def.name]=true})}return names}function next_mangled_name(scope,options,def){var in_use=names_in_use(scope,options);var holes=scope.cname_holes;var names=Object.create(null);var scopes=[scope];def.references.forEach(function(sym){var scope=sym.scope;do{if(scopes.indexOf(scope)<0){for(var name in names_in_use(scope,options)){names[name]=true}scopes.push(scope)}else break}while(scope=scope.parent_scope)});var name;for(var i=0,len=holes.length;i<len;i++){name=base54(holes[i]);if(names[name])continue;holes.splice(i,1);scope.names_in_use[name]=true;return name}while(true){name=base54(++scope.cname);if(in_use[name]||!is_identifier(name)||options.reserved.has[name])continue;if(!names[name])break;holes.push(scope.cname)}scope.names_in_use[name]=true;return name}AST_Symbol.DEFMETHOD("unmangleable",function(options){var def=this.definition();return!def||def.unmangleable(options)});AST_Label.DEFMETHOD("unmangleable",return_false);AST_Symbol.DEFMETHOD("unreferenced",function(){return!this.definition().references.length&&!this.scope.pinned()});AST_Symbol.DEFMETHOD("definition",function(){return this.thedef});AST_Symbol.DEFMETHOD("global",function(){return this.definition().global});function _default_mangler_options(options){options=defaults(options,{eval:false,ie8:false,keep_fnames:false,reserved:[],toplevel:false});if(!Array.isArray(options.reserved))options.reserved=[];push_uniq(options.reserved,"arguments");options.reserved.has=makePredicate(options.reserved);return options}AST_Toplevel.DEFMETHOD("mangle_names",function(options){options=_default_mangler_options(options);var lname=-1;if(options.cache&&options.cache.props){var mangled_names=this.mangled_names=Object.create(null);options.cache.props.each(function(mangled_name){mangled_names[mangled_name]=true})}var redefined=[];var tw=new TreeWalker(function(node,descend){if(node instanceof AST_LabeledStatement){var save_nesting=lname;descend();lname=save_nesting;return true}if(node instanceof AST_Scope){descend();if(options.cache&&node instanceof AST_Toplevel){node.globals.each(mangle)}node.variables.each(mangle);return true}if(node instanceof AST_Label){var name;do{name=base54(++lname)}while(!is_identifier(name));node.mangled_name=name;return true}if(!options.ie8&&node instanceof AST_Catch){var def=node.argname.definition();var redef=def.redefined();if(redef){redefined.push(def);reference(node.argname);def.references.forEach(reference)}descend();if(!redef)mangle(def);return true}function reference(sym){sym.thedef=redef;sym.reference(options);sym.thedef=def}});this.walk(tw);redefined.forEach(mangle);function mangle(def){if(options.reserved.has[def.name])return;def.mangle(options)}});AST_Toplevel.DEFMETHOD("find_colliding_names",function(options){var cache=options.cache&&options.cache.props;var avoid=Object.create(null);options.reserved.forEach(to_avoid);this.globals.each(add_def);this.walk(new TreeWalker(function(node){if(node instanceof AST_Scope)node.variables.each(add_def);if(node instanceof AST_SymbolCatch)add_def(node.definition())}));return avoid;function to_avoid(name){avoid[name]=true}function add_def(def){var name=def.name;if(def.global&&cache&&cache.has(name))name=cache.get(name);else if(!def.unmangleable(options))return;to_avoid(name)}});AST_Toplevel.DEFMETHOD("expand_names",function(options){base54.reset();base54.sort();options=_default_mangler_options(options);var avoid=this.find_colliding_names(options);var cname=0;this.globals.each(rename);this.walk(new TreeWalker(function(node){if(node instanceof AST_Scope)node.variables.each(rename);if(node instanceof AST_SymbolCatch)rename(node.definition())}));function next_name(){var name;do{name=base54(cname++)}while(avoid[name]||!is_identifier(name));return name}function rename(def){if(def.global&&options.cache)return;if(def.unmangleable(options))return;if(options.reserved.has[def.name])return;var d=def.redefined();def.name=d?d.name:next_name();def.orig.forEach(function(sym){sym.name=def.name});def.references.forEach(function(sym){sym.name=def.name})}});AST_Node.DEFMETHOD("tail_node",return_this);AST_Sequence.DEFMETHOD("tail_node",function(){return this.expressions[this.expressions.length-1]});AST_Toplevel.DEFMETHOD("compute_char_frequency",function(options){options=_default_mangler_options(options);base54.reset();try{AST_Node.prototype.print=function(stream,force_parens){this._print(stream,force_parens);if(this instanceof AST_Symbol&&!this.unmangleable(options)){base54.consider(this.name,-1)}else if(options.properties){if(this instanceof AST_Dot){base54.consider(this.property,-1)}else if(this instanceof AST_Sub){skip_string(this.property)}}};base54.consider(this.print_to_string(),1)}finally{AST_Node.prototype.print=AST_Node.prototype._print}base54.sort();function skip_string(node){if(node instanceof AST_String){base54.consider(node.value,-1)}else if(node instanceof AST_Conditional){skip_string(node.consequent);skip_string(node.alternative)}else if(node instanceof AST_Sequence){skip_string(node.tail_node())}}});var base54=function(){var freq=Object.create(null);function init(chars){var array=[];for(var i=0,len=chars.length;i<len;i++){var ch=chars[i];array.push(ch);freq[ch]=-.01*i}return array}var digits=init("0123456789");var leading=init("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_");var chars,frequency;function reset(){frequency=Object.create(freq)}base54.consider=function(str,delta){for(var i=str.length;--i>=0;){frequency[str[i]]+=delta}};function compare(a,b){return frequency[b]-frequency[a]}base54.sort=function(){chars=leading.sort(compare).concat(digits.sort(compare))};base54.reset=reset;reset();function base54(num){var ret="",base=54;num++;do{num--;ret+=chars[num%base];num=Math.floor(num/base);base=64}while(num>0);return ret}return base54}();"use strict";var EXPECT_DIRECTIVE=/^$|[;{][\s\n]*$/;function is_some_comments(comment){return comment.type=="comment2"&&/@preserve|@license|@cc_on/i.test(comment.value)}function OutputStream(options){var readonly=!options;options=defaults(options,{ascii_only:false,beautify:false,braces:false,comments:false,ie8:false,indent_level:4,indent_start:0,inline_script:true,keep_quoted_props:false,max_line_len:false,preamble:null,preserve_line:false,quote_keys:false,quote_style:0,semicolons:true,shebang:true,source_map:null,webkit:false,width:80,wrap_iife:false},true);var comment_filter=return_false;if(options.comments){var comments=options.comments;if(typeof options.comments==="string"&&/^\/.*\/[a-zA-Z]*$/.test(options.comments)){var regex_pos=options.comments.lastIndexOf("/");comments=new RegExp(options.comments.substr(1,regex_pos-1),options.comments.substr(regex_pos+1))}if(comments instanceof RegExp){comment_filter=function(comment){return comment.type!="comment5"&&comments.test(comment.value)}}else if(typeof comments==="function"){comment_filter=function(comment){return comment.type!="comment5"&&comments(this,comment)}}else if(comments==="some"){comment_filter=is_some_comments}else{comment_filter=return_true}}var indentation=0;var current_col=0;var current_line=1;var current_pos=0;var OUTPUT="";var to_utf8=options.ascii_only?function(str,identifier){return str.replace(/[\u0000-\u001f\u007f-\uffff]/g,function(ch){var code=ch.charCodeAt(0).toString(16);if(code.length<=2&&!identifier){while(code.length<2)code="0"+code;return"\\x"+code}else{while(code.length<4)code="0"+code;return"\\u"+code}})}:function(str){var s="";for(var i=0,len=str.length;i<len;i++){if(is_surrogate_pair_head(str[i])&&!is_surrogate_pair_tail(str[i+1])||is_surrogate_pair_tail(str[i])&&!is_surrogate_pair_head(str[i-1])){s+="\\u"+str.charCodeAt(i).toString(16)}else{s+=str[i]}}return s};function make_string(str,quote){var dq=0,sq=0;str=str.replace(/[\\\b\f\n\r\v\t\x22\x27\u2028\u2029\0\ufeff]/g,function(s,i){switch(s){case'"':++dq;return'"';case"'":++sq;return"'";case"\\":return"\\\\";case"\n":return"\\n";case"\r":return"\\r";case"\t":return"\\t";case"\b":return"\\b";case"\f":return"\\f";case"\v":return options.ie8?"\\x0B":"\\v";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";case"\ufeff":return"\\ufeff";case"\0":return/[0-9]/.test(str.charAt(i+1))?"\\x00":"\\0"}return s});function quote_single(){return"'"+str.replace(/\x27/g,"\\'")+"'"}function quote_double(){return'"'+str.replace(/\x22/g,'\\"')+'"'}str=to_utf8(str);switch(options.quote_style){case 1:return quote_single();case 2:return quote_double();case 3:return quote=="'"?quote_single():quote_double();default:return dq>sq?quote_single():quote_double()}}function encode_string(str,quote){var ret=make_string(str,quote);if(options.inline_script){ret=ret.replace(/<\x2f(script)([>\/\t\n\f\r ])/gi,"<\\/$1$2");ret=ret.replace(/\x3c!--/g,"\\x3c!--");ret=ret.replace(/--\x3e/g,"--\\x3e")}return ret}function make_name(name){name=name.toString();name=to_utf8(name,true);return name}function make_indent(back){return repeat_string(" ",options.indent_start+indentation-back*options.indent_level)}var has_parens=false;var line_end=0;var line_fixed=true;var might_need_space=false;var might_need_semicolon=false;var need_newline_indented=false;var need_space=false;var newline_insert=-1;var last="";var mapping_token,mapping_name,mappings=options.source_map&&[];var adjust_mappings=mappings?function(line,col){mappings.forEach(function(mapping){mapping.line+=line;mapping.col+=col})}:noop;var flush_mappings=mappings?function(){mappings.forEach(function(mapping){try{options.source_map.add(mapping.token.file,mapping.line,mapping.col,mapping.token.line,mapping.token.col,!mapping.name&&mapping.token.type=="name"?mapping.token.value:mapping.name)}catch(ex){AST_Node.warn("Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]",{file:mapping.token.file,line:mapping.token.line,col:mapping.token.col,cline:mapping.line,ccol:mapping.col,name:mapping.name||""})}});mappings=[]}:noop;function insert_newlines(count){var index=OUTPUT.lastIndexOf("\n");if(line_end<index)line_end=index;var left=OUTPUT.slice(0,line_end);var right=OUTPUT.slice(line_end);adjust_mappings(count,right.length-current_col);current_line+=count;current_pos+=count;current_col=right.length;OUTPUT=left;while(count--)OUTPUT+="\n";OUTPUT+=right}var fix_line=options.max_line_len?function(){if(line_fixed){if(current_col>options.max_line_len){AST_Node.warn("Output exceeds {max_line_len} characters",options)}return}if(current_col>options.max_line_len)insert_newlines(1);line_fixed=true;flush_mappings()}:noop;var requireSemicolonChars=makePredicate("( [ + * / - , .");function print(str){str=String(str);var ch=str.charAt(0);if(need_newline_indented&&ch){need_newline_indented=false;if(ch!="\n"){print("\n");indent()}}if(need_space&&ch){need_space=false;if(!/[\s;})]/.test(ch)){space()}}newline_insert=-1;var prev=last.charAt(last.length-1);if(might_need_semicolon){might_need_semicolon=false;if(prev==":"&&ch=="}"||(!ch||";}".indexOf(ch)<0)&&prev!=";"){if(options.semicolons||requireSemicolonChars[ch]){OUTPUT+=";";current_col++;current_pos++}else{fix_line();OUTPUT+="\n";current_pos++;current_line++;current_col=0;if(/^\s+$/.test(str)){might_need_semicolon=true}}if(!options.beautify)might_need_space=false}}if(might_need_space){if(is_identifier_char(prev)&&(is_identifier_char(ch)||ch=="\\")||ch=="/"&&ch==prev||(ch=="+"||ch=="-")&&ch==last){OUTPUT+=" ";current_col++;current_pos++}might_need_space=false}if(mapping_token){mappings.push({token:mapping_token,name:mapping_name,line:current_line,col:current_col});mapping_token=false;if(line_fixed)flush_mappings()}OUTPUT+=str;has_parens=str[str.length-1]=="(";current_pos+=str.length;var a=str.split(/\r?\n/),n=a.length-1;current_line+=n;current_col+=a[0].length;if(n>0){fix_line();current_col=a[n].length}last=str}var space=options.beautify?function(){print(" ")}:function(){might_need_space=true};var indent=options.beautify?function(half){if(options.beautify){print(make_indent(half?.5:0))}}:noop;var with_indent=options.beautify?function(col,cont){if(col===true)col=next_indent();var save_indentation=indentation;indentation=col;var ret=cont();indentation=save_indentation;return ret}:function(col,cont){return cont()};var may_add_newline=options.max_line_len||options.preserve_line?function(){fix_line();line_end=OUTPUT.length;line_fixed=false}:noop;var newline=options.beautify?function(){if(newline_insert<0)return print("\n");if(OUTPUT[newline_insert]!="\n"){OUTPUT=OUTPUT.slice(0,newline_insert)+"\n"+OUTPUT.slice(newline_insert);current_pos++;current_line++}newline_insert++}:may_add_newline;var semicolon=options.beautify?function(){print(";")}:function(){might_need_semicolon=true};function force_semicolon(){might_need_semicolon=false;print(";")}function next_indent(){return indentation+options.indent_level}function with_block(cont){var ret;print("{");newline();with_indent(next_indent(),function(){ret=cont()});indent();print("}");return ret}function with_parens(cont){print("(");may_add_newline();var ret=cont();may_add_newline();print(")");return ret}function with_square(cont){print("[");may_add_newline();var ret=cont();may_add_newline();print("]");return ret}function comma(){may_add_newline();print(",");may_add_newline();space()}function colon(){print(":");space()}var add_mapping=mappings?function(token,name){mapping_token=token;mapping_name=name}:noop;function get(){if(!line_fixed)fix_line();return OUTPUT}function has_nlb(){var index=OUTPUT.lastIndexOf("\n");return/^ *$/.test(OUTPUT.slice(index+1))}function prepend_comments(node){var self=this;var start=node.start;if(!start)return;if(start.comments_before&&start.comments_before._dumped===self)return;var comments=start.comments_before;if(!comments){comments=start.comments_before=[]}comments._dumped=self;if(node instanceof AST_Exit&&node.value){var tw=new TreeWalker(function(node){var parent=tw.parent();if(parent instanceof AST_Exit||parent instanceof AST_Binary&&parent.left===node||parent.TYPE=="Call"&&parent.expression===node||parent instanceof AST_Conditional&&parent.condition===node||parent instanceof AST_Dot&&parent.expression===node||parent instanceof AST_Sequence&&parent.expressions[0]===node||parent instanceof AST_Sub&&parent.expression===node||parent instanceof AST_UnaryPostfix){var text=node.start.comments_before;if(text&&text._dumped!==self){text._dumped=self;comments=comments.concat(text)}}else{return true}});tw.push(node);node.value.walk(tw)}if(current_pos==0){if(comments.length>0&&options.shebang&&comments[0].type=="comment5"){print("#!"+comments.shift().value+"\n");indent()}var preamble=options.preamble;if(preamble){print(preamble.replace(/\r\n?|[\n\u2028\u2029]|\s*$/g,"\n"))}}comments=comments.filter(comment_filter,node);if(comments.length==0)return;var last_nlb=has_nlb();comments.forEach(function(c,i){if(!last_nlb){if(c.nlb){print("\n");indent();last_nlb=true}else if(i>0){space()}}if(/comment[134]/.test(c.type)){print("//"+c.value.replace(/[@#]__PURE__/g," ")+"\n");indent();last_nlb=true}else if(c.type=="comment2"){print("/*"+c.value.replace(/[@#]__PURE__/g," ")+"*/");last_nlb=false}});if(!last_nlb){if(start.nlb){print("\n");indent()}else{space()}}}function append_comments(node,tail){var self=this;var token=node.end;if(!token)return;var comments=token[tail?"comments_before":"comments_after"];if(!comments||comments._dumped===self)return;if(!(node instanceof AST_Statement||all(comments,function(c){return!/comment[134]/.test(c.type)})))return;comments._dumped=self;var insert=OUTPUT.length;comments.filter(comment_filter,node).forEach(function(c,i){need_space=false;if(need_newline_indented){print("\n");indent();need_newline_indented=false}else if(c.nlb&&(i>0||!has_nlb())){print("\n");indent()}else if(i>0||!tail){space()}if(/comment[134]/.test(c.type)){print("//"+c.value.replace(/[@#]__PURE__/g," "));need_newline_indented=true}else if(c.type=="comment2"){print("/*"+c.value.replace(/[@#]__PURE__/g," ")+"*/");need_space=true}});if(OUTPUT.length>insert)newline_insert=insert}var stack=[];return{get:get,toString:get,indent:indent,indentation:function(){return indentation},current_width:function(){return current_col-indentation},should_break:function(){return options.width&&this.current_width()>=options.width},has_parens:function(){return has_parens},newline:newline,print:print,space:space,comma:comma,colon:colon,last:function(){return last},semicolon:semicolon,force_semicolon:force_semicolon,to_utf8:to_utf8,print_name:function(name){print(make_name(name))},print_string:function(str,quote,escape_directive){var encoded=encode_string(str,quote);if(escape_directive===true&&encoded.indexOf("\\")===-1){if(!EXPECT_DIRECTIVE.test(OUTPUT)){force_semicolon()}force_semicolon()}print(encoded)},encode_string:encode_string,next_indent:next_indent,with_indent:with_indent,with_block:with_block,with_parens:with_parens,with_square:with_square,add_mapping:add_mapping,option:function(opt){return options[opt]},prepend_comments:readonly?noop:prepend_comments,append_comments:readonly||comment_filter===return_false?noop:append_comments,line:function(){return current_line},col:function(){return current_col},pos:function(){return current_pos},push_node:function(node){stack.push(node)},pop_node:options.preserve_line?function(){var node=stack.pop();if(node.start&&node.start.line>current_line){insert_newlines(node.start.line-current_line)}}:function(){stack.pop()},parent:function(n){return stack[stack.length-2-(n||0)]}}}(function(){function DEFPRINT(nodetype,generator){nodetype.DEFMETHOD("_codegen",generator)}var in_directive=false;var active_scope=null;var use_asm=null;AST_Node.DEFMETHOD("print",function(stream,force_parens){var self=this,generator=self._codegen;if(self instanceof AST_Scope){active_scope=self}else if(!use_asm&&self instanceof AST_Directive&&self.value=="use asm"){use_asm=active_scope}function doit(){stream.prepend_comments(self);self.add_source_map(stream);generator(self,stream);stream.append_comments(self)}stream.push_node(self);if(force_parens||self.needs_parens(stream)){stream.with_parens(doit)}else{doit()}stream.pop_node();if(self===use_asm){use_asm=null}});AST_Node.DEFMETHOD("_print",AST_Node.prototype.print);AST_Node.DEFMETHOD("print_to_string",function(options){var s=OutputStream(options);this.print(s);return s.get()});function PARENS(nodetype,func){if(Array.isArray(nodetype)){nodetype.forEach(function(nodetype){PARENS(nodetype,func)})}else{nodetype.DEFMETHOD("needs_parens",func)}}PARENS(AST_Node,return_false);PARENS(AST_Function,function(output){if(!output.has_parens()&&first_in_statement(output))return true;if(output.option("webkit")){var p=output.parent();if(p instanceof AST_PropAccess&&p.expression===this)return true}if(output.option("wrap_iife")){var p=output.parent();if(p instanceof AST_Call&&p.expression===this)return true}});PARENS(AST_Object,function(output){return!output.has_parens()&&first_in_statement(output)});PARENS(AST_Unary,function(output){var p=output.parent();return p instanceof AST_PropAccess&&p.expression===this||p instanceof AST_Call&&p.expression===this});PARENS(AST_Sequence,function(output){var p=output.parent();return p instanceof AST_Call||p instanceof AST_Unary||p instanceof AST_Binary||p instanceof AST_VarDef||p instanceof AST_PropAccess||p instanceof AST_Array||p instanceof AST_ObjectProperty||p instanceof AST_Conditional});PARENS(AST_Binary,function(output){var p=output.parent();if(p instanceof AST_Call&&p.expression===this)return true;if(p instanceof AST_Unary)return true;if(p instanceof AST_PropAccess&&p.expression===this)return true;if(p instanceof AST_Binary){var po=p.operator,pp=PRECEDENCE[po];var so=this.operator,sp=PRECEDENCE[so];if(pp>sp||pp==sp&&this===p.right){return true}}});PARENS(AST_PropAccess,function(output){var p=output.parent();if(p instanceof AST_New&&p.expression===this){var parens=false;this.walk(new TreeWalker(function(node){if(parens||node instanceof AST_Scope)return true;if(node instanceof AST_Call){parens=true;return true}}));return parens}});PARENS(AST_Call,function(output){var p=output.parent();if(p instanceof AST_New&&p.expression===this)return true;if(output.option("webkit")){var g=output.parent(1);return this.expression instanceof AST_Function&&p instanceof AST_PropAccess&&p.expression===this&&g instanceof AST_Assign&&g.left===p}});PARENS(AST_New,function(output){var p=output.parent();if(!need_constructor_parens(this,output)&&(p instanceof AST_PropAccess||p instanceof AST_Call&&p.expression===this))return true});PARENS(AST_Number,function(output){var p=output.parent();if(p instanceof AST_PropAccess&&p.expression===this){var value=this.getValue();if(value<0||/^0/.test(make_num(value))){return true}}});PARENS([AST_Assign,AST_Conditional],function(output){var p=output.parent();if(p instanceof AST_Unary)return true;if(p instanceof AST_Binary&&!(p instanceof AST_Assign))return true;if(p instanceof AST_Call&&p.expression===this)return true;if(p instanceof AST_Conditional&&p.condition===this)return true;if(p instanceof AST_PropAccess&&p.expression===this)return true});DEFPRINT(AST_Directive,function(self,output){output.print_string(self.value,self.quote);output.semicolon()});DEFPRINT(AST_Debugger,function(self,output){output.print("debugger");output.semicolon()});function display_body(body,is_toplevel,output,allow_directives){var last=body.length-1;in_directive=allow_directives;body.forEach(function(stmt,i){if(in_directive===true&&!(stmt instanceof AST_Directive||stmt instanceof AST_EmptyStatement||stmt instanceof AST_SimpleStatement&&stmt.body instanceof AST_String)){in_directive=false}if(!(stmt instanceof AST_EmptyStatement)){output.indent();stmt.print(output);if(!(i==last&&is_toplevel)){output.newline();if(is_toplevel)output.newline()}}if(in_directive===true&&stmt instanceof AST_SimpleStatement&&stmt.body instanceof AST_String){in_directive=false}});in_directive=false}AST_StatementWithBody.DEFMETHOD("_do_print_body",function(output){force_statement(this.body,output)});DEFPRINT(AST_Statement,function(self,output){self.body.print(output);output.semicolon()});DEFPRINT(AST_Toplevel,function(self,output){display_body(self.body,true,output,true);output.print("")});DEFPRINT(AST_LabeledStatement,function(self,output){self.label.print(output);output.colon();self.body.print(output)});DEFPRINT(AST_SimpleStatement,function(self,output){self.body.print(output);output.semicolon()});function print_braced_empty(self,output){output.print("{");output.with_indent(output.next_indent(),function(){output.append_comments(self,true)});output.print("}")}function print_braced(self,output,allow_directives){if(self.body.length>0){output.with_block(function(){display_body(self.body,false,output,allow_directives)})}else print_braced_empty(self,output)}DEFPRINT(AST_BlockStatement,function(self,output){print_braced(self,output)});DEFPRINT(AST_EmptyStatement,function(self,output){output.semicolon()});DEFPRINT(AST_Do,function(self,output){output.print("do");output.space();make_block(self.body,output);output.space();output.print("while");output.space();output.with_parens(function(){self.condition.print(output)});output.semicolon()});DEFPRINT(AST_While,function(self,output){output.print("while");output.space();output.with_parens(function(){self.condition.print(output)});output.space();self._do_print_body(output)});DEFPRINT(AST_For,function(self,output){output.print("for");output.space();output.with_parens(function(){if(self.init){if(self.init instanceof AST_Definitions){self.init.print(output)}else{parenthesize_for_noin(self.init,output,true)}output.print(";");output.space()}else{output.print(";")}if(self.condition){self.condition.print(output);output.print(";");output.space()}else{output.print(";")}if(self.step){self.step.print(output)}});output.space();self._do_print_body(output)});DEFPRINT(AST_ForIn,function(self,output){output.print("for");output.space();output.with_parens(function(){self.init.print(output);output.space();output.print("in");output.space();self.object.print(output)});output.space();self._do_print_body(output)});DEFPRINT(AST_With,function(self,output){output.print("with");output.space();output.with_parens(function(){self.expression.print(output)});output.space();self._do_print_body(output)});AST_Lambda.DEFMETHOD("_do_print",function(output,nokeyword){var self=this;if(!nokeyword){output.print("function")}if(self.name){output.space();self.name.print(output)}output.with_parens(function(){self.argnames.forEach(function(arg,i){if(i)output.comma();arg.print(output)})});output.space();print_braced(self,output,true)});DEFPRINT(AST_Lambda,function(self,output){self._do_print(output)});function print_jump(output,kind,target){output.print(kind);if(target){output.space();target.print(output)}output.semicolon()}DEFPRINT(AST_Return,function(self,output){print_jump(output,"return",self.value)});DEFPRINT(AST_Throw,function(self,output){print_jump(output,"throw",self.value)});DEFPRINT(AST_Break,function(self,output){print_jump(output,"break",self.label)});DEFPRINT(AST_Continue,function(self,output){print_jump(output,"continue",self.label)});function make_then(self,output){var b=self.body;if(output.option("braces")||output.option("ie8")&&b instanceof AST_Do)return make_block(b,output);if(!b)return output.force_semicolon();while(true){if(b instanceof AST_If){if(!b.alternative){make_block(self.body,output);return}b=b.alternative}else if(b instanceof AST_StatementWithBody){b=b.body}else break}force_statement(self.body,output)}DEFPRINT(AST_If,function(self,output){output.print("if");output.space();output.with_parens(function(){self.condition.print(output)});output.space();if(self.alternative){make_then(self,output);output.space();output.print("else");output.space();if(self.alternative instanceof AST_If)self.alternative.print(output);else force_statement(self.alternative,output)}else{self._do_print_body(output)}});DEFPRINT(AST_Switch,function(self,output){output.print("switch");output.space();output.with_parens(function(){self.expression.print(output)});output.space();var last=self.body.length-1;if(last<0)print_braced_empty(self,output);else output.with_block(function(){self.body.forEach(function(branch,i){output.indent(true);branch.print(output);if(i<last&&branch.body.length>0)output.newline()})})});AST_SwitchBranch.DEFMETHOD("_do_print_body",function(output){output.newline();this.body.forEach(function(stmt){output.indent();stmt.print(output);output.newline()})});DEFPRINT(AST_Default,function(self,output){output.print("default:");self._do_print_body(output)});DEFPRINT(AST_Case,function(self,output){output.print("case");output.space();self.expression.print(output);output.print(":");self._do_print_body(output)});DEFPRINT(AST_Try,function(self,output){output.print("try");output.space();print_braced(self,output);if(self.bcatch){output.space();self.bcatch.print(output)}if(self.bfinally){output.space();self.bfinally.print(output)}});DEFPRINT(AST_Catch,function(self,output){output.print("catch");output.space();output.with_parens(function(){self.argname.print(output)});output.space();print_braced(self,output)});DEFPRINT(AST_Finally,function(self,output){output.print("finally");output.space();print_braced(self,output)});DEFPRINT(AST_Var,function(self,output){output.print("var");output.space();self.definitions.forEach(function(def,i){if(i)output.comma();def.print(output)});var p=output.parent();if(p&&p.init!==self||!(p instanceof AST_For||p instanceof AST_ForIn))output.semicolon()});function parenthesize_for_noin(node,output,noin){var parens=false;if(noin)node.walk(new TreeWalker(function(node){if(parens||node instanceof AST_Scope)return true;if(node instanceof AST_Binary&&node.operator=="in"){parens=true;return true}}));node.print(output,parens)}DEFPRINT(AST_VarDef,function(self,output){self.name.print(output);if(self.value){output.space();output.print("=");output.space();var p=output.parent(1);var noin=p instanceof AST_For||p instanceof AST_ForIn;parenthesize_for_noin(self.value,output,noin)}});DEFPRINT(AST_Call,function(self,output){self.expression.print(output);if(self instanceof AST_New&&!need_constructor_parens(self,output))return;if(self.expression instanceof AST_Call||self.expression instanceof AST_Lambda){output.add_mapping(self.start)}output.with_parens(function(){self.args.forEach(function(expr,i){if(i)output.comma();expr.print(output)})})});DEFPRINT(AST_New,function(self,output){output.print("new");output.space();AST_Call.prototype._codegen(self,output)});DEFPRINT(AST_Sequence,function(self,output){self.expressions.forEach(function(node,index){if(index>0){output.comma();if(output.should_break()){output.newline();output.indent()}}node.print(output)})});DEFPRINT(AST_Dot,function(self,output){var expr=self.expression;expr.print(output);var prop=self.property;if(output.option("ie8")&&RESERVED_WORDS[prop]){output.print("[");output.add_mapping(self.end);output.print_string(prop);output.print("]")}else{if(expr instanceof AST_Number&&expr.getValue()>=0){if(!/[xa-f.)]/i.test(output.last())){output.print(".")}}output.print(".");output.add_mapping(self.end);output.print_name(prop)}});DEFPRINT(AST_Sub,function(self,output){self.expression.print(output);output.print("[");self.property.print(output);output.print("]")});DEFPRINT(AST_UnaryPrefix,function(self,output){var op=self.operator;output.print(op);if(/^[a-z]/i.test(op)||/[+-]$/.test(op)&&self.expression instanceof AST_UnaryPrefix&&/^[+-]/.test(self.expression.operator)){output.space()}self.expression.print(output)});DEFPRINT(AST_UnaryPostfix,function(self,output){self.expression.print(output);output.print(self.operator)});DEFPRINT(AST_Binary,function(self,output){var op=self.operator;self.left.print(output);if(op[0]==">"&&self.left instanceof AST_UnaryPostfix&&self.left.operator=="--"){output.print(" ")}else{output.space()}output.print(op);if((op=="<"||op=="<<")&&self.right instanceof AST_UnaryPrefix&&self.right.operator=="!"&&self.right.expression instanceof AST_UnaryPrefix&&self.right.expression.operator=="--"){output.print(" ")}else{output.space()}self.right.print(output)});DEFPRINT(AST_Conditional,function(self,output){self.condition.print(output);output.space();output.print("?");output.space();self.consequent.print(output);output.space();output.colon();self.alternative.print(output)});DEFPRINT(AST_Array,function(self,output){output.with_square(function(){var a=self.elements,len=a.length;if(len>0)output.space();a.forEach(function(exp,i){if(i)output.comma();exp.print(output);if(i===len-1&&exp instanceof AST_Hole)output.comma()});if(len>0)output.space()})});DEFPRINT(AST_Object,function(self,output){if(self.properties.length>0)output.with_block(function(){self.properties.forEach(function(prop,i){if(i){output.print(",");output.newline()}output.indent();prop.print(output)});output.newline()});else print_braced_empty(self,output)});function print_property_name(key,quote,output){if(output.option("quote_keys")){output.print_string(key)}else if(""+ +key==key&&key>=0){output.print(make_num(key))}else if(RESERVED_WORDS[key]?!output.option("ie8"):is_identifier_string(key)){if(quote&&output.option("keep_quoted_props")){output.print_string(key,quote)}else{output.print_name(key)}}else{output.print_string(key,quote)}}DEFPRINT(AST_ObjectKeyVal,function(self,output){print_property_name(self.key,self.quote,output);output.colon();self.value.print(output)});AST_ObjectProperty.DEFMETHOD("_print_getter_setter",function(type,output){output.print(type);output.space();print_property_name(this.key.name,this.quote,output);this.value._do_print(output,true)});DEFPRINT(AST_ObjectSetter,function(self,output){self._print_getter_setter("set",output)});DEFPRINT(AST_ObjectGetter,function(self,output){self._print_getter_setter("get",output)});DEFPRINT(AST_Symbol,function(self,output){var def=self.definition();output.print_name(def?def.mangled_name||def.name:self.name)});DEFPRINT(AST_Hole,noop);DEFPRINT(AST_This,function(self,output){output.print("this")});DEFPRINT(AST_Constant,function(self,output){output.print(self.getValue())});DEFPRINT(AST_String,function(self,output){output.print_string(self.getValue(),self.quote,in_directive)});DEFPRINT(AST_Number,function(self,output){if(use_asm&&self.start&&self.start.raw!=null){output.print(self.start.raw)}else{output.print(make_num(self.getValue()))}});DEFPRINT(AST_RegExp,function(self,output){var regexp=self.getValue();var str=regexp.toString();if(regexp.raw_source){str="/"+regexp.raw_source+str.slice(str.lastIndexOf("/"))}str=output.to_utf8(str);output.print(str);var p=output.parent();if(p instanceof AST_Binary&&/^in/.test(p.operator)&&p.left===self)output.print(" ")});function force_statement(stat,output){if(output.option("braces")){make_block(stat,output)}else{if(!stat||stat instanceof AST_EmptyStatement)output.force_semicolon();else stat.print(output)}}function need_constructor_parens(self,output){if(self.args.length>0)return true;return output.option("beautify")}function best_of(a){var best=a[0],len=best.length;for(var i=1;i<a.length;++i){if(a[i].length<len){best=a[i];len=best.length}}return best}function make_num(num){var str=num.toString(10).replace(/^0\./,".").replace("e+","e");var candidates=[str];if(Math.floor(num)===num){if(num<0){candidates.push("-0x"+(-num).toString(16).toLowerCase())}else{candidates.push("0x"+num.toString(16).toLowerCase())}}var match,len,digits;if(match=/^\.0+/.exec(str)){len=match[0].length;digits=str.slice(len);candidates.push(digits+"e-"+(digits.length+len-1))}else if(match=/0+$/.exec(str)){len=match[0].length;candidates.push(str.slice(0,-len)+"e"+len)}else if(match=/^(\d)\.(\d+)e(-?\d+)$/.exec(str)){candidates.push(match[1]+match[2]+"e"+(match[3]-match[2].length))}return best_of(candidates)}function make_block(stmt,output){if(!stmt||stmt instanceof AST_EmptyStatement)output.print("{}");else if(stmt instanceof AST_BlockStatement)stmt.print(output);else output.with_block(function(){output.indent();stmt.print(output);output.newline()})}function DEFMAP(nodetype,generator){nodetype.forEach(function(nodetype){nodetype.DEFMETHOD("add_source_map",generator)})}DEFMAP([AST_Node,AST_LabeledStatement,AST_Toplevel],noop);DEFMAP([AST_Array,AST_BlockStatement,AST_Catch,AST_Constant,AST_Debugger,AST_Definitions,AST_Directive,AST_Finally,AST_Jump,AST_Lambda,AST_New,AST_Object,AST_StatementWithBody,AST_Symbol,AST_Switch,AST_SwitchBranch,AST_Try],function(output){output.add_mapping(this.start)});DEFMAP([AST_ObjectGetter,AST_ObjectSetter],function(output){output.add_mapping(this.start,this.key.name)});DEFMAP([AST_ObjectProperty],function(output){output.add_mapping(this.start,this.key)})})();"use strict";function Compressor(options,false_by_default){if(!(this instanceof Compressor))return new Compressor(options,false_by_default);TreeTransformer.call(this,this.before,this.after);this.options=defaults(options,{arguments:!false_by_default,booleans:!false_by_default,collapse_vars:!false_by_default,comparisons:!false_by_default,conditionals:!false_by_default,dead_code:!false_by_default,directives:!false_by_default,drop_console:false,drop_debugger:!false_by_default,evaluate:!false_by_default,expression:false,global_defs:false,hoist_funs:false,hoist_props:!false_by_default,hoist_vars:false,ie8:false,if_return:!false_by_default,inline:!false_by_default,join_vars:!false_by_default,keep_fargs:true,keep_fnames:false,keep_infinity:false,loops:!false_by_default,negate_iife:!false_by_default,passes:1,properties:!false_by_default,pure_getters:!false_by_default&&"strict",pure_funcs:null,reduce_funcs:!false_by_default,reduce_vars:!false_by_default,sequences:!false_by_default,side_effects:!false_by_default,switches:!false_by_default,top_retain:null,toplevel:!!(options&&options["top_retain"]),typeofs:!false_by_default,unsafe:false,unsafe_comps:false,unsafe_Function:false,unsafe_math:false,unsafe_proto:false,unsafe_regexp:false,unsafe_undefined:false,unused:!false_by_default,warnings:false},true);var global_defs=this.options["global_defs"];if(typeof global_defs=="object")for(var key in global_defs){if(/^@/.test(key)&&HOP(global_defs,key)){global_defs[key.slice(1)]=parse(global_defs[key],{expression:true})}}if(this.options["inline"]===true)this.options["inline"]=3;var pure_funcs=this.options["pure_funcs"];if(typeof pure_funcs=="function"){this.pure_funcs=pure_funcs}else{this.pure_funcs=pure_funcs?function(node){return pure_funcs.indexOf(node.expression.print_to_string())<0}:return_true}var top_retain=this.options["top_retain"];if(top_retain instanceof RegExp){this.top_retain=function(def){return top_retain.test(def.name)}}else if(typeof top_retain=="function"){this.top_retain=top_retain}else if(top_retain){if(typeof top_retain=="string"){top_retain=top_retain.split(/,/)}this.top_retain=function(def){return top_retain.indexOf(def.name)>=0}}var toplevel=this.options["toplevel"];this.toplevel=typeof toplevel=="string"?{funcs:/funcs/.test(toplevel),vars:/vars/.test(toplevel)}:{funcs:toplevel,vars:toplevel};var sequences=this.options["sequences"];this.sequences_limit=sequences==1?800:sequences|0;this.warnings_produced={}}Compressor.prototype=new TreeTransformer;merge(Compressor.prototype,{option:function(key){return this.options[key]},exposed:function(def){if(def.global)for(var i=0,len=def.orig.length;i<len;i++)if(!this.toplevel[def.orig[i]instanceof AST_SymbolDefun?"funcs":"vars"])return true;return false},compress:function(node){node=node.resolve_defines(this);if(this.option("expression")){node.process_expression(true)}var passes=+this.options.passes||1;var min_count=1/0;var stopping=false;var mangle={ie8:this.option("ie8")};for(var pass=0;pass<passes;pass++){node.figure_out_scope(mangle);if(pass>0||this.option("reduce_vars"))node.reset_opt_flags(this);node=node.transform(this);if(passes>1){var count=0;node.walk(new TreeWalker(function(){count++}));this.info("pass "+pass+": last_count: "+min_count+", count: "+count);if(count<min_count){min_count=count;stopping=false}else if(stopping){break}else{stopping=true}}}if(this.option("expression")){node.process_expression(false)}return node},info:function(){if(this.options.warnings=="verbose"){AST_Node.warn.apply(AST_Node,arguments)}},warn:function(text,props){if(this.options.warnings){var message=string_template(text,props);if(!(message in this.warnings_produced)){this.warnings_produced[message]=true;AST_Node.warn.apply(AST_Node,arguments)}}},clear_warnings:function(){this.warnings_produced={}},before:function(node,descend,in_list){if(node._squeezed)return node;var is_scope=node instanceof AST_Scope;if(is_scope){node.hoist_properties(this);node.hoist_declarations(this)}descend(node,this);descend(node,this);var opt=node.optimize(this);if(is_scope){opt.drop_unused(this);descend(opt,this)}if(opt===node)opt._squeezed=true;return opt}});(function(OPT){OPT(AST_Node,function(self,compressor){return self});AST_Node.DEFMETHOD("equivalent_to",function(node){return this.TYPE==node.TYPE&&this.print_to_string()==node.print_to_string()});AST_Scope.DEFMETHOD("process_expression",function(insert,compressor){var self=this;var tt=new TreeTransformer(function(node){if(insert&&node instanceof AST_SimpleStatement){return make_node(AST_Return,node,{value:node.body})}if(!insert&&node instanceof AST_Return){if(compressor){var value=node.value&&node.value.drop_side_effect_free(compressor,true);return value?make_node(AST_SimpleStatement,node,{body:value}):make_node(AST_EmptyStatement,node)}return make_node(AST_SimpleStatement,node,{body:node.value||make_node(AST_UnaryPrefix,node,{operator:"void",expression:make_node(AST_Number,node,{value:0})})})}if(node instanceof AST_Lambda&&node!==self){return node}if(node instanceof AST_Block){var index=node.body.length-1;if(index>=0){node.body[index]=node.body[index].transform(tt)}}else if(node instanceof AST_If){node.body=node.body.transform(tt);if(node.alternative){node.alternative=node.alternative.transform(tt)}}else if(node instanceof AST_With){node.body=node.body.transform(tt)}return node});self.transform(tt)});function read_property(obj,key){key=get_value(key);if(key instanceof AST_Node)return;var value;if(obj instanceof AST_Array){var elements=obj.elements;if(key=="length")return make_node_from_constant(elements.length,obj);if(typeof key=="number"&&key in elements)value=elements[key]}else if(obj instanceof AST_Object){key=""+key;var props=obj.properties;for(var i=props.length;--i>=0;){var prop=props[i];if(!(prop instanceof AST_ObjectKeyVal))return;if(!value&&props[i].key===key)value=props[i].value}}return value instanceof AST_SymbolRef&&value.fixed_value()||value}function is_modified(compressor,tw,node,value,level,immutable){var parent=tw.parent(level);var lhs=is_lhs(node,parent);if(lhs)return lhs;if(!immutable&&parent instanceof AST_Call&&parent.expression===node&&!parent.is_expr_pure(compressor)&&(!(value instanceof AST_Function)||!(parent instanceof AST_New)&&value.contains_this())){return true}if(parent instanceof AST_Array){return is_modified(compressor,tw,parent,parent,level+1)}if(parent instanceof AST_ObjectKeyVal&&node===parent.value){var obj=tw.parent(level+1);return is_modified(compressor,tw,obj,obj,level+2)}if(parent instanceof AST_PropAccess&&parent.expression===node){var prop=read_property(value,parent.property);return!immutable&&is_modified(compressor,tw,parent,prop,level+1)}}(function(def){def(AST_Node,noop);function reset_def(tw,compressor,def){def.assignments=0;def.chained=false;def.direct_access=false;def.escaped=false;def.fixed=!def.scope.pinned()&&!compressor.exposed(def)&&!(def.init instanceof AST_Function&&def.init!==def.scope)&&def.init;if(def.fixed instanceof AST_Defun&&!all(def.references,function(ref){var scope=ref.scope;do{if(def.scope===scope)return true}while(scope instanceof AST_Function&&(scope=scope.parent_scope))})){tw.defun_ids[def.id]=false}def.recursive_refs=0;def.references=[];def.should_replace=undefined;def.single_use=undefined}function reset_variables(tw,compressor,scope){scope.variables.each(function(def){reset_def(tw,compressor,def);if(def.fixed===null){def.safe_ids=tw.safe_ids;mark(tw,def,true)}else if(def.fixed){tw.loop_ids[def.id]=tw.in_loop;mark(tw,def,true)}});scope.may_call_this=function(){scope.may_call_this=noop;if(!scope.contains_this())return;scope.functions.each(function(def){if(def.init instanceof AST_Defun&&!(def.id in tw.defun_ids)){tw.defun_ids[def.id]=false}})}}function mark_defun(tw,def){if(def.id in tw.defun_ids){var marker=tw.defun_ids[def.id];if(!marker)return;var visited=tw.defun_visited[def.id];if(marker===tw.safe_ids){if(!visited)return def.fixed}else if(visited){def.init.enclosed.forEach(function(d){if(def.init.variables.get(d.name)===d)return;if(!safe_to_read(tw,d))d.fixed=false})}else{tw.defun_ids[def.id]=false}}else{if(!tw.in_loop){tw.defun_ids[def.id]=tw.safe_ids;return def.fixed}tw.defun_ids[def.id]=false}}function walk_defuns(tw,scope){scope.functions.each(function(def){if(def.init instanceof AST_Defun&&!tw.defun_visited[def.id]){tw.defun_ids[def.id]=tw.safe_ids;def.init.walk(tw)}})}function push(tw){tw.safe_ids=Object.create(tw.safe_ids)}function pop(tw){tw.safe_ids=Object.getPrototypeOf(tw.safe_ids)}function mark(tw,def,safe){tw.safe_ids[def.id]=safe}function safe_to_read(tw,def){if(def.single_use=="m")return false;if(tw.safe_ids[def.id]){if(def.fixed==null){var orig=def.orig[0];if(orig instanceof AST_SymbolFunarg||orig.name=="arguments")return false;def.fixed=make_node(AST_Undefined,orig)}return true}return def.fixed instanceof AST_Defun}function safe_to_assign(tw,def,scope,value){if(def.fixed===undefined)return true;if(def.fixed===null&&def.safe_ids){def.safe_ids[def.id]=false;delete def.safe_ids;return true}if(!HOP(tw.safe_ids,def.id))return false;if(!safe_to_read(tw,def))return false;if(def.fixed===false)return false;if(def.fixed!=null&&(!value||def.references.length>def.assignments))return false;if(def.fixed instanceof AST_Defun){return value instanceof AST_Node&&def.fixed.parent_scope===scope}return all(def.orig,function(sym){return!(sym instanceof AST_SymbolDefun||sym instanceof AST_SymbolLambda)})}function ref_once(tw,compressor,def){return compressor.option("unused")&&!def.scope.pinned()&&def.references.length-def.recursive_refs==1&&tw.loop_ids[def.id]===tw.in_loop}function is_immutable(value){if(!value)return false;return value.is_constant()||value instanceof AST_Lambda||value instanceof AST_This}function mark_escaped(tw,d,scope,node,value,level,depth){var parent=tw.parent(level);if(value&&value.is_constant())return;if(parent instanceof AST_Assign&&parent.operator=="="&&node===parent.right||parent instanceof AST_Call&&(node!==parent.expression||parent instanceof AST_New)||parent instanceof AST_Exit&&node===parent.value&&node.scope!==d.scope||parent instanceof AST_VarDef&&node===parent.value){if(depth>1&&!(value&&value.is_constant_expression(scope)))depth=1;if(!d.escaped||d.escaped>depth)d.escaped=depth;return}else if(parent instanceof AST_Array||parent instanceof AST_Binary&&lazy_op[parent.operator]||parent instanceof AST_Conditional&&node!==parent.condition||parent instanceof AST_Sequence&&node===parent.tail_node()){mark_escaped(tw,d,scope,parent,parent,level+1,depth)}else if(parent instanceof AST_ObjectKeyVal&&node===parent.value){var obj=tw.parent(level+1);mark_escaped(tw,d,scope,obj,obj,level+2,depth)}else if(parent instanceof AST_PropAccess&&node===parent.expression){value=read_property(value,parent.property);mark_escaped(tw,d,scope,parent,value,level+1,depth+1);if(value)return}if(level>0)return;if(parent instanceof AST_Sequence&&node!==parent.tail_node())return;if(parent instanceof AST_SimpleStatement)return;d.direct_access=true}var suppressor=new TreeWalker(function(node){if(!(node instanceof AST_Symbol))return;var d=node.definition();if(!d)return;if(node instanceof AST_SymbolRef)d.references.push(node);d.fixed=false});def(AST_Accessor,function(tw,descend,compressor){push(tw);reset_variables(tw,compressor,this);descend();pop(tw);walk_defuns(tw,this);return true});def(AST_Assign,function(tw,descend,compressor){var node=this;var sym=node.left;if(!(sym instanceof AST_SymbolRef))return;var d=sym.definition();var safe=safe_to_assign(tw,d,sym.scope,node.right);d.assignments++;if(!safe)return;var fixed=d.fixed;if(!fixed&&node.operator!="=")return;var eq=node.operator=="=";var value=eq?node.right:node;if(is_modified(compressor,tw,node,value,0))return;d.references.push(sym);if(!eq)d.chained=true;d.fixed=eq?function(){return node.right}:function(){return make_node(AST_Binary,node,{operator:node.operator.slice(0,-1),left:fixed instanceof AST_Node?fixed:fixed(),right:node.right})};mark(tw,d,false);node.right.walk(tw);mark(tw,d,true);mark_escaped(tw,d,sym.scope,node,value,0,1);return true});def(AST_Binary,function(tw){if(!lazy_op[this.operator])return;this.left.walk(tw);push(tw);this.right.walk(tw);pop(tw);return true});def(AST_Call,function(tw,descend){tw.find_parent(AST_Scope).may_call_this();var exp=this.expression;if(!(exp instanceof AST_SymbolRef))return;var def=exp.definition();if(!(def.fixed instanceof AST_Defun))return;var defun=mark_defun(tw,def);if(!defun)return;descend();defun.walk(tw);return true});def(AST_Case,function(tw){push(tw);this.expression.walk(tw);pop(tw);push(tw);walk_body(this,tw);pop(tw);return true});def(AST_Conditional,function(tw){this.condition.walk(tw);push(tw);this.consequent.walk(tw);pop(tw);push(tw);this.alternative.walk(tw);pop(tw);return true});def(AST_Default,function(tw,descend){push(tw);descend();pop(tw);return true});def(AST_Defun,function(tw,descend,compressor){var id=this.name.definition().id;if(tw.defun_visited[id])return true;if(tw.defun_ids[id]!==tw.safe_ids)return true;tw.defun_visited[id]=true;this.inlined=false;push(tw);reset_variables(tw,compressor,this);descend();pop(tw);walk_defuns(tw,this);return true});def(AST_Do,function(tw){var saved_loop=tw.in_loop;tw.in_loop=this;push(tw);this.body.walk(tw);if(has_break_or_continue(this)){pop(tw);push(tw)}this.condition.walk(tw);pop(tw);tw.in_loop=saved_loop;return true});def(AST_For,function(tw){if(this.init)this.init.walk(tw);var saved_loop=tw.in_loop;tw.in_loop=this;push(tw);if(this.condition)this.condition.walk(tw);this.body.walk(tw);if(this.step){if(has_break_or_continue(this)){pop(tw);push(tw)}this.step.walk(tw)}pop(tw);tw.in_loop=saved_loop;return true});def(AST_ForIn,function(tw){this.init.walk(suppressor);this.object.walk(tw);var saved_loop=tw.in_loop;tw.in_loop=this;push(tw);this.body.walk(tw);pop(tw);tw.in_loop=saved_loop;return true});def(AST_Function,function(tw,descend,compressor){var node=this;node.inlined=false;push(tw);reset_variables(tw,compressor,node);var iife;if(!node.name&&(iife=tw.parent())instanceof AST_Call&&iife.expression===node){node.argnames.forEach(function(arg,i){var d=arg.definition();if(d.fixed===undefined&&(!node.uses_arguments||tw.has_directive("use strict"))){d.fixed=function(){return iife.args[i]||make_node(AST_Undefined,iife)};tw.loop_ids[d.id]=tw.in_loop;mark(tw,d,true)}else{d.fixed=false}})}descend();pop(tw);walk_defuns(tw,node);return true});def(AST_If,function(tw){this.condition.walk(tw);push(tw);this.body.walk(tw);pop(tw);if(this.alternative){push(tw);this.alternative.walk(tw);pop(tw)}return true});def(AST_LabeledStatement,function(tw){push(tw);this.body.walk(tw);pop(tw);return true});def(AST_SymbolCatch,function(){this.definition().fixed=false});def(AST_SymbolRef,function(tw,descend,compressor){var d=this.definition();d.references.push(this);if(d.references.length==1&&!d.fixed&&d.orig[0]instanceof AST_SymbolDefun){tw.loop_ids[d.id]=tw.in_loop}var value;if(d.fixed===undefined||!safe_to_read(tw,d)){d.fixed=false}else if(d.fixed){value=this.fixed_value();if(value instanceof AST_Lambda&&recursive_ref(tw,d)){d.recursive_refs++}else if(value&&ref_once(tw,compressor,d)){d.single_use=value instanceof AST_Lambda&&!value.pinned()||d.scope===this.scope&&value.is_constant_expression()}else{d.single_use=false}if(is_modified(compressor,tw,this,value,0,is_immutable(value))){if(d.single_use){d.single_use="m"}else{d.fixed=false}}}mark_escaped(tw,d,this.scope,this,value,0,1);var parent;if(d.fixed instanceof AST_Defun&&!((parent=tw.parent())instanceof AST_Call&&parent.expression===this)){var defun=mark_defun(tw,d);if(defun)defun.walk(tw)}});def(AST_Toplevel,function(tw,descend,compressor){this.globals.each(function(def){reset_def(tw,compressor,def)});push(tw);reset_variables(tw,compressor,this);descend();pop(tw);walk_defuns(tw,this);return true});def(AST_Try,function(tw){push(tw);walk_body(this,tw);pop(tw);if(this.bcatch){push(tw);this.bcatch.walk(tw);pop(tw)}if(this.bfinally)this.bfinally.walk(tw);return true});def(AST_Unary,function(tw,descend){var node=this;if(node.operator!="++"&&node.operator!="--")return;var exp=node.expression;if(!(exp instanceof AST_SymbolRef))return;var d=exp.definition();var safe=safe_to_assign(tw,d,exp.scope,true);d.assignments++;if(!safe)return;var fixed=d.fixed;if(!fixed)return;d.references.push(exp);d.chained=true;d.fixed=function(){return make_node(AST_Binary,node,{operator:node.operator.slice(0,-1),left:make_node(AST_UnaryPrefix,node,{operator:"+",expression:fixed instanceof AST_Node?fixed:fixed()}),right:make_node(AST_Number,node,{value:1})})};mark(tw,d,true);return true});def(AST_VarDef,function(tw,descend){var node=this;var d=node.name.definition();if(node.value){if(safe_to_assign(tw,d,node.name.scope,node.value)){d.fixed=function(){return node.value};tw.loop_ids[d.id]=tw.in_loop;mark(tw,d,false);descend();mark(tw,d,true);return true}else{d.fixed=false}}});def(AST_While,function(tw,descend){var saved_loop=tw.in_loop;tw.in_loop=this;push(tw);descend();pop(tw);tw.in_loop=saved_loop;return true})})(function(node,func){node.DEFMETHOD("reduce_vars",func)});AST_Toplevel.DEFMETHOD("reset_opt_flags",function(compressor){var tw=new TreeWalker(compressor.option("reduce_vars")?function(node,descend){node._squeezed=false;node._optimized=false;return node.reduce_vars(tw,descend,compressor)}:function(node){node._squeezed=false;node._optimized=false});tw.defun_ids=Object.create(null);tw.defun_visited=Object.create(null);tw.in_loop=null;tw.loop_ids=Object.create(null);tw.safe_ids=Object.create(null);this.walk(tw)});AST_Symbol.DEFMETHOD("fixed_value",function(){var fixed=this.definition().fixed;if(!fixed||fixed instanceof AST_Node)return fixed;return fixed()});AST_SymbolRef.DEFMETHOD("is_immutable",function(){var orig=this.definition().orig;return orig.length==1&&orig[0]instanceof AST_SymbolLambda});function is_lhs_read_only(lhs){if(lhs instanceof AST_This)return true;if(lhs instanceof AST_SymbolRef)return lhs.definition().orig[0]instanceof AST_SymbolLambda;if(lhs instanceof AST_PropAccess){lhs=lhs.expression;if(lhs instanceof AST_SymbolRef){if(lhs.is_immutable())return false;lhs=lhs.fixed_value()}if(!lhs)return true;if(lhs.is_constant())return true;return is_lhs_read_only(lhs)}return false}function find_variable(compressor,name){var scope,i=0;while(scope=compressor.parent(i++)){if(scope instanceof AST_Scope)break;if(scope instanceof AST_Catch){scope=scope.argname.definition().scope;break}}return scope.find_variable(name)}function make_node(ctor,orig,props){if(!props)props={};if(orig){if(!props.start)props.start=orig.start;if(!props.end)props.end=orig.end}return new ctor(props)}function make_sequence(orig,expressions){if(expressions.length==1)return expressions[0];return make_node(AST_Sequence,orig,{expressions:expressions.reduce(merge_sequence,[])})}function make_node_from_constant(val,orig){switch(typeof val){case"string":return make_node(AST_String,orig,{value:val});case"number":if(isNaN(val))return make_node(AST_NaN,orig);if(isFinite(val)){return 1/val<0?make_node(AST_UnaryPrefix,orig,{operator:"-",expression:make_node(AST_Number,orig,{value:-val})}):make_node(AST_Number,orig,{value:val})}return val<0?make_node(AST_UnaryPrefix,orig,{operator:"-",expression:make_node(AST_Infinity,orig)}):make_node(AST_Infinity,orig);case"boolean":return make_node(val?AST_True:AST_False,orig);case"undefined":return make_node(AST_Undefined,orig);default:if(val===null){return make_node(AST_Null,orig,{value:null})}if(val instanceof RegExp){return make_node(AST_RegExp,orig,{value:val})}throw new Error(string_template("Can't handle constant of type: {type}",{type:typeof val}))}}function needs_unbinding(compressor,val){return val instanceof AST_PropAccess||compressor.has_directive("use strict")&&is_undeclared_ref(val)&&val.name=="eval"}function maintain_this_binding(compressor,parent,orig,val){if(parent instanceof AST_UnaryPrefix&&parent.operator=="delete"||parent.TYPE=="Call"&&parent.expression===orig&&needs_unbinding(compressor,val)){return make_sequence(orig,[make_node(AST_Number,orig,{value:0}),val])}return val}function merge_sequence(array,node){if(node instanceof AST_Sequence){array.push.apply(array,node.expressions)}else{array.push(node)}return array}function as_statement_array(thing){if(thing===null)return[];if(thing instanceof AST_BlockStatement)return thing.body;if(thing instanceof AST_EmptyStatement)return[];if(thing instanceof AST_Statement)return[thing];throw new Error("Can't convert thing to statement array")}function is_empty(thing){if(thing===null)return true;if(thing instanceof AST_EmptyStatement)return true;if(thing instanceof AST_BlockStatement)return thing.body.length==0;return false}function loop_body(x){if(x instanceof AST_IterationStatement){return x.body instanceof AST_BlockStatement?x.body:x}return x}function root_expr(prop){while(prop instanceof AST_PropAccess)prop=prop.expression;return prop}function is_iife_call(node){if(node.TYPE!="Call")return false;return node.expression instanceof AST_Function||is_iife_call(node.expression)}function is_undeclared_ref(node){return node instanceof AST_SymbolRef&&node.definition().undeclared}var global_names=makePredicate("Array Boolean clearInterval clearTimeout console Date decodeURI decodeURIComponent encodeURI encodeURIComponent Error escape eval EvalError Function isFinite isNaN JSON Math Number parseFloat parseInt RangeError ReferenceError RegExp Object setInterval setTimeout String SyntaxError TypeError unescape URIError");AST_SymbolRef.DEFMETHOD("is_declared",function(compressor){return!this.definition().undeclared||compressor.option("unsafe")&&global_names[this.name]});var identifier_atom=makePredicate("Infinity NaN undefined");function is_identifier_atom(node){return node instanceof AST_Infinity||node instanceof AST_NaN||node instanceof AST_Undefined}function tighten_body(statements,compressor){var in_loop,in_try,scope;find_loop_scope_try();var CHANGED,max_iter=10;do{CHANGED=false;eliminate_spurious_blocks(statements);if(compressor.option("dead_code")){eliminate_dead_code(statements,compressor)}if(compressor.option("if_return")){handle_if_return(statements,compressor)}if(compressor.sequences_limit>0){sequencesize(statements,compressor);sequencesize_2(statements,compressor)}if(compressor.option("join_vars")){join_consecutive_vars(statements)}if(compressor.option("collapse_vars")){collapse(statements,compressor)}}while(CHANGED&&max_iter-- >0);function find_loop_scope_try(){var node=compressor.self(),level=0;do{if(node instanceof AST_Catch||node instanceof AST_Finally){level++}else if(node instanceof AST_IterationStatement){in_loop=true}else if(node instanceof AST_Scope){scope=node;break}else if(node instanceof AST_Try){in_try=true}}while(node=compressor.parent(level++))}function collapse(statements,compressor){if(scope.pinned())return statements;var args;var candidates=[];var stat_index=statements.length;var scanner=new TreeTransformer(function(node){if(abort)return node;if(!hit){if(node!==hit_stack[hit_index])return node;hit_index++;if(hit_index<hit_stack.length)return handle_custom_scan_order(node);hit=true;stop_after=find_stop(node,0);if(stop_after===node)abort=true;return node}var parent=scanner.parent();if(should_stop(node,parent)){abort=true;return node}if(!stop_if_hit&&in_conditional(node,parent)){stop_if_hit=parent}var hit_lhs,hit_rhs;if(can_replace&&!(node instanceof AST_SymbolDeclaration)&&(scan_lhs&&(hit_lhs=lhs.equivalent_to(node))||scan_rhs&&(hit_rhs=scan_rhs(node,this)))){if(stop_if_hit&&(hit_rhs||!lhs_local||!replace_all)){abort=true;return node}if(is_lhs(node,parent)){if(value_def)replaced++;return node}else{replaced++;if(value_def&&candidate instanceof AST_VarDef)return node}CHANGED=abort=true;compressor.info("Collapsing {name} [{file}:{line},{col}]",{name:node.print_to_string(),file:node.start.file,line:node.start.line,col:node.start.col});if(candidate instanceof AST_UnaryPostfix){return make_node(AST_UnaryPrefix,candidate,candidate)}if(candidate instanceof AST_VarDef){var def=candidate.name.definition();if(def.references.length-def.replaced==1&&!compressor.exposed(def)){def.replaced++;return maintain_this_binding(compressor,parent,node,candidate.value)}return make_node(AST_Assign,candidate,{operator:"=",left:make_node(AST_SymbolRef,candidate.name,candidate.name),right:candidate.value})}candidate.write_only=false;return candidate}var sym;if(is_last_node(node,parent)||may_throw(node)){stop_after=node;if(node instanceof AST_Scope)abort=true}return handle_custom_scan_order(node)},function(node){if(abort)return;if(stop_after===node)abort=true;if(stop_if_hit===node)stop_if_hit=null});var multi_replacer=new TreeTransformer(function(node){if(abort)return node;if(!hit){if(node!==hit_stack[hit_index])return node;hit_index++;if(hit_index<hit_stack.length)return;hit=true;return node}if(node instanceof AST_SymbolRef&&node.name==def.name){if(!--replaced)abort=true;if(is_lhs(node,multi_replacer.parent()))return node;def.replaced++;value_def.replaced--;return candidate.value.clone()}if(node instanceof AST_Default||node instanceof AST_Scope)return node});while(--stat_index>=0){if(stat_index==0&&compressor.option("unused"))extract_args();var hit_stack=[];extract_candidates(statements[stat_index]);while(candidates.length>0){hit_stack=candidates.pop();var hit_index=0;var candidate=hit_stack[hit_stack.length-1];var value_def=null;var stop_after=null;var stop_if_hit=null;var lhs=get_lhs(candidate);var rhs=get_rhs(candidate);var side_effects=lhs&&lhs.has_side_effects(compressor);var scan_lhs=lhs&&!side_effects&&!is_lhs_read_only(lhs);var scan_rhs=rhs&&foldable(rhs);if(!scan_lhs&&!scan_rhs)continue;var lvalues=get_lvalues(candidate);var lhs_local=is_lhs_local(lhs);if(!side_effects)side_effects=value_has_side_effects(candidate);var replace_all=replace_all_symbols();var may_throw=candidate.may_throw(compressor)?in_try?function(node){return node.has_side_effects(compressor)}:side_effects_external:return_false;var funarg=candidate.name instanceof AST_SymbolFunarg;var hit=funarg;var abort=false,replaced=0,can_replace=!args||!hit;if(!can_replace){for(var j=compressor.self().argnames.lastIndexOf(candidate.name)+1;!abort&&j<args.length;j++){args[j].transform(scanner)}can_replace=true}for(var i=stat_index;!abort&&i<statements.length;i++){statements[i].transform(scanner)}if(value_def){var def=candidate.name.definition();if(abort&&def.references.length-def.replaced>replaced)replaced=false;else{abort=false;hit_index=0;hit=funarg;for(var i=stat_index;!abort&&i<statements.length;i++){statements[i].transform(multi_replacer)}value_def.single_use=false}}if(replaced&&!remove_candidate(candidate))statements.splice(stat_index,1)}}function handle_custom_scan_order(node){if(node instanceof AST_Scope)return node;if(node instanceof AST_Switch){node.expression=node.expression.transform(scanner);for(var i=0,len=node.body.length;!abort&&i<len;i++){var branch=node.body[i];if(branch instanceof AST_Case){if(!hit){if(branch!==hit_stack[hit_index])continue;hit_index++}branch.expression=branch.expression.transform(scanner);if(!replace_all)break}}abort=true;return node}}function should_stop(node,parent){if(parent instanceof AST_For)return node!==parent.init;if(node instanceof AST_Assign){return node.operator!="="&&lhs.equivalent_to(node.left)}if(node instanceof AST_Call){return lhs instanceof AST_PropAccess&&lhs.equivalent_to(node.expression)}if(node instanceof AST_Debugger)return true;if(node instanceof AST_IterationStatement)return!(node instanceof AST_For);if(node instanceof AST_LoopControl)return true;if(node instanceof AST_Try)return true;if(node instanceof AST_With)return true;if(replace_all)return false;return node instanceof AST_SymbolRef&&!node.is_declared(compressor)}function in_conditional(node,parent){if(parent instanceof AST_Binary)return lazy_op[parent.operator]&&parent.left!==node;if(parent instanceof AST_Conditional)return parent.condition!==node;return parent instanceof AST_If&&parent.condition!==node}function is_last_node(node,parent){if(node instanceof AST_Call)return true;if(node instanceof AST_Exit){return side_effects||lhs instanceof AST_PropAccess||may_modify(lhs)}if(node instanceof AST_Function){return compressor.option("ie8")&&node.name&&node.name.name in lvalues}if(node instanceof AST_PropAccess){return side_effects||node.expression.may_throw_on_access(compressor)}if(node instanceof AST_SymbolRef){if(symbol_in_lvalues(node,parent)){return!parent||parent.operator!="="||parent.left!==node}return side_effects&&may_modify(node)}if(node instanceof AST_This)return symbol_in_lvalues(node,parent);if(node instanceof AST_VarDef){if(!node.value)return false;return node.name.name in lvalues||side_effects&&may_modify(node.name)}var sym=is_lhs(node.left,node);if(sym&&sym.name in lvalues)return true;if(sym instanceof AST_PropAccess)return true}function extract_args(){var iife,fn=compressor.self();if(fn instanceof AST_Function&&!fn.name&&!fn.uses_arguments&&!fn.pinned()&&(iife=compressor.parent())instanceof AST_Call&&iife.expression===fn){var fn_strict=compressor.has_directive("use strict");if(fn_strict&&!member(fn_strict,fn.body))fn_strict=false;var len=fn.argnames.length;args=iife.args.slice(len);var names=Object.create(null);for(var i=len;--i>=0;){var sym=fn.argnames[i];var arg=iife.args[i];args.unshift(make_node(AST_VarDef,sym,{name:sym,value:arg}));if(sym.name in names)continue;names[sym.name]=true;if(!arg){arg=make_node(AST_Undefined,sym).transform(compressor)}else if(arg instanceof AST_Lambda&&arg.pinned()){arg=null}else{arg.walk(new TreeWalker(function(node){if(!arg)return true;if(node instanceof AST_SymbolRef&&fn.variables.has(node.name)){var s=node.definition().scope;if(s!==scope)while(s=s.parent_scope){if(s===scope)return true}arg=null}if(node instanceof AST_This&&(fn_strict||!this.find_parent(AST_Scope))){arg=null;return true}}))}if(arg)candidates.unshift([make_node(AST_VarDef,sym,{name:sym,value:arg})])}}}function extract_candidates(expr){hit_stack.push(expr);if(expr instanceof AST_Assign){candidates.push(hit_stack.slice());extract_candidates(expr.right)}else if(expr instanceof AST_Binary){extract_candidates(expr.left);extract_candidates(expr.right)}else if(expr instanceof AST_Call){extract_candidates(expr.expression);expr.args.forEach(extract_candidates)}else if(expr instanceof AST_Case){extract_candidates(expr.expression)}else if(expr instanceof AST_Conditional){extract_candidates(expr.condition);extract_candidates(expr.consequent);extract_candidates(expr.alternative)}else if(expr instanceof AST_Definitions){expr.definitions.forEach(extract_candidates)}else if(expr instanceof AST_DWLoop){extract_candidates(expr.condition);if(!(expr.body instanceof AST_Block)){extract_candidates(expr.body)}}else if(expr instanceof AST_Exit){if(expr.value)extract_candidates(expr.value)}else if(expr instanceof AST_For){if(expr.init)extract_candidates(expr.init);if(expr.condition)extract_candidates(expr.condition);if(expr.step)extract_candidates(expr.step);if(!(expr.body instanceof AST_Block)){extract_candidates(expr.body)}}else if(expr instanceof AST_ForIn){extract_candidates(expr.object);if(!(expr.body instanceof AST_Block)){extract_candidates(expr.body)}}else if(expr instanceof AST_If){extract_candidates(expr.condition);if(!(expr.body instanceof AST_Block)){extract_candidates(expr.body)}if(expr.alternative&&!(expr.alternative instanceof AST_Block)){extract_candidates(expr.alternative)}}else if(expr instanceof AST_Sequence){expr.expressions.forEach(extract_candidates)}else if(expr instanceof AST_SimpleStatement){extract_candidates(expr.body)}else if(expr instanceof AST_Switch){extract_candidates(expr.expression);expr.body.forEach(extract_candidates)}else if(expr instanceof AST_Unary){if(expr.operator=="++"||expr.operator=="--"){candidates.push(hit_stack.slice())}else{extract_candidates(expr.expression)}}else if(expr instanceof AST_VarDef){if(expr.value){var def=expr.name.definition();if(def.references.length>def.replaced){candidates.push(hit_stack.slice())}extract_candidates(expr.value)}}hit_stack.pop()}function find_stop(node,level,write_only){var parent=scanner.parent(level);if(parent instanceof AST_Assign){if(write_only&&!(parent.left instanceof AST_PropAccess||parent.left.name in lvalues)){return find_stop(parent,level+1,write_only)}return node}if(parent instanceof AST_Binary){if(write_only&&(!lazy_op[parent.operator]||parent.left===node)){return find_stop(parent,level+1,write_only)}return node}if(parent instanceof AST_Call)return node;if(parent instanceof AST_Case)return node;if(parent instanceof AST_Conditional){if(write_only&&parent.condition===node){return find_stop(parent,level+1,write_only)}return node}if(parent instanceof AST_Definitions){return find_stop(parent,level+1,true)}if(parent instanceof AST_Exit){return write_only?find_stop(parent,level+1,write_only):node}if(parent instanceof AST_If){if(write_only&&parent.condition===node){return find_stop(parent,level+1,write_only)}return node}if(parent instanceof AST_IterationStatement)return node;if(parent instanceof AST_Sequence){return find_stop(parent,level+1,parent.tail_node()!==node)}if(parent instanceof AST_SimpleStatement){return find_stop(parent,level+1,true)}if(parent instanceof AST_Switch)return node;if(parent instanceof AST_Unary)return node;if(parent instanceof AST_VarDef)return node;return null}function mangleable_var(var_def){var value=var_def.value;if(!(value instanceof AST_SymbolRef))return;if(value.name=="arguments")return;var def=value.definition();if(def.undeclared)return;return value_def=def}function get_lhs(expr){if(expr instanceof AST_VarDef){var def=expr.name.definition();if(!member(expr.name,def.orig))return;var referenced=def.references.length-def.replaced;var declared=def.orig.length-def.eliminated;if(declared>1&&!(expr.name instanceof AST_SymbolFunarg)||(referenced>1?mangleable_var(expr):!compressor.exposed(def))){return make_node(AST_SymbolRef,expr.name,expr.name)}}else{return expr[expr instanceof AST_Assign?"left":"expression"]}}function get_rhs(expr){return candidate instanceof AST_Assign&&candidate.operator=="="&&candidate.right}function get_rvalue(expr){return expr[expr instanceof AST_Assign?"right":"value"]}function invariant(expr){if(expr instanceof AST_Array)return false;if(expr instanceof AST_Binary&&lazy_op[expr.operator]){return invariant(expr.left)&&invariant(expr.right)}if(expr instanceof AST_Call)return false;if(expr instanceof AST_Conditional){return invariant(expr.consequent)&&invariant(expr.alternative)}if(expr instanceof AST_Object)return false;return!expr.has_side_effects(compressor)}function foldable(expr){if(expr instanceof AST_SymbolRef){var value=expr.evaluate(compressor);if(value===expr)return rhs_exact_match;return rhs_fuzzy_match(value,rhs_exact_match)}if(expr instanceof AST_This)return rhs_exact_match;if(expr.is_truthy())return rhs_fuzzy_match(true,return_false);if(expr.is_constant()){return rhs_fuzzy_match(expr.evaluate(compressor),rhs_exact_match)}if(!(lhs instanceof AST_SymbolRef))return false;if(!invariant(expr))return false;var circular;var def=lhs.definition();expr.walk(new TreeWalker(function(node){if(circular)return true;if(node instanceof AST_SymbolRef&&node.definition()===def){circular=true}}));return!circular&&rhs_exact_match}function rhs_exact_match(node){return rhs.equivalent_to(node)}function rhs_fuzzy_match(value,fallback){return function(node,tw){if(tw.in_boolean_context()){if(value&&node.is_truthy()&&!node.has_side_effects(compressor)){return true}if(node.is_constant()){return!node.evaluate(compressor)==!value}}return fallback(node)}}function get_lvalues(expr){var lvalues=Object.create(null);if(candidate instanceof AST_VarDef){lvalues[candidate.name.name]=lhs}var tw=new TreeWalker(function(node){var sym=root_expr(node);if(sym instanceof AST_SymbolRef||sym instanceof AST_This){lvalues[sym.name]=lvalues[sym.name]||is_modified(compressor,tw,node,node,0)}});expr.walk(tw);return lvalues}function remove_candidate(expr){if(expr.name instanceof AST_SymbolFunarg){var index=compressor.self().argnames.indexOf(expr.name);var args=compressor.parent().args;if(args[index])args[index]=make_node(AST_Number,args[index],{value:0});return true}var found=false;return statements[stat_index].transform(new TreeTransformer(function(node,descend,in_list){if(found)return node;if(node===expr||node.body===expr){found=true;if(node instanceof AST_VarDef){node.value=null;return node}return in_list?MAP.skip:null}},function(node){if(node instanceof AST_Sequence)switch(node.expressions.length){case 0:return null;case 1:return node.expressions[0]}}))}function is_lhs_local(lhs){var sym=root_expr(lhs);return sym instanceof AST_SymbolRef&&sym.definition().scope===scope&&!(in_loop&&(sym.name in lvalues&&lvalues[sym.name]!==lhs||candidate instanceof AST_Unary||candidate instanceof AST_Assign&&candidate.operator!="="))}function value_has_side_effects(expr){if(expr instanceof AST_Unary)return false;return get_rvalue(expr).has_side_effects(compressor)}function replace_all_symbols(){if(side_effects)return false;if(value_def)return true;if(lhs instanceof AST_SymbolRef){var def=lhs.definition();if(def.references.length-def.replaced==(candidate instanceof AST_VarDef?1:2)){return true}}return false}function symbol_in_lvalues(sym,parent){var lvalue=lvalues[sym.name];if(!lvalue)return;if(lvalue!==lhs)return!(parent instanceof AST_Call);scan_rhs=false}function may_modify(sym){var def=sym.definition();if(def.orig.length==1&&def.orig[0]instanceof AST_SymbolDefun)return false;if(def.scope!==scope)return true;return!all(def.references,function(ref){return ref.scope.resolve()===scope})}function side_effects_external(node,lhs){if(node instanceof AST_Assign)return side_effects_external(node.left,true);if(node instanceof AST_Unary)return side_effects_external(node.expression,true);if(node instanceof AST_VarDef)return node.value&&side_effects_external(node.value);if(lhs){if(node instanceof AST_Dot)return side_effects_external(node.expression,true);if(node instanceof AST_Sub)return side_effects_external(node.expression,true);if(node instanceof AST_SymbolRef)return node.definition().scope!==scope}return false}}function eliminate_spurious_blocks(statements){var seen_dirs=[];for(var i=0;i<statements.length;){var stat=statements[i];if(stat instanceof AST_BlockStatement){CHANGED=true;eliminate_spurious_blocks(stat.body);[].splice.apply(statements,[i,1].concat(stat.body));i+=stat.body.length}else if(stat instanceof AST_EmptyStatement){CHANGED=true;statements.splice(i,1)}else if(stat instanceof AST_Directive){if(seen_dirs.indexOf(stat.value)<0){i++;seen_dirs.push(stat.value)}else{CHANGED=true;statements.splice(i,1)}}else i++}}function handle_if_return(statements,compressor){var self=compressor.self();var multiple_if_returns=has_multiple_if_returns(statements);var in_lambda=self instanceof AST_Lambda;for(var i=statements.length;--i>=0;){var stat=statements[i];var j=next_index(i);var next=statements[j];if(in_lambda&&!next&&stat instanceof AST_Return){if(!stat.value){CHANGED=true;statements.splice(i,1);continue}if(stat.value instanceof AST_UnaryPrefix&&stat.value.operator=="void"){CHANGED=true;statements[i]=make_node(AST_SimpleStatement,stat,{body:stat.value.expression});continue}}if(stat instanceof AST_If){var ab=aborts(stat.body);if(can_merge_flow(ab)){if(ab.label){remove(ab.label.thedef.references,ab)}CHANGED=true;stat=stat.clone();stat.condition=stat.condition.negate(compressor);var body=as_statement_array_with_return(stat.body,ab);stat.body=make_node(AST_BlockStatement,stat,{body:as_statement_array(stat.alternative).concat(extract_functions())});stat.alternative=make_node(AST_BlockStatement,stat,{body:body});statements[i]=stat.transform(compressor);continue}if(ab&&!stat.alternative&&stat.body instanceof AST_BlockStatement&&next instanceof AST_Jump){var negated=stat.condition.negate(compressor);if(negated.print_to_string().length<=stat.condition.print_to_string().length){CHANGED=true;stat=stat.clone();stat.condition=negated;statements[j]=stat.body;stat.body=next;statements[i]=stat.transform(compressor);continue}}var ab=aborts(stat.alternative);if(can_merge_flow(ab)){if(ab.label){remove(ab.label.thedef.references,ab)}CHANGED=true;stat=stat.clone();stat.body=make_node(AST_BlockStatement,stat.body,{body:as_statement_array(stat.body).concat(extract_functions())});var body=as_statement_array_with_return(stat.alternative,ab);stat.alternative=make_node(AST_BlockStatement,stat.alternative,{body:body});statements[i]=stat.transform(compressor);continue}}if(stat instanceof AST_If&&stat.body instanceof AST_Return){var value=stat.body.value;if(!value&&!stat.alternative&&(in_lambda&&!next||next instanceof AST_Return&&!next.value)){CHANGED=true;statements[i]=make_node(AST_SimpleStatement,stat.condition,{body:stat.condition});continue}if(value&&!stat.alternative&&next instanceof AST_Return&&next.value){CHANGED=true;stat=stat.clone();stat.alternative=next;statements.splice(i,1,stat.transform(compressor));statements.splice(j,1);continue}if(value&&!stat.alternative&&(!next&&in_lambda&&multiple_if_returns||next instanceof AST_Return)){CHANGED=true;stat=stat.clone();stat.alternative=next||make_node(AST_Return,stat,{value:null});statements.splice(i,1,stat.transform(compressor));if(next)statements.splice(j,1);continue}var prev=statements[prev_index(i)];if(compressor.option("sequences")&&in_lambda&&!stat.alternative&&prev instanceof AST_If&&prev.body instanceof AST_Return&&next_index(j)==statements.length&&next instanceof AST_SimpleStatement){CHANGED=true;stat=stat.clone();stat.alternative=make_node(AST_BlockStatement,next,{body:[next,make_node(AST_Return,next,{value:null})]});statements.splice(i,1,stat.transform(compressor));statements.splice(j,1);continue}}}function has_multiple_if_returns(statements){var n=0;for(var i=statements.length;--i>=0;){var stat=statements[i];if(stat instanceof AST_If&&stat.body instanceof AST_Return){if(++n>1)return true}}return false}function is_return_void(value){return!value||value instanceof AST_UnaryPrefix&&value.operator=="void"}function can_merge_flow(ab){if(!ab)return false;var lct=ab instanceof AST_LoopControl?compressor.loopcontrol_target(ab):null;return ab instanceof AST_Return&&in_lambda&&is_return_void(ab.value)||ab instanceof AST_Continue&&self===loop_body(lct)||ab instanceof AST_Break&&lct instanceof AST_BlockStatement&&self===lct}function extract_functions(){var tail=statements.slice(i+1);statements.length=i+1;return tail.filter(function(stat){if(stat instanceof AST_Defun){statements.push(stat);return false}return true})}function as_statement_array_with_return(node,ab){var body=as_statement_array(node).slice(0,-1);if(ab.value){body.push(make_node(AST_SimpleStatement,ab.value,{body:ab.value.expression}))}return body}function next_index(i){for(var j=i+1,len=statements.length;j<len;j++){var stat=statements[j];if(!(stat instanceof AST_Var&&declarations_only(stat))){break}}return j}function prev_index(i){for(var j=i;--j>=0;){var stat=statements[j];if(!(stat instanceof AST_Var&&declarations_only(stat))){break}}return j}}function eliminate_dead_code(statements,compressor){var has_quit;var self=compressor.self();for(var i=0,n=0,len=statements.length;i<len;i++){var stat=statements[i];if(stat instanceof AST_LoopControl){var lct=compressor.loopcontrol_target(stat);if(stat instanceof AST_Break&&!(lct instanceof AST_IterationStatement)&&loop_body(lct)===self||stat instanceof AST_Continue&&loop_body(lct)===self){if(stat.label){remove(stat.label.thedef.references,stat)}}else{statements[n++]=stat}}else{statements[n++]=stat}if(aborts(stat)){has_quit=statements.slice(i+1);break}}statements.length=n;CHANGED=n!=len;if(has_quit)has_quit.forEach(function(stat){extract_declarations_from_unreachable_code(compressor,stat,statements)})}function declarations_only(node){return all(node.definitions,function(var_def){return!var_def.value})}function sequencesize(statements,compressor){if(statements.length<2)return;var seq=[],n=0;function push_seq(){if(!seq.length)return;var body=make_sequence(seq[0],seq);statements[n++]=make_node(AST_SimpleStatement,body,{body:body});seq=[]}for(var i=0,len=statements.length;i<len;i++){var stat=statements[i];if(stat instanceof AST_SimpleStatement){if(seq.length>=compressor.sequences_limit)push_seq();var body=stat.body;if(seq.length>0)body=body.drop_side_effect_free(compressor);if(body)merge_sequence(seq,body)}else if(stat instanceof AST_Definitions&&declarations_only(stat)||stat instanceof AST_Defun){statements[n++]=stat}else{push_seq();statements[n++]=stat}}push_seq();statements.length=n;if(n!=len)CHANGED=true}function to_simple_statement(block,decls){if(!(block instanceof AST_BlockStatement))return block;var stat=null;for(var i=0,len=block.body.length;i<len;i++){var line=block.body[i];if(line instanceof AST_Var&&declarations_only(line)){decls.push(line)}else if(stat){return false}else{stat=line}}return stat}function sequencesize_2(statements,compressor){function cons_seq(right){n--;CHANGED=true;var left=prev.body;return make_sequence(left,[left,right]).transform(compressor)}var n=0,prev;for(var i=0;i<statements.length;i++){var stat=statements[i];if(prev){if(stat instanceof AST_Exit){stat.value=cons_seq(stat.value||make_node(AST_Undefined,stat).transform(compressor))}else if(stat instanceof AST_For){if(!(stat.init instanceof AST_Definitions)){var abort=false;prev.body.walk(new TreeWalker(function(node){if(abort||node instanceof AST_Scope)return true;if(node instanceof AST_Binary&&node.operator=="in"){abort=true;return true}}));if(!abort){if(stat.init)stat.init=cons_seq(stat.init);else{stat.init=prev.body;n--;CHANGED=true}}}}else if(stat instanceof AST_ForIn){stat.object=cons_seq(stat.object)}else if(stat instanceof AST_If){stat.condition=cons_seq(stat.condition)}else if(stat instanceof AST_Switch){stat.expression=cons_seq(stat.expression)}else if(stat instanceof AST_With){stat.expression=cons_seq(stat.expression)}}if(compressor.option("conditionals")&&stat instanceof AST_If){var decls=[];var body=to_simple_statement(stat.body,decls);var alt=to_simple_statement(stat.alternative,decls);if(body!==false&&alt!==false&&decls.length>0){var len=decls.length;decls.push(make_node(AST_If,stat,{condition:stat.condition,body:body||make_node(AST_EmptyStatement,stat.body),alternative:alt}));decls.unshift(n,1);[].splice.apply(statements,decls);i+=len;n+=len+1;prev=null;CHANGED=true;continue}}statements[n++]=stat;prev=stat instanceof AST_SimpleStatement?stat:null}statements.length=n}function join_assigns(defn,body){var exprs;if(body instanceof AST_Assign){exprs=[body]}else if(body instanceof AST_Sequence){exprs=body.expressions.slice()}if(!exprs)return;if(defn instanceof AST_Definitions){var def=defn.definitions[defn.definitions.length-1];if(trim_assigns(def.name,def.value,exprs))return exprs}for(var i=exprs.length-1;--i>=0;){var expr=exprs[i];if(!(expr instanceof AST_Assign))continue;if(expr.operator!="=")continue;if(!(expr.left instanceof AST_SymbolRef))continue;var tail=exprs.slice(i+1);if(!trim_assigns(expr.left,expr.right,tail))continue;return exprs.slice(0,i+1).concat(tail)}}function trim_assigns(name,value,exprs){if(!(value instanceof AST_Object))return;var trimmed=false;do{var node=exprs[0];if(!(node instanceof AST_Assign))break;if(node.operator!="=")break;if(!(node.left instanceof AST_PropAccess))break;var sym=node.left.expression;if(!(sym instanceof AST_SymbolRef))break;if(name.name!=sym.name)break;if(!node.right.is_constant_expression(scope))break;var prop=node.left.property;if(prop instanceof AST_Node){prop=prop.evaluate(compressor)}if(prop instanceof AST_Node)break;prop=""+prop;var diff=compressor.has_directive("use strict")?function(node){return node.key!=prop&&node.key.name!=prop}:function(node){return node.key.name!=prop};if(!all(value.properties,diff))break;value.properties.push(make_node(AST_ObjectKeyVal,node,{key:prop,value:node.right}));exprs.shift();trimmed=true}while(exprs.length);return trimmed}function join_consecutive_vars(statements){var defs;for(var i=0,j=-1,len=statements.length;i<len;i++){var stat=statements[i];var prev=statements[j];if(stat instanceof AST_Definitions){if(prev&&prev.TYPE==stat.TYPE){prev.definitions=prev.definitions.concat(stat.definitions);CHANGED=true}else if(defs&&defs.TYPE==stat.TYPE&&declarations_only(stat)){defs.definitions=defs.definitions.concat(stat.definitions);CHANGED=true}else{statements[++j]=stat;defs=stat}}else if(stat instanceof AST_Exit){stat.value=join_assigns_expr(stat.value)}else if(stat instanceof AST_For){var exprs=join_assigns(prev,stat.init);if(exprs){CHANGED=true;stat.init=exprs.length?make_sequence(stat.init,exprs):null;statements[++j]=stat}else if(prev instanceof AST_Var&&(!stat.init||stat.init.TYPE==prev.TYPE)){if(stat.init){prev.definitions=prev.definitions.concat(stat.init.definitions)}stat.init=prev;statements[j]=stat;CHANGED=true}else if(defs&&stat.init&&defs.TYPE==stat.init.TYPE&&declarations_only(stat.init)){defs.definitions=defs.definitions.concat(stat.init.definitions);stat.init=null;statements[++j]=stat;CHANGED=true}else{statements[++j]=stat}}else if(stat instanceof AST_ForIn){stat.object=join_assigns_expr(stat.object)}else if(stat instanceof AST_If){stat.condition=join_assigns_expr(stat.condition)}else if(stat instanceof AST_SimpleStatement){var exprs=join_assigns(prev,stat.body);if(exprs){CHANGED=true;if(!exprs.length)continue;stat.body=make_sequence(stat.body,exprs)}statements[++j]=stat}else if(stat instanceof AST_Switch){stat.expression=join_assigns_expr(stat.expression)}else if(stat instanceof AST_With){stat.expression=join_assigns_expr(stat.expression)}else{statements[++j]=stat}}statements.length=j+1;function join_assigns_expr(value){statements[++j]=stat;var exprs=join_assigns(prev,value);if(!exprs)return value;CHANGED=true;var tail=value.tail_node();if(exprs[exprs.length-1]!==tail)exprs.push(tail.left);return make_sequence(value,exprs)}}}function extract_declarations_from_unreachable_code(compressor,stat,target){if(!(stat instanceof AST_Defun)){compressor.warn("Dropping unreachable code [{file}:{line},{col}]",stat.start)}stat.walk(new TreeWalker(function(node){if(node instanceof AST_Definitions){compressor.warn("Declarations in unreachable code! [{file}:{line},{col}]",node.start);node.remove_initializers();target.push(node);return true}if(node instanceof AST_Defun){target.push(node);return true}if(node instanceof AST_Scope){return true}}))}function get_value(key){if(key instanceof AST_Constant){return key.getValue()}if(key instanceof AST_UnaryPrefix&&key.operator=="void"&&key.expression instanceof AST_Constant){return}return key}function is_undefined(node,compressor){return node.is_undefined||node instanceof AST_Undefined||node instanceof AST_UnaryPrefix&&node.operator=="void"&&!node.expression.has_side_effects(compressor)}(function(def){def(AST_Node,return_false);def(AST_Array,return_true);def(AST_Assign,function(){return this.operator=="="&&this.right.is_truthy()});def(AST_Lambda,return_true);def(AST_Object,return_true);def(AST_RegExp,return_true);def(AST_Sequence,function(){return this.tail_node().is_truthy()});def(AST_SymbolRef,function(){var fixed=this.fixed_value();return fixed&&fixed.is_truthy()})})(function(node,func){node.DEFMETHOD("is_truthy",func)});(function(def){AST_Node.DEFMETHOD("may_throw_on_access",function(compressor){return!compressor.option("pure_getters")||this._dot_throw(compressor)});function is_strict(compressor){return/strict/.test(compressor.option("pure_getters"))}def(AST_Node,is_strict);def(AST_Null,return_true);def(AST_Undefined,return_true);def(AST_Constant,return_false);def(AST_Array,return_false);def(AST_Object,function(compressor){if(!is_strict(compressor))return false;for(var i=this.properties.length;--i>=0;)if(this.properties[i].value instanceof AST_Accessor)return true;return false});def(AST_Lambda,return_false);def(AST_UnaryPostfix,return_false);def(AST_UnaryPrefix,function(){return this.operator=="void"});def(AST_Binary,function(compressor){return(this.operator=="&&"||this.operator=="||")&&(this.left._dot_throw(compressor)||this.right._dot_throw(compressor))});def(AST_Assign,function(compressor){return this.operator=="="&&this.right._dot_throw(compressor)});def(AST_Conditional,function(compressor){return this.consequent._dot_throw(compressor)||this.alternative._dot_throw(compressor)});def(AST_Dot,function(compressor){if(!is_strict(compressor))return false;var exp=this.expression;if(exp instanceof AST_SymbolRef)exp=exp.fixed_value();return!(exp instanceof AST_Lambda&&this.property=="prototype")});def(AST_Sequence,function(compressor){return this.tail_node()._dot_throw(compressor)});def(AST_SymbolRef,function(compressor){if(this.is_undefined)return true;if(!is_strict(compressor))return false;if(is_undeclared_ref(this)&&this.is_declared(compressor))return false;if(this.is_immutable())return false;var fixed=this.fixed_value();return!fixed||fixed._dot_throw(compressor)})})(function(node,func){node.DEFMETHOD("_dot_throw",func)});(function(def){def(AST_Node,return_false);def(AST_Assign,function(compressor){return this.operator=="="&&this.right.is_boolean(compressor)});var binary=makePredicate("in instanceof == != === !== < <= >= >");def(AST_Binary,function(compressor){return binary[this.operator]||lazy_op[this.operator]&&this.left.is_boolean(compressor)&&this.right.is_boolean(compressor)});def(AST_Boolean,return_true);var fn=makePredicate("every hasOwnProperty isPrototypeOf propertyIsEnumerable some");def(AST_Call,function(compressor){if(!compressor.option("unsafe"))return false;var exp=this.expression;return exp instanceof AST_Dot&&(fn[exp.property]||exp.property=="test"&&exp.expression instanceof AST_RegExp)});def(AST_Conditional,function(compressor){return this.consequent.is_boolean(compressor)&&this.alternative.is_boolean(compressor)});def(AST_New,return_false);def(AST_Sequence,function(compressor){return this.tail_node().is_boolean(compressor)});var unary=makePredicate("! delete");def(AST_UnaryPrefix,function(){return unary[this.operator]})})(function(node,func){node.DEFMETHOD("is_boolean",func)});(function(def){def(AST_Node,return_false);var binary=makePredicate("- * / % & | ^ << >> >>>");def(AST_Assign,function(compressor){return binary[this.operator.slice(0,-1)]||this.operator=="="&&this.right.is_number(compressor)});def(AST_Binary,function(compressor){return binary[this.operator]||this.operator=="+"&&this.left.is_number(compressor)&&this.right.is_number(compressor)});var fn=makePredicate(["charCodeAt","getDate","getDay","getFullYear","getHours","getMilliseconds","getMinutes","getMonth","getSeconds","getTime","getTimezoneOffset","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","getYear","indexOf","lastIndexOf","localeCompare","push","search","setDate","setFullYear","setHours","setMilliseconds","setMinutes","setMonth","setSeconds","setTime","setUTCDate","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes","setUTCMonth","setUTCSeconds","setYear","toExponential","toFixed","toPrecision"]);def(AST_Call,function(compressor){if(!compressor.option("unsafe"))return false;var exp=this.expression;return exp instanceof AST_Dot&&(fn[exp.property]||is_undeclared_ref(exp.expression)&&exp.expression.name=="Math")});def(AST_Conditional,function(compressor){return this.consequent.is_number(compressor)&&this.alternative.is_number(compressor)});def(AST_New,return_false);def(AST_Number,return_true);def(AST_Sequence,function(compressor){return this.tail_node().is_number(compressor)});var unary=makePredicate("+ - ~ ++ --");def(AST_Unary,function(){return unary[this.operator]})})(function(node,func){node.DEFMETHOD("is_number",func)});(function(def){def(AST_Node,return_false);def(AST_String,return_true);def(AST_UnaryPrefix,function(){return this.operator=="typeof"});def(AST_Binary,function(compressor){return this.operator=="+"&&(this.left.is_string(compressor)||this.right.is_string(compressor))});def(AST_Assign,function(compressor){return(this.operator=="="||this.operator=="+=")&&this.right.is_string(compressor)});def(AST_Sequence,function(compressor){return this.tail_node().is_string(compressor)});def(AST_Conditional,function(compressor){return this.consequent.is_string(compressor)&&this.alternative.is_string(compressor)})})(function(node,func){node.DEFMETHOD("is_string",func)});var lazy_op=makePredicate("&& ||");var unary_side_effects=makePredicate("delete ++ --");function is_lhs(node,parent){if(parent instanceof AST_Unary&&unary_side_effects[parent.operator])return parent.expression;if(parent instanceof AST_Assign&&parent.left===node)return node}(function(def){function to_node(value,orig){if(value instanceof AST_Node)return make_node(value.CTOR,orig,value);if(Array.isArray(value))return make_node(AST_Array,orig,{elements:value.map(function(value){return to_node(value,orig)})});if(value&&typeof value=="object"){var props=[];for(var key in value)if(HOP(value,key)){props.push(make_node(AST_ObjectKeyVal,orig,{key:key,value:to_node(value[key],orig)}))}return make_node(AST_Object,orig,{properties:props})}return make_node_from_constant(value,orig)}function warn(compressor,node){compressor.warn("global_defs "+node.print_to_string()+" redefined [{file}:{line},{col}]",node.start)}AST_Toplevel.DEFMETHOD("resolve_defines",function(compressor){if(!compressor.option("global_defs"))return this;this.figure_out_scope({ie8:compressor.option("ie8")});return this.transform(new TreeTransformer(function(node){var def=node._find_defs(compressor,"");if(!def)return;var level=0,child=node,parent;while(parent=this.parent(level++)){if(!(parent instanceof AST_PropAccess))break;if(parent.expression!==child)break;child=parent}if(is_lhs(child,parent)){warn(compressor,node);return}return def}))});def(AST_Node,noop);def(AST_Dot,function(compressor,suffix){return this.expression._find_defs(compressor,"."+this.property+suffix)});def(AST_SymbolDeclaration,function(compressor){if(!this.global())return;if(HOP(compressor.option("global_defs"),this.name))warn(compressor,this)});def(AST_SymbolRef,function(compressor,suffix){if(!this.global())return;var defines=compressor.option("global_defs");var name=this.name+suffix;if(HOP(defines,name))return to_node(defines[name],this)})})(function(node,func){node.DEFMETHOD("_find_defs",func)});function best_of_expression(ast1,ast2){return ast1.print_to_string().length>ast2.print_to_string().length?ast2:ast1}function best_of_statement(ast1,ast2){return best_of_expression(make_node(AST_SimpleStatement,ast1,{body:ast1}),make_node(AST_SimpleStatement,ast2,{body:ast2})).body}function best_of(compressor,ast1,ast2){return(first_in_statement(compressor)?best_of_statement:best_of_expression)(ast1,ast2)}function convert_to_predicate(obj){for(var key in obj){obj[key]=makePredicate(obj[key])}}var object_fns=["constructor","toString","valueOf"];var native_fns={Array:["indexOf","join","lastIndexOf","slice"].concat(object_fns),Boolean:object_fns,Function:object_fns,Number:["toExponential","toFixed","toPrecision"].concat(object_fns),Object:object_fns,RegExp:["test"].concat(object_fns),String:["charAt","charCodeAt","concat","indexOf","italics","lastIndexOf","match","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase","trim"].concat(object_fns)};convert_to_predicate(native_fns);var static_fns={Array:["isArray"],Math:["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan","atan2","pow","max","min"],Number:["isFinite","isNaN"],Object:["create","getOwnPropertyDescriptor","getOwnPropertyNames","getPrototypeOf","isExtensible","isFrozen","isSealed","keys"],String:["fromCharCode"]};convert_to_predicate(static_fns);(function(def){AST_Node.DEFMETHOD("evaluate",function(compressor){if(!compressor.option("evaluate"))return this;var cached=[];var val=this._eval(compressor,cached,1);cached.forEach(function(node){delete node._eval});if(!val||val instanceof RegExp)return val;if(typeof val=="function"||typeof val=="object")return this;return val});var unaryPrefix=makePredicate("! ~ - + void");AST_Node.DEFMETHOD("is_constant",function(){if(this instanceof AST_Constant){return!(this instanceof AST_RegExp)}else{return this instanceof AST_UnaryPrefix&&this.expression instanceof AST_Constant&&unaryPrefix[this.operator]}});def(AST_Statement,function(){throw new Error(string_template("Cannot evaluate a statement [{file}:{line},{col}]",this.start))});def(AST_Lambda,return_this);def(AST_Node,return_this);def(AST_Constant,function(){return this.getValue()});def(AST_Function,function(compressor){if(compressor.option("unsafe")){var fn=function(){};fn.node=this;fn.toString=function(){return"function(){}"};return fn}return this});def(AST_Array,function(compressor,cached,depth){if(compressor.option("unsafe")){var elements=[];for(var i=0,len=this.elements.length;i<len;i++){var element=this.elements[i];var value=element._eval(compressor,cached,depth);if(element===value)return this;elements.push(value)}return elements}return this});def(AST_Object,function(compressor,cached,depth){if(compressor.option("unsafe")){var val={};for(var i=0,len=this.properties.length;i<len;i++){var prop=this.properties[i];var key=prop.key;if(key instanceof AST_Symbol){key=key.name}else if(key instanceof AST_Node){key=key._eval(compressor,cached,depth);if(key===prop.key)return this}if(typeof Object.prototype[key]==="function"){return this}if(prop.value instanceof AST_Function)continue;val[key]=prop.value._eval(compressor,cached,depth);if(val[key]===prop.value)return this}return val}return this});var non_converting_unary=makePredicate("! typeof void");def(AST_UnaryPrefix,function(compressor,cached,depth){var e=this.expression;if(compressor.option("typeofs")&&this.operator=="typeof"&&(e instanceof AST_Lambda||e instanceof AST_SymbolRef&&e.fixed_value()instanceof AST_Lambda)){return typeof function(){}}if(!non_converting_unary[this.operator])depth++;e=e._eval(compressor,cached,depth);if(e===this.expression)return this;switch(this.operator){case"!":return!e;case"typeof":if(e instanceof RegExp)return this;return typeof e;case"void":return void e;case"~":return~e;case"-":return-e;case"+":return+e}return this});var non_converting_binary=makePredicate("&& || === !==");def(AST_Binary,function(compressor,cached,depth){if(!non_converting_binary[this.operator])depth++;var left=this.left._eval(compressor,cached,depth);if(left===this.left)return this;var right=this.right._eval(compressor,cached,depth);if(right===this.right)return this;var result;switch(this.operator){case"&&":result=left&&right;break;case"||":result=left||right;break;case"|":result=left|right;break;case"&":result=left&right;break;case"^":result=left^right;break;case"+":result=left+right;break;case"*":result=left*right;break;case"/":result=left/right;break;case"%":result=left%right;break;case"-":result=left-right;break;case"<<":result=left<<right;break;case">>":result=left>>right;break;case">>>":result=left>>>right;break;case"==":result=left==right;break;case"===":result=left===right;break;case"!=":result=left!=right;break;case"!==":result=left!==right;break;case"<":result=left<right;break;case"<=":result=left<=right;break;case">":result=left>right;break;case">=":result=left>=right;break;default:return this}return isNaN(result)&&compressor.find_parent(AST_With)?this:result});def(AST_Conditional,function(compressor,cached,depth){var condition=this.condition._eval(compressor,cached,depth);if(condition===this.condition)return this;var node=condition?this.consequent:this.alternative;var value=node._eval(compressor,cached,depth);return value===node?this:value});def(AST_SymbolRef,function(compressor,cached,depth){var fixed=this.fixed_value();if(!fixed)return this;var value;if(cached.indexOf(fixed)>=0){value=fixed._eval()}else{this._eval=return_this;value=fixed._eval(compressor,cached,depth);delete this._eval;if(value===fixed)return this;fixed._eval=function(){return value};cached.push(fixed)}if(value&&typeof value=="object"){var escaped=this.definition().escaped;if(escaped&&depth>escaped)return this}return value});var global_objs={Array:Array,Math:Math,Number:Number,Object:Object,String:String};var static_values={Math:["E","LN10","LN2","LOG2E","LOG10E","PI","SQRT1_2","SQRT2"],Number:["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"]};convert_to_predicate(static_values);def(AST_PropAccess,function(compressor,cached,depth){if(compressor.option("unsafe")){var key=this.property;if(key instanceof AST_Node){key=key._eval(compressor,cached,depth);if(key===this.property)return this}var exp=this.expression;var val;if(is_undeclared_ref(exp)){var static_value=static_values[exp.name];if(!static_value||!static_value[key])return this;val=global_objs[exp.name]}else{val=exp._eval(compressor,cached,depth+1);if(!val||val===exp||!HOP(val,key))return this;if(typeof val=="function")switch(key){case"name":return val.node.name?val.node.name.name:"";case"length":return val.node.argnames.length;default:return this}}return val[key]}return this});def(AST_Call,function(compressor,cached,depth){var exp=this.expression;if(compressor.option("unsafe")&&exp instanceof AST_PropAccess){var key=exp.property;if(key instanceof AST_Node){key=key._eval(compressor,cached,depth);if(key===exp.property)return this}var val;var e=exp.expression;if(is_undeclared_ref(e)){var static_fn=static_fns[e.name];if(!static_fn||!static_fn[key])return this;val=global_objs[e.name]}else{val=e._eval(compressor,cached,depth+1);if(val===e||!val)return this;var native_fn=native_fns[val.constructor.name];if(!native_fn||!native_fn[key])return this}var args=[];for(var i=0,len=this.args.length;i<len;i++){var arg=this.args[i];var value=arg._eval(compressor,cached,depth);if(arg===value)return this;args.push(value)}try{return val[key].apply(val,args)}catch(ex){compressor.warn("Error evaluating {code} [{file}:{line},{col}]",{code:this.print_to_string(),file:this.start.file,line:this.start.line,col:this.start.col})}}return this});def(AST_New,return_this)})(function(node,func){node.DEFMETHOD("_eval",func)});(function(def){function basic_negation(exp){return make_node(AST_UnaryPrefix,exp,{operator:"!",expression:exp})}function best(orig,alt,first_in_statement){var negated=basic_negation(orig);if(first_in_statement){var stat=make_node(AST_SimpleStatement,alt,{body:alt});return best_of_expression(negated,stat)===stat?alt:negated}return best_of_expression(negated,alt)}def(AST_Node,function(){return basic_negation(this)});def(AST_Statement,function(){throw new Error("Cannot negate a statement")});def(AST_Function,function(){return basic_negation(this)});def(AST_UnaryPrefix,function(){if(this.operator=="!")return this.expression;return basic_negation(this)});def(AST_Sequence,function(compressor){var expressions=this.expressions.slice();expressions.push(expressions.pop().negate(compressor));return make_sequence(this,expressions)});def(AST_Conditional,function(compressor,first_in_statement){var self=this.clone();self.consequent=self.consequent.negate(compressor);self.alternative=self.alternative.negate(compressor);return best(this,self,first_in_statement)});def(AST_Binary,function(compressor,first_in_statement){var self=this.clone(),op=this.operator;if(compressor.option("unsafe_comps")){switch(op){case"<=":self.operator=">";return self;case"<":self.operator=">=";return self;case">=":self.operator="<";return self;case">":self.operator="<=";return self}}switch(op){case"==":self.operator="!=";return self;case"!=":self.operator="==";return self;case"===":self.operator="!==";return self;case"!==":self.operator="===";return self;case"&&":self.operator="||";self.left=self.left.negate(compressor,first_in_statement);self.right=self.right.negate(compressor);return best(this,self,first_in_statement);case"||":self.operator="&&";self.left=self.left.negate(compressor,first_in_statement);self.right=self.right.negate(compressor);return best(this,self,first_in_statement)}return basic_negation(this)})})(function(node,func){node.DEFMETHOD("negate",function(compressor,first_in_statement){return func.call(this,compressor,first_in_statement)})});var global_pure_fns=makePredicate("Boolean decodeURI decodeURIComponent Date encodeURI encodeURIComponent Error escape EvalError isFinite isNaN Number Object parseFloat parseInt RangeError ReferenceError String SyntaxError TypeError unescape URIError");AST_Call.DEFMETHOD("is_expr_pure",function(compressor){if(compressor.option("unsafe")){var expr=this.expression;if(is_undeclared_ref(expr)&&global_pure_fns[expr.name])return true;if(expr instanceof AST_Dot&&is_undeclared_ref(expr.expression)){var static_fn=static_fns[expr.expression.name];return static_fn&&static_fn[expr.property]}}return this.pure||!compressor.pure_funcs(this)});AST_Node.DEFMETHOD("is_call_pure",return_false);AST_Dot.DEFMETHOD("is_call_pure",function(compressor){if(!compressor.option("unsafe"))return;var expr=this.expression;var map;if(expr instanceof AST_Array){map=native_fns.Array}else if(expr.is_boolean(compressor)){map=native_fns.Boolean}else if(expr.is_number(compressor)){map=native_fns.Number}else if(expr instanceof AST_RegExp){map=native_fns.RegExp}else if(expr.is_string(compressor)){map=native_fns.String}else if(!this.may_throw_on_access(compressor)){map=native_fns.Object}return map&&map[this.property]});(function(def){function any(list,compressor){for(var i=list.length;--i>=0;)if(list[i].has_side_effects(compressor))return true;return false}def(AST_Node,return_true);def(AST_Array,function(compressor){return any(this.elements,compressor)});def(AST_Assign,return_true);def(AST_Binary,function(compressor){return this.left.has_side_effects(compressor)||this.right.has_side_effects(compressor)});def(AST_Block,function(compressor){return any(this.body,compressor)});def(AST_Call,function(compressor){if(!this.is_expr_pure(compressor)&&(!this.expression.is_call_pure(compressor)||this.expression.has_side_effects(compressor))){return true}return any(this.args,compressor)});def(AST_Case,function(compressor){return this.expression.has_side_effects(compressor)||any(this.body,compressor)});def(AST_Conditional,function(compressor){return this.condition.has_side_effects(compressor)||this.consequent.has_side_effects(compressor)||this.alternative.has_side_effects(compressor)});def(AST_Constant,return_false);def(AST_Definitions,function(compressor){return any(this.definitions,compressor)});def(AST_Dot,function(compressor){return this.expression.may_throw_on_access(compressor)||this.expression.has_side_effects(compressor)});def(AST_EmptyStatement,return_false);def(AST_If,function(compressor){return this.condition.has_side_effects(compressor)||this.body&&this.body.has_side_effects(compressor)||this.alternative&&this.alternative.has_side_effects(compressor)});def(AST_LabeledStatement,function(compressor){return this.body.has_side_effects(compressor)});def(AST_Lambda,return_false);def(AST_Object,function(compressor){return any(this.properties,compressor)});def(AST_ObjectProperty,function(compressor){return this.value.has_side_effects(compressor)});def(AST_Sub,function(compressor){return this.expression.may_throw_on_access(compressor)||this.expression.has_side_effects(compressor)||this.property.has_side_effects(compressor)});def(AST_Sequence,function(compressor){return any(this.expressions,compressor)});def(AST_SimpleStatement,function(compressor){return this.body.has_side_effects(compressor)});def(AST_Switch,function(compressor){return this.expression.has_side_effects(compressor)||any(this.body,compressor)});def(AST_SymbolDeclaration,return_false);def(AST_SymbolRef,function(compressor){return!this.is_declared(compressor)});def(AST_This,return_false);def(AST_Try,function(compressor){return any(this.body,compressor)||this.bcatch&&this.bcatch.has_side_effects(compressor)||this.bfinally&&this.bfinally.has_side_effects(compressor)});def(AST_Unary,function(compressor){return unary_side_effects[this.operator]||this.expression.has_side_effects(compressor)});def(AST_VarDef,function(compressor){return this.value})})(function(node,func){node.DEFMETHOD("has_side_effects",func)});(function(def){def(AST_Node,return_true);def(AST_Constant,return_false);def(AST_EmptyStatement,return_false);def(AST_Lambda,return_false);def(AST_SymbolDeclaration,return_false);def(AST_This,return_false);function any(list,compressor){for(var i=list.length;--i>=0;)if(list[i].may_throw(compressor))return true;return false}def(AST_Array,function(compressor){return any(this.elements,compressor)});def(AST_Assign,function(compressor){if(this.right.may_throw(compressor))return true;if(!compressor.has_directive("use strict")&&this.operator=="="&&this.left instanceof AST_SymbolRef){return false}return this.left.may_throw(compressor)});def(AST_Binary,function(compressor){return this.left.may_throw(compressor)||this.right.may_throw(compressor)});def(AST_Block,function(compressor){return any(this.body,compressor)});def(AST_Call,function(compressor){if(any(this.args,compressor))return true;if(this.is_expr_pure(compressor))return false;if(this.expression.may_throw(compressor))return true;return!(this.expression instanceof AST_Lambda)||any(this.expression.body,compressor)});def(AST_Case,function(compressor){return this.expression.may_throw(compressor)||any(this.body,compressor)});def(AST_Conditional,function(compressor){return this.condition.may_throw(compressor)||this.consequent.may_throw(compressor)||this.alternative.may_throw(compressor)});def(AST_Definitions,function(compressor){return any(this.definitions,compressor)});def(AST_Dot,function(compressor){return this.expression.may_throw_on_access(compressor)||this.expression.may_throw(compressor)});def(AST_If,function(compressor){return this.condition.may_throw(compressor)||this.body&&this.body.may_throw(compressor)||this.alternative&&this.alternative.may_throw(compressor)});def(AST_LabeledStatement,function(compressor){return this.body.may_throw(compressor)});def(AST_Object,function(compressor){return any(this.properties,compressor)});def(AST_ObjectProperty,function(compressor){return this.value.may_throw(compressor)});def(AST_Return,function(compressor){return this.value&&this.value.may_throw(compressor)});def(AST_Sequence,function(compressor){return any(this.expressions,compressor)});def(AST_SimpleStatement,function(compressor){return this.body.may_throw(compressor)});def(AST_Sub,function(compressor){return this.expression.may_throw_on_access(compressor)||this.expression.may_throw(compressor)||this.property.may_throw(compressor)});def(AST_Switch,function(compressor){return this.expression.may_throw(compressor)||any(this.body,compressor)});def(AST_SymbolRef,function(compressor){return!this.is_declared(compressor)});def(AST_Try,function(compressor){return this.bcatch?this.bcatch.may_throw(compressor):any(this.body,compressor)||this.bfinally&&this.bfinally.may_throw(compressor)});def(AST_Unary,function(compressor){if(this.operator=="typeof"&&this.expression instanceof AST_SymbolRef)return false;return this.expression.may_throw(compressor)});def(AST_VarDef,function(compressor){if(!this.value)return false;return this.value.may_throw(compressor)})})(function(node,func){node.DEFMETHOD("may_throw",func)});(function(def){function all(list){for(var i=list.length;--i>=0;)if(!list[i].is_constant_expression())return false;return true}def(AST_Node,return_false);def(AST_Constant,return_true);def(AST_Lambda,function(scope){var self=this;var result=true;self.walk(new TreeWalker(function(node){if(!result)return true;if(node instanceof AST_SymbolRef){if(self.inlined){result=false;return true}var def=node.definition();if(member(def,self.enclosed)&&!self.variables.has(def.name)){if(scope){var scope_def=scope.find_variable(node);if(def.undeclared?!scope_def:scope_def===def){result="f";return true}}result=false}return true}}));return result});def(AST_Unary,function(){return this.expression.is_constant_expression()});def(AST_Binary,function(){return this.left.is_constant_expression()&&this.right.is_constant_expression()});def(AST_Array,function(){return all(this.elements)});def(AST_Object,function(){return all(this.properties)});def(AST_ObjectProperty,function(){return this.value.is_constant_expression()})})(function(node,func){node.DEFMETHOD("is_constant_expression",func)});function aborts(thing){return thing&&thing.aborts()}(function(def){def(AST_Statement,return_null);def(AST_Jump,return_this);function block_aborts(){var n=this.body.length;return n>0&&aborts(this.body[n-1])}def(AST_BlockStatement,block_aborts);def(AST_SwitchBranch,block_aborts);def(AST_If,function(){return this.alternative&&aborts(this.body)&&aborts(this.alternative)&&this})})(function(node,func){node.DEFMETHOD("aborts",func)});var directives=makePredicate(["use asm","use strict"]);OPT(AST_Directive,function(self,compressor){if(compressor.option("directives")&&(!directives[self.value]||compressor.has_directive(self.value)!==self)){return make_node(AST_EmptyStatement,self)}return self});OPT(AST_Debugger,function(self,compressor){if(compressor.option("drop_debugger"))return make_node(AST_EmptyStatement,self);return self});OPT(AST_LabeledStatement,function(self,compressor){if(self.body instanceof AST_Break&&compressor.loopcontrol_target(self.body)===self.body){return make_node(AST_EmptyStatement,self)}return self.label.references.length==0?self.body:self});OPT(AST_Block,function(self,compressor){tighten_body(self.body,compressor);return self});OPT(AST_BlockStatement,function(self,compressor){tighten_body(self.body,compressor);switch(self.body.length){case 1:return self.body[0];case 0:return make_node(AST_EmptyStatement,self)}return self});OPT(AST_Lambda,function(self,compressor){tighten_body(self.body,compressor);if(compressor.option("side_effects")&&self.body.length==1&&self.body[0]===compressor.has_directive("use strict")){self.body.length=0}return self});AST_Scope.DEFMETHOD("drop_unused",function(compressor){if(!compressor.option("unused"))return;if(compressor.has_directive("use asm"))return;var self=this;if(self.pinned())return;var drop_funcs=!(self instanceof AST_Toplevel)||compressor.toplevel.funcs;var drop_vars=!(self instanceof AST_Toplevel)||compressor.toplevel.vars;var assign_as_unused=/keep_assign/.test(compressor.option("unused"))?return_false:function(node,props){var sym;if(node instanceof AST_Assign&&(node.write_only||node.operator=="=")){sym=node.left}else if(node instanceof AST_Unary&&node.write_only){sym=node.expression}if(!/strict/.test(compressor.option("pure_getters")))return sym instanceof AST_SymbolRef&&sym;while(sym instanceof AST_PropAccess&&!sym.expression.may_throw_on_access(compressor)){if(sym instanceof AST_Sub)props.unshift(sym.property);sym=sym.expression}return sym instanceof AST_SymbolRef&&all(sym.definition().orig,function(sym){return!(sym instanceof AST_SymbolLambda)})&&sym};var in_use=[];var in_use_ids=Object.create(null);var fixed_ids=Object.create(null);var value_read=Object.create(null);var value_modified=Object.create(null);if(self instanceof AST_Toplevel&&compressor.top_retain){self.variables.each(function(def){if(compressor.top_retain(def)&&!(def.id in in_use_ids)){in_use_ids[def.id]=true;in_use.push(def)}})}var var_defs_by_id=new Dictionary;var initializations=new Dictionary;var scope=this;var tw=new TreeWalker(function(node,descend){if(node instanceof AST_Lambda&&node.uses_arguments&&!tw.has_directive("use strict")){node.argnames.forEach(function(argname){var def=argname.definition();if(!(def.id in in_use_ids)){in_use_ids[def.id]=true;in_use.push(def)}})}if(node===self)return;if(node instanceof AST_Defun){var node_def=node.name.definition();if(!drop_funcs&&scope===self){if(!(node_def.id in in_use_ids)){in_use_ids[node_def.id]=true;in_use.push(node_def)}}initializations.add(node_def.id,node);return true}if(node instanceof AST_SymbolFunarg&&scope===self){var_defs_by_id.add(node.definition().id,node)}if(node instanceof AST_Definitions&&scope===self){node.definitions.forEach(function(def){var node_def=def.name.definition();if(def.name instanceof AST_SymbolVar){var_defs_by_id.add(node_def.id,def)}if(!drop_vars){if(!(node_def.id in in_use_ids)){in_use_ids[node_def.id]=true;in_use.push(node_def)}}if(def.value){initializations.add(node_def.id,def.value);if(def.value.has_side_effects(compressor)){def.value.walk(tw)}if(!node_def.chained&&def.name.fixed_value()===def.value){fixed_ids[node_def.id]=def}}});return true}return scan_ref_scoped(node,descend)});self.walk(tw);tw=new TreeWalker(scan_ref_scoped);for(var i=0;i<in_use.length;i++){var init=initializations.get(in_use[i].id);if(init)init.forEach(function(init){init.walk(tw)})}var drop_fn_name=compressor.option("keep_fnames")?return_false:compressor.option("ie8")?function(def){return!compressor.exposed(def)&&!def.references.length}:function(def){return!(def.id in in_use_ids)||def.orig.length>1};var tt=new TreeTransformer(function(node,descend,in_list){var parent=tt.parent();if(drop_vars){var props=[],sym=assign_as_unused(node,props);if(sym){var def=sym.definition();var in_use=def.id in in_use_ids;var value=null;if(node instanceof AST_Assign){if(!in_use||node.left===sym&&def.id in fixed_ids&&fixed_ids[def.id]!==node){value=node.right}}else if(!in_use){value=make_node(AST_Number,node,{value:0})}if(value){props.push(value);return maintain_this_binding(compressor,parent,node,make_sequence(node,props.map(function(prop){return prop.transform(tt)})))}}}if(scope!==self)return;if(node instanceof AST_Function&&node.name&&drop_fn_name(node.name.definition())){node.name=null}if(node instanceof AST_Lambda&&!(node instanceof AST_Accessor)){var trim=!compressor.option("keep_fargs");for(var a=node.argnames,i=a.length;--i>=0;){var sym=a[i];if(!(sym.definition().id in in_use_ids)){sym.__unused=true;if(trim){a.pop();compressor[sym.unreferenced()?"warn":"info"]("Dropping unused function argument {name} [{file}:{line},{col}]",template(sym))}}else{trim=false}}}if(drop_funcs&&node instanceof AST_Defun&&node!==self){var def=node.name.definition();if(!(def.id in in_use_ids)){compressor[node.name.unreferenced()?"warn":"info"]("Dropping unused function {name} [{file}:{line},{col}]",template(node.name));def.eliminated++;return make_node(AST_EmptyStatement,node)}}if(node instanceof AST_Definitions&&!(parent instanceof AST_ForIn&&parent.init===node)){var body=[],head=[],tail=[];var side_effects=[];node.definitions.forEach(function(def){if(def.value)def.value=def.value.transform(tt);var sym=def.name.definition();if(!drop_vars||sym.id in in_use_ids){if(def.value&&sym.id in fixed_ids&&fixed_ids[sym.id]!==def){def.value=def.value.drop_side_effect_free(compressor)}if(def.name instanceof AST_SymbolVar){var var_defs=var_defs_by_id.get(sym.id);if(var_defs.length>1&&(!def.value||sym.orig.indexOf(def.name)>sym.eliminated)){compressor.warn("Dropping duplicated definition of variable {name} [{file}:{line},{col}]",template(def.name));if(def.value){var ref=make_node(AST_SymbolRef,def.name,def.name);sym.references.push(ref);var assign=make_node(AST_Assign,def,{operator:"=",left:ref,right:def.value});if(fixed_ids[sym.id]===def){fixed_ids[sym.id]=assign}side_effects.push(assign.transform(tt))}remove(var_defs,def);sym.eliminated++;return}}if(def.value){if(side_effects.length>0){if(tail.length>0){side_effects.push(def.value);def.value=make_sequence(def.value,side_effects)}else{body.push(make_node(AST_SimpleStatement,node,{body:make_sequence(node,side_effects)}))}side_effects=[]}tail.push(def)}else{head.push(def)}}else if(sym.orig[0]instanceof AST_SymbolCatch){var value=def.value&&def.value.drop_side_effect_free(compressor);if(value)side_effects.push(value);def.value=null;head.push(def)}else{var value=def.value&&def.value.drop_side_effect_free(compressor);if(value){compressor.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]",template(def.name));side_effects.push(value)}else{compressor[def.name.unreferenced()?"warn":"info"]("Dropping unused variable {name} [{file}:{line},{col}]",template(def.name))}sym.eliminated++}});if(head.length>0||tail.length>0){node.definitions=head.concat(tail);body.push(node)}if(side_effects.length>0){body.push(make_node(AST_SimpleStatement,node,{body:make_sequence(node,side_effects)}))}switch(body.length){case 0:return in_list?MAP.skip:make_node(AST_EmptyStatement,node);case 1:return body[0];default:return in_list?MAP.splice(body):make_node(AST_BlockStatement,node,{body:body})}}if(node instanceof AST_For){descend(node,this);var block;if(node.init instanceof AST_BlockStatement){block=node.init;node.init=block.body.pop();block.body.push(node)}if(node.init instanceof AST_SimpleStatement){node.init=node.init.body}else if(is_empty(node.init)){node.init=null}return!block?node:in_list?MAP.splice(block.body):block}if(node instanceof AST_LabeledStatement&&node.body instanceof AST_For){descend(node,this);if(node.body instanceof AST_BlockStatement){var block=node.body;node.body=block.body.pop();block.body.push(node);return in_list?MAP.splice(block.body):block}return node}if(node instanceof AST_Scope){var save_scope=scope;scope=node;descend(node,this);scope=save_scope;return node}function template(sym){return{name:sym.name,file:sym.start.file,line:sym.start.line,col:sym.start.col}}});self.transform(tt);function verify_safe_usage(def,read,modified){if(def.id in in_use_ids)return;if(read&&modified){in_use_ids[def.id]=true;in_use.push(def)}else{value_read[def.id]=read;value_modified[def.id]=modified}}function scan_ref_scoped(node,descend){var node_def,props=[],sym=assign_as_unused(node,props);if(sym&&self.variables.get(sym.name)===(node_def=sym.definition())){props.forEach(function(prop){prop.walk(tw)});if(node instanceof AST_Assign){node.right.walk(tw);if(node.left===sym){if(!node_def.chained&&sym.fixed_value()===node.right){fixed_ids[node_def.id]=node}if(!node.write_only){verify_safe_usage(node_def,true,value_modified[node_def.id])}}else{var fixed=sym.fixed_value();if(!fixed||!fixed.is_constant()){verify_safe_usage(node_def,value_read[node_def.id],true)}}}return true}if(node instanceof AST_SymbolRef){node_def=node.definition();if(!(node_def.id in in_use_ids)){in_use_ids[node_def.id]=true;in_use.push(node_def)}return true}if(node instanceof AST_Scope){var save_scope=scope;scope=node;descend();scope=save_scope;return true}}});AST_Scope.DEFMETHOD("hoist_declarations",function(compressor){if(compressor.has_directive("use asm"))return;var hoist_funs=compressor.option("hoist_funs");var hoist_vars=compressor.option("hoist_vars");var self=this;if(hoist_vars){var var_decl=0;self.walk(new TreeWalker(function(node){if(var_decl>1)return true;if(node instanceof AST_Scope&&node!==self)return true;if(node instanceof AST_Var){var_decl++;return true}}));if(var_decl<=1)hoist_vars=false}if(!hoist_funs&&!hoist_vars)return;var dirs=[];var hoisted=[];var vars=new Dictionary,vars_found=0;var tt=new TreeTransformer(function(node){if(node===self)return;if(node instanceof AST_Directive){dirs.push(node);return make_node(AST_EmptyStatement,node)}if(hoist_funs&&node instanceof AST_Defun&&(tt.parent()===self||!compressor.has_directive("use strict"))){hoisted.push(node);return make_node(AST_EmptyStatement,node)}if(hoist_vars&&node instanceof AST_Var){node.definitions.forEach(function(def){vars.set(def.name.name,def);++vars_found});var seq=node.to_assignments(compressor);var p=tt.parent();if(p instanceof AST_ForIn&&p.init===node){if(seq)return seq;var def=node.definitions[0].name;return make_node(AST_SymbolRef,def,def)}if(p instanceof AST_For&&p.init===node)return seq;if(!seq)return make_node(AST_EmptyStatement,node);return make_node(AST_SimpleStatement,node,{body:seq})}if(node instanceof AST_Scope)return node});self.transform(tt);if(vars_found>0){var defs=[];vars.each(function(def,name){if(self instanceof AST_Lambda&&!all(self.argnames,function(argname){return argname.name!=name})){vars.del(name)}else{def=def.clone();def.value=null;defs.push(def);vars.set(name,def)}});if(defs.length>0){for(var i=0;i<self.body.length;){if(self.body[i]instanceof AST_SimpleStatement){var expr=self.body[i].body,sym,assign;if(expr instanceof AST_Assign&&expr.operator=="="&&(sym=expr.left)instanceof AST_Symbol&&vars.has(sym.name)){var def=vars.get(sym.name);if(def.value)break;def.value=expr.right;remove(defs,def);defs.push(def);self.body.splice(i,1);continue}if(expr instanceof AST_Sequence&&(assign=expr.expressions[0])instanceof AST_Assign&&assign.operator=="="&&(sym=assign.left)instanceof AST_Symbol&&vars.has(sym.name)){var def=vars.get(sym.name);if(def.value)break;def.value=assign.right;remove(defs,def);defs.push(def);self.body[i].body=make_sequence(expr,expr.expressions.slice(1));continue}}if(self.body[i]instanceof AST_EmptyStatement){self.body.splice(i,1);continue}if(self.body[i]instanceof AST_BlockStatement){var tmp=[i,1].concat(self.body[i].body);self.body.splice.apply(self.body,tmp);continue}break}defs=make_node(AST_Var,self,{definitions:defs});hoisted.push(defs)}}self.body=dirs.concat(hoisted,self.body)});AST_Scope.DEFMETHOD("var_names",function(){var var_names=this._var_names;if(!var_names){this._var_names=var_names=Object.create(null);this.enclosed.forEach(function(def){var_names[def.name]=true});this.variables.each(function(def,name){var_names[name]=true})}return var_names});AST_Scope.DEFMETHOD("make_var_name",function(prefix){var var_names=this.var_names();prefix=prefix.replace(/(?:^[^a-z_$]|[^a-z0-9_$])/gi,"_");var name=prefix;for(var i=0;var_names[name];i++)name=prefix+"$"+i;var_names[name]=true;return name});AST_Scope.DEFMETHOD("hoist_properties",function(compressor){if(!compressor.option("hoist_props")||compressor.has_directive("use asm"))return;var self=this;var top_retain=self instanceof AST_Toplevel&&compressor.top_retain||return_false;var defs_by_id=Object.create(null);self.transform(new TreeTransformer(function(node,descend){if(node instanceof AST_Assign&&node.operator=="="&&node.write_only&&can_hoist(node.left,node.right,1)){descend(node,this);var defs=new Dictionary;var assignments=[];var decls=[];node.right.properties.forEach(function(prop){var decl=make_sym(node.left,prop.key);decls.push(make_node(AST_VarDef,node,{name:decl,value:null}));var sym=make_node(AST_SymbolRef,node,{name:decl.name,scope:self,thedef:decl.definition()});sym.reference({});assignments.push(make_node(AST_Assign,node,{operator:"=",left:sym,right:prop.value}))});defs_by_id[node.left.definition().id]=defs;self.body.splice(self.body.indexOf(this.stack[1])+1,0,make_node(AST_Var,node,{definitions:decls}));return make_sequence(node,assignments)}if(node instanceof AST_VarDef&&can_hoist(node.name,node.value,0)){descend(node,this);var defs=new Dictionary;var var_defs=[];node.value.properties.forEach(function(prop){var_defs.push(make_node(AST_VarDef,node,{name:make_sym(node.name,prop.key),value:prop.value}))});defs_by_id[node.name.definition().id]=defs;return MAP.splice(var_defs)}if(node instanceof AST_PropAccess&&node.expression instanceof AST_SymbolRef){var defs=defs_by_id[node.expression.definition().id];if(defs){var def=defs.get(get_value(node.property));var sym=make_node(AST_SymbolRef,node,{name:def.name,scope:node.expression.scope,thedef:def});sym.reference({});return sym}}function can_hoist(sym,right,count){if(sym.scope!==self)return;var def=sym.definition();if(def.assignments!=count)return;if(def.direct_access)return;if(def.escaped==1)return;if(def.references.length==count)return;if(def.single_use)return;if(top_retain(def))return;if(sym.fixed_value()!==right)return;return right instanceof AST_Object}function make_sym(sym,key){var new_var=make_node(AST_SymbolVar,sym,{name:self.make_var_name(sym.name+"_"+key),scope:self});var def=self.def_variable(new_var);defs.set(key,def);self.enclosed.push(def);return new_var}}))});(function(def){function trim(nodes,compressor,first_in_statement){var len=nodes.length;if(!len)return null;var ret=[],changed=false;for(var i=0;i<len;i++){var node=nodes[i].drop_side_effect_free(compressor,first_in_statement);changed|=node!==nodes[i];if(node){ret.push(node);first_in_statement=false}}return changed?ret.length?ret:null:nodes}def(AST_Node,return_this);def(AST_Accessor,return_null);def(AST_Array,function(compressor,first_in_statement){var values=trim(this.elements,compressor,first_in_statement);return values&&make_sequence(this,values)});def(AST_Assign,function(compressor){var left=this.left;if(left.has_side_effects(compressor)||compressor.has_directive("use strict")&&left instanceof AST_PropAccess&&left.expression.is_constant()){return this}this.write_only=true;if(root_expr(left).is_constant_expression(compressor.find_parent(AST_Scope))){return this.right.drop_side_effect_free(compressor)}return this});def(AST_Binary,function(compressor,first_in_statement){var right=this.right.drop_side_effect_free(compressor);if(!right)return this.left.drop_side_effect_free(compressor,first_in_statement);if(lazy_op[this.operator]){if(right===this.right)return this;var node=this.clone();node.right=right;return node}else{var left=this.left.drop_side_effect_free(compressor,first_in_statement);if(!left)return this.right.drop_side_effect_free(compressor,first_in_statement);return make_sequence(this,[left,right])}});def(AST_Call,function(compressor,first_in_statement){if(!this.is_expr_pure(compressor)){if(this.expression.is_call_pure(compressor)){var exprs=this.args.slice();exprs.unshift(this.expression.expression);exprs=trim(exprs,compressor,first_in_statement);return exprs&&make_sequence(this,exprs)}if(this.expression instanceof AST_Function&&(!this.expression.name||!this.expression.name.definition().references.length)){var node=this.clone();var exp=node.expression;exp.process_expression(false,compressor);exp.walk(new TreeWalker(function(node){if(node instanceof AST_Return&&node.value){node.value=node.value.drop_side_effect_free(compressor);return true}if(node instanceof AST_Scope&&node!==exp)return true}));return node}return this}if(this.pure){compressor.warn("Dropping __PURE__ call [{file}:{line},{col}]",this.start)}var args=trim(this.args,compressor,first_in_statement);return args&&make_sequence(this,args)});def(AST_Conditional,function(compressor){var consequent=this.consequent.drop_side_effect_free(compressor);var alternative=this.alternative.drop_side_effect_free(compressor);if(consequent===this.consequent&&alternative===this.alternative)return this;if(!consequent)return alternative?make_node(AST_Binary,this,{operator:"||",left:this.condition,right:alternative}):this.condition.drop_side_effect_free(compressor);if(!alternative)return make_node(AST_Binary,this,{operator:"&&",left:this.condition,right:consequent});var node=this.clone();node.consequent=consequent;node.alternative=alternative;return node});def(AST_Constant,return_null);def(AST_Dot,function(compressor,first_in_statement){if(this.expression.may_throw_on_access(compressor))return this;return this.expression.drop_side_effect_free(compressor,first_in_statement)});def(AST_Function,function(compressor){return this.name&&compressor.option("ie8")?this:null});def(AST_Unary,function(compressor,first_in_statement){if(unary_side_effects[this.operator]){this.write_only=!this.expression.has_side_effects(compressor);return this}if(this.operator=="typeof"&&this.expression instanceof AST_SymbolRef)return null;var expression=this.expression.drop_side_effect_free(compressor,first_in_statement);if(first_in_statement&&expression&&is_iife_call(expression)){if(expression===this.expression&&this.operator=="!")return this;return expression.negate(compressor,first_in_statement)}return expression});def(AST_Object,function(compressor,first_in_statement){var values=trim(this.properties,compressor,first_in_statement);return values&&make_sequence(this,values)});def(AST_ObjectProperty,function(compressor,first_in_statement){return this.value.drop_side_effect_free(compressor,first_in_statement)});def(AST_Sequence,function(compressor){var last=this.tail_node();var expr=last.drop_side_effect_free(compressor);if(expr===last)return this;var expressions=this.expressions.slice(0,-1);if(expr)expressions.push(expr);return make_sequence(this,expressions)});def(AST_Sub,function(compressor,first_in_statement){if(this.expression.may_throw_on_access(compressor))return this;var expression=this.expression.drop_side_effect_free(compressor,first_in_statement);if(!expression)return this.property.drop_side_effect_free(compressor,first_in_statement);var property=this.property.drop_side_effect_free(compressor);if(!property)return expression;return make_sequence(this,[expression,property])});def(AST_SymbolRef,function(compressor){return this.is_declared(compressor)?null:this});def(AST_This,return_null)})(function(node,func){node.DEFMETHOD("drop_side_effect_free",func)});OPT(AST_SimpleStatement,function(self,compressor){if(compressor.option("side_effects")){var body=self.body;var node=body.drop_side_effect_free(compressor,true);if(!node){compressor.warn("Dropping side-effect-free statement [{file}:{line},{col}]",self.start);return make_node(AST_EmptyStatement,self)}if(node!==body){return make_node(AST_SimpleStatement,self,{body:node})}}return self});OPT(AST_While,function(self,compressor){return compressor.option("loops")?make_node(AST_For,self,self).optimize(compressor):self});function has_break_or_continue(loop,parent){var found=false;var tw=new TreeWalker(function(node){if(found||node instanceof AST_Scope)return true;if(node instanceof AST_LoopControl&&tw.loopcontrol_target(node)===loop){return found=true}});if(parent instanceof AST_LabeledStatement)tw.push(parent);tw.push(loop);loop.body.walk(tw);return found}OPT(AST_Do,function(self,compressor){if(!compressor.option("loops"))return self;var cond=self.condition.is_truthy()||self.condition.tail_node().evaluate(compressor);if(!(cond instanceof AST_Node)){if(cond)return make_node(AST_For,self,{body:make_node(AST_BlockStatement,self.body,{body:[self.body,make_node(AST_SimpleStatement,self.condition,{body:self.condition})]})}).optimize(compressor);if(!has_break_or_continue(self,compressor.parent())){return make_node(AST_BlockStatement,self.body,{body:[self.body,make_node(AST_SimpleStatement,self.condition,{body:self.condition})]}).optimize(compressor)}}if(self.body instanceof AST_SimpleStatement)return make_node(AST_For,self,{condition:make_sequence(self.condition,[self.body.body,self.condition]),body:make_node(AST_EmptyStatement,self)}).optimize(compressor);return self});function if_break_in_loop(self,compressor){var first=self.body instanceof AST_BlockStatement?self.body.body[0]:self.body;if(compressor.option("dead_code")&&is_break(first)){var body=[];if(self.init instanceof AST_Statement){body.push(self.init)}else if(self.init){body.push(make_node(AST_SimpleStatement,self.init,{body:self.init}))}if(self.condition){body.push(make_node(AST_SimpleStatement,self.condition,{body:self.condition}))}extract_declarations_from_unreachable_code(compressor,self.body,body);return make_node(AST_BlockStatement,self,{body:body})}if(first instanceof AST_If){if(is_break(first.body)){if(self.condition){self.condition=make_node(AST_Binary,self.condition,{left:self.condition,operator:"&&",right:first.condition.negate(compressor)})}else{self.condition=first.condition.negate(compressor)}drop_it(first.alternative)}else if(is_break(first.alternative)){if(self.condition){self.condition=make_node(AST_Binary,self.condition,{left:self.condition,operator:"&&",right:first.condition})}else{self.condition=first.condition}drop_it(first.body)}}return self;function is_break(node){return node instanceof AST_Break&&compressor.loopcontrol_target(node)===compressor.self()}function drop_it(rest){rest=as_statement_array(rest);if(self.body instanceof AST_BlockStatement){self.body=self.body.clone();self.body.body=rest.concat(self.body.body.slice(1));self.body=self.body.transform(compressor)}else{self.body=make_node(AST_BlockStatement,self.body,{body:rest}).transform(compressor)}self=if_break_in_loop(self,compressor)}}OPT(AST_For,function(self,compressor){if(!compressor.option("loops"))return self;if(compressor.option("side_effects")&&self.init){self.init=self.init.drop_side_effect_free(compressor)}if(self.condition){var cond=self.condition.evaluate(compressor);if(!(cond instanceof AST_Node)){if(cond)self.condition=null;else if(!compressor.option("dead_code")){var orig=self.condition;self.condition=make_node_from_constant(cond,self.condition);self.condition=best_of_expression(self.condition.transform(compressor),orig)}}if(cond instanceof AST_Node){cond=self.condition.is_truthy()||self.condition.tail_node().evaluate(compressor)}if(!cond){if(compressor.option("dead_code")){var body=[];extract_declarations_from_unreachable_code(compressor,self.body,body);if(self.init instanceof AST_Statement){body.push(self.init)}else if(self.init){body.push(make_node(AST_SimpleStatement,self.init,{body:self.init}))}body.push(make_node(AST_SimpleStatement,self.condition,{body:self.condition}));return make_node(AST_BlockStatement,self,{body:body}).optimize(compressor)}}else if(self.condition&&!(cond instanceof AST_Node)){self.body=make_node(AST_BlockStatement,self.body,{body:[make_node(AST_SimpleStatement,self.condition,{body:self.condition}),self.body]});self.condition=null}}return if_break_in_loop(self,compressor)});OPT(AST_If,function(self,compressor){if(is_empty(self.alternative))self.alternative=null;if(!compressor.option("conditionals"))return self;var cond=self.condition.evaluate(compressor);if(!compressor.option("dead_code")&&!(cond instanceof AST_Node)){var orig=self.condition;self.condition=make_node_from_constant(cond,orig);self.condition=best_of_expression(self.condition.transform(compressor),orig)}if(compressor.option("dead_code")){if(cond instanceof AST_Node){cond=self.condition.is_truthy()||self.condition.tail_node().evaluate(compressor)}if(!cond){compressor.warn("Condition always false [{file}:{line},{col}]",self.condition.start);var body=[];extract_declarations_from_unreachable_code(compressor,self.body,body);body.push(make_node(AST_SimpleStatement,self.condition,{body:self.condition}));if(self.alternative)body.push(self.alternative);return make_node(AST_BlockStatement,self,{body:body}).optimize(compressor)}else if(!(cond instanceof AST_Node)){compressor.warn("Condition always true [{file}:{line},{col}]",self.condition.start);var body=[];if(self.alternative){extract_declarations_from_unreachable_code(compressor,self.alternative,body)}body.push(make_node(AST_SimpleStatement,self.condition,{body:self.condition}));body.push(self.body);return make_node(AST_BlockStatement,self,{body:body}).optimize(compressor)}}var negated=self.condition.negate(compressor);var self_condition_length=self.condition.print_to_string().length;var negated_length=negated.print_to_string().length;var negated_is_best=negated_length<self_condition_length;if(self.alternative&&negated_is_best){negated_is_best=false;self.condition=negated;var tmp=self.body;self.body=self.alternative||make_node(AST_EmptyStatement,self);self.alternative=tmp}if(is_empty(self.body)&&is_empty(self.alternative)){return make_node(AST_SimpleStatement,self.condition,{body:self.condition.clone()}).optimize(compressor)}if(self.body instanceof AST_SimpleStatement&&self.alternative instanceof AST_SimpleStatement){return make_node(AST_SimpleStatement,self,{body:make_node(AST_Conditional,self,{condition:self.condition,consequent:self.body.body,alternative:self.alternative.body})}).optimize(compressor)}if(is_empty(self.alternative)&&self.body instanceof AST_SimpleStatement){if(self_condition_length===negated_length&&!negated_is_best&&self.condition instanceof AST_Binary&&self.condition.operator=="||"){negated_is_best=true}if(negated_is_best)return make_node(AST_SimpleStatement,self,{body:make_node(AST_Binary,self,{operator:"||",left:negated,right:self.body.body})}).optimize(compressor);return make_node(AST_SimpleStatement,self,{body:make_node(AST_Binary,self,{operator:"&&",left:self.condition,right:self.body.body})}).optimize(compressor)}if(self.body instanceof AST_EmptyStatement&&self.alternative instanceof AST_SimpleStatement){return make_node(AST_SimpleStatement,self,{body:make_node(AST_Binary,self,{operator:"||",left:self.condition,right:self.alternative.body})}).optimize(compressor)}if(self.body instanceof AST_Exit&&self.alternative instanceof AST_Exit&&self.body.TYPE==self.alternative.TYPE){return make_node(self.body.CTOR,self,{value:make_node(AST_Conditional,self,{condition:self.condition,consequent:self.body.value||make_node(AST_Undefined,self.body),alternative:self.alternative.value||make_node(AST_Undefined,self.alternative)}).transform(compressor)}).optimize(compressor)}if(self.body instanceof AST_If&&!self.body.alternative&&!self.alternative){self=make_node(AST_If,self,{condition:make_node(AST_Binary,self.condition,{operator:"&&",left:self.condition,right:self.body.condition}),body:self.body.body,alternative:null})}if(aborts(self.body)){if(self.alternative){var alt=self.alternative;self.alternative=null;return make_node(AST_BlockStatement,self,{body:[self,alt]}).optimize(compressor)}}if(aborts(self.alternative)){var body=self.body;self.body=self.alternative;self.condition=negated_is_best?negated:self.condition.negate(compressor);self.alternative=null;return make_node(AST_BlockStatement,self,{body:[self,body]}).optimize(compressor)}return self});OPT(AST_Switch,function(self,compressor){if(!compressor.option("switches"))return self;var branch;var value=self.expression.evaluate(compressor);if(!(value instanceof AST_Node)){var orig=self.expression;self.expression=make_node_from_constant(value,orig);self.expression=best_of_expression(self.expression.transform(compressor),orig)}if(!compressor.option("dead_code"))return self;if(value instanceof AST_Node){value=self.expression.tail_node().evaluate(compressor)}var decl=[];var body=[];var default_branch;var exact_match;for(var i=0,len=self.body.length;i<len&&!exact_match;i++){branch=self.body[i];if(branch instanceof AST_Default){if(!default_branch){default_branch=branch}else{eliminate_branch(branch,body[body.length-1])}}else if(!(value instanceof AST_Node)){var exp=branch.expression.evaluate(compressor);if(!(exp instanceof AST_Node)&&exp!==value){eliminate_branch(branch,body[body.length-1]);continue}if(exp instanceof AST_Node)exp=branch.expression.tail_node().evaluate(compressor);if(exp===value){exact_match=branch;if(default_branch){var default_index=body.indexOf(default_branch);body.splice(default_index,1);eliminate_branch(default_branch,body[default_index-1]);default_branch=null}}}if(aborts(branch)){var prev=body[body.length-1];if(aborts(prev)&&prev.body.length==branch.body.length&&make_node(AST_BlockStatement,prev,prev).equivalent_to(make_node(AST_BlockStatement,branch,branch))){prev.body=[]}}body.push(branch)}while(i<len)eliminate_branch(self.body[i++],body[body.length-1]);if(body.length>0){body[0].body=decl.concat(body[0].body)}self.body=body;while(branch=body[body.length-1]){var stat=branch.body[branch.body.length-1];if(stat instanceof AST_Break&&compressor.loopcontrol_target(stat)===self)branch.body.pop();if(branch.body.length||branch instanceof AST_Case&&(default_branch||branch.expression.has_side_effects(compressor)))break;if(body.pop()===default_branch)default_branch=null}if(body.length==0){return make_node(AST_BlockStatement,self,{body:decl.concat(make_node(AST_SimpleStatement,self.expression,{body:self.expression}))}).optimize(compressor)}if(body.length==1&&(body[0]===exact_match||body[0]===default_branch)){var has_break=false;var tw=new TreeWalker(function(node){if(has_break||node instanceof AST_Lambda||node instanceof AST_SimpleStatement)return true;if(node instanceof AST_Break&&tw.loopcontrol_target(node)===self)has_break=true});self.walk(tw);if(!has_break){var statements=body[0].body.slice();var exp=body[0].expression;if(exp)statements.unshift(make_node(AST_SimpleStatement,exp,{body:exp}));statements.unshift(make_node(AST_SimpleStatement,self.expression,{body:self.expression}));return make_node(AST_BlockStatement,self,{body:statements}).optimize(compressor)}}return self;function eliminate_branch(branch,prev){if(prev&&!aborts(prev)){prev.body=prev.body.concat(branch.body)}else{extract_declarations_from_unreachable_code(compressor,branch,decl)}}});OPT(AST_Try,function(self,compressor){tighten_body(self.body,compressor);if(self.bcatch&&self.bfinally&&all(self.bfinally.body,is_empty))self.bfinally=null;if(compressor.option("dead_code")&&all(self.body,is_empty)){var body=[];if(self.bcatch){extract_declarations_from_unreachable_code(compressor,self.bcatch,body);body.forEach(function(stat){if(!(stat instanceof AST_Definitions))return;stat.definitions.forEach(function(var_def){var def=var_def.name.definition().redefined();if(!def)return;var_def.name=var_def.name.clone();var_def.name.thedef=def})})}if(self.bfinally)body=body.concat(self.bfinally.body);return make_node(AST_BlockStatement,self,{body:body}).optimize(compressor)}return self});AST_Definitions.DEFMETHOD("remove_initializers",function(){this.definitions.forEach(function(def){def.value=null})});AST_Definitions.DEFMETHOD("to_assignments",function(compressor){var reduce_vars=compressor.option("reduce_vars");var assignments=this.definitions.reduce(function(a,def){if(def.value){var name=make_node(AST_SymbolRef,def.name,def.name);a.push(make_node(AST_Assign,def,{operator:"=",left:name,right:def.value}));if(reduce_vars)name.definition().fixed=false}def=def.name.definition();def.eliminated++;def.replaced--;return a},[]);if(assignments.length==0)return null;return make_sequence(this,assignments)});OPT(AST_Definitions,function(self,compressor){if(self.definitions.length==0)return make_node(AST_EmptyStatement,self);return self});AST_Call.DEFMETHOD("lift_sequences",function(compressor){if(!compressor.option("sequences"))return this;var exp=this.expression;if(!(exp instanceof AST_Sequence))return this;var tail=exp.tail_node();if(needs_unbinding(compressor,tail)&&!(this instanceof AST_New))return this;var expressions=exp.expressions.slice(0,-1);var node=this.clone();node.expression=tail;expressions.push(node);return make_sequence(this,expressions).optimize(compressor)});OPT(AST_Call,function(self,compressor){var seq=self.lift_sequences(compressor);if(seq!==self){return seq}var exp=self.expression;var fn=exp;if(compressor.option("reduce_vars")&&fn instanceof AST_SymbolRef){fn=fn.fixed_value()}var is_func=fn instanceof AST_Lambda;if(compressor.option("unused")&&is_func&&!fn.uses_arguments&&!fn.pinned()){var pos=0,last=0;for(var i=0,len=self.args.length;i<len;i++){var trim=i>=fn.argnames.length;if(trim||fn.argnames[i].__unused){var node=self.args[i].drop_side_effect_free(compressor);if(node){self.args[pos++]=node}else if(!trim){self.args[pos++]=make_node(AST_Number,self.args[i],{value:0});continue}}else{self.args[pos++]=self.args[i]}last=pos}self.args.length=last}if(compressor.option("unsafe")){if(is_undeclared_ref(exp))switch(exp.name){case"Array":if(self.args.length!=1){return make_node(AST_Array,self,{elements:self.args}).optimize(compressor)}break;case"Object":if(self.args.length==0){return make_node(AST_Object,self,{properties:[]})}break;case"String":if(self.args.length==0)return make_node(AST_String,self,{value:""});if(self.args.length<=1)return make_node(AST_Binary,self,{left:self.args[0],operator:"+",right:make_node(AST_String,self,{value:""})}).optimize(compressor);break;case"Number":if(self.args.length==0)return make_node(AST_Number,self,{value:0});if(self.args.length==1)return make_node(AST_UnaryPrefix,self,{expression:self.args[0],operator:"+"}).optimize(compressor);case"Boolean":if(self.args.length==0)return make_node(AST_False,self);if(self.args.length==1)return make_node(AST_UnaryPrefix,self,{expression:make_node(AST_UnaryPrefix,self,{expression:self.args[0],operator:"!"}),operator:"!"}).optimize(compressor);break;case"RegExp":var params=[];if(all(self.args,function(arg){var value=arg.evaluate(compressor);params.unshift(value);return arg!==value})){try{return best_of(compressor,self,make_node(AST_RegExp,self,{value:RegExp.apply(RegExp,params)}))}catch(ex){compressor.warn("Error converting {expr} [{file}:{line},{col}]",{expr:self.print_to_string(),file:self.start.file,line:self.start.line,col:self.start.col})}}break}else if(exp instanceof AST_Dot)switch(exp.property){case"toString":if(self.args.length==0&&!exp.expression.may_throw_on_access(compressor)){return make_node(AST_Binary,self,{left:make_node(AST_String,self,{value:""}),operator:"+",right:exp.expression}).optimize(compressor)}break;case"join":if(exp.expression instanceof AST_Array)EXIT:{var separator;if(self.args.length>0){separator=self.args[0].evaluate(compressor);if(separator===self.args[0])break EXIT}var elements=[];var consts=[];exp.expression.elements.forEach(function(el){var value=el.evaluate(compressor);if(value!==el){consts.push(value)}else{if(consts.length>0){elements.push(make_node(AST_String,self,{value:consts.join(separator)}));consts.length=0}elements.push(el)}});if(consts.length>0){elements.push(make_node(AST_String,self,{value:consts.join(separator)}))}if(elements.length==0)return make_node(AST_String,self,{value:""});if(elements.length==1){if(elements[0].is_string(compressor)){return elements[0]}return make_node(AST_Binary,elements[0],{operator:"+",left:make_node(AST_String,self,{value:""}),right:elements[0]})}if(separator==""){var first;if(elements[0].is_string(compressor)||elements[1].is_string(compressor)){first=elements.shift()}else{first=make_node(AST_String,self,{value:""})}return elements.reduce(function(prev,el){return make_node(AST_Binary,el,{operator:"+",left:prev,right:el})},first).optimize(compressor)}var node=self.clone();node.expression=node.expression.clone();node.expression.expression=node.expression.expression.clone();node.expression.expression.elements=elements;return best_of(compressor,self,node)}break;case"charAt":if(exp.expression.is_string(compressor)){var arg=self.args[0];var index=arg?arg.evaluate(compressor):0;if(index!==arg){return make_node(AST_Sub,exp,{expression:exp.expression,property:make_node_from_constant(index|0,arg||exp)}).optimize(compressor)}}break;case"apply":if(self.args.length==2&&self.args[1]instanceof AST_Array){var args=self.args[1].elements.slice();args.unshift(self.args[0]);return make_node(AST_Call,self,{expression:make_node(AST_Dot,exp,{expression:exp.expression,property:"call"}),args:args}).optimize(compressor)}break;case"call":var func=exp.expression;if(func instanceof AST_SymbolRef){func=func.fixed_value()}if(func instanceof AST_Lambda&&!func.contains_this()){return(self.args.length?make_sequence(this,[self.args[0],make_node(AST_Call,self,{expression:exp.expression,args:self.args.slice(1)})]):make_node(AST_Call,self,{expression:exp.expression,args:[]})).optimize(compressor)}break}}if(compressor.option("unsafe_Function")&&is_undeclared_ref(exp)&&exp.name=="Function"){if(self.args.length==0)return make_node(AST_Function,self,{argnames:[],body:[]});if(all(self.args,function(x){return x instanceof AST_String})){try{var code="n(function("+self.args.slice(0,-1).map(function(arg){return arg.value}).join(",")+"){"+self.args[self.args.length-1].value+"})";var ast=parse(code);var mangle={ie8:compressor.option("ie8")};ast.figure_out_scope(mangle);var comp=new Compressor(compressor.options);ast=ast.transform(comp);ast.figure_out_scope(mangle);ast.compute_char_frequency(mangle);ast.mangle_names(mangle);var fun;ast.walk(new TreeWalker(function(node){if(fun)return true;if(node instanceof AST_Lambda){fun=node;return true}}));var code=OutputStream();AST_BlockStatement.prototype._codegen.call(fun,fun,code);self.args=[make_node(AST_String,self,{value:fun.argnames.map(function(arg){return arg.print_to_string()}).join(",")}),make_node(AST_String,self.args[self.args.length-1],{value:code.get().replace(/^\{|\}$/g,"")})];return self}catch(ex){if(ex instanceof JS_Parse_Error){compressor.warn("Error parsing code passed to new Function [{file}:{line},{col}]",self.args[self.args.length-1].start);compressor.warn(ex.toString())}else{throw ex}}}}var stat=is_func&&fn.body[0];var can_inline=compressor.option("inline")&&!self.is_expr_pure(compressor);if(can_inline&&stat instanceof AST_Return){var value=stat.value;if(!value||value.is_constant_expression()){if(value){value=value.clone(true)}else{value=make_node(AST_Undefined,self)}var args=self.args.concat(value);return make_sequence(self,args).optimize(compressor)}}if(is_func){var def,value,scope,in_loop,level=-1;if(can_inline&&!fn.uses_arguments&&!fn.pinned()&&!(fn.name&&fn instanceof AST_Function)&&(value=can_flatten_body(stat))&&(exp===fn||compressor.option("unused")&&(def=exp.definition()).references.length==1&&!recursive_ref(compressor,def)&&fn.is_constant_expression(exp.scope))&&!self.pure&&!fn.contains_this()&&can_inject_symbols()){fn._squeezed=true;return make_sequence(self,flatten_fn()).optimize(compressor)}if(compressor.option("side_effects")&&all(fn.body,is_empty)){var args=self.args.concat(make_node(AST_Undefined,self));return make_sequence(self,args).optimize(compressor)}}if(compressor.option("drop_console")){if(exp instanceof AST_PropAccess){var name=exp.expression;while(name.expression){name=name.expression}if(is_undeclared_ref(name)&&name.name=="console"){return make_node(AST_Undefined,self).optimize(compressor)}}}if(compressor.option("negate_iife")&&compressor.parent()instanceof AST_SimpleStatement&&is_iife_call(self)){return self.negate(compressor,true)}var ev=self.evaluate(compressor);if(ev!==self){ev=make_node_from_constant(ev,self).optimize(compressor);return best_of(compressor,ev,self)}return self;function return_value(stat){if(!stat)return make_node(AST_Undefined,self);if(stat instanceof AST_Return){if(!stat.value)return make_node(AST_Undefined,self);return stat.value.clone(true)}if(stat instanceof AST_SimpleStatement){return make_node(AST_UnaryPrefix,stat,{operator:"void",expression:stat.body.clone(true)})}}function can_flatten_body(stat){var len=fn.body.length;if(compressor.option("inline")<3){return len==1&&return_value(stat)}stat=null;for(var i=0;i<len;i++){var line=fn.body[i];if(line instanceof AST_Var){if(stat&&!all(line.definitions,function(var_def){return!var_def.value})){return false}}else if(line instanceof AST_EmptyStatement){continue}else if(stat){return false}else{stat=line}}return return_value(stat)}function can_inject_args(catches,safe_to_inject){for(var i=0,len=fn.argnames.length;i<len;i++){var arg=fn.argnames[i];if(arg.__unused)continue;if(!safe_to_inject||catches[arg.name]||identifier_atom[arg.name]||scope.var_names()[arg.name]){return false}if(in_loop)in_loop.push(arg.definition())}return true}function can_inject_vars(catches,safe_to_inject){var len=fn.body.length;for(var i=0;i<len;i++){var stat=fn.body[i];if(!(stat instanceof AST_Var))continue;if(!safe_to_inject)return false;for(var j=stat.definitions.length;--j>=0;){var name=stat.definitions[j].name;if(catches[name.name]||identifier_atom[name.name]||scope.var_names()[name.name]){return false}if(in_loop)in_loop.push(name.definition())}}return true}function can_inject_symbols(){var catches=Object.create(null);do{scope=compressor.parent(++level);if(scope instanceof AST_Catch){catches[scope.argname.name]=true}else if(scope instanceof AST_IterationStatement){in_loop=[]}else if(scope instanceof AST_SymbolRef){if(scope.fixed_value()instanceof AST_Scope)return false}}while(!(scope instanceof AST_Scope));var safe_to_inject=!(scope instanceof AST_Toplevel)||compressor.toplevel.vars;var inline=compressor.option("inline");if(!can_inject_vars(catches,inline>=3&&safe_to_inject))return false;if(!can_inject_args(catches,inline>=2&&safe_to_inject))return false;return!in_loop||in_loop.length==0||!is_reachable(fn,in_loop)}function append_var(decls,expressions,name,value){var def=name.definition();scope.variables.set(name.name,def);scope.enclosed.push(def);if(!scope.var_names()[name.name]){scope.var_names()[name.name]=true;decls.push(make_node(AST_VarDef,name,{name:name,value:null}))}var sym=make_node(AST_SymbolRef,name,name);def.references.push(sym);if(value)expressions.push(make_node(AST_Assign,self,{operator:"=",left:sym,right:value}))}function flatten_args(decls,expressions){var len=fn.argnames.length;for(var i=self.args.length;--i>=len;){expressions.push(self.args[i])}for(i=len;--i>=0;){var name=fn.argnames[i];var value=self.args[i];if(name.__unused||scope.var_names()[name.name]){if(value)expressions.push(value)}else{var symbol=make_node(AST_SymbolVar,name,name);name.definition().orig.push(symbol);if(!value&&in_loop)value=make_node(AST_Undefined,self);append_var(decls,expressions,symbol,value)}}decls.reverse();expressions.reverse()}function flatten_vars(decls,expressions){var pos=expressions.length;for(var i=0,lines=fn.body.length;i<lines;i++){var stat=fn.body[i];if(!(stat instanceof AST_Var))continue;for(var j=0,defs=stat.definitions.length;j<defs;j++){var var_def=stat.definitions[j];var name=var_def.name;var redef=name.definition().redefined();if(redef){name=name.clone();name.thedef=redef}append_var(decls,expressions,name,var_def.value);if(in_loop&&all(fn.argnames,function(argname){return argname.name!=name.name})){var def=fn.variables.get(name.name);var sym=make_node(AST_SymbolRef,name,name);def.references.push(sym);expressions.splice(pos++,0,make_node(AST_Assign,var_def,{operator:"=",left:sym,right:make_node(AST_Undefined,name)}))}}}}function flatten_fn(){var decls=[];var expressions=[];flatten_args(decls,expressions);flatten_vars(decls,expressions);expressions.push(value);if(decls.length){i=scope.body.indexOf(compressor.parent(level-1))+1;scope.body.splice(i,0,make_node(AST_Var,fn,{definitions:decls}))}return expressions}});OPT(AST_New,function(self,compressor){var seq=self.lift_sequences(compressor);if(seq!==self){return seq}if(compressor.option("unsafe")){var exp=self.expression;if(is_undeclared_ref(exp)){switch(exp.name){case"Object":case"RegExp":case"Function":case"Error":case"Array":return make_node(AST_Call,self,self).transform(compressor)}}}return self});OPT(AST_Sequence,function(self,compressor){if(!compressor.option("side_effects"))return self;var expressions=[];filter_for_side_effects();var end=expressions.length-1;trim_right_for_undefined();if(end==0){self=maintain_this_binding(compressor,compressor.parent(),compressor.self(),expressions[0]);if(!(self instanceof AST_Sequence))self=self.optimize(compressor);return self}self.expressions=expressions;return self;function filter_for_side_effects(){var first=first_in_statement(compressor);var last=self.expressions.length-1;self.expressions.forEach(function(expr,index){if(index<last)expr=expr.drop_side_effect_free(compressor,first);if(expr){merge_sequence(expressions,expr);first=false}})}function trim_right_for_undefined(){while(end>0&&is_undefined(expressions[end],compressor))end--;if(end<expressions.length-1){expressions[end]=make_node(AST_UnaryPrefix,self,{operator:"void",expression:expressions[end]});expressions.length=end+1}}});AST_Unary.DEFMETHOD("lift_sequences",function(compressor){if(compressor.option("sequences")&&this.expression instanceof AST_Sequence){var x=this.expression.expressions.slice();var e=this.clone();e.expression=x.pop();x.push(e);return make_sequence(this,x).optimize(compressor)}return this});OPT(AST_UnaryPostfix,function(self,compressor){return self.lift_sequences(compressor)});OPT(AST_UnaryPrefix,function(self,compressor){var e=self.expression;if(self.operator=="delete"&&!(e instanceof AST_SymbolRef||e instanceof AST_PropAccess||is_identifier_atom(e))){if(e instanceof AST_Sequence){e=e.expressions.slice();e.push(make_node(AST_True,self));return make_sequence(self,e).optimize(compressor)}return make_sequence(self,[e,make_node(AST_True,self)]).optimize(compressor)}var seq=self.lift_sequences(compressor);if(seq!==self){return seq}if(compressor.option("side_effects")&&self.operator=="void"){e=e.drop_side_effect_free(compressor);if(e){self.expression=e;return self}else{return make_node(AST_Undefined,self).optimize(compressor)}}if(compressor.option("booleans")){if(self.operator=="!"&&e.is_truthy()){return make_sequence(self,[e,make_node(AST_False,self)]).optimize(compressor)}else if(compressor.in_boolean_context())switch(self.operator){case"!":if(e instanceof AST_UnaryPrefix&&e.operator=="!"){return e.expression}if(e instanceof AST_Binary){self=best_of(compressor,self,e.negate(compressor,first_in_statement(compressor)))}break;case"typeof":compressor.warn("Boolean expression always true [{file}:{line},{col}]",self.start);return(e instanceof AST_SymbolRef?make_node(AST_True,self):make_sequence(self,[e,make_node(AST_True,self)])).optimize(compressor)}}if(self.operator=="-"&&e instanceof AST_Infinity){e=e.transform(compressor)}if(e instanceof AST_Binary&&(self.operator=="+"||self.operator=="-")&&(e.operator=="*"||e.operator=="/"||e.operator=="%")){return make_node(AST_Binary,self,{operator:e.operator,left:make_node(AST_UnaryPrefix,e.left,{operator:self.operator,expression:e.left}),right:e.right})}if(self.operator!="-"||!(e instanceof AST_Number||e instanceof AST_Infinity)){var ev=self.evaluate(compressor);if(ev!==self){ev=make_node_from_constant(ev,self).optimize(compressor);return best_of(compressor,ev,self)}}return self});AST_Binary.DEFMETHOD("lift_sequences",function(compressor){if(compressor.option("sequences")){if(this.left instanceof AST_Sequence){var x=this.left.expressions.slice();var e=this.clone();e.left=x.pop();x.push(e);return make_sequence(this,x).optimize(compressor)}if(this.right instanceof AST_Sequence&&!this.left.has_side_effects(compressor)){var assign=this.operator=="="&&this.left instanceof AST_SymbolRef;var x=this.right.expressions;var last=x.length-1;for(var i=0;i<last;i++){if(!assign&&x[i].has_side_effects(compressor))break}if(i==last){x=x.slice();var e=this.clone();e.right=x.pop();x.push(e);return make_sequence(this,x).optimize(compressor)}else if(i>0){var e=this.clone();e.right=make_sequence(this.right,x.slice(i));x=x.slice(0,i);x.push(e);return make_sequence(this,x).optimize(compressor)}}}return this});var commutativeOperators=makePredicate("== === != !== * & | ^");function is_object(node){return node instanceof AST_Array||node instanceof AST_Lambda||node instanceof AST_Object}OPT(AST_Binary,function(self,compressor){function reversible(){return self.left.is_constant()||self.right.is_constant()||!self.left.has_side_effects(compressor)&&!self.right.has_side_effects(compressor)}function reverse(op){if(reversible()){if(op)self.operator=op;var tmp=self.left;self.left=self.right;self.right=tmp}}if(commutativeOperators[self.operator]){if(self.right.is_constant()&&!self.left.is_constant()){if(!(self.left instanceof AST_Binary&&PRECEDENCE[self.left.operator]>=PRECEDENCE[self.operator])){reverse()}}}self=self.lift_sequences(compressor);if(compressor.option("comparisons"))switch(self.operator){case"===":case"!==":var is_strict_comparison=true;if(self.left.is_string(compressor)&&self.right.is_string(compressor)||self.left.is_number(compressor)&&self.right.is_number(compressor)||self.left.is_boolean(compressor)&&self.right.is_boolean(compressor)||self.left.equivalent_to(self.right)){self.operator=self.operator.substr(0,2)}case"==":case"!=":if(!is_strict_comparison&&is_undefined(self.left,compressor)){self.left=make_node(AST_Null,self.left)}else if(compressor.option("typeofs")&&self.left instanceof AST_String&&self.left.value=="undefined"&&self.right instanceof AST_UnaryPrefix&&self.right.operator=="typeof"){var expr=self.right.expression;if(expr instanceof AST_SymbolRef?expr.is_declared(compressor):!(expr instanceof AST_PropAccess&&compressor.option("ie8"))){self.right=expr;self.left=make_node(AST_Undefined,self.left).optimize(compressor);if(self.operator.length==2)self.operator+="="}}else if(self.left instanceof AST_SymbolRef&&self.right instanceof AST_SymbolRef&&self.left.definition()===self.right.definition()&&is_object(self.left.fixed_value())){return make_node(self.operator[0]=="="?AST_True:AST_False,self)}break;case"&&":case"||":var lhs=self.left;if(lhs.operator==self.operator){lhs=lhs.right}if(lhs instanceof AST_Binary&&lhs.operator==(self.operator=="&&"?"!==":"===")&&self.right instanceof AST_Binary&&lhs.operator==self.right.operator&&(is_undefined(lhs.left,compressor)&&self.right.left instanceof AST_Null||lhs.left instanceof AST_Null&&is_undefined(self.right.left,compressor))&&!lhs.right.has_side_effects(compressor)&&lhs.right.equivalent_to(self.right.right)){var combined=make_node(AST_Binary,self,{operator:lhs.operator.slice(0,-1),left:make_node(AST_Null,self),right:lhs.right});if(lhs!==self.left){combined=make_node(AST_Binary,self,{operator:self.operator,left:self.left.left,right:combined})}return combined}break}if(compressor.option("booleans")&&self.operator=="+"&&compressor.in_boolean_context()){var ll=self.left.evaluate(compressor);var rr=self.right.evaluate(compressor);if(ll&&typeof ll=="string"){compressor.warn("+ in boolean context always true [{file}:{line},{col}]",self.start);return make_sequence(self,[self.right,make_node(AST_True,self)]).optimize(compressor)}if(rr&&typeof rr=="string"){compressor.warn("+ in boolean context always true [{file}:{line},{col}]",self.start);return make_sequence(self,[self.left,make_node(AST_True,self)]).optimize(compressor)}}if(compressor.option("comparisons")&&self.is_boolean(compressor)){if(!(compressor.parent()instanceof AST_Binary)||compressor.parent()instanceof AST_Assign){var negated=make_node(AST_UnaryPrefix,self,{operator:"!",expression:self.negate(compressor,first_in_statement(compressor))});self=best_of(compressor,self,negated)}switch(self.operator){case">":reverse("<");break;case">=":reverse("<=");break}}if(self.operator=="+"){if(self.right instanceof AST_String&&self.right.getValue()==""&&self.left.is_string(compressor)){return self.left}if(self.left instanceof AST_String&&self.left.getValue()==""&&self.right.is_string(compressor)){return self.right}if(self.left instanceof AST_Binary&&self.left.operator=="+"&&self.left.left instanceof AST_String&&self.left.left.getValue()==""&&self.right.is_string(compressor)){self.left=self.left.right;return self.transform(compressor)}}if(compressor.option("evaluate")){switch(self.operator){case"&&":var ll=fuzzy_eval(self.left);if(!ll){compressor.warn("Condition left of && always false [{file}:{line},{col}]",self.start);return maintain_this_binding(compressor,compressor.parent(),compressor.self(),self.left).optimize(compressor)}else if(!(ll instanceof AST_Node)){compressor.warn("Condition left of && always true [{file}:{line},{col}]",self.start);return make_sequence(self,[self.left,self.right]).optimize(compressor)}var rr=self.right.evaluate(compressor);if(!rr){if(compressor.option("booleans")&&compressor.in_boolean_context()){compressor.warn("Boolean && always false [{file}:{line},{col}]",self.start);return make_sequence(self,[self.left,make_node(AST_False,self)]).optimize(compressor)}else self.falsy=true}else if(!(rr instanceof AST_Node)){var parent=compressor.parent();if(parent.operator=="&&"&&parent.left===compressor.self()||compressor.option("booleans")&&compressor.in_boolean_context()){compressor.warn("Dropping side-effect-free && [{file}:{line},{col}]",self.start);return self.left.optimize(compressor)}}if(self.left.operator=="||"){var lr=self.left.right.evaluate(compressor);if(!lr)return make_node(AST_Conditional,self,{condition:self.left.left,consequent:self.right,alternative:self.left.right}).optimize(compressor)}break;case"||":var ll=fuzzy_eval(self.left);if(!ll){compressor.warn("Condition left of || always false [{file}:{line},{col}]",self.start);return make_sequence(self,[self.left,self.right]).optimize(compressor)}else if(!(ll instanceof AST_Node)){compressor.warn("Condition left of || always true [{file}:{line},{col}]",self.start);return maintain_this_binding(compressor,compressor.parent(),compressor.self(),self.left).optimize(compressor)}var rr=self.right.evaluate(compressor);if(!rr){var parent=compressor.parent();if(parent.operator=="||"&&parent.left===compressor.self()||compressor.option("booleans")&&compressor.in_boolean_context()){compressor.warn("Dropping side-effect-free || [{file}:{line},{col}]",self.start);return self.left.optimize(compressor)}}else if(!(rr instanceof AST_Node)){if(compressor.option("booleans")&&compressor.in_boolean_context()){compressor.warn("Boolean || always true [{file}:{line},{col}]",self.start);return make_sequence(self,[self.left,make_node(AST_True,self)]).optimize(compressor)}else self.truthy=true}if(self.left.operator=="&&"){var lr=self.left.right.evaluate(compressor);if(lr&&!(lr instanceof AST_Node))return make_node(AST_Conditional,self,{condition:self.left.left,consequent:self.left.right,alternative:self.right}).optimize(compressor)}break}var associative=true;switch(self.operator){case"+":if(self.left instanceof AST_Constant&&self.right instanceof AST_Binary&&self.right.operator=="+"&&self.right.left instanceof AST_Constant&&self.right.is_string(compressor)){self=make_node(AST_Binary,self,{operator:"+",left:make_node(AST_String,self.left,{value:""+self.left.getValue()+self.right.left.getValue(),start:self.left.start,end:self.right.left.end}),right:self.right.right})}if(self.right instanceof AST_Constant&&self.left instanceof AST_Binary&&self.left.operator=="+"&&self.left.right instanceof AST_Constant&&self.left.is_string(compressor)){self=make_node(AST_Binary,self,{operator:"+",left:self.left.left,right:make_node(AST_String,self.right,{value:""+self.left.right.getValue()+self.right.getValue(),start:self.left.right.start,end:self.right.end})})}if(self.left instanceof AST_Binary&&self.left.operator=="+"&&self.left.is_string(compressor)&&self.left.right instanceof AST_Constant&&self.right instanceof AST_Binary&&self.right.operator=="+"&&self.right.left instanceof AST_Constant&&self.right.is_string(compressor)){self=make_node(AST_Binary,self,{operator:"+",left:make_node(AST_Binary,self.left,{operator:"+",left:self.left.left,right:make_node(AST_String,self.left.right,{value:""+self.left.right.getValue()+self.right.left.getValue(),start:self.left.right.start,end:self.right.left.end})}),right:self.right.right})}if(self.right instanceof AST_UnaryPrefix&&self.right.operator=="-"&&self.left.is_number(compressor)){self=make_node(AST_Binary,self,{operator:"-",left:self.left,right:self.right.expression});break}if(self.left instanceof AST_UnaryPrefix&&self.left.operator=="-"&&reversible()&&self.right.is_number(compressor)){self=make_node(AST_Binary,self,{operator:"-",left:self.right,right:self.left.expression});break}case"*":associative=compressor.option("unsafe_math");case"&":case"|":case"^":if(self.left.is_number(compressor)&&self.right.is_number(compressor)&&reversible()&&!(self.left instanceof AST_Binary&&self.left.operator!=self.operator&&PRECEDENCE[self.left.operator]>=PRECEDENCE[self.operator])){var reversed=make_node(AST_Binary,self,{operator:self.operator,left:self.right,right:self.left});if(self.right instanceof AST_Constant&&!(self.left instanceof AST_Constant)){self=best_of(compressor,reversed,self)}else{self=best_of(compressor,self,reversed)}}if(associative&&self.is_number(compressor)){if(self.right instanceof AST_Binary&&self.right.operator==self.operator){self=make_node(AST_Binary,self,{operator:self.operator,left:make_node(AST_Binary,self.left,{operator:self.operator,left:self.left,right:self.right.left,start:self.left.start,end:self.right.left.end}),right:self.right.right})}if(self.right instanceof AST_Constant&&self.left instanceof AST_Binary&&self.left.operator==self.operator){if(self.left.left instanceof AST_Constant){self=make_node(AST_Binary,self,{operator:self.operator,left:make_node(AST_Binary,self.left,{operator:self.operator,left:self.left.left,right:self.right,start:self.left.left.start,end:self.right.end}),right:self.left.right})}else if(self.left.right instanceof AST_Constant){self=make_node(AST_Binary,self,{operator:self.operator,left:make_node(AST_Binary,self.left,{operator:self.operator,left:self.left.right,right:self.right,start:self.left.right.start,end:self.right.end}),right:self.left.left})}}if(self.left instanceof AST_Binary&&self.left.operator==self.operator&&self.left.right instanceof AST_Constant&&self.right instanceof AST_Binary&&self.right.operator==self.operator&&self.right.left instanceof AST_Constant){self=make_node(AST_Binary,self,{operator:self.operator,left:make_node(AST_Binary,self.left,{operator:self.operator,left:make_node(AST_Binary,self.left.left,{operator:self.operator,left:self.left.right,right:self.right.left,start:self.left.right.start,end:self.right.left.end}),right:self.left.left}),right:self.right.right})}}}}if(self.right instanceof AST_Binary&&self.right.operator==self.operator&&(lazy_op[self.operator]||self.operator=="+"&&(self.right.left.is_string(compressor)||self.left.is_string(compressor)&&self.right.right.is_string(compressor)))){self.left=make_node(AST_Binary,self.left,{operator:self.operator,left:self.left,right:self.right.left});self.right=self.right.right;return self.transform(compressor)}var ev=self.evaluate(compressor);if(ev!==self){ev=make_node_from_constant(ev,self).optimize(compressor);return best_of(compressor,ev,self)}return self;function fuzzy_eval(node){if(node.truthy)return true;if(node.falsy)return false;if(node.is_truthy())return true;return node.evaluate(compressor)}});function recursive_ref(compressor,def){var node;for(var i=0;node=compressor.parent(i);i++){if(node instanceof AST_Lambda){var name=node.name;if(name&&name.definition()===def)break}}return node}OPT(AST_SymbolRef,function(self,compressor){if(!compressor.option("ie8")&&is_undeclared_ref(self)&&!(self.scope.uses_with&&compressor.find_parent(AST_With))){switch(self.name){case"undefined":return make_node(AST_Undefined,self).optimize(compressor);case"NaN":return make_node(AST_NaN,self).optimize(compressor);case"Infinity":return make_node(AST_Infinity,self).optimize(compressor)}}var parent=compressor.parent();if(compressor.option("reduce_vars")&&is_lhs(self,parent)!==self){var def=self.definition();var fixed=self.fixed_value();var single_use=def.single_use&&!(parent instanceof AST_Call&&parent.is_expr_pure(compressor));if(single_use&&fixed instanceof AST_Lambda){if(def.scope!==self.scope&&(!compressor.option("reduce_funcs")||def.escaped==1||fixed.inlined)){single_use=false}else if(recursive_ref(compressor,def)){single_use=false}else if(def.scope!==self.scope||def.orig[0]instanceof AST_SymbolFunarg){single_use=fixed.is_constant_expression(self.scope);if(single_use=="f"){var scope=self.scope;do{if(scope instanceof AST_Defun||scope instanceof AST_Function){scope.inlined=true}}while(scope=scope.parent_scope)}}}if(single_use&&fixed){def.single_use=false;if(fixed instanceof AST_Defun){fixed._squeezed=true;fixed=make_node(AST_Function,fixed,fixed);fixed.name=make_node(AST_SymbolLambda,fixed.name,fixed.name)}var value;if(def.recursive_refs>0){value=fixed.clone(true);var defun_def=value.name.definition();var lambda_def=value.variables.get(value.name.name);var name=lambda_def&&lambda_def.orig[0];if(!(name instanceof AST_SymbolLambda)){name=make_node(AST_SymbolLambda,value.name,value.name);name.scope=value;value.name=name;lambda_def=value.def_function(name)}value.walk(new TreeWalker(function(node){if(!(node instanceof AST_SymbolRef))return;var def=node.definition();if(def===defun_def){node.thedef=lambda_def;lambda_def.references.push(node)}else{def.single_use=false}}))}else{value=fixed.optimize(compressor);if(value===fixed)value=fixed.clone(true)}return value}if(fixed&&def.should_replace===undefined){var init;if(fixed instanceof AST_This){if(!(def.orig[0]instanceof AST_SymbolFunarg)&&all(def.references,function(ref){return def.scope===ref.scope})){init=fixed}}else{var ev=fixed.evaluate(compressor);if(ev!==fixed&&(compressor.option("unsafe_regexp")||!(ev instanceof RegExp))){init=make_node_from_constant(ev,fixed)}}if(init){var value_length=init.optimize(compressor).print_to_string().length;var fn;if(has_symbol_ref(fixed)){fn=function(){var result=init.optimize(compressor);return result===init?result.clone(true):result}}else{value_length=Math.min(value_length,fixed.print_to_string().length);fn=function(){var result=best_of_expression(init.optimize(compressor),fixed);return result===init||result===fixed?result.clone(true):result}}var name_length=def.name.length;var overhead=0;if(compressor.option("unused")&&!compressor.exposed(def)){overhead=(name_length+2+value_length)/(def.references.length-def.assignments)}def.should_replace=value_length<=name_length+overhead?fn:false}else{def.should_replace=false}}if(def.should_replace){return def.should_replace()}}return self;function has_symbol_ref(value){var found;value.walk(new TreeWalker(function(node){if(node instanceof AST_SymbolRef)found=true;if(found)return true}));return found}});function is_atomic(lhs,self){return lhs instanceof AST_SymbolRef||lhs.TYPE===self.TYPE}OPT(AST_Undefined,function(self,compressor){if(compressor.option("unsafe_undefined")){var undef=find_variable(compressor,"undefined");if(undef){var ref=make_node(AST_SymbolRef,self,{name:"undefined",scope:undef.scope,thedef:undef});ref.is_undefined=true;return ref}}var lhs=is_lhs(compressor.self(),compressor.parent());if(lhs&&is_atomic(lhs,self))return self;return make_node(AST_UnaryPrefix,self,{operator:"void",expression:make_node(AST_Number,self,{value:0})})});OPT(AST_Infinity,function(self,compressor){var lhs=is_lhs(compressor.self(),compressor.parent());if(lhs&&is_atomic(lhs,self))return self;if(compressor.option("keep_infinity")&&!(lhs&&!is_atomic(lhs,self))&&!find_variable(compressor,"Infinity"))return self;return make_node(AST_Binary,self,{operator:"/",left:make_node(AST_Number,self,{value:1}),right:make_node(AST_Number,self,{value:0})})});OPT(AST_NaN,function(self,compressor){var lhs=is_lhs(compressor.self(),compressor.parent());if(lhs&&!is_atomic(lhs,self)||find_variable(compressor,"NaN")){return make_node(AST_Binary,self,{operator:"/",left:make_node(AST_Number,self,{value:0}),right:make_node(AST_Number,self,{value:0})})}return self});function is_reachable(self,defs){var reachable=false;var find_ref=new TreeWalker(function(node){if(reachable)return true;if(node instanceof AST_SymbolRef&&member(node.definition(),defs)){return reachable=true}});var scan_scope=new TreeWalker(function(node){if(reachable)return true;if(node instanceof AST_Scope&&node!==self){var parent=scan_scope.parent();if(parent instanceof AST_Call&&parent.expression===node)return;node.walk(find_ref);return true}});self.walk(scan_scope);return reachable}var ASSIGN_OPS=makePredicate("+ - / * % >> << >>> | ^ &");var ASSIGN_OPS_COMMUTATIVE=makePredicate("* | ^ &");OPT(AST_Assign,function(self,compressor){var def;if(compressor.option("dead_code")&&self.left instanceof AST_SymbolRef&&(def=self.left.definition()).scope===compressor.find_parent(AST_Lambda)){var level=0,node,parent=self;do{node=parent;parent=compressor.parent(level++);if(parent instanceof AST_Exit){if(in_try(level,parent))break;if(is_reachable(def.scope,[def]))break;if(self.operator=="=")return self.right;def.fixed=false;return make_node(AST_Binary,self,{operator:self.operator.slice(0,-1),left:self.left,right:self.right}).optimize(compressor)}}while(parent instanceof AST_Binary&&parent.right===node||parent instanceof AST_Sequence&&parent.tail_node()===node)}self=self.lift_sequences(compressor);if(self.operator=="="&&self.left instanceof AST_SymbolRef&&self.right instanceof AST_Binary){if(self.right.left instanceof AST_SymbolRef&&self.right.left.name==self.left.name&&ASSIGN_OPS[self.right.operator]){self.operator=self.right.operator+"=";self.right=self.right.right}else if(self.right.right instanceof AST_SymbolRef&&self.right.right.name==self.left.name&&ASSIGN_OPS_COMMUTATIVE[self.right.operator]&&!self.right.left.has_side_effects(compressor)){self.operator=self.right.operator+"=";self.right=self.right.left}}return self;function in_try(level,node){var right=self.right;self.right=make_node(AST_Null,right);var may_throw=node.may_throw(compressor);self.right=right;var scope=self.left.definition().scope;var parent;while((parent=compressor.parent(level++))!==scope){if(parent instanceof AST_Try){if(parent.bfinally)return true;if(may_throw&&parent.bcatch)return true}}}});OPT(AST_Conditional,function(self,compressor){if(!compressor.option("conditionals"))return self;if(self.condition instanceof AST_Sequence){var expressions=self.condition.expressions.slice();self.condition=expressions.pop();expressions.push(self);return make_sequence(self,expressions)}var cond=self.condition.is_truthy()||self.condition.tail_node().evaluate(compressor);if(!cond){compressor.warn("Condition always false [{file}:{line},{col}]",self.start);return make_sequence(self,[self.condition,self.alternative]).optimize(compressor)}else if(!(cond instanceof AST_Node)){compressor.warn("Condition always true [{file}:{line},{col}]",self.start);return make_sequence(self,[self.condition,self.consequent]).optimize(compressor)}var negated=cond.negate(compressor,first_in_statement(compressor));if(best_of(compressor,cond,negated)===negated){self=make_node(AST_Conditional,self,{condition:negated,consequent:self.alternative,alternative:self.consequent})}var condition=self.condition;var consequent=self.consequent;var alternative=self.alternative;if(condition instanceof AST_SymbolRef&&consequent instanceof AST_SymbolRef&&condition.definition()===consequent.definition()){return make_node(AST_Binary,self,{operator:"||",left:condition,right:alternative})}var seq_tail=consequent.tail_node();if(seq_tail instanceof AST_Assign){var is_eq=seq_tail.operator=="=";var alt_tail=is_eq?alternative.tail_node():alternative;if((is_eq||consequent instanceof AST_Assign)&&alt_tail instanceof AST_Assign&&seq_tail.operator==alt_tail.operator&&seq_tail.left.equivalent_to(alt_tail.left)&&(!condition.has_side_effects(compressor)||is_eq&&!seq_tail.left.has_side_effects(compressor))){return make_node(AST_Assign,self,{operator:seq_tail.operator,left:seq_tail.left,right:make_node(AST_Conditional,self,{condition:condition,consequent:pop_lhs(consequent),alternative:pop_lhs(alternative)})})}}var arg_index;if(consequent instanceof AST_Call&&alternative.TYPE===consequent.TYPE&&consequent.args.length>0&&consequent.args.length==alternative.args.length&&consequent.expression.equivalent_to(alternative.expression)&&!condition.has_side_effects(compressor)&&!consequent.expression.has_side_effects(compressor)&&typeof(arg_index=single_arg_diff())=="number"){var node=consequent.clone();node.args[arg_index]=make_node(AST_Conditional,self,{condition:condition,consequent:consequent.args[arg_index],alternative:alternative.args[arg_index]});return node}if(consequent instanceof AST_Conditional&&consequent.alternative.equivalent_to(alternative)){return make_node(AST_Conditional,self,{condition:make_node(AST_Binary,self,{left:condition,operator:"&&",right:consequent.condition}),consequent:consequent.consequent,alternative:alternative})}if(consequent.equivalent_to(alternative)){return make_sequence(self,[condition,consequent]).optimize(compressor)}if((consequent instanceof AST_Sequence||alternative instanceof AST_Sequence)&&consequent.tail_node().equivalent_to(alternative.tail_node())){return make_sequence(self,[make_node(AST_Conditional,self,{condition:condition,consequent:pop_seq(consequent),alternative:pop_seq(alternative)}),consequent.tail_node()]).optimize(compressor)}if(consequent instanceof AST_Binary&&consequent.operator=="||"&&consequent.right.equivalent_to(alternative)){return make_node(AST_Binary,self,{operator:"||",left:make_node(AST_Binary,self,{operator:"&&",left:condition,right:consequent.left}),right:alternative}).optimize(compressor)}var in_bool=compressor.option("booleans")&&compressor.in_boolean_context();if(is_true(self.consequent)){if(is_false(self.alternative)){return booleanize(condition)}return make_node(AST_Binary,self,{operator:"||",left:booleanize(condition),right:self.alternative})}if(is_false(self.consequent)){if(is_true(self.alternative)){return booleanize(condition.negate(compressor))}return make_node(AST_Binary,self,{operator:"&&",left:booleanize(condition.negate(compressor)),right:self.alternative})}if(is_true(self.alternative)){return make_node(AST_Binary,self,{operator:"||",left:booleanize(condition.negate(compressor)),right:self.consequent})}if(is_false(self.alternative)){return make_node(AST_Binary,self,{operator:"&&",left:booleanize(condition),right:self.consequent})}return self;function booleanize(node){if(node.is_boolean(compressor))return node;return make_node(AST_UnaryPrefix,node,{operator:"!",expression:node.negate(compressor)})}function is_true(node){return node instanceof AST_True||in_bool&&node instanceof AST_Constant&&node.getValue()||node instanceof AST_UnaryPrefix&&node.operator=="!"&&node.expression instanceof AST_Constant&&!node.expression.getValue()}function is_false(node){return node instanceof AST_False||in_bool&&node instanceof AST_Constant&&!node.getValue()||node instanceof AST_UnaryPrefix&&node.operator=="!"&&node.expression instanceof AST_Constant&&node.expression.getValue()}function single_arg_diff(){var a=consequent.args;var b=alternative.args;for(var i=0,len=a.length;i<len;i++){if(!a[i].equivalent_to(b[i])){for(var j=i+1;j<len;j++){if(!a[j].equivalent_to(b[j]))return}return i}}}function pop_lhs(node){if(!(node instanceof AST_Sequence))return node.right;var exprs=node.expressions.slice();exprs.push(exprs.pop().right);return make_sequence(node,exprs)}function pop_seq(node){if(!(node instanceof AST_Sequence))return make_node(AST_Number,node,{value:0});return make_sequence(node,node.expressions.slice(0,-1))}});OPT(AST_Boolean,function(self,compressor){if(!compressor.option("booleans"))return self;if(compressor.in_boolean_context())return make_node(AST_Number,self,{value:+self.value});var p=compressor.parent();if(p instanceof AST_Binary&&(p.operator=="=="||p.operator=="!=")){compressor.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]",{operator:p.operator,value:self.value,file:p.start.file,line:p.start.line,col:p.start.col});return make_node(AST_Number,self,{value:+self.value})}return make_node(AST_UnaryPrefix,self,{operator:"!",expression:make_node(AST_Number,self,{value:1-self.value})})});function safe_to_flatten(value,compressor){if(value instanceof AST_SymbolRef){value=value.fixed_value()}if(!value)return false;return!(value instanceof AST_Lambda)||compressor.parent()instanceof AST_New||!value.contains_this()}OPT(AST_Sub,function(self,compressor){var expr=self.expression;var prop=self.property;if(compressor.option("properties")){var key=prop.evaluate(compressor);if(key!==prop){if(typeof key=="string"){if(key=="undefined"){key=undefined}else{var value=parseFloat(key);if(value.toString()==key){key=value}}}prop=self.property=best_of_expression(prop,make_node_from_constant(key,prop).transform(compressor));var property=""+key;if(is_identifier_string(property)&&property.length<=prop.print_to_string().length+1){return make_node(AST_Dot,self,{expression:expr,property:property}).optimize(compressor)}}}var fn;if(compressor.option("arguments")&&expr instanceof AST_SymbolRef&&expr.name=="arguments"&&expr.definition().orig.length==1&&(fn=expr.scope)instanceof AST_Lambda&&prop instanceof AST_Number){var index=prop.getValue();var argname=fn.argnames[index];if(argname&&compressor.has_directive("use strict")){var def=argname.definition();if(!compressor.option("reduce_vars")||def.assignments||def.orig.length>1){argname=null}}else if(!argname&&!compressor.option("keep_fargs")&&index<fn.argnames.length+5){while(index>=fn.argnames.length){argname=make_node(AST_SymbolFunarg,fn,{name:fn.make_var_name("argument_"+fn.argnames.length),scope:fn});fn.argnames.push(argname);fn.enclosed.push(fn.def_variable(argname))}}if(argname&&find_if(function(node){return node.name===argname.name},fn.argnames)===argname){var sym=make_node(AST_SymbolRef,self,argname);sym.reference({});delete argname.__unused;return sym}}if(is_lhs(self,compressor.parent()))return self;if(key!==prop){var sub=self.flatten_object(property,compressor);if(sub){expr=self.expression=sub.expression;prop=self.property=sub.property}}if(compressor.option("properties")&&compressor.option("side_effects")&&prop instanceof AST_Number&&expr instanceof AST_Array){var index=prop.getValue();var elements=expr.elements;var retValue=elements[index];if(safe_to_flatten(retValue,compressor)){var flatten=true;var values=[];for(var i=elements.length;--i>index;){var value=elements[i].drop_side_effect_free(compressor);if(value){values.unshift(value);if(flatten&&value.has_side_effects(compressor))flatten=false}}retValue=retValue instanceof AST_Hole?make_node(AST_Undefined,retValue):retValue;if(!flatten)values.unshift(retValue);while(--i>=0){var value=elements[i].drop_side_effect_free(compressor);if(value)values.unshift(value);else index--}if(flatten){values.push(retValue);return make_sequence(self,values).optimize(compressor)}else return make_node(AST_Sub,self,{expression:make_node(AST_Array,expr,{elements:values}),property:make_node(AST_Number,prop,{value:index})})}}var ev=self.evaluate(compressor);if(ev!==self){ev=make_node_from_constant(ev,self).optimize(compressor);return best_of(compressor,ev,self)}return self});AST_Scope.DEFMETHOD("contains_this",function(){var result;var self=this;self.walk(new TreeWalker(function(node){if(result)return true;if(node instanceof AST_This)return result=true;if(node!==self&&node instanceof AST_Scope)return true}));return result});AST_PropAccess.DEFMETHOD("flatten_object",function(key,compressor){if(!compressor.option("properties"))return;var expr=this.expression;if(expr instanceof AST_Object){var props=expr.properties;for(var i=props.length;--i>=0;){var prop=props[i];if(""+prop.key==key){if(!all(props,function(prop){return prop instanceof AST_ObjectKeyVal}))break;if(!safe_to_flatten(prop.value,compressor))break;return make_node(AST_Sub,this,{expression:make_node(AST_Array,expr,{elements:props.map(function(prop){return prop.value})}),property:make_node(AST_Number,this,{value:i})})}}}});OPT(AST_Dot,function(self,compressor){if(self.property=="arguments"||self.property=="caller"){compressor.warn("Function.protoype.{prop} not supported [{file}:{line},{col}]",{prop:self.property,file:self.start.file,line:self.start.line,col:self.start.col})}if(is_lhs(self,compressor.parent()))return self;if(compressor.option("unsafe_proto")&&self.expression instanceof AST_Dot&&self.expression.property=="prototype"){var exp=self.expression.expression;if(is_undeclared_ref(exp))switch(exp.name){case"Array":self.expression=make_node(AST_Array,self.expression,{elements:[]});break;case"Function":self.expression=make_node(AST_Function,self.expression,{argnames:[],body:[]});break;case"Number":self.expression=make_node(AST_Number,self.expression,{value:0});break;case"Object":self.expression=make_node(AST_Object,self.expression,{properties:[]});break;case"RegExp":self.expression=make_node(AST_RegExp,self.expression,{value:/t/});break;case"String":self.expression=make_node(AST_String,self.expression,{value:""});break}}var sub=self.flatten_object(self.property,compressor);if(sub)return sub.optimize(compressor);var ev=self.evaluate(compressor);if(ev!==self){ev=make_node_from_constant(ev,self).optimize(compressor);return best_of(compressor,ev,self)}return self});OPT(AST_Return,function(self,compressor){if(self.value&&is_undefined(self.value,compressor)){self.value=null}return self})})(function(node,optimizer){node.DEFMETHOD("optimize",function(compressor){var self=this;if(self._optimized)return self;if(compressor.has_directive("use asm"))return self;var opt=optimizer(self,compressor);opt._optimized=true;return opt})});"use strict";function SourceMap(options){options=defaults(options,{file:null,root:null,orig:null,orig_line_diff:0,dest_line_diff:0},true);var generator=new MOZ_SourceMap.SourceMapGenerator({file:options.file,sourceRoot:options.root});var maps=options.orig&&Object.create(null);if(maps)for(var source in options.orig){var map=new MOZ_SourceMap.SourceMapConsumer(options.orig[source]);if(Array.isArray(options.orig[source].sources)){map._sources.toArray().forEach(function(source){var sourceContent=map.sourceContentFor(source,true);if(sourceContent)generator.setSourceContent(source,sourceContent)})}maps[source]=map}return{add:function(source,gen_line,gen_col,orig_line,orig_col,name){var map=maps&&maps[source];if(map){var info=map.originalPositionFor({line:orig_line,column:orig_col});if(info.source===null)return;source=info.source;orig_line=info.line;orig_col=info.column;name=info.name||name}generator.addMapping({name:name,source:source,generated:{line:gen_line+options.dest_line_diff,column:gen_col},original:{line:orig_line+options.orig_line_diff,column:orig_col}})},get:function(){return generator},toString:function(){return JSON.stringify(generator.toJSON())}}}"use strict";(function(){function normalize_directives(body){var in_directive=true;for(var i=0;i<body.length;i++){if(in_directive&&body[i]instanceof AST_Statement&&body[i].body instanceof AST_String){body[i]=new AST_Directive({start:body[i].start,end:body[i].end,value:body[i].body.value})}else if(in_directive&&!(body[i]instanceof AST_Statement&&body[i].body instanceof AST_String)){in_directive=false}}return body}var MOZ_TO_ME={Program:function(M){return new AST_Toplevel({start:my_start_token(M),end:my_end_token(M),body:normalize_directives(M.body.map(from_moz))})},FunctionDeclaration:function(M){return new AST_Defun({start:my_start_token(M),end:my_end_token(M),name:from_moz(M.id),argnames:M.params.map(from_moz),body:normalize_directives(from_moz(M.body).body)})},FunctionExpression:function(M){return new AST_Function({start:my_start_token(M),end:my_end_token(M),name:from_moz(M.id),argnames:M.params.map(from_moz),body:normalize_directives(from_moz(M.body).body)})},ExpressionStatement:function(M){return new AST_SimpleStatement({start:my_start_token(M),end:my_end_token(M),body:from_moz(M.expression)})},TryStatement:function(M){var handlers=M.handlers||[M.handler];if(handlers.length>1||M.guardedHandlers&&M.guardedHandlers.length){throw new Error("Multiple catch clauses are not supported.")}return new AST_Try({start:my_start_token(M),end:my_end_token(M),body:from_moz(M.block).body,bcatch:from_moz(handlers[0]),bfinally:M.finalizer?new AST_Finally(from_moz(M.finalizer)):null})},Property:function(M){var key=M.key;var args={start:my_start_token(key),end:my_end_token(M.value),key:key.type=="Identifier"?key.name:key.value,value:from_moz(M.value)};if(M.kind=="init")return new AST_ObjectKeyVal(args);args.key=new AST_SymbolAccessor({name:args.key});args.value=new AST_Accessor(args.value);if(M.kind=="get")return new AST_ObjectGetter(args);if(M.kind=="set")return new AST_ObjectSetter(args)},ArrayExpression:function(M){return new AST_Array({start:my_start_token(M),end:my_end_token(M),elements:M.elements.map(function(elem){return elem===null?new AST_Hole:from_moz(elem)})})},ObjectExpression:function(M){return new AST_Object({start:my_start_token(M),end:my_end_token(M),properties:M.properties.map(function(prop){prop.type="Property";return from_moz(prop)})})},SequenceExpression:function(M){return new AST_Sequence({start:my_start_token(M),end:my_end_token(M),expressions:M.expressions.map(from_moz)})},MemberExpression:function(M){return new(M.computed?AST_Sub:AST_Dot)({start:my_start_token(M),end:my_end_token(M),property:M.computed?from_moz(M.property):M.property.name,expression:from_moz(M.object)})},SwitchCase:function(M){return new(M.test?AST_Case:AST_Default)({start:my_start_token(M),end:my_end_token(M),expression:from_moz(M.test),body:M.consequent.map(from_moz)})},VariableDeclaration:function(M){return new AST_Var({start:my_start_token(M),end:my_end_token(M),definitions:M.declarations.map(from_moz)})},Literal:function(M){var val=M.value,args={start:my_start_token(M),end:my_end_token(M)};if(val===null)return new AST_Null(args);var rx=M.regex;if(rx&&rx.pattern){args.value=new RegExp(rx.pattern,rx.flags);args.value.raw_source=rx.pattern;return new AST_RegExp(args)}else if(rx){args.value=M.regex&&M.raw?M.raw:val;return new AST_RegExp(args)}switch(typeof val){case"string":args.value=val;return new AST_String(args);case"number":args.value=val;return new AST_Number(args);case"boolean":return new(val?AST_True:AST_False)(args)}},Identifier:function(M){var p=FROM_MOZ_STACK[FROM_MOZ_STACK.length-2];return new(p.type=="LabeledStatement"?AST_Label:p.type=="VariableDeclarator"&&p.id===M?AST_SymbolVar:p.type=="FunctionExpression"?p.id===M?AST_SymbolLambda:AST_SymbolFunarg:p.type=="FunctionDeclaration"?p.id===M?AST_SymbolDefun:AST_SymbolFunarg:p.type=="CatchClause"?AST_SymbolCatch:p.type=="BreakStatement"||p.type=="ContinueStatement"?AST_LabelRef:AST_SymbolRef)({start:my_start_token(M),end:my_end_token(M),name:M.name})}};MOZ_TO_ME.UpdateExpression=MOZ_TO_ME.UnaryExpression=function To_Moz_Unary(M){var prefix="prefix"in M?M.prefix:M.type=="UnaryExpression"?true:false;return new(prefix?AST_UnaryPrefix:AST_UnaryPostfix)({start:my_start_token(M),end:my_end_token(M),operator:M.operator,expression:from_moz(M.argument)})};map("EmptyStatement",AST_EmptyStatement);map("BlockStatement",AST_BlockStatement,"body@body");map("IfStatement",AST_If,"test>condition, consequent>body, alternate>alternative");map("LabeledStatement",AST_LabeledStatement,"label>label, body>body");map("BreakStatement",AST_Break,"label>label");map("ContinueStatement",AST_Continue,"label>label");map("WithStatement",AST_With,"object>expression, body>body");map("SwitchStatement",AST_Switch,"discriminant>expression, cases@body");map("ReturnStatement",AST_Return,"argument>value");map("ThrowStatement",AST_Throw,"argument>value");map("WhileStatement",AST_While,"test>condition, body>body");map("DoWhileStatement",AST_Do,"test>condition, body>body");map("ForStatement",AST_For,"init>init, test>condition, update>step, body>body");map("ForInStatement",AST_ForIn,"left>init, right>object, body>body");map("DebuggerStatement",AST_Debugger);map("VariableDeclarator",AST_VarDef,"id>name, init>value");map("CatchClause",AST_Catch,"param>argname, body%body");map("ThisExpression",AST_This);map("BinaryExpression",AST_Binary,"operator=operator, left>left, right>right");map("LogicalExpression",AST_Binary,"operator=operator, left>left, right>right");map("AssignmentExpression",AST_Assign,"operator=operator, left>left, right>right");map("ConditionalExpression",AST_Conditional,"test>condition, consequent>consequent, alternate>alternative");map("NewExpression",AST_New,"callee>expression, arguments@args");map("CallExpression",AST_Call,"callee>expression, arguments@args");def_to_moz(AST_Toplevel,function To_Moz_Program(M){return to_moz_scope("Program",M)});def_to_moz(AST_Defun,function To_Moz_FunctionDeclaration(M){return{type:"FunctionDeclaration",id:to_moz(M.name),params:M.argnames.map(to_moz),body:to_moz_scope("BlockStatement",M)}});def_to_moz(AST_Function,function To_Moz_FunctionExpression(M){return{type:"FunctionExpression",id:to_moz(M.name),params:M.argnames.map(to_moz),body:to_moz_scope("BlockStatement",M)}});def_to_moz(AST_Directive,function To_Moz_Directive(M){return{type:"ExpressionStatement",expression:{type:"Literal",value:M.value}}});def_to_moz(AST_SimpleStatement,function To_Moz_ExpressionStatement(M){return{type:"ExpressionStatement",expression:to_moz(M.body)}});def_to_moz(AST_SwitchBranch,function To_Moz_SwitchCase(M){return{type:"SwitchCase",test:to_moz(M.expression),consequent:M.body.map(to_moz)}});def_to_moz(AST_Try,function To_Moz_TryStatement(M){return{type:"TryStatement",block:to_moz_block(M),handler:to_moz(M.bcatch),guardedHandlers:[],finalizer:to_moz(M.bfinally)}});def_to_moz(AST_Catch,function To_Moz_CatchClause(M){return{type:"CatchClause",param:to_moz(M.argname),guard:null,body:to_moz_block(M)}});def_to_moz(AST_Definitions,function To_Moz_VariableDeclaration(M){return{type:"VariableDeclaration",kind:"var",declarations:M.definitions.map(to_moz)}});def_to_moz(AST_Sequence,function To_Moz_SequenceExpression(M){return{type:"SequenceExpression",expressions:M.expressions.map(to_moz)}});def_to_moz(AST_PropAccess,function To_Moz_MemberExpression(M){var isComputed=M instanceof AST_Sub;return{type:"MemberExpression",object:to_moz(M.expression),computed:isComputed,property:isComputed?to_moz(M.property):{type:"Identifier",name:M.property}}});def_to_moz(AST_Unary,function To_Moz_Unary(M){return{type:M.operator=="++"||M.operator=="--"?"UpdateExpression":"UnaryExpression",operator:M.operator,prefix:M instanceof AST_UnaryPrefix,argument:to_moz(M.expression)}});def_to_moz(AST_Binary,function To_Moz_BinaryExpression(M){return{type:M.operator=="&&"||M.operator=="||"?"LogicalExpression":"BinaryExpression",left:to_moz(M.left),operator:M.operator,right:to_moz(M.right)}});def_to_moz(AST_Array,function To_Moz_ArrayExpression(M){return{type:"ArrayExpression",elements:M.elements.map(to_moz)}});def_to_moz(AST_Object,function To_Moz_ObjectExpression(M){return{type:"ObjectExpression",properties:M.properties.map(to_moz)}});def_to_moz(AST_ObjectProperty,function To_Moz_Property(M){var key={type:"Literal",value:M.key instanceof AST_SymbolAccessor?M.key.name:M.key};var kind;if(M instanceof AST_ObjectKeyVal){kind="init"}else if(M instanceof AST_ObjectGetter){kind="get"}else if(M instanceof AST_ObjectSetter){kind="set"}return{type:"Property",kind:kind,key:key,value:to_moz(M.value)}});def_to_moz(AST_Symbol,function To_Moz_Identifier(M){var def=M.definition();return{type:"Identifier",name:def?def.mangled_name||def.name:M.name}});def_to_moz(AST_RegExp,function To_Moz_RegExpLiteral(M){var flags=M.value.toString().match(/[gimuy]*$/)[0];var value="/"+M.value.raw_source+"/"+flags;return{type:"Literal",value:value,raw:value,regex:{pattern:M.value.raw_source,flags:flags}}});def_to_moz(AST_Constant,function To_Moz_Literal(M){var value=M.value;if(typeof value==="number"&&(value<0||value===0&&1/value<0)){return{type:"UnaryExpression",operator:"-",prefix:true,argument:{type:"Literal",value:-value,raw:M.start.raw}}}return{type:"Literal",value:value,raw:M.start.raw}});def_to_moz(AST_Atom,function To_Moz_Atom(M){return{type:"Identifier",name:String(M.value)}});AST_Boolean.DEFMETHOD("to_mozilla_ast",AST_Constant.prototype.to_mozilla_ast);AST_Null.DEFMETHOD("to_mozilla_ast",AST_Constant.prototype.to_mozilla_ast);AST_Hole.DEFMETHOD("to_mozilla_ast",function To_Moz_ArrayHole(){return null});AST_Block.DEFMETHOD("to_mozilla_ast",AST_BlockStatement.prototype.to_mozilla_ast);AST_Lambda.DEFMETHOD("to_mozilla_ast",AST_Function.prototype.to_mozilla_ast);function raw_token(moznode){if(moznode.type=="Literal"){return moznode.raw!=null?moznode.raw:moznode.value+""}}function my_start_token(moznode){var loc=moznode.loc,start=loc&&loc.start;var range=moznode.range;return new AST_Token({file:loc&&loc.source,line:start&&start.line,col:start&&start.column,pos:range?range[0]:moznode.start,endline:start&&start.line,endcol:start&&start.column,endpos:range?range[0]:moznode.start,raw:raw_token(moznode)})}function my_end_token(moznode){var loc=moznode.loc,end=loc&&loc.end;var range=moznode.range;return new AST_Token({file:loc&&loc.source,line:end&&end.line,col:end&&end.column,pos:range?range[1]:moznode.end,endline:end&&end.line,endcol:end&&end.column,endpos:range?range[1]:moznode.end,raw:raw_token(moznode)})}function map(moztype,mytype,propmap){var moz_to_me="function From_Moz_"+moztype+"(M){\n";moz_to_me+="return new U2."+mytype.name+"({\n"+"start: my_start_token(M),\n"+"end: my_end_token(M)";var me_to_moz="function To_Moz_"+moztype+"(M){\n";me_to_moz+="return {\n"+"type: "+JSON.stringify(moztype);if(propmap)propmap.split(/\s*,\s*/).forEach(function(prop){var m=/([a-z0-9$_]+)(=|@|>|%)([a-z0-9$_]+)/i.exec(prop);if(!m)throw new Error("Can't understand property map: "+prop);var moz=m[1],how=m[2],my=m[3];moz_to_me+=",\n"+my+": ";me_to_moz+=",\n"+moz+": ";switch(how){case"@":moz_to_me+="M."+moz+".map(from_moz)";me_to_moz+="M."+my+".map(to_moz)";break;case">":moz_to_me+="from_moz(M."+moz+")";me_to_moz+="to_moz(M."+my+")";break;case"=":moz_to_me+="M."+moz;me_to_moz+="M."+my;break;case"%":moz_to_me+="from_moz(M."+moz+").body";me_to_moz+="to_moz_block(M)";break;default:throw new Error("Can't understand operator in propmap: "+prop)}});moz_to_me+="\n})\n}";me_to_moz+="\n}\n}";moz_to_me=new Function("U2","my_start_token","my_end_token","from_moz","return("+moz_to_me+")")(exports,my_start_token,my_end_token,from_moz);me_to_moz=new Function("to_moz","to_moz_block","to_moz_scope","return("+me_to_moz+")")(to_moz,to_moz_block,to_moz_scope);MOZ_TO_ME[moztype]=moz_to_me;def_to_moz(mytype,me_to_moz)}var FROM_MOZ_STACK=null;function from_moz(node){FROM_MOZ_STACK.push(node);var ret=node!=null?MOZ_TO_ME[node.type](node):null;FROM_MOZ_STACK.pop();return ret}AST_Node.from_mozilla_ast=function(node){var save_stack=FROM_MOZ_STACK;FROM_MOZ_STACK=[];var ast=from_moz(node);FROM_MOZ_STACK=save_stack;ast.walk(new TreeWalker(function(node){if(node instanceof AST_LabelRef){for(var level=0,parent;parent=this.parent(level);level++){if(parent instanceof AST_Scope)break;if(parent instanceof AST_LabeledStatement&&parent.label.name==node.name){node.thedef=parent.label;break}}if(!node.thedef){var s=node.start;js_error("Undefined label "+node.name,s.file,s.line,s.col,s.pos)}}}));return ast};function set_moz_loc(mynode,moznode,myparent){var start=mynode.start;var end=mynode.end;if(start.pos!=null&&end.endpos!=null){moznode.range=[start.pos,end.endpos]}if(start.line){moznode.loc={start:{line:start.line,column:start.col},end:end.endline?{line:end.endline,column:end.endcol}:null};if(start.file){moznode.loc.source=start.file}}return moznode}function def_to_moz(mytype,handler){mytype.DEFMETHOD("to_mozilla_ast",function(){return set_moz_loc(this,handler(this))})}function to_moz(node){return node!=null?node.to_mozilla_ast():null}function to_moz_block(node){return{type:"BlockStatement",body:node.body.map(to_moz)}}function to_moz_scope(type,node){var body=node.body.map(to_moz);if(node.body[0]instanceof AST_SimpleStatement&&node.body[0].body instanceof AST_String){body.unshift(to_moz(new AST_EmptyStatement(node.body[0])))}return{type:type,body:body}}})();"use strict";function find_builtins(reserved){["null","true","false","Infinity","-Infinity","undefined"].forEach(add);[Array,Boolean,Date,Error,Function,Math,Number,Object,RegExp,String].forEach(function(ctor){Object.getOwnPropertyNames(ctor).map(add);if(ctor.prototype){Object.getOwnPropertyNames(ctor.prototype).map(add)}});function add(name){push_uniq(reserved,name)}}function reserve_quoted_keys(ast,reserved){ast.walk(new TreeWalker(function(node){if(node instanceof AST_ObjectKeyVal&&node.quote){add(node.key)}else if(node instanceof AST_Sub){addStrings(node.property,add)}}));function add(name){push_uniq(reserved,name)}}function addStrings(node,add){node.walk(new TreeWalker(function(node){if(node instanceof AST_Sequence){addStrings(node.tail_node(),add)}else if(node instanceof AST_String){add(node.value)}else if(node instanceof AST_Conditional){addStrings(node.consequent,add);addStrings(node.alternative,add)}return true}))}function mangle_properties(ast,options){options=defaults(options,{builtins:false,cache:null,debug:false,keep_quoted:false,only_cache:false,regex:null,reserved:null},true);var reserved=options.reserved;if(!Array.isArray(reserved))reserved=[];if(!options.builtins)find_builtins(reserved);var cname=-1;var cache;if(options.cache){cache=options.cache.props;cache.each(function(mangled_name){push_uniq(reserved,mangled_name)})}else{cache=new Dictionary}var regex=options.regex;var debug=options.debug!==false;var debug_suffix;if(debug)debug_suffix=options.debug===true?"":options.debug;var names_to_mangle=[];var unmangleable=[];ast.walk(new TreeWalker(function(node){if(node instanceof AST_ObjectKeyVal){add(node.key)}else if(node instanceof AST_ObjectProperty){add(node.key.name)}else if(node instanceof AST_Dot){add(node.property)}else if(node instanceof AST_Sub){addStrings(node.property,add)}else if(node instanceof AST_Call&&node.expression.print_to_string()=="Object.defineProperty"){addStrings(node.args[1],add)}}));return ast.transform(new TreeTransformer(function(node){if(node instanceof AST_ObjectKeyVal){node.key=mangle(node.key)}else if(node instanceof AST_ObjectProperty){node.key.name=mangle(node.key.name)}else if(node instanceof AST_Dot){node.property=mangle(node.property)}else if(!options.keep_quoted&&node instanceof AST_Sub){node.property=mangleStrings(node.property)}else if(node instanceof AST_Call&&node.expression.print_to_string()=="Object.defineProperty"){node.args[1]=mangleStrings(node.args[1])}}));function can_mangle(name){if(unmangleable.indexOf(name)>=0)return false;if(reserved.indexOf(name)>=0)return false;if(options.only_cache)return cache.has(name);if(/^-?[0-9]+(\.[0-9]+)?(e[+-][0-9]+)?$/.test(name))return false;return true}function should_mangle(name){if(regex&&!regex.test(name))return false;if(reserved.indexOf(name)>=0)return false;return cache.has(name)||names_to_mangle.indexOf(name)>=0}function add(name){if(can_mangle(name))push_uniq(names_to_mangle,name);if(!should_mangle(name))push_uniq(unmangleable,name)}function mangle(name){if(!should_mangle(name)){return name}var mangled=cache.get(name);if(!mangled){if(debug){var debug_mangled="_$"+name+"$"+debug_suffix+"_";if(can_mangle(debug_mangled))mangled=debug_mangled}if(!mangled)do{mangled=base54(++cname)}while(!can_mangle(mangled));cache.set(name,mangled)}return mangled}function mangleStrings(node){return node.transform(new TreeTransformer(function(node){if(node instanceof AST_Sequence){var last=node.expressions.length-1;node.expressions[last]=mangleStrings(node.expressions[last])}else if(node instanceof AST_String){node.value=mangle(node.value)}else if(node instanceof AST_Conditional){node.consequent=mangleStrings(node.consequent);node.alternative=mangleStrings(node.alternative)}return node}))}}"use strict";var to_ascii=typeof atob=="undefined"?function(b64){return new Buffer(b64,"base64").toString()}:atob;var to_base64=typeof btoa=="undefined"?function(str){return new Buffer(str).toString("base64")}:btoa;function read_source_map(name,code){var match=/\n\/\/# sourceMappingURL=data:application\/json(;.*?)?;base64,(.*)/.exec(code);if(!match){AST_Node.warn("inline source map not found: "+name);return null}return to_ascii(match[2])}function parse_source_map(content){try{return JSON.parse(content)}catch(ex){throw new Error("invalid input source map: "+content)}}function set_shorthand(name,options,keys){if(options[name]){keys.forEach(function(key){if(options[key]){if(typeof options[key]!="object")options[key]={};if(!(name in options[key]))options[key][name]=options[name]}})}}function init_cache(cache){if(!cache)return;if(!("props"in cache)){cache.props=new Dictionary}else if(!(cache.props instanceof Dictionary)){cache.props=Dictionary.fromObject(cache.props)}}function to_json(cache){return{props:cache.props.toObject()}}function minify(files,options){var warn_function=AST_Node.warn_function;try{options=defaults(options,{compress:{},enclose:false,ie8:false,keep_fnames:false,mangle:{},nameCache:null,output:{},parse:{},rename:undefined,sourceMap:false,timings:false,toplevel:false,warnings:false,wrap:false},true);var timings=options.timings&&{start:Date.now()};if(options.rename===undefined){options.rename=options.compress&&options.mangle}set_shorthand("ie8",options,["compress","mangle","output"]);set_shorthand("keep_fnames",options,["compress","mangle"]);set_shorthand("toplevel",options,["compress","mangle"]);set_shorthand("warnings",options,["compress"]);var quoted_props;if(options.mangle){options.mangle=defaults(options.mangle,{cache:options.nameCache&&(options.nameCache.vars||{}),eval:false,ie8:false,keep_fnames:false,properties:false,reserved:[],toplevel:false},true);if(options.mangle.properties){if(typeof options.mangle.properties!="object"){options.mangle.properties={}}if(options.mangle.properties.keep_quoted){quoted_props=options.mangle.properties.reserved;if(!Array.isArray(quoted_props))quoted_props=[];options.mangle.properties.reserved=quoted_props}if(options.nameCache&&!("cache"in options.mangle.properties)){options.mangle.properties.cache=options.nameCache.props||{}}}init_cache(options.mangle.cache);init_cache(options.mangle.properties.cache)}if(options.sourceMap){options.sourceMap=defaults(options.sourceMap,{content:null,filename:null,includeSources:false,root:null,url:null},true)}var warnings=[];if(options.warnings&&!AST_Node.warn_function){AST_Node.warn_function=function(warning){warnings.push(warning)}}if(timings)timings.parse=Date.now();var source_maps,toplevel;if(files instanceof AST_Toplevel){toplevel=files}else{if(typeof files=="string"){files=[files]}options.parse=options.parse||{};options.parse.toplevel=null;var source_map_content=options.sourceMap&&options.sourceMap.content;if(typeof source_map_content=="string"&&source_map_content!="inline"){source_map_content=parse_source_map(source_map_content)}source_maps=source_map_content&&Object.create(null);for(var name in files)if(HOP(files,name)){options.parse.filename=name;options.parse.toplevel=parse(files[name],options.parse);if(source_maps){if(source_map_content=="inline"){var inlined_content=read_source_map(name,files[name]);if(inlined_content){source_maps[name]=parse_source_map(inlined_content)}}else{source_maps[name]=source_map_content}}}toplevel=options.parse.toplevel}if(quoted_props){reserve_quoted_keys(toplevel,quoted_props)}if(options.wrap){toplevel=toplevel.wrap_commonjs(options.wrap)}if(options.enclose){toplevel=toplevel.wrap_enclose(options.enclose)}if(timings)timings.rename=Date.now();if(options.rename){toplevel.figure_out_scope(options.mangle);toplevel.expand_names(options.mangle)}if(timings)timings.compress=Date.now();if(options.compress)toplevel=new Compressor(options.compress).compress(toplevel);if(timings)timings.scope=Date.now();if(options.mangle)toplevel.figure_out_scope(options.mangle);if(timings)timings.mangle=Date.now();if(options.mangle){toplevel.compute_char_frequency(options.mangle);toplevel.mangle_names(options.mangle)}if(timings)timings.properties=Date.now();if(options.mangle&&options.mangle.properties){toplevel=mangle_properties(toplevel,options.mangle.properties)}if(timings)timings.output=Date.now();var result={};if(options.output.ast){result.ast=toplevel}if(!HOP(options.output,"code")||options.output.code){if(options.sourceMap){options.output.source_map=SourceMap({file:options.sourceMap.filename,orig:source_maps,root:options.sourceMap.root});if(options.sourceMap.includeSources){if(files instanceof AST_Toplevel){throw new Error("original source content unavailable")}else for(var name in files)if(HOP(files,name)){options.output.source_map.get().setSourceContent(name,files[name])}}else{options.output.source_map.get()._sourcesContents=null}}delete options.output.ast;delete options.output.code;var stream=OutputStream(options.output);toplevel.print(stream);result.code=stream.get();if(options.sourceMap){result.map=options.output.source_map.toString();if(options.sourceMap.url=="inline"){result.code+="\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,"+to_base64(result.map)}else if(options.sourceMap.url){result.code+="\n//# sourceMappingURL="+options.sourceMap.url}}}if(options.nameCache&&options.mangle){if(options.mangle.cache)options.nameCache.vars=to_json(options.mangle.cache);if(options.mangle.properties&&options.mangle.properties.cache){options.nameCache.props=to_json(options.mangle.properties.cache)}}if(timings){timings.end=Date.now();result.timings={parse:.001*(timings.rename-timings.parse),rename:.001*(timings.compress-timings.rename),compress:.001*(timings.scope-timings.compress),scope:.001*(timings.mangle-timings.scope),mangle:.001*(timings.properties-timings.mangle),properties:.001*(timings.output-timings.properties),output:.001*(timings.end-timings.output),total:.001*(timings.end-timings.start)}}if(warnings.length){result.warnings=warnings}return result}catch(ex){return{error:ex}}finally{AST_Node.warn_function=warn_function}}exports["Dictionary"]=Dictionary;exports["minify"]=minify;exports["parse"]=parse;exports["push_uniq"]=push_uniq;exports["TreeTransformer"]=TreeTransformer;exports["TreeWalker"]=TreeWalker})(typeof exports=="undefined"?exports={}:exports);
 }).call(this,require("buffer").Buffer)
-},{"buffer":4}]},{},["html-minifier"]);
+},{"buffer":111}]},{},["html-minifier"]);
index c6f8727..88e2434 100644 (file)
@@ -4,4 +4,4 @@
  * Licensed under the MIT license
  */
 
-require=function o(a,s,u){function l(t,e){if(!s[t]){if(!a[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(c)return c(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var i=s[t]={exports:{}};a[t][0].call(i.exports,function(e){return l(a[t][1][e]||e)},i,i.exports,o,a,s,u)}return s[t].exports}for(var c="function"==typeof require&&require,e=0;e<u.length;e++)l(u[e]);return l}({1:[function(e,t,n){"use strict";n.byteLength=function(e){var t=h(e),n=t[0],r=t[1];return 3*(n+r)/4-r},n.toByteArray=function(e){for(var t,n=h(e),r=n[0],i=n[1],o=new p((l=r,c=i,3*(l+c)/4-c)),a=0,s=0<i?r-4:r,u=0;u<s;u+=4)t=f[e.charCodeAt(u)]<<18|f[e.charCodeAt(u+1)]<<12|f[e.charCodeAt(u+2)]<<6|f[e.charCodeAt(u+3)],o[a++]=t>>16&255,o[a++]=t>>8&255,o[a++]=255&t;var l,c;2===i&&(t=f[e.charCodeAt(u)]<<2|f[e.charCodeAt(u+1)]>>4,o[a++]=255&t);1===i&&(t=f[e.charCodeAt(u)]<<10|f[e.charCodeAt(u+1)]<<4|f[e.charCodeAt(u+2)]>>2,o[a++]=t>>8&255,o[a++]=255&t);return o},n.fromByteArray=function(e){for(var t,n=e.length,r=n%3,i=[],o=0,a=n-r;o<a;o+=16383)i.push(u(e,o,a<o+16383?a:o+16383));1===r?(t=e[n-1],i.push(s[t>>2]+s[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],i.push(s[t>>10]+s[t>>4&63]+s[t<<2&63]+"="));return i.join("")};for(var s=[],f=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,o=r.length;i<o;++i)s[i]=r[i],f[r.charCodeAt(i)]=i;function h(e){var t=e.length;if(0<t%4)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function u(e,t,n){for(var r,i,o=[],a=t;a<n;a+=3)r=(e[a]<<16&16711680)+(e[a+1]<<8&65280)+(255&e[a+2]),o.push(s[(i=r)>>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return o.join("")}f["-".charCodeAt(0)]=62,f["_".charCodeAt(0)]=63},{}],2:[function(e,t,n){},{}],3:[function(e,t,n){arguments[4][2][0].apply(n,arguments)},{dup:2}],4:[function(e,t,n){"use strict";var r=e("base64-js"),o=e("ieee754");n.Buffer=f,n.SlowBuffer=function(e){+e!=e&&(e=0);return f.alloc(+e)},n.INSPECT_MAX_BYTES=50;var i=2147483647;function a(e){if(i<e)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=f.prototype,t}function f(e,t,n){if("number"!=typeof e)return s(e,t,n);if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return l(e)}function s(e,t,n){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!f.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var n=0|h(e,t),r=a(n),i=r.write(e,t);i!==n&&(r=r.slice(0,i));return r}(e,t);if(ArrayBuffer.isView(e))return c(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(U(e,ArrayBuffer)||e&&U(e.buffer,ArrayBuffer))return function(e,t,n){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(n||0))throw new RangeError('"length" is outside of buffer bounds');var r;r=void 0===t&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,t):new Uint8Array(e,t,n);return r.__proto__=f.prototype,r}(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return f.from(r,t,n);var i=function(e){if(f.isBuffer(e)){var t=0|p(e.length),n=a(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!=typeof e.length||M(e.length)?a(0):c(e);if("Buffer"===e.type&&Array.isArray(e.data))return c(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return f.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function l(e){return u(e),a(e<0?0:0|p(e))}function c(e){for(var t=e.length<0?0:0|p(e.length),n=a(t),r=0;r<t;r+=1)n[r]=255&e[r];return n}function p(e){if(i<=e)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function h(e,t){if(f.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||U(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var n=e.length,r=2<arguments.length&&!0===arguments[2];if(!r&&0===n)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return L(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return F(e).length;default:if(i)return r?-1:L(e).length;t=(""+t).toLowerCase(),i=!0}}function d(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function m(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):2147483647<n?n=2147483647:n<-2147483648&&(n=-2147483648),M(n=+n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=f.from(t,r)),f.isBuffer(t))return 0===t.length?-1:g(e,t,n,r,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):g(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function g(e,t,n,r,i){var o,a=1,s=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s/=a=2,u/=2,n/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var c=-1;for(o=n;o<s;o++)if(l(e,o)===l(t,-1===c?0:o-c)){if(-1===c&&(c=o),o-c+1===u)return c*a}else-1!==c&&(o-=o-c),c=-1}else for(s<n+u&&(n=s-u),o=n;0<=o;o--){for(var f=!0,p=0;p<u;p++)if(l(e,o+p)!==l(t,p)){f=!1;break}if(f)return o}return-1}function v(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?i<(r=Number(r))&&(r=i):r=i;var o=t.length;o/2<r&&(r=o/2);for(var a=0;a<r;++a){var s=parseInt(t.substr(2*a,2),16);if(M(s))return a;e[n+a]=s}return a}function b(e,t,n,r){return q(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function y(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function _(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i<n;){var o,a,s,u,l=e[i],c=null,f=239<l?4:223<l?3:191<l?2:1;if(i+f<=n)switch(f){case 1:l<128&&(c=l);break;case 2:128==(192&(o=e[i+1]))&&127<(u=(31&l)<<6|63&o)&&(c=u);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&2047<(u=(15&l)<<12|(63&o)<<6|63&a)&&(u<55296||57343<u)&&(c=u);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&65535<(u=(15&l)<<18|(63&o)<<12|(63&a)<<6|63&s)&&u<1114112&&(c=u)}null===c?(c=65533,f=1):65535<c&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),i+=f}return function(e){var t=e.length;if(t<=w)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=w));return n}(r)}n.kMaxLength=i,(f.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}())||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(f.prototype,"parent",{enumerable:!0,get:function(){if(f.isBuffer(this))return this.buffer}}),Object.defineProperty(f.prototype,"offset",{enumerable:!0,get:function(){if(f.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),f.poolSize=8192,f.from=function(e,t,n){return s(e,t,n)},f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array,f.alloc=function(e,t,n){return i=t,o=n,u(r=e),r<=0?a(r):void 0!==i?"string"==typeof o?a(r).fill(i,o):a(r).fill(i):a(r);var r,i,o},f.allocUnsafe=function(e){return l(e)},f.allocUnsafeSlow=function(e){return l(e)},f.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==f.prototype},f.compare=function(e,t){if(U(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),U(t,Uint8Array)&&(t=f.from(t,t.offset,t.byteLength)),!f.isBuffer(e)||!f.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var n=e.length,r=t.length,i=0,o=Math.min(n,r);i<o;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return n<r?-1:r<n?1:0},f.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},f.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return f.alloc(0);var n;if(void 0===t)for(n=t=0;n<e.length;++n)t+=e[n].length;var r=f.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var o=e[n];if(U(o,Uint8Array)&&(o=f.from(o)),!f.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(r,i),i+=o.length}return r},f.byteLength=h,f.prototype._isBuffer=!0,f.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)d(this,t,t+1);return this},f.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)d(this,t,t+3),d(this,t+1,t+2);return this},f.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)d(this,t,t+7),d(this,t+1,t+6),d(this,t+2,t+5),d(this,t+3,t+4);return this},f.prototype.toLocaleString=f.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?_(this,0,e):function(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return x(this,t,n);case"utf8":case"utf-8":return _(this,t,n);case"ascii":return E(this,t,n);case"latin1":case"binary":return A(this,t,n);case"base64":return y(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},f.prototype.equals=function(e){if(!f.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===f.compare(this,e)},f.prototype.inspect=function(){var e="",t=n.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},f.prototype.compare=function(e,t,n,r,i){if(U(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),!f.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(i<=r&&n<=t)return 0;if(i<=r)return-1;if(n<=t)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(o,a),u=this.slice(r,i),l=e.slice(t,n),c=0;c<s;++c)if(u[c]!==l[c]){o=u[c],a=l[c];break}return o<a?-1:a<o?1:0},f.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},f.prototype.indexOf=function(e,t,n){return m(this,e,t,n,!0)},f.prototype.lastIndexOf=function(e,t,n){return m(this,e,t,n,!1)},f.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||i<n)&&(n=i),0<e.length&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o,a,s,u,l,c,f,p,h,d=!1;;)switch(r){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return p=t,h=n,q(L(e,(f=this).length-p),f,p,h);case"ascii":return b(this,e,t,n);case"latin1":case"binary":return b(this,e,t,n);case"base64":return u=this,l=t,c=n,q(F(e),u,l,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return a=t,s=n,q(function(e,t){for(var n,r,i,o=[],a=0;a<e.length&&!((t-=2)<0);++a)n=e.charCodeAt(a),r=n>>8,i=n%256,o.push(i),o.push(r);return o}(e,(o=this).length-a),o,a,s);default:if(d)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),d=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function E(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(127&e[i]);return r}function A(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(e[i]);return r}function x(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||r<n)&&(n=r);for(var i="",o=t;o<n;++o)i+=R(e[o]);return i}function k(e,t,n){for(var r=e.slice(t,n),i="",o=0;o<r.length;o+=2)i+=String.fromCharCode(r[o]+256*r[o+1]);return i}function C(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(n<e+t)throw new RangeError("Trying to access beyond buffer length")}function O(e,t,n,r,i,o){if(!f.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(i<t||t<o)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function S(e,t,n,r,i,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function D(e,t,n,r,i){return t=+t,n>>>=0,i||S(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function T(e,t,n,r,i){return t=+t,n>>>=0,i||S(e,0,n,8),o.write(e,t,n,r,52,8),n+8}f.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):n<e&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):n<t&&(t=n),t<e&&(t=e);var r=this.subarray(e,t);return r.__proto__=f.prototype,r},f.prototype.readUIntLE=function(e,t,n){e>>>=0,t>>>=0,n||C(e,t,this.length);for(var r=this[e],i=1,o=0;++o<t&&(i*=256);)r+=this[e+o]*i;return r},f.prototype.readUIntBE=function(e,t,n){e>>>=0,t>>>=0,n||C(e,t,this.length);for(var r=this[e+--t],i=1;0<t&&(i*=256);)r+=this[e+--t]*i;return r},f.prototype.readUInt8=function(e,t){return e>>>=0,t||C(e,1,this.length),this[e]},f.prototype.readUInt16LE=function(e,t){return e>>>=0,t||C(e,2,this.length),this[e]|this[e+1]<<8},f.prototype.readUInt16BE=function(e,t){return e>>>=0,t||C(e,2,this.length),this[e]<<8|this[e+1]},f.prototype.readUInt32LE=function(e,t){return e>>>=0,t||C(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},f.prototype.readUInt32BE=function(e,t){return e>>>=0,t||C(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},f.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||C(e,t,this.length);for(var r=this[e],i=1,o=0;++o<t&&(i*=256);)r+=this[e+o]*i;return(i*=128)<=r&&(r-=Math.pow(2,8*t)),r},f.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||C(e,t,this.length);for(var r=t,i=1,o=this[e+--r];0<r&&(i*=256);)o+=this[e+--r]*i;return(i*=128)<=o&&(o-=Math.pow(2,8*t)),o},f.prototype.readInt8=function(e,t){return e>>>=0,t||C(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){e>>>=0,t||C(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},f.prototype.readInt16BE=function(e,t){e>>>=0,t||C(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},f.prototype.readInt32LE=function(e,t){return e>>>=0,t||C(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},f.prototype.readInt32BE=function(e,t){return e>>>=0,t||C(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},f.prototype.readFloatLE=function(e,t){return e>>>=0,t||C(e,4,this.length),o.read(this,e,!0,23,4)},f.prototype.readFloatBE=function(e,t){return e>>>=0,t||C(e,4,this.length),o.read(this,e,!1,23,4)},f.prototype.readDoubleLE=function(e,t){return e>>>=0,t||C(e,8,this.length),o.read(this,e,!0,52,8)},f.prototype.readDoubleBE=function(e,t){return e>>>=0,t||C(e,8,this.length),o.read(this,e,!1,52,8)},f.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t>>>=0,n>>>=0,r)||O(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,o=0;for(this[t]=255&e;++o<n&&(i*=256);)this[t+o]=e/i&255;return t+n},f.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t>>>=0,n>>>=0,r)||O(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,o=1;for(this[t+i]=255&e;0<=--i&&(o*=256);)this[t+i]=e/o&255;return t+n},f.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,255,0),this[t]=255&e,t+1},f.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},f.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o<n&&(a*=256);)e<0&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},f.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}var o=n-1,a=1,s=0;for(this[t+o]=255&e;0<=--o&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},f.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},f.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},f.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeFloatLE=function(e,t,n){return D(this,e,t,!0,n)},f.prototype.writeFloatBE=function(e,t,n){return D(this,e,t,!1,n)},f.prototype.writeDoubleLE=function(e,t,n){return T(this,e,t,!0,n)},f.prototype.writeDoubleBE=function(e,t,n){return T(this,e,t,!1,n)},f.prototype.copy=function(e,t,n,r){if(!f.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),0<r&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var i=r-n;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,n,r);else if(this===e&&n<t&&t<r)for(var o=i-1;0<=o;--o)e[o+t]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,r),t);return i},f.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!f.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===e.length){var i=e.charCodeAt(0);("utf8"===r&&i<128||"latin1"===r)&&(e=i)}}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var o;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o<n;++o)this[o]=e;else{var a=f.isBuffer(e)?e:f.from(e,r),s=a.length;if(0===s)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(o=0;o<n-t;++o)this[o+t]=a[o%s]}return this};var B=/[^+/0-9A-Za-z-_]/g;function R(e){return e<16?"0"+e.toString(16):e.toString(16)}function L(e,t){var n;t=t||1/0;for(var r=e.length,i=null,o=[],a=0;a<r;++a){if(55295<(n=e.charCodeAt(a))&&n<57344){if(!i){if(56319<n){-1<(t-=3)&&o.push(239,191,189);continue}if(a+1===r){-1<(t-=3)&&o.push(239,191,189);continue}i=n;continue}if(n<56320){-1<(t-=3)&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&-1<(t-=3)&&o.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function F(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,n,r){for(var i=0;i<r&&!(i+n>=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function U(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function M(e){return e!=e}},{"base64-js":1,ieee754:105}],5:[function(e,t,n){t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},{}],6:[function(e,t,n){t.exports=e("./lib/clean")},{"./lib/clean":7}],7:[function(e,E,t){(function(o){var h=e("./optimizer/level-0/optimize"),d=e("./optimizer/level-1/optimize"),m=e("./optimizer/level-2/optimize"),a=e("./optimizer/validator"),t=e("./options/compatibility"),n=e("./options/fetch"),r=e("./options/format").formatFrom,i=e("./options/inline"),s=e("./options/inline-request"),u=e("./options/inline-timeout"),g=e("./options/optimization-level").OptimizationLevel,l=e("./options/optimization-level").optimizationLevelFrom,c=e("./options/rebase"),f=e("./options/rebase-to"),v=e("./reader/input-source-map-tracker"),b=e("./reader/read-sources"),y=e("./writer/simple"),_=e("./writer/source-maps"),p=E.exports=function(e){e=e||{},this.options={compatibility:t(e.compatibility),fetch:n(e.fetch),format:r(e.format),inline:i(e.inline),inlineRequest:s(e.inlineRequest),inlineTimeout:u(e.inlineTimeout),level:l(e.level),rebase:c(e.rebase),rebaseTo:f(e.rebaseTo),returnPromise:!!e.returnPromise,sourceMap:!!e.sourceMap,sourceMapInlineSources:!!e.sourceMapInlineSources}};function w(e,t,n,r){var i="function"!=typeof n?n:null,f="function"==typeof r?r:"function"==typeof n?n:null,p={stats:{efficiency:0,minifiedSize:0,originalSize:0,startedAt:Date.now(),timeSpent:0},cache:{specificity:{}},errors:[],inlinedStylesheets:[],inputSourceMapTracker:v(),localOnly:!f,options:t,source:null,sourcesContent:{},validator:a(t.compatibility),warnings:[]};return i&&p.inputSourceMapTracker.track(void 0,i),(p.localOnly?function(e){return e()}:o.nextTick)(function(){return b(e,p,function(e){var t,n,r,i,o,a,s,u,l=(p.options.sourceMap?_:y)((r=h(t=e,n=p),r=g.One in n.options.level?d(t,n):t,r=g.Two in n.options.level?m(t,n,!0):r),p),c=(o=p,(i=l).stats=(a=i.styles,s=o,u=Date.now()-s.stats.startedAt,delete s.stats.startedAt,s.stats.timeSpent=u,s.stats.efficiency=1-a.length/s.stats.originalSize,s.stats.minifiedSize=a.length,s.stats),i.errors=o.errors,i.inlinedStylesheets=o.inlinedStylesheets,i.warnings=o.warnings,i);return f?f(0<p.errors.length?p.errors:null,c):c})})}p.process=function(e,t){var n=t.to;return delete t.to,new p(Object.assign({returnPromise:!0,rebaseTo:n},t)).minify(e).then(function(e){return{css:e.styles}})},p.prototype.minify=function(e,t,n){var i=this.options;return i.returnPromise?new Promise(function(n,r){w(e,i,t,function(e,t){return e?r(e):n(t)})}):w(e,i,t,n)}}).call(this,e("_process"))},{"./optimizer/level-0/optimize":9,"./optimizer/level-1/optimize":10,"./optimizer/level-2/optimize":29,"./optimizer/validator":57,"./options/compatibility":59,"./options/fetch":60,"./options/format":61,"./options/inline":64,"./options/inline-request":62,"./options/inline-timeout":63,"./options/optimization-level":65,"./options/rebase":67,"./options/rebase-to":66,"./reader/input-source-map-tracker":71,"./reader/read-sources":77,"./writer/simple":99,"./writer/source-maps":100,_process:112}],8:[function(e,t,n){t.exports={ASTERISK:"asterisk",BANG:"bang",BACKSLASH:"backslash",UNDERSCORE:"underscore"}},{}],9:[function(e,t,n){t.exports=function(e){return e}},{}],10:[function(e,t,n){var r=e("./shorten-hex"),i=e("./shorten-hsl"),o=e("./shorten-rgb"),v=e("./sort-selectors"),b=e("./tidy-rules"),y=e("./tidy-block"),_=e("./tidy-at-rule"),$=e("../hack"),K=e("../remove-unused"),G=e("../restore-from-optimizing"),Y=e("../wrap-for-optimizing").all,W=e("../../options/optimization-level").OptimizationLevel,Q=e("../../tokenizer/token"),Z=e("../../tokenizer/marker"),J=e("../../utils/format-position"),a=e("../../utils/split"),X=e("../../writer/one-time").rules,ee="ignore-property",w="@charset",E=new RegExp("^"+w,"i"),A=e("../../options/rounding-precision").DEFAULT,s=/(?:^|\s|\()(-?\d+)px/,te=/^(\-?[\d\.]+)(m?s)$/,u=/[0-9a-f]/i,ne=/^(?:\-chrome\-|\-[\w\-]+\w|\w[\w\-]+\w|\-\-\S+)$/,x=/^@import/i,re=/^('.*'|".*")$/,ie=/^['"][a-zA-Z][a-zA-Z\d\-_]+['"]$/,oe=/^url\(/i,ae=/^--\S+$/;function se(e){return e&&"-"==e[1][0]&&parseFloat(e[1])<0}function ue(e,t,n){return-1===t.indexOf("#")&&-1==t.indexOf("rgb")&&-1==t.indexOf("hsl")||(t=t.replace(/rgb\((\-?\d+),(\-?\d+),(\-?\d+)\)/g,function(e,t,n,r){return o(t,n,r)}).replace(/hsl\((-?\d+),(-?\d+)%?,(-?\d+)%?\)/g,function(e,t,n,r){return i(t,n,r)}).replace(/(^|[^='"])#([0-9a-f]{6})/gi,function(e,t,n,r,i){var o=i[r+e.length];return o&&u.test(o)?e:n[0]==n[1]&&n[2]==n[3]&&n[4]==n[5]?(t+"#"+n[0]+n[2]+n[4]).toLowerCase():(t+"#"+n).toLowerCase()}).replace(/(^|[^='"])#([0-9a-f]{3})/gi,function(e,t,n){return t+"#"+n.toLowerCase()}).replace(/(rgb|rgba|hsl|hsla)\(([^\)]+)\)/g,function(e,t,n){var r=n.split(",");return"hsl"==t&&3==r.length||"hsla"==t&&4==r.length||"rgb"==t&&3==r.length&&0<n.indexOf("%")||"rgba"==t&&4==r.length&&0<n.indexOf("%")?(-1==r[1].indexOf("%")&&(r[1]+="%"),-1==r[2].indexOf("%")&&(r[2]+="%"),t+"("+r.join(",")+")"):e}),n.colors.opacity&&-1==e.indexOf("background")&&(t=t.replace(/(?:rgba|hsla)\(0,0%?,0%?,0\)/g,function(e){return-1<a(t,",").pop().indexOf("gradient(")?e:"transparent"}))),r(t)}function le(e,t,i){return s.test(t)?t.replace(s,function(e,t){var n,r=parseInt(t);return 0===r?e:(i.properties.shorterLengthUnits&&i.units.pt&&3*r%4==0&&(n=3*r/4+"pt"),i.properties.shorterLengthUnits&&i.units.pc&&r%16==0&&(n=r/16+"pc"),i.properties.shorterLengthUnits&&i.units.in&&r%96==0&&(n=r/96+"in"),n&&(n=e.substring(0,e.indexOf(t))+n),n&&n.length<e.length?n:e)}):t}function ce(e,t,u){return u.enabled&&-1!==t.indexOf(".")?t.replace(u.decimalPointMatcher,"$1$2$3").replace(u.zeroMatcher,function(e,t,n,r){var i=u.units[r].multiplier,o=parseInt(t),a=isNaN(o)?0:o,s=parseFloat(n);return Math.round((a+s)*i)/i+r}):t}function fe(e,t,n){var r,i,o,a,s,u,l,c,f,p,h,d,m,g,v,b,y,_,w,E,A,x,k,C,O,S,D,T,B,R,L,F,q,U,M,N=n.options,P=N.level[W.One],I=Y(t,!0);e:for(var z=0,j=I.length;z<j;z++)if(i=(r=I[z]).name,ne.test(i)||(u=r.all[r.position],n.warnings.push("Invalid property name '"+i+"' at "+J(u[1][2][0])+". Ignoring."),r.unused=!0),0===r.value.length&&(u=r.all[r.position],n.warnings.push("Empty property '"+i+"' at "+J(u[1][2][0])+". Ignoring."),r.unused=!0),r.hack&&((r.hack[0]==$.ASTERISK||r.hack[0]==$.UNDERSCORE)&&!N.compatibility.properties.iePrefixHack||r.hack[0]==$.BACKSLASH&&!N.compatibility.properties.ieSuffixHack||r.hack[0]==$.BANG&&!N.compatibility.properties.ieBangHack)&&(r.unused=!0),P.removeNegativePaddings&&0===i.indexOf("padding")&&(se(r.value[0])||se(r.value[1])||se(r.value[2])||se(r.value[3]))&&(r.unused=!0),!N.compatibility.properties.ieFilters&&he(r)&&(r.unused=!0),!r.unused)if(r.block)fe(e,r.value[0][1],n);else if(!ae.test(i)){for(var V=0,H=r.value.length;V<H;V++){if(o=r.value[V][0],a=r.value[V][1],M=a,s=oe.test(M),o==Q.PROPERTY_BLOCK){r.unused=!0,n.warnings.push("Invalid value token at "+J(a[0][1][2][0])+". Ignoring.");break}if(s&&!n.validator.isUrl(a)){r.unused=!0,n.warnings.push("Broken URL '"+a+"' at "+J(r.value[V][2][0])+". Ignoring.");break}if(s?(a=P.normalizeUrls?a.replace(oe,"url(").replace(/\\?\n|\\?\r\n/g,""):a,a=N.compatibility.properties.urlQuotes?a:!/^url\(['"].+['"]\)$/.test(U=a)||/^url\(['"].*[\*\s\(\)'"].*['"]\)$/.test(U)||/^url\(['"]data:[^;]+;charset/.test(U)?U:U.replace(/["']/g,"")):(q=a,re.test(q)?a=P.removeQuotes?(F=a,"content"==(L=i)||-1<L.indexOf("font-variation-settings")||-1<L.indexOf("font-feature-settings")||-1<L.indexOf("grid-")?F:ie.test(F)?F.substring(1,F.length-1):F):a:(a=le(0,a=ce(0,a=P.removeWhitespace?(R=a,-1<i.indexOf("filter")||-1==R.indexOf(" ")||0===R.indexOf("expression")?R:-1<R.indexOf(Z.SINGLE_QUOTE)||-1<R.indexOf(Z.DOUBLE_QUOTE)?R:(-1<(R=R.replace(/\s+/g," ")).indexOf("calc")&&(R=R.replace(/\) ?\/ ?/g,")/ ")),R.replace(/(\(;?)\s+/g,"$1").replace(/\s+(;?\))/g,"$1").replace(/, /g,","))):a,N.precision),N.compatibility),a=P.replaceTimeUnits?(B=a,te.test(B)?B.replace(te,function(e,t,n){var r;return"ms"==n?r=parseInt(t)/1e3+"s":"s"==n&&(r=1e3*parseFloat(t)+"ms"),r.length<e.length?r:e}):B):a,a=P.replaceZeroUnits?-1==(T=a).indexOf("0")?T:(-1<T.indexOf("-")&&(T=T.replace(/([^\w\d\-]|^)\-0([^\.]|$)/g,"$10$2").replace(/([^\w\d\-]|^)\-0([^\.]|$)/g,"$10$2")),T.replace(/(^|\s)0+([1-9])/g,"$1$2").replace(/(^|\D)\.0+(\D|$)/g,"$10$2").replace(/(^|\D)\.0+(\D|$)/g,"$10$2").replace(/\.([1-9]*)0+(\D|$)/g,function(e,t,n){return(0<t.length?".":"")+t+n}).replace(/(^|\D)0\.(\d)/g,"$1.$2")):a,N.compatibility.properties.zeroUnits&&(a=-1==(D=a).indexOf("0deg")?D:D.replace(/\(0deg\)/g,"(0)"),C=i,O=a,S=N.unitsRegexp,a=/^(?:\-moz\-calc|\-webkit\-calc|calc|rgb|hsl|rgba|hsla)\(/.test(O)?O:"flex"==C||"-ms-flex"==C||"-webkit-flex"==C||"flex-basis"==C||"-webkit-flex-basis"==C?O:0<O.indexOf("%")&&("height"==C||"max-height"==C||"width"==C||"max-width"==C)?O:O.replace(S,"$10$2").replace(S,"$10$2")),N.compatibility.properties.colors&&(a=ue(i,a,N.compatibility)))),w=i,E=a,A=e,x=P.transform,(a=void 0===(k=x(w,E,X(A)))?E:!1===k?ee:k)===ee){r.unused=!0;continue e}r.value[V][1]=a}P.replaceMultipleZeros&&(y=void 0,4==(_=(b=r).value).length&&"0"===_[0][1]&&"0"===_[1][1]&&"0"===_[2][1]&&"0"===_[3][1]&&(y=-1<b.name.indexOf("box-shadow")?2:1),y&&(b.value.splice(y),b.dirty=!0)),"background"==i&&P.optimizeBackground?(v=void 0,1==(v=r.value).length&&"none"==v[0][1]&&(v[0][1]="0 0"),1==v.length&&"transparent"==v[0][1]&&(v[0][1]="0 0")):0===i.indexOf("border")&&0<i.indexOf("radius")&&P.optimizeBorderRadius?(m=void 0,3==(g=(d=r).value).length&&"/"==g[1][1]&&g[0][1]==g[2][1]?m=1:5==g.length&&"/"==g[2][1]&&g[0][1]==g[3][1]&&g[1][1]==g[4][1]?m=2:7==g.length&&"/"==g[3][1]&&g[0][1]==g[4][1]&&g[1][1]==g[5][1]&&g[2][1]==g[6][1]?m=3:9==g.length&&"/"==g[4][1]&&g[0][1]==g[5][1]&&g[1][1]==g[6][1]&&g[2][1]==g[7][1]&&g[3][1]==g[8][1]&&(m=4),m&&(d.value.splice(m),d.dirty=!0)):"filter"==i&&P.optimizeFilter&&N.compatibility.properties.ieFilters?(1==(h=r).value.length&&(h.value[0][1]=h.value[0][1].replace(/progid:DXImageTransform\.Microsoft\.(Alpha|Chroma)(\W)/,function(e,t,n){return t.toLowerCase()+n})),h.value[0][1]=h.value[0][1].replace(/,(\S)/g,", $1").replace(/ ?= ?/g,"=")):"font-weight"==i&&P.optimizeFontWeight?(p=void(f=0),"normal"==(p=(c=r).value[f][1])?p="400":"bold"==p&&(p="700"),c.value[f][1]=p):"outline"==i&&P.optimizeOutline&&(l=void 0,1==(l=r.value).length&&"none"==l[0][1]&&(l[0][1]="0"))}G(I),K(I),function(e,t){var n,r;for(r=0;r<e.length;r++)(n=e[r])[0]==Q.COMMENT&&(pe(n,t),0===n[1].length&&(e.splice(r,1),r--))}(t,N)}function pe(e,t){e[1][2]==Z.EXCLAMATION&&("all"==t.level[W.One].specialComments||t.commentsKept<t.level[W.One].specialComments)?t.commentsKept++:e[1]=[]}function he(e){var t;return("filter"==e.name||"-ms-filter"==e.name)&&(-1<(t=e.value[0][1]).indexOf("progid")||0===t.indexOf("alpha")||0===t.indexOf("chroma"))}t.exports=function e(t,n){var r,i,o,a=n.options,s=a.level[W.One],u=a.compatibility.selectors.ie7Hack,l=a.compatibility.selectors.adjacentSpace,c=a.compatibility.properties.spaceAfterClosingBrace,f=a.format,p=!1,h=!1;a.unitsRegexp=a.unitsRegexp||(r=a,i=["px","em","ex","cm","mm","in","pt","pc","%"],["ch","rem","vh","vm","vmax","vmin","vw"].forEach(function(e){r.compatibility.units[e]&&i.push(e)}),new RegExp("(^|\\s|\\(|,)0(?:"+i.join("|")+")(\\W|$)","g")),a.precision=a.precision||function(e){var t,n,r={matcher:null,units:{}},i=[];for(t in e)(n=e[t])!=A&&(r.units[t]={},r.units[t].value=n,r.units[t].multiplier=Math.pow(10,n),i.push(t));return 0<i.length&&(r.enabled=!0,r.decimalPointMatcher=new RegExp("(\\d)\\.($|"+i.join("|")+")($|W)","g"),r.zeroMatcher=new RegExp("(\\d*)(\\.\\d+)("+i.join("|")+")","g")),r}(s.roundingPrecision),a.commentsKept=a.commentsKept||0;for(var d=0,m=t.length;d<m;d++){var g=t[d];switch(g[0]){case Q.AT_RULE:g[1]=(o=g,x.test(o[1])&&h?"":g[1]),g[1]=s.tidyAtRules?_(g[1]):g[1],p=!0;break;case Q.AT_RULE_BLOCK:fe(g[1],g[2],n),h=!0;break;case Q.NESTED_BLOCK:g[1]=s.tidyBlockScopes?y(g[1],c):g[1],e(g[2],n),h=!0;break;case Q.COMMENT:pe(g,a);break;case Q.RULE:g[1]=s.tidySelectors?b(g[1],!u,l,f,n.warnings):g[1],g[1]=1<g[1].length?v(g[1],s.selectorsSortingMethod):g[1],fe(g[1],g[2],n),h=!0}(g[0]==Q.COMMENT&&0===g[1].length||s.removeEmpty&&(0===g[1].length||g[2]&&0===g[2].length))&&(t.splice(d,1),d--,m--)}return s.cleanupCharsets&&p&&function(e){for(var t=!1,n=0,r=e.length;n<r;n++){var i=e[n];i[0]==Q.AT_RULE&&E.test(i[1])&&(t||-1==i[1].indexOf(w)?(e.splice(n,1),n--,r--):(t=!0,e.splice(n,1),e.unshift([Q.AT_RULE,i[1].replace(E,w)])))}}(t),t}},{"../../options/optimization-level":65,"../../options/rounding-precision":68,"../../tokenizer/marker":83,"../../tokenizer/token":84,"../../utils/format-position":87,"../../utils/split":96,"../../writer/one-time":98,"../hack":8,"../remove-unused":55,"../restore-from-optimizing":56,"../wrap-for-optimizing":58,"./shorten-hex":11,"./shorten-hsl":12,"./shorten-rgb":13,"./sort-selectors":14,"./tidy-at-rule":15,"./tidy-block":16,"./tidy-rules":17}],11:[function(e,t,n){var r={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#0ff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000",blanchedalmond:"#ffebcd",blue:"#00f",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#0ff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#f0f",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#0f0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#f00",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#fff",whitesmoke:"#f5f5f5",yellow:"#ff0",yellowgreen:"#9acd32"},i={},o={};for(var a in r){var s=r[a];a.length<s.length?o[s]=a:i[a]=s}var u=new RegExp("(^| |,|\\))("+Object.keys(i).join("|")+")( |,|\\)|$)","ig"),l=new RegExp("("+Object.keys(o).join("|")+")([^a-f0-9]|$)","ig");function c(e,t,n,r){return t+i[n.toLowerCase()]+r}function f(e,t,n){return o[t.toLowerCase()]+n}t.exports=function(e){var t=-1<e.indexOf("#"),n=e.replace(u,c);return n!=e&&(n=n.replace(u,c)),t?n.replace(l,f):n}},{}],12:[function(e,t,n){function u(e,t,n){return n<0&&(n+=1),1<n&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}t.exports=function(e,t,n){var r=function(e,t,n){var r,i,o;if((e%=360)<0&&(e+=360),e=~~e/360,t<0?t=0:100<t&&(t=100),n<0?n=0:100<n&&(n=100),n=~~n/100,0==(t=~~t/100))r=i=o=n;else{var a=n<.5?n*(1+t):n+t-n*t,s=2*n-a;r=u(s,a,e+1/3),i=u(s,a,e),o=u(s,a,e-1/3)}return[~~(255*r),~~(255*i),~~(255*o)]}(e,t,n),i=r[0].toString(16),o=r[1].toString(16),a=r[2].toString(16);return"#"+(1==i.length?"0":"")+i+(1==o.length?"0":"")+o+(1==a.length?"0":"")+a}},{}],13:[function(e,t,n){t.exports=function(e,t,n){return"#"+("00000"+(Math.max(0,Math.min(parseInt(e),255))<<16|Math.max(0,Math.min(parseInt(t),255))<<8|Math.max(0,Math.min(parseInt(n),255))).toString(16)).slice(-6)}},{}],14:[function(e,t,n){var r=e("../../utils/natural-compare");function i(e,t){return r(e[1],t[1])}function o(e,t){return e[1]>t[1]?1:-1}t.exports=function(e,t){switch(t){case"natural":return e.sort(i);case"standard":return e.sort(o);case"none":case!1:return e}}},{"../../utils/natural-compare":94}],15:[function(e,t,n){t.exports=function(e){return e.replace(/\s+/g," ").replace(/url\(\s+/g,"url(").replace(/\s+\)/g,")").trim()}},{}],16:[function(e,t,n){var i=/^@media\W/;t.exports=function(e,t){var n,r;for(r=e.length-1;0<=r;r--)n=!t&&i.test(e[r][1]),e[r][1]=e[r][1].replace(/\n|\r\n/g," ").replace(/\s+/g," ").replace(/(,|:|\() /g,"$1").replace(/ \)/g,")").replace(/'([a-zA-Z][a-zA-Z\d\-_]+)'/,"$1").replace(/"([a-zA-Z][a-zA-Z\d\-_]+)"/,"$1").replace(n?/\) /g:null,")");return e}},{}],17:[function(e,t,n){var w=e("../../options/format").Spaces,E=e("../../tokenizer/marker"),h=e("../../utils/format-position"),A=/[\s"'][iI]\s*\]/,x=/([\d\w])([iI])\]/g,d=/="([a-zA-Z][a-zA-Z\d\-_]+)"([iI])/g,m=/="([a-zA-Z][a-zA-Z\d\-_]+)"(\s|\])/g,g=/^(?:(?:<!--|-->)\s*)+/,v=/='([a-zA-Z][a-zA-Z\d\-_]+)'([iI])/g,b=/='([a-zA-Z][a-zA-Z\d\-_]+)'(\s|\])/g,k=/[>\+~]/,C=/\s/,s="<";function y(e){var t,n,r,i,o=!1,a=!1;for(r=0,i=e.length;r<i;r++){if(n=e[r],t);else if(n==E.SINGLE_QUOTE||n==E.DOUBLE_QUOTE)a=!a;else{if(!(a||n!=E.CLOSE_CURLY_BRACKET&&n!=E.EXCLAMATION&&n!=s&&n!=E.SEMICOLON)){o=!0;break}if(!a&&0===r&&k.test(n)){o=!0;break}}t=n==E.BACK_SLASH}return o}function _(e,t){var n,r,i,o,a,s,u,l,c,f,p,h,d,m=[],g=0,v=!1,b=!1,y=A.test(e),_=t&&t.spaces[w.AroundSelectorRelation];for(h=0,d=e.length;h<d;h++){if(r=(n=e[h])==E.NEW_LINE_NIX,i=n==E.NEW_LINE_NIX&&e[h-1]==E.CARRIAGE_RETURN,s=u||l,f=!c&&!o&&0===g&&k.test(n),p=C.test(n),a&&s&&i)m.pop(),m.pop();else if(o&&s&&r)m.pop();else if(o)m.push(n);else if(n!=E.OPEN_SQUARE_BRACKET||s)if(n!=E.CLOSE_SQUARE_BRACKET||s)if(n!=E.OPEN_ROUND_BRACKET||s)if(n!=E.CLOSE_ROUND_BRACKET||s)if(n!=E.SINGLE_QUOTE||s)if(n!=E.DOUBLE_QUOTE||s)if(n==E.SINGLE_QUOTE&&s)m.push(n),u=!1;else if(n==E.DOUBLE_QUOTE&&s)m.push(n),l=!1;else{if(p&&v&&!_)continue;!p&&v&&_?(m.push(E.SPACE),m.push(n)):p&&(c||0<g)&&!s||p&&b&&!s||(i||r)&&(c||0<g)&&s||(f&&b&&!_?(m.pop(),m.push(n)):f&&!b&&_?(m.push(E.SPACE),m.push(n)):p?m.push(E.SPACE):m.push(n))}else m.push(n),l=!0;else m.push(n),u=!0;else m.push(n),g--;else m.push(n),g++;else m.push(n),c=!1;else m.push(n),c=!0;a=o,o=n==E.BACK_SLASH,v=f,b=p}return y?m.join("").replace(x,"$1 $2]"):m.join("")}t.exports=function(e,t,n,r,i){var o,a=[],s=[];function u(e,t){return i.push("HTML comment '"+t+"' at "+h(e[2][0])+". Removing."),""}for(var l=0,c=e.length;l<c;l++){var f=e[l],p=f[1];y(p=p.replace(g,u.bind(null,f)))?i.push("Invalid selector '"+f[1]+"' at "+h(f[2][0])+". Ignoring."):(p=_(p,r),p=-1==(o=p).indexOf("'")&&-1==o.indexOf('"')?o:o.replace(v,"=$1 $2").replace(b,"=$1$2").replace(d,"=$1 $2").replace(m,"=$1$2"),n&&0<p.indexOf("nav")&&(p=p.replace(/\+nav(\S|$)/,"+ nav$1")),t&&-1<p.indexOf("*+html ")||t&&-1<p.indexOf("*:first-child+html ")||(-1<p.indexOf("*")&&(p=p.replace(/\*([:#\.\[])/g,"$1").replace(/^(\:first\-child)?\+html/,"*$1+html")),-1<s.indexOf(p)||(f[1]=p,s.push(p),a.push(f))))}return 1==a.length&&0===a[0][1].length&&(i.push("Empty selector '"+a[0][1]+"' at "+h(a[0][2][0])+". Ignoring."),a=[]),a}},{"../../options/format":61,"../../tokenizer/marker":83,"../../utils/format-position":87}],18:[function(e,t,n){var x=e("./invalid-property-error"),s=e("../wrap-for-optimizing").single,m=e("../../tokenizer/token"),A=e("../../tokenizer/marker"),k=e("../../utils/format-position");function C(e){var t,n;for(t=0,n=e.length;t<n;t++)if("inherit"==e[t][1])return!0;return!1}function O(e,t,n){var r=n[e];return r.doubleValues&&2==r.defaultValue.length?s([m.PROPERTY,[m.PROPERTY_NAME,e],[m.PROPERTY_VALUE,r.defaultValue[0]],[m.PROPERTY_VALUE,r.defaultValue[1]]]):r.doubleValues&&1==r.defaultValue.length?s([m.PROPERTY,[m.PROPERTY_NAME,e],[m.PROPERTY_VALUE,r.defaultValue[0]]]):s([m.PROPERTY,[m.PROPERTY_NAME,e],[m.PROPERTY_VALUE,r.defaultValue]])}function l(e,t){var n=t[e.name].components,r=[],i=e.value;if(i.length<1)return[];i.length<2&&(i[1]=i[0].slice(0)),i.length<3&&(i[2]=i[0].slice(0)),i.length<4&&(i[3]=i[1].slice(0));for(var o=n.length-1;0<=o;o--){var a=s([m.PROPERTY,[m.PROPERTY_NAME,n[o]]]);a.value=[i[o]],r.unshift(a)}return r}function r(e,t,n){for(var r,i,o,a=t[e.name],s=[O(a.components[0],0,t),O(a.components[1],0,t),O(a.components[2],0,t)],u=0;u<3;u++){var l=s[u];0<l.name.indexOf("color")?r=l:0<l.name.indexOf("style")?i=l:o=l}if(1==e.value.length&&"inherit"==e.value[0][1]||3==e.value.length&&"inherit"==e.value[0][1]&&"inherit"==e.value[1][1]&&"inherit"==e.value[2][1])return r.value=i.value=o.value=[e.value[0]],s;var c,f,p,h,d,m=e.value.slice(0);return 0<m.length&&(c=1<(f=m.filter((p=n,function(e){return"inherit"!=e[1]&&(p.isWidth(e[1])||p.isUnit(e[1])&&!p.isDynamicUnit(e[1]))&&!p.isStyleKeyword(e[1])&&!p.isColorFunction(e[1])}))).length&&("none"==f[0][1]||"auto"==f[0][1])?f[1]:f[0])&&(o.value=[c],m.splice(m.indexOf(c),1)),0<m.length&&(c=m.filter((h=n,function(e){return"inherit"!=e[1]&&h.isStyleKeyword(e[1])&&!h.isColorFunction(e[1])}))[0])&&(i.value=[c],m.splice(m.indexOf(c),1)),0<m.length&&(c=m.filter((d=n,function(e){return"invert"==e[1]||d.isColor(e[1])||d.isPrefixed(e[1])}))[0])&&(r.value=[c],m.splice(m.indexOf(c),1)),s}t.exports={animation:function(e,t,n){var r,i,o,a=O(e.name+"-duration",0,t),s=O(e.name+"-timing-function",0,t),u=O(e.name+"-delay",0,t),l=O(e.name+"-iteration-count",0,t),c=O(e.name+"-direction",0,t),f=O(e.name+"-fill-mode",0,t),p=O(e.name+"-play-state",0,t),h=O(e.name+"-name",0,t),d=[a,s,u,l,c,f,p,h],m=e.value,g=!1,v=!1,b=!1,y=!1,_=!1,w=!1,E=!1,A=!1;if(1==e.value.length&&"inherit"==e.value[0][1])return a.value=s.value=u.value=l.value=c.value=f.value=p.value=h.value=e.value,d;if(1<m.length&&C(m))throw new x("Invalid animation values at "+k(m[0][2][0])+". Ignoring.");for(i=0,o=m.length;i<o;i++)if(r=m[i],n.isTime(r[1])&&!g)a.value=[r],g=!0;else if(n.isTime(r[1])&&!b)u.value=[r],b=!0;else if(!n.isGlobal(r[1])&&!n.isTimingFunction(r[1])||v)if(!n.isAnimationIterationCountKeyword(r[1])&&!n.isPositiveNumber(r[1])||y)if(n.isAnimationDirectionKeyword(r[1])&&!_)c.value=[r],_=!0;else if(n.isAnimationFillModeKeyword(r[1])&&!w)f.value=[r],w=!0;else if(n.isAnimationPlayStateKeyword(r[1])&&!E)p.value=[r],E=!0;else{if(!n.isAnimationNameKeyword(r[1])&&!n.isIdentifier(r[1])||A)throw new x("Invalid animation value at "+k(r[2][0])+". Ignoring.");h.value=[r],A=!0}else l.value=[r],y=!0;else s.value=[r],v=!0;return d},background:function(e,t,n){var r=O("background-image",0,t),i=O("background-position",0,t),o=O("background-size",0,t),a=O("background-repeat",0,t),s=O("background-attachment",0,t),u=O("background-origin",0,t),l=O("background-clip",0,t),c=O("background-color",0,t),f=[r,i,o,a,s,u,l,c],p=e.value,h=!1,d=!1,m=!1,g=!1,v=!1;if(1==e.value.length&&"inherit"==e.value[0][1])return c.value=r.value=a.value=i.value=o.value=u.value=l.value=e.value,f;if(1==e.value.length&&"0 0"==e.value[0][1])return f;for(var b=p.length-1;0<=b;b--){var y=p[b];if(n.isBackgroundAttachmentKeyword(y[1]))s.value=[y],v=!0;else if(n.isBackgroundClipKeyword(y[1])||n.isBackgroundOriginKeyword(y[1]))d?(u.value=[y],m=!0):(l.value=[y],d=!0),v=!0;else if(n.isBackgroundRepeatKeyword(y[1]))g?a.value.unshift(y):(a.value=[y],g=!0),v=!0;else if(n.isBackgroundPositionKeyword(y[1])||n.isBackgroundSizeKeyword(y[1])||n.isUnit(y[1])||n.isDynamicUnit(y[1])){if(0<b){var _=p[b-1];_[1]==A.FORWARD_SLASH?o.value=[y]:1<b&&p[b-2][1]==A.FORWARD_SLASH?(o.value=[_,y],b-=2):(h||(i.value=[]),i.value.unshift(y),h=!0)}else h||(i.value=[]),i.value.unshift(y),h=!0;v=!0}else c.value[0][1]!=t[c.name].defaultValue&&"none"!=c.value[0][1]||!n.isColor(y[1])&&!n.isPrefixed(y[1])?(n.isUrl(y[1])||n.isFunction(y[1]))&&(r.value=[y],v=!0):(c.value=[y],v=!0)}if(d&&!m&&(u.value=l.value.slice(0)),!v)throw new x("Invalid background value at "+k(p[0][2][0])+". Ignoring.");return f},border:r,borderRadius:function(e,t){for(var n=e.value,r=-1,i=0,o=n.length;i<o;i++)if(n[i][1]==A.FORWARD_SLASH){r=i;break}if(0===r||r===n.length-1)throw new x("Invalid border-radius value at "+k(n[0][2][0])+". Ignoring.");var a=O(e.name,0,t);a.value=-1<r?n.slice(0,r):n.slice(0),a.components=l(a,t);var s=O(e.name,0,t);s.value=-1<r?n.slice(r+1):n.slice(0),s.components=l(s,t);for(var u=0;u<4;u++)a.components[u].multiplex=!0,a.components[u].value=a.components[u].value.concat(s.components[u].value);return a.components},font:function(e,t,n){var r,i,o,a,s=O("font-style",0,t),u=O("font-variant",0,t),l=O("font-weight",0,t),c=O("font-stretch",0,t),f=O("font-size",0,t),p=O("line-height",0,t),h=O("font-family",0,t),d=[s,u,l,c,f,p,h],m=e.value,g=0,v=!1,b=!1,y=!1,_=!1,w=!1,E=!1;if(!m[g])throw new x("Missing font values at "+k(e.all[e.position][1][2][0])+". Ignoring.");if(1==m.length&&"inherit"==m[0][1])return s.value=u.value=l.value=c.value=f.value=p.value=h.value=m,d;if(1==m.length&&(n.isFontKeyword(m[0][1])||n.isGlobal(m[0][1])||n.isPrefixed(m[0][1])))return m[0][1]=A.INTERNAL+m[0][1],s.value=u.value=l.value=c.value=f.value=p.value=h.value=m,d;if(m.length<2||!function(e,t){var n,r,i;for(r=0,i=e.length;r<i;r++)if(n=e[r],t.isFontSizeKeyword(n[1])||t.isUnit(n[1])&&!t.isDynamicUnit(n[1])||t.isFunction(n[1]))return!0;return!1}(m,n)||!function(e,t){var n,r,i;for(r=0,i=e.length;r<i;r++)if(n=e[r],t.isIdentifier(n[1]))return!0;return!1}(m,n))throw new x("Invalid font values at "+k(e.all[e.position][1][2][0])+". Ignoring.");if(1<m.length&&C(m))throw new x("Invalid font values at "+k(m[0][2][0])+". Ignoring.");for(;g<4;){if(r=n.isFontStretchKeyword(m[g][1])||n.isGlobal(m[g][1]),i=n.isFontStyleKeyword(m[g][1])||n.isGlobal(m[g][1]),o=n.isFontVariantKeyword(m[g][1])||n.isGlobal(m[g][1]),a=n.isFontWeightKeyword(m[g][1])||n.isGlobal(m[g][1]),i&&!b)s.value=[m[g]],b=!0;else if(o&&!y)u.value=[m[g]],y=!0;else if(a&&!_)l.value=[m[g]],_=!0;else{if(!r||v){if(i&&b||o&&y||a&&_||r&&v)throw new x("Invalid font style / variant / weight / stretch value at "+k(m[0][2][0])+". Ignoring.");break}c.value=[m[g]],v=!0}g++}if(!(n.isFontSizeKeyword(m[g][1])||n.isUnit(m[g][1])&&!n.isDynamicUnit(m[g][1])))throw new x("Missing font size at "+k(m[0][2][0])+". Ignoring.");if(f.value=[m[g]],w=!0,!m[++g])throw new x("Missing font family at "+k(m[0][2][0])+". Ignoring.");for(w&&m[g]&&m[g][1]==A.FORWARD_SLASH&&m[g+1]&&(n.isLineHeightKeyword(m[g+1][1])||n.isUnit(m[g+1][1])||n.isNumber(m[g+1][1]))&&(p.value=[m[g+1]],g++,g++),h.value=[];m[g];)E=m[g][1]!=A.COMMA&&(E?h.value[h.value.length-1][1]+=A.SPACE+m[g][1]:h.value.push(m[g]),!0),g++;if(0===h.value.length)throw new x("Missing font family at "+k(m[0][2][0])+". Ignoring.");return d},fourValues:l,listStyle:function(e,t,n){var r=O("list-style-type",0,t),i=O("list-style-position",0,t),o=O("list-style-image",0,t),a=[r,i,o];if(1==e.value.length&&"inherit"==e.value[0][1])return r.value=i.value=o.value=[e.value[0]],a;var s=e.value.slice(0),u=s.length,l=0;for(l=0,u=s.length;l<u;l++)if(n.isUrl(s[l][1])||"0"==s[l][1]){o.value=[s[l]],s.splice(l,1);break}for(l=0,u=s.length;l<u;l++)if(n.isListStylePositionKeyword(s[l][1])){i.value=[s[l]],s.splice(l,1);break}return 0<s.length&&(n.isListStyleTypeKeyword(s[0][1])||n.isIdentifier(s[0][1]))&&(r.value=[s[0]]),a},multiplex:function(d){return function(e,t,n){var r,i,o,a,s=[],u=e.value;for(r=0,o=u.length;r<o;r++)","==u[r][1]&&s.push(r);if(0===s.length)return d(e,t,n);var l=[];for(r=0,o=s.length;r<=o;r++){var c=0===r?0:s[r-1]+1,f=r<o?s[r]:u.length,p=O(e.name,0,t);p.value=u.slice(c,f),l.push(d(p,t,n))}var h=l[0];for(r=0,o=h.length;r<o;r++)for(h[r].multiplex=!0,i=1,a=l.length;i<a;i++)h[r].value.push([m.PROPERTY_VALUE,A.COMMA]),Array.prototype.push.apply(h[r].value,l[i][r].value);return h}},outline:r,transition:function(e,t,n){var r,i,o,a=O(e.name+"-property",0,t),s=O(e.name+"-duration",0,t),u=O(e.name+"-timing-function",0,t),l=O(e.name+"-delay",0,t),c=[a,s,u,l],f=e.value,p=!1,h=!1,d=!1,m=!1;if(1==e.value.length&&"inherit"==e.value[0][1])return a.value=s.value=u.value=l.value=e.value,c;if(1<f.length&&C(f))throw new x("Invalid animation values at "+k(f[0][2][0])+". Ignoring.");for(i=0,o=f.length;i<o;i++)if(r=f[i],n.isTime(r[1])&&!p)s.value=[r],p=!0;else if(n.isTime(r[1])&&!h)l.value=[r],h=!0;else if(!n.isGlobal(r[1])&&!n.isTimingFunction(r[1])||m){if(!n.isIdentifier(r[1])||d)throw new x("Invalid animation value at "+k(r[2][0])+". Ignoring.");a.value=[r],d=!0}else u.value=[r],m=!0;return c}}},{"../../tokenizer/marker":83,"../../tokenizer/token":84,"../../utils/format-position":87,"../wrap-for-optimizing":58,"./invalid-property-error":23}],19:[function(e,t,n){var i=e("./properties/understandable");function r(r){return function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isKeyword(r)(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isKeyword(r)(n))}}function o(r){return function(e,t,n){return!!(i(e,t,n,0,!0)||e.isKeyword(r)(n)||e.isGlobal(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||(e.isKeyword(r)(n)||e.isGlobal(n)))}}function a(e,t,n){return i=t,o=n,!(!(r=e).isFunction(i)||!r.isFunction(o)||i.substring(0,i.indexOf("("))!==o.substring(0,o.indexOf("(")))||t===n;var r,i,o}function s(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isUnit(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!(e.isUnit(t)&&!e.isUnit(n))&&(!!e.isUnit(n)||!e.isUnit(t)&&(!(!e.isFunction(t)||e.isPrefixed(t)||!e.isFunction(n)||e.isPrefixed(n))||a(e,t,n))))}function u(e){var r=o(e);return function(e,t,n){return s(e,t,n)||r(e,t,n)}}t.exports={generic:{color:function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isColor(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!(!e.colorOpacity&&(e.isRgbColor(t)||e.isHslColor(t)))&&!(!e.colorOpacity&&(e.isRgbColor(n)||e.isHslColor(n)))&&(!(!e.isColor(t)||!e.isColor(n))||a(e,t,n)))},components:function(i){return function(e,t,n,r){return i[r](e,t,n)}},image:function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isImage(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!!e.isImage(n)||!e.isImage(t)&&a(e,t,n))},propertyName:function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isIdentifier(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isIdentifier(n))},time:function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isTime(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!(e.isTime(t)&&!e.isTime(n))&&(!!e.isTime(n)||!e.isTime(t)&&(!(!e.isFunction(t)||e.isPrefixed(t)||!e.isFunction(n)||e.isPrefixed(n))||a(e,t,n))))},timingFunction:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isTimingFunction(n)||e.isGlobal(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isTimingFunction(n)||e.isGlobal(n))},unit:s,unitOrNumber:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isUnit(n)||e.isNumber(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!((e.isUnit(t)||e.isNumber(t))&&!e.isUnit(n)&&!e.isNumber(n))&&(!(!e.isUnit(n)&&!e.isNumber(n))||!e.isUnit(t)&&!e.isNumber(t)&&(!(!e.isFunction(t)||e.isPrefixed(t)||!e.isFunction(n)||e.isPrefixed(n))||a(e,t,n))))}},property:{animationDirection:o("animation-direction"),animationFillMode:r("animation-fill-mode"),animationIterationCount:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isAnimationIterationCountKeyword(n)||e.isPositiveNumber(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isAnimationIterationCountKeyword(n)||e.isPositiveNumber(n))},animationName:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isAnimationNameKeyword(n)||e.isIdentifier(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isAnimationNameKeyword(n)||e.isIdentifier(n))},animationPlayState:o("animation-play-state"),backgroundAttachment:r("background-attachment"),backgroundClip:o("background-clip"),backgroundOrigin:r("background-origin"),backgroundPosition:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isBackgroundPositionKeyword(n)||e.isGlobal(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!(!e.isBackgroundPositionKeyword(n)&&!e.isGlobal(n))||s(e,t,n))},backgroundRepeat:r("background-repeat"),backgroundSize:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isBackgroundSizeKeyword(n)||e.isGlobal(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!(!e.isBackgroundSizeKeyword(n)&&!e.isGlobal(n))||s(e,t,n))},bottom:u("bottom"),borderCollapse:r("border-collapse"),borderStyle:o("*-style"),clear:o("clear"),cursor:o("cursor"),display:o("display"),float:o("float"),left:u("left"),fontFamily:function(e,t,n){return i(e,t,n,0,!0)},fontStretch:o("font-stretch"),fontStyle:o("font-style"),fontVariant:o("font-variant"),fontWeight:o("font-weight"),listStyleType:o("list-style-type"),listStylePosition:o("list-style-position"),outlineStyle:o("*-style"),overflow:o("overflow"),position:o("position"),right:u("right"),textAlign:o("text-align"),textDecoration:o("text-decoration"),textOverflow:o("text-overflow"),textShadow:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isUnit(n)||e.isColor(n)||e.isGlobal(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isUnit(n)||e.isColor(n)||e.isGlobal(n))},top:u("top"),transform:a,verticalAlign:u("vertical-align"),visibility:o("visibility"),whiteSpace:o("white-space"),zIndex:function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isZIndex(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isZIndex(n))}}}},{"./properties/understandable":40}],20:[function(e,t,n){var r=e("../wrap-for-optimizing").single,i=e("../../tokenizer/token");function o(e){var t=r([i.PROPERTY,[i.PROPERTY_NAME,e.name]]);return t.important=e.important,t.hack=e.hack,t.unused=!1,t}t.exports={deep:function(e){for(var t=o(e),n=e.components.length-1;0<=n;n--){var r=o(e.components[n]);r.value=e.components[n].value.slice(0),t.components.unshift(r)}return t.dirty=!0,t.value=e.value.slice(0),t},shallow:o}},{"../../tokenizer/token":84,"../wrap-for-optimizing":58}],21:[function(e,t,n){var r=e("./break-up"),i=e("./can-override"),o=e("./restore"),a=e("../../utils/override"),s={animation:{canOverride:i.generic.components([i.generic.time,i.generic.timingFunction,i.generic.time,i.property.animationIterationCount,i.property.animationDirection,i.property.animationFillMode,i.property.animationPlayState,i.property.animationName]),components:["animation-duration","animation-timing-function","animation-delay","animation-iteration-count","animation-direction","animation-fill-mode","animation-play-state","animation-name"],breakUp:r.multiplex(r.animation),defaultValue:"none",restore:o.multiplex(o.withoutDefaults),shorthand:!0,vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-delay":{canOverride:i.generic.time,componentOf:["animation"],defaultValue:"0s",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-direction":{canOverride:i.property.animationDirection,componentOf:["animation"],defaultValue:"normal",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-duration":{canOverride:i.generic.time,componentOf:["animation"],defaultValue:"0s",intoMultiplexMode:"real",keepUnlessDefault:"animation-delay",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-fill-mode":{canOverride:i.property.animationFillMode,componentOf:["animation"],defaultValue:"none",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-iteration-count":{canOverride:i.property.animationIterationCount,componentOf:["animation"],defaultValue:"1",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-name":{canOverride:i.property.animationName,componentOf:["animation"],defaultValue:"none",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-play-state":{canOverride:i.property.animationPlayState,componentOf:["animation"],defaultValue:"running",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-timing-function":{canOverride:i.generic.timingFunction,componentOf:["animation"],defaultValue:"ease",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},background:{canOverride:i.generic.components([i.generic.image,i.property.backgroundPosition,i.property.backgroundSize,i.property.backgroundRepeat,i.property.backgroundAttachment,i.property.backgroundOrigin,i.property.backgroundClip,i.generic.color]),components:["background-image","background-position","background-size","background-repeat","background-attachment","background-origin","background-clip","background-color"],breakUp:r.multiplex(r.background),defaultValue:"0 0",restore:o.multiplex(o.background),shortestValue:"0",shorthand:!0},"background-attachment":{canOverride:i.property.backgroundAttachment,componentOf:["background"],defaultValue:"scroll",intoMultiplexMode:"real"},"background-clip":{canOverride:i.property.backgroundClip,componentOf:["background"],defaultValue:"border-box",intoMultiplexMode:"real",shortestValue:"border-box"},"background-color":{canOverride:i.generic.color,componentOf:["background"],defaultValue:"transparent",intoMultiplexMode:"real",multiplexLastOnly:!0,nonMergeableValue:"none",shortestValue:"red"},"background-image":{canOverride:i.generic.image,componentOf:["background"],defaultValue:"none",intoMultiplexMode:"default"},"background-origin":{canOverride:i.property.backgroundOrigin,componentOf:["background"],defaultValue:"padding-box",intoMultiplexMode:"real",shortestValue:"border-box"},"background-position":{canOverride:i.property.backgroundPosition,componentOf:["background"],defaultValue:["0","0"],doubleValues:!0,intoMultiplexMode:"real",shortestValue:"0"},"background-repeat":{canOverride:i.property.backgroundRepeat,componentOf:["background"],defaultValue:["repeat"],doubleValues:!0,intoMultiplexMode:"real"},"background-size":{canOverride:i.property.backgroundSize,componentOf:["background"],defaultValue:["auto"],doubleValues:!0,intoMultiplexMode:"real",shortestValue:"0 0"},bottom:{canOverride:i.property.bottom,defaultValue:"auto"},border:{breakUp:r.border,canOverride:i.generic.components([i.generic.unit,i.property.borderStyle,i.generic.color]),components:["border-width","border-style","border-color"],defaultValue:"none",overridesShorthands:["border-bottom","border-left","border-right","border-top"],restore:o.withoutDefaults,shorthand:!0,shorthandComponents:!0},"border-bottom":{breakUp:r.border,canOverride:i.generic.components([i.generic.unit,i.property.borderStyle,i.generic.color]),components:["border-bottom-width","border-bottom-style","border-bottom-color"],defaultValue:"none",restore:o.withoutDefaults,shorthand:!0},"border-bottom-color":{canOverride:i.generic.color,componentOf:["border-bottom","border-color"],defaultValue:"none"},"border-bottom-left-radius":{canOverride:i.generic.unit,componentOf:["border-radius"],defaultValue:"0",vendorPrefixes:["-moz-","-o-"]},"border-bottom-right-radius":{canOverride:i.generic.unit,componentOf:["border-radius"],defaultValue:"0",vendorPrefixes:["-moz-","-o-"]},"border-bottom-style":{canOverride:i.property.borderStyle,componentOf:["border-bottom","border-style"],defaultValue:"none"},"border-bottom-width":{canOverride:i.generic.unit,componentOf:["border-bottom","border-width"],defaultValue:"medium",oppositeTo:"border-top-width",shortestValue:"0"},"border-collapse":{canOverride:i.property.borderCollapse,defaultValue:"separate"},"border-color":{breakUp:r.fourValues,canOverride:i.generic.components([i.generic.color,i.generic.color,i.generic.color,i.generic.color]),componentOf:["border"],components:["border-top-color","border-right-color","border-bottom-color","border-left-color"],defaultValue:"none",restore:o.fourValues,shortestValue:"red",shorthand:!0},"border-left":{breakUp:r.border,canOverride:i.generic.components([i.generic.unit,i.property.borderStyle,i.generic.color]),components:["border-left-width","border-left-style","border-left-color"],defaultValue:"none",restore:o.withoutDefaults,shorthand:!0},"border-left-color":{canOverride:i.generic.color,componentOf:["border-color","border-left"],defaultValue:"none"},"border-left-style":{canOverride:i.property.borderStyle,componentOf:["border-left","border-style"],defaultValue:"none"},"border-left-width":{canOverride:i.generic.unit,componentOf:["border-left","border-width"],defaultValue:"medium",oppositeTo:"border-right-width",shortestValue:"0"},"border-radius":{breakUp:r.borderRadius,canOverride:i.generic.components([i.generic.unit,i.generic.unit,i.generic.unit,i.generic.unit]),components:["border-top-left-radius","border-top-right-radius","border-bottom-right-radius","border-bottom-left-radius"],defaultValue:"0",restore:o.borderRadius,shorthand:!0,vendorPrefixes:["-moz-","-o-"]},"border-right":{breakUp:r.border,canOverride:i.generic.components([i.generic.unit,i.property.borderStyle,i.generic.color]),components:["border-right-width","border-right-style","border-right-color"],defaultValue:"none",restore:o.withoutDefaults,shorthand:!0},"border-right-color":{canOverride:i.generic.color,componentOf:["border-color","border-right"],defaultValue:"none"},"border-right-style":{canOverride:i.property.borderStyle,componentOf:["border-right","border-style"],defaultValue:"none"},"border-right-width":{canOverride:i.generic.unit,componentOf:["border-right","border-width"],defaultValue:"medium",oppositeTo:"border-left-width",shortestValue:"0"},"border-style":{breakUp:r.fourValues,canOverride:i.generic.components([i.property.borderStyle,i.property.borderStyle,i.property.borderStyle,i.property.borderStyle]),componentOf:["border"],components:["border-top-style","border-right-style","border-bottom-style","border-left-style"],defaultValue:"none",restore:o.fourValues,shorthand:!0},"border-top":{breakUp:r.border,canOverride:i.generic.components([i.generic.unit,i.property.borderStyle,i.generic.color]),components:["border-top-width","border-top-style","border-top-color"],defaultValue:"none",restore:o.withoutDefaults,shorthand:!0},"border-top-color":{canOverride:i.generic.color,componentOf:["border-color","border-top"],defaultValue:"none"},"border-top-left-radius":{canOverride:i.generic.unit,componentOf:["border-radius"],defaultValue:"0",vendorPrefixes:["-moz-","-o-"]},"border-top-right-radius":{canOverride:i.generic.unit,componentOf:["border-radius"],defaultValue:"0",vendorPrefixes:["-moz-","-o-"]},"border-top-style":{canOverride:i.property.borderStyle,componentOf:["border-style","border-top"],defaultValue:"none"},"border-top-width":{canOverride:i.generic.unit,componentOf:["border-top","border-width"],defaultValue:"medium",oppositeTo:"border-bottom-width",shortestValue:"0"},"border-width":{breakUp:r.fourValues,canOverride:i.generic.components([i.generic.unit,i.generic.unit,i.generic.unit,i.generic.unit]),componentOf:["border"],components:["border-top-width","border-right-width","border-bottom-width","border-left-width"],defaultValue:"medium",restore:o.fourValues,shortestValue:"0",shorthand:!0},clear:{canOverride:i.property.clear,defaultValue:"none"},color:{canOverride:i.generic.color,defaultValue:"transparent",shortestValue:"red"},cursor:{canOverride:i.property.cursor,defaultValue:"auto"},display:{canOverride:i.property.display},float:{canOverride:i.property.float,defaultValue:"none"},font:{breakUp:r.font,canOverride:i.generic.components([i.property.fontStyle,i.property.fontVariant,i.property.fontWeight,i.property.fontStretch,i.generic.unit,i.generic.unit,i.property.fontFamily]),components:["font-style","font-variant","font-weight","font-stretch","font-size","line-height","font-family"],restore:o.font,shorthand:!0},"font-family":{canOverride:i.property.fontFamily,defaultValue:"user|agent|specific"},"font-size":{canOverride:i.generic.unit,defaultValue:"medium",shortestValue:"0"},"font-stretch":{canOverride:i.property.fontStretch,defaultValue:"normal"},"font-style":{canOverride:i.property.fontStyle,defaultValue:"normal"},"font-variant":{canOverride:i.property.fontVariant,defaultValue:"normal"},"font-weight":{canOverride:i.property.fontWeight,defaultValue:"normal",shortestValue:"400"},height:{canOverride:i.generic.unit,defaultValue:"auto",shortestValue:"0"},left:{canOverride:i.property.left,defaultValue:"auto"},"line-height":{canOverride:i.generic.unitOrNumber,defaultValue:"normal",shortestValue:"0"},"list-style":{canOverride:i.generic.components([i.property.listStyleType,i.property.listStylePosition,i.property.listStyleImage]),components:["list-style-type","list-style-position","list-style-image"],breakUp:r.listStyle,restore:o.withoutDefaults,defaultValue:"outside",shortestValue:"none",shorthand:!0},"list-style-image":{canOverride:i.generic.image,componentOf:["list-style"],defaultValue:"none"},"list-style-position":{canOverride:i.property.listStylePosition,componentOf:["list-style"],defaultValue:"outside",shortestValue:"inside"},"list-style-type":{canOverride:i.property.listStyleType,componentOf:["list-style"],defaultValue:"decimal|disc",shortestValue:"none"},margin:{breakUp:r.fourValues,canOverride:i.generic.components([i.generic.unit,i.generic.unit,i.generic.unit,i.generic.unit]),components:["margin-top","margin-right","margin-bottom","margin-left"],defaultValue:"0",restore:o.fourValues,shorthand:!0},"margin-bottom":{canOverride:i.generic.unit,componentOf:["margin"],defaultValue:"0",oppositeTo:"margin-top"},"margin-left":{canOverride:i.generic.unit,componentOf:["margin"],defaultValue:"0",oppositeTo:"margin-right"},"margin-right":{canOverride:i.generic.unit,componentOf:["margin"],defaultValue:"0",oppositeTo:"margin-left"},"margin-top":{canOverride:i.generic.unit,componentOf:["margin"],defaultValue:"0",oppositeTo:"margin-bottom"},outline:{canOverride:i.generic.components([i.generic.color,i.property.outlineStyle,i.generic.unit]),components:["outline-color","outline-style","outline-width"],breakUp:r.outline,restore:o.withoutDefaults,defaultValue:"0",shorthand:!0},"outline-color":{canOverride:i.generic.color,componentOf:["outline"],defaultValue:"invert",shortestValue:"red"},"outline-style":{canOverride:i.property.outlineStyle,componentOf:["outline"],defaultValue:"none"},"outline-width":{canOverride:i.generic.unit,componentOf:["outline"],defaultValue:"medium",shortestValue:"0"},overflow:{canOverride:i.property.overflow,defaultValue:"visible"},"overflow-x":{canOverride:i.property.overflow,defaultValue:"visible"},"overflow-y":{canOverride:i.property.overflow,defaultValue:"visible"},padding:{breakUp:r.fourValues,canOverride:i.generic.components([i.generic.unit,i.generic.unit,i.generic.unit,i.generic.unit]),components:["padding-top","padding-right","padding-bottom","padding-left"],defaultValue:"0",restore:o.fourValues,shorthand:!0},"padding-bottom":{canOverride:i.generic.unit,componentOf:["padding"],defaultValue:"0",oppositeTo:"padding-top"},"padding-left":{canOverride:i.generic.unit,componentOf:["padding"],defaultValue:"0",oppositeTo:"padding-right"},"padding-right":{canOverride:i.generic.unit,componentOf:["padding"],defaultValue:"0",oppositeTo:"padding-left"},"padding-top":{canOverride:i.generic.unit,componentOf:["padding"],defaultValue:"0",oppositeTo:"padding-bottom"},position:{canOverride:i.property.position,defaultValue:"static"},right:{canOverride:i.property.right,defaultValue:"auto"},"text-align":{canOverride:i.property.textAlign,defaultValue:"left|right"},"text-decoration":{canOverride:i.property.textDecoration,defaultValue:"none"},"text-overflow":{canOverride:i.property.textOverflow,defaultValue:"none"},"text-shadow":{canOverride:i.property.textShadow,defaultValue:"none"},top:{canOverride:i.property.top,defaultValue:"auto"},transform:{canOverride:i.property.transform,vendorPrefixes:["-moz-","-ms-","-webkit-"]},transition:{breakUp:r.multiplex(r.transition),canOverride:i.generic.components([i.property.transitionProperty,i.generic.time,i.generic.timingFunction,i.generic.time]),components:["transition-property","transition-duration","transition-timing-function","transition-delay"],defaultValue:"none",restore:o.multiplex(o.withoutDefaults),shorthand:!0,vendorPrefixes:["-moz-","-o-","-webkit-"]},"transition-delay":{canOverride:i.generic.time,componentOf:["transition"],defaultValue:"0s",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"transition-duration":{canOverride:i.generic.time,componentOf:["transition"],defaultValue:"0s",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"transition-property":{canOverride:i.generic.propertyName,componentOf:["transition"],defaultValue:"all",intoMultiplexMode:"placeholder",placeholderValue:"_",vendorPrefixes:["-moz-","-o-","-webkit-"]},"transition-timing-function":{canOverride:i.generic.timingFunction,componentOf:["transition"],defaultValue:"ease",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"vertical-align":{canOverride:i.property.verticalAlign,defaultValue:"baseline"},visibility:{canOverride:i.property.visibility,defaultValue:"visible"},"white-space":{canOverride:i.property.whiteSpace,defaultValue:"normal"},width:{canOverride:i.generic.unit,defaultValue:"auto",shortestValue:"0"},"z-index":{canOverride:i.property.zIndex,defaultValue:"auto"}};function u(e,t){var n=a(s[e],{});return"componentOf"in n&&(n.componentOf=n.componentOf.map(function(e){return t+e})),"components"in n&&(n.components=n.components.map(function(e){return t+e})),"keepUnlessDefault"in n&&(n.keepUnlessDefault=t+n.keepUnlessDefault),n}var l={};for(var c in s){var f=s[c];if("vendorPrefixes"in f){for(var p=0;p<f.vendorPrefixes.length;p++){var h=f.vendorPrefixes[p],d=u(c,h);delete d.vendorPrefixes,l[h+c]=d}delete f.vendorPrefixes}}t.exports=a(s,l)},{"../../utils/override":95,"./break-up":18,"./can-override":19,"./restore":49}],22:[function(e,t,n){var c=e("../../tokenizer/token"),f=e("../../writer/one-time").rules,p=e("../../writer/one-time").value;t.exports=function e(t){var n,r,i,o,a,s,u=[];if(t[0]==c.RULE)for(n=!/[\.\+>~]/.test(f(t[1])),a=0,s=t[2].length;a<s;a++)(r=t[2][a])[0]==c.PROPERTY&&0!==(i=r[1][1]).length&&0!==i.indexOf("--")&&(o=p(r,a),u.push([i,o,(l=i,"list-style"==l?l:0<l.indexOf("-radius")?"border-radius":"border-collapse"==l||"border-spacing"==l||"border-image"==l?l:0===l.indexOf("border-")&&/^border\-\w+\-\w+$/.test(l)?l.match(/border\-\w+/)[0]:0===l.indexOf("border-")&&/^border\-\w+$/.test(l)?"border":0===l.indexOf("text-")?l:"-chrome-"==l?l:l.replace(/^\-\w+\-/,"").match(/([a-zA-Z]+)/)[0].toLowerCase()),t[2][a],i+":"+o,t[1],n]));else if(t[0]==c.NESTED_BLOCK)for(a=0,s=t[2].length;a<s;a++)u=u.concat(e(t[2][a]));var l;return u}},{"../../tokenizer/token":84,"../../writer/one-time":98}],23:[function(e,t,n){function r(e){this.name="InvalidPropertyError",this.message=e,this.stack=(new Error).stack}(r.prototype=Object.create(Error.prototype)).constructor=r,t.exports=r},{}],24:[function(e,t,n){var h=e("../../tokenizer/marker"),p=e("../../utils/split"),d=/\/deep\//,m=/^::/,g=":not",v=[":dir",":lang",":not",":nth-child",":nth-last-child",":nth-last-of-type",":nth-of-type"],b=/[>\+~]/,y=[":after",":before",":first-letter",":first-line",":lang"],_=["::after","::before","::first-letter","::first-line"],w={DOUBLE_QUOTE:"double-quote",SINGLE_QUOTE:"single-quote",ROOT:"root"};function E(e){var t,n,r,i,o,a,s=[],u=[],l=w.ROOT,c=0,f=!1,p=!1;for(o=0,a=e.length;o<a;o++)t=e[o],i=!r&&b.test(t),n=l==w.DOUBLE_QUOTE||l==w.SINGLE_QUOTE,r?u.push(t):t==h.DOUBLE_QUOTE&&l==w.ROOT?(u.push(t),l=w.DOUBLE_QUOTE):t==h.DOUBLE_QUOTE&&l==w.DOUBLE_QUOTE?(u.push(t),l=w.ROOT):t==h.SINGLE_QUOTE&&l==w.ROOT?(u.push(t),l=w.SINGLE_QUOTE):t==h.SINGLE_QUOTE&&l==w.SINGLE_QUOTE?(u.push(t),l=w.ROOT):n?u.push(t):t==h.OPEN_ROUND_BRACKET?(u.push(t),c++):t==h.CLOSE_ROUND_BRACKET&&1==c&&f?(u.push(t),s.push(u.join("")),c--,f=!(u=[])):t==h.CLOSE_ROUND_BRACKET?(u.push(t),c--):t==h.COLON&&0===c&&f&&!p?(s.push(u.join("")),(u=[]).push(t)):t!=h.COLON||0!==c||p?t==h.SPACE&&0===c&&f?(s.push(u.join("")),f=!(u=[])):i&&0===c&&f?(s.push(u.join("")),f=!(u=[])):u.push(t):((u=[]).push(t),f=!0),r=t==h.BACK_SLASH,p=t==h.COLON;return 0<u.length&&f&&s.push(u.join("")),s}t.exports=function(e,t,n,r){var i,o,a,s,u,l,c,f=p(e,h.COMMA);for(o=0,a=f.length;o<a;o++)if(0===(i=f[o]).length||(c=i,d.test(c))||-1<i.indexOf(h.COLON)&&(u=E(s=i),l=r,!(function(e,t,n){var r,i,o,a;for(o=0,a=e.length;o<a;o++)if(r=e[o],i=-1<r.indexOf(h.OPEN_ROUND_BRACKET)?r.substring(0,r.indexOf(h.OPEN_ROUND_BRACKET)):r,-1===t.indexOf(i)&&-1===n.indexOf(i))return!1;return!0}(u,t,n)&&function(e){var t,n,r,i,o,a;for(o=0,a=e.length;o<a;o++){if(t=e[o],r=t.indexOf(h.OPEN_ROUND_BRACKET),n=(i=-1<r)?t.substring(0,r):t,i&&-1==v.indexOf(n))return!1;if(!i&&-1<v.indexOf(n))return!1}return!0}(u)&&(u.length<2||!function(e,t){var n,r,i,o,a,s,u,l,c=0;for(u=0,l=t.length;u<l&&(n=t[u],i=t[u+1]);u++)if(r=e.indexOf(n,c),o=e.indexOf(n,r+1),c=o,r+n.length==o&&(a=-1<n.indexOf(h.OPEN_ROUND_BRACKET)?n.substring(0,n.indexOf(h.OPEN_ROUND_BRACKET)):n,s=-1<i.indexOf(h.OPEN_ROUND_BRACKET)?i.substring(0,i.indexOf(h.OPEN_ROUND_BRACKET)):i,a!=g||s!=g))return!0;return!1}(s,u))&&(u.length<2||l&&function(e){var t,n,r,i,o=0;for(n=0,r=e.length;n<r;n++)if(t=e[n],i=t,m.test(i)?o+=-1<_.indexOf(t)?1:0:o+=-1<y.indexOf(t)?1:0,1<o)return!1;return!0}(u)))))return!1;return!0}},{"../../tokenizer/marker":83,"../../utils/split":96}],25:[function(e,t,n){var h=e("./is-mergeable"),d=e("./properties/optimize"),m=e("../level-1/sort-selectors"),g=e("../level-1/tidy-rules"),v=e("../../options/optimization-level").OptimizationLevel,b=e("../../writer/one-time").body,y=e("../../writer/one-time").rules,_=e("../../tokenizer/token");t.exports=function(e,t){for(var n=[null,[],[]],r=t.options,i=r.compatibility.selectors.adjacentSpace,o=r.level[v.One].selectorsSortingMethod,a=r.compatibility.selectors.mergeablePseudoClasses,s=r.compatibility.selectors.mergeablePseudoElements,u=r.compatibility.selectors.mergeLimit,l=r.compatibility.selectors.multiplePseudoMerging,c=0,f=e.length;c<f;c++){var p=e[c];p[0]==_.RULE?n[0]==_.RULE&&y(p[1])==y(n[1])?(Array.prototype.push.apply(n[2],p[2]),d(n[2],!0,!0,t),p[2]=[]):n[0]==_.RULE&&b(p[2])==b(n[2])&&h(y(p[1]),a,s,l)&&h(y(n[1]),a,s,l)&&n[1].length<u?(n[1]=g(n[1].concat(p[1]),!1,i,!1,t.warnings),n[1]=1<n.length?m(n[1],o):n[1],p[2]=[]):n=p:n=[null,[],[]]}}},{"../../options/optimization-level":65,"../../tokenizer/token":84,"../../writer/one-time":98,"../level-1/sort-selectors":14,"../level-1/tidy-rules":17,"./is-mergeable":24,"./properties/optimize":36}],26:[function(e,t,n){var C=e("./reorderable").canReorder,f=e("./reorderable").canReorderSingle,O=e("./extract-properties"),p=e("./rules-overlap"),S=e("../../writer/one-time").rules,D=e("../../options/optimization-level").OptimizationLevel,T=e("../../tokenizer/token");function B(e,t,n){var r,i,o,a,s,u,l,c;for(s=0,u=e.length;s<u;s++)for(i=(r=e[s])[5],l=0,c=t.length;l<c;l++)if(a=(o=t[l])[5],p(i,a,!0)&&!f(r,o,n))return!1;return!0}t.exports=function(e,t){for(var n=t.options.level[D.Two].mergeSemantically,r=t.cache.specificity,i={},o=[],a=e.length-1;0<=a;a--){var s=e[a];if(s[0]==T.NESTED_BLOCK){var u=S(s[1]),l=i[u];l||(l=[],i[u]=l),l.push(a)}}for(var c in i){var f=i[c];e:for(var p=f.length-1;0<p;p--){var h=f[p],d=e[h],m=f[p-1],g=e[m];t:for(var v=1;-1<=v;v-=2){for(var b=1==v,y=b?h+1:m-1,_=b?m:h,w=b?1:-1,E=b?d:g,A=b?g:d,x=O(E);y!=_;){var k=O(e[y]);if(y+=w,!(n&&B(x,k,r)||C(x,k,r)))continue t}A[2]=b?E[2].concat(A[2]):A[2].concat(E[2]),E[2]=[],o.push(A);continue e}}}return o}},{"../../options/optimization-level":65,"../../tokenizer/token":84,"../../writer/one-time":98,"./extract-properties":22,"./reorderable":47,"./rules-overlap":51}],27:[function(e,t,n){var g=e("./is-mergeable"),v=e("../level-1/sort-selectors"),b=e("../level-1/tidy-rules"),y=e("../../options/optimization-level").OptimizationLevel,_=e("../../writer/one-time").body,w=e("../../writer/one-time").rules,E=e("../../tokenizer/token");function a(e){return e.replace(/--[^ ,>\+~:]+/g,"")}function A(e,t){var n=a(w(e[1]));for(var r in t){var i=t[r],o=a(w(i[1]));(-1<o.indexOf(n)||-1<n.indexOf(o))&&delete t[r]}}t.exports=function(e,t){for(var n,r,i=t.options,o=i.level[y.Two].mergeSemantically,a=i.compatibility.selectors.adjacentSpace,s=i.level[y.One].selectorsSortingMethod,u=i.compatibility.selectors.mergeablePseudoClasses,l=i.compatibility.selectors.mergeablePseudoElements,c=i.compatibility.selectors.multiplePseudoMerging,f={},p=e.length-1;0<=p;p--){var h=e[p];if(h[0]==E.RULE){0<h[2].length&&!o&&(r=w(h[1]),/\.|\*| :/.test(r))&&(f={}),0<h[2].length&&o&&(n=void 0,-1<(n=w(h[1])).indexOf("__")||-1<n.indexOf("--"))&&A(h,f);var d=_(h[2]),m=f[d];m&&g(w(h[1]),u,l,c)&&g(w(m[1]),u,l,c)&&(0<h[2].length?(h[1]=b(m[1].concat(h[1]),!1,a,!1,t.warnings),h[1]=1<h[1].length?v(h[1],s):h[1]):h[1]=m[1].concat(h[1]),m[2]=[],f[d]=null),f[_(h[2])]=h}}}},{"../../options/optimization-level":65,"../../tokenizer/token":84,"../../writer/one-time":98,"../level-1/sort-selectors":14,"../level-1/tidy-rules":17,"./is-mergeable":24}],28:[function(e,t,n){var A=e("./reorderable").canReorder,x=e("./extract-properties"),k=e("./properties/optimize"),C=e("../../writer/one-time").rules,O=e("../../tokenizer/token");t.exports=function(e,t){var n,r=t.cache.specificity,i={},o=[];for(n=e.length-1;0<=n;n--)if(e[n][0]==O.RULE&&0!==e[n][2].length){var a=C(e[n][1]);i[a]=[n].concat(i[a]||[]),2==i[a].length&&o.push(a)}for(n=o.length-1;0<=n;n--){var s=i[o[n]];e:for(var u=s.length-1;0<u;u--){var l=s[u-1],c=e[l],f=s[u],p=e[f];t:for(var h=1;-1<=h;h-=2){for(var d=1==h,m=d?l+1:f-1,g=d?f:l,v=d?1:-1,b=d?c:p,y=d?p:c,_=x(b);m!=g;){var w=x(e[m]);m+=v;var E=d?A(_,w,r):A(w,_,r);if(!E&&!d)continue e;if(!E&&d)continue t}d?(Array.prototype.push.apply(b[2],y[2]),y[2]=b[2]):Array.prototype.push.apply(y[2],b[2]),k(y[2],!0,!0,t),b[2]=[]}}}}},{"../../tokenizer/token":84,"../../writer/one-time":98,"./extract-properties":22,"./properties/optimize":36,"./reorderable":47}],29:[function(e,t,n){var a=e("./merge-adjacent"),s=e("./merge-media-queries"),u=e("./merge-non-adjacent-by-body"),l=e("./merge-non-adjacent-by-selector"),c=e("./reduce-non-adjacent"),f=e("./remove-duplicate-font-at-rules"),p=e("./remove-duplicate-media-queries"),h=e("./remove-duplicates"),d=e("./remove-unused-at-rules"),m=e("./restructure"),g=e("./properties/optimize"),v=e("../../options/optimization-level").OptimizationLevel,b=e("../../tokenizer/token");function y(e,t,n){var r,i,o=t.options.level[v.Two];if(function(e,t){for(var n=0,r=e.length;n<r;n++){var i=e[n];if(i[0]==b.NESTED_BLOCK){var o=/@(-moz-|-o-|-webkit-)?keyframes/.test(i[1][0][1]);y(i[2],t,!o)}}}(e,t),function e(t,n){for(var r=0,i=t.length;r<i;r++){var o=t[r];switch(o[0]){case b.RULE:g(o[2],!0,!0,n);break;case b.NESTED_BLOCK:e(o[2],n)}}}(e,t),o.removeDuplicateRules&&h(e,t),o.mergeAdjacentRules&&a(e,t),o.reduceNonAdjacentRules&&c(e,t),o.mergeNonAdjacentRules&&"body"!=o.mergeNonAdjacentRules&&l(e,t),o.mergeNonAdjacentRules&&"selector"!=o.mergeNonAdjacentRules&&u(e,t),o.restructureRules&&o.mergeAdjacentRules&&n&&(m(e,t),a(e,t)),o.restructureRules&&!o.mergeAdjacentRules&&n&&m(e,t),o.removeDuplicateFontRules&&f(e,t),o.removeDuplicateMediaBlocks&&p(e,t),o.removeUnusedAtRules&&d(e,t),o.mergeMedia)for(i=(r=s(e,t)).length-1;0<=i;i--)y(r[i][2],t,!1);return o.removeEmpty&&function e(t){for(var n=0,r=t.length;n<r;n++){var i=t[n],o=!1;switch(i[0]){case b.RULE:o=0===i[1].length||0===i[2].length;break;case b.NESTED_BLOCK:e(i[2]),o=0===i[2].length;break;case b.AT_RULE:o=0===i[1].length;break;case b.AT_RULE_BLOCK:o=0===i[2].length}o&&(t.splice(n,1),n--,r--)}}(e),e}t.exports=y},{"../../options/optimization-level":65,"../../tokenizer/token":84,"./merge-adjacent":25,"./merge-media-queries":26,"./merge-non-adjacent-by-body":27,"./merge-non-adjacent-by-selector":28,"./properties/optimize":36,"./reduce-non-adjacent":42,"./remove-duplicate-font-at-rules":43,"./remove-duplicate-media-queries":44,"./remove-duplicates":45,"./remove-unused-at-rules":46,"./restructure":50}],30:[function(e,t,n){var c=e("../../../tokenizer/marker");t.exports=function(e,t,n){var r,i,o,a=t.value.length,s=n.value.length,u=Math.max(a,s),l=Math.min(a,s)-1;for(o=0;o<u;o++)if(r=t.value[o]&&t.value[o][1]||r,i=n.value[o]&&n.value[o][1]||i,r!=c.COMMA&&i!=c.COMMA&&!e(r,i,o,o<=l))return!1;return!0}},{"../../../tokenizer/marker":83}],31:[function(e,t,n){var a=e("../compactable");function s(e,t){return e.components.filter(t)[0]}t.exports=function(e,t){var n,r=(n=t,function(e){return n.name===e.name});return s(e,r)||function(e,t){var n,r,i,o;if(a[e.name].shorthandComponents)for(i=0,o=e.components.length;i<o;i++)if(n=e.components[i],r=s(n,t))return r}(e,r)}},{"../compactable":21}],32:[function(e,t,n){t.exports=function(e){for(var t=e.value.length-1;0<=t;t--)if("inherit"==e.value[t][1])return!0;return!1}},{}],33:[function(e,t,n){var i=e("../compactable");function o(e,t){var n=i[e.name];return"components"in n&&-1<n.components.indexOf(t.name)}t.exports=function(e,t,n){return o(e,t)||!n&&!!i[e.name].shorthandComponents&&(r=t,e.components.some(function(e){return o(e,r)}));var r}},{"../compactable":21}],34:[function(e,t,n){var r=e("../../../tokenizer/marker");t.exports=function(e){return"font"!=e.name||-1==e.value[0][1].indexOf(r.INTERNAL)}},{"../../../tokenizer/marker":83}],35:[function(e,t,n){var c=e("./every-values-pair"),v=e("./has-inherit"),b=e("./populate-components"),y=e("../compactable"),_=e("../clone").deep,w=e("../restore-with-components"),E=e("../../restore-from-optimizing"),A=e("../../wrap-for-optimizing").single,x=e("../../../writer/one-time").body,k=e("../../../tokenizer/token");function f(e,t,n,r){var i,o,a,s=e[t];for(i in n)void 0!==s&&i==s.name||(o=y[i],a=n[i],s&&u(n,i,s)?delete n[i]:o.components.length>Object.keys(a).length||l(a)||p(a,i,r)&&h(a)&&(d(a)?m(e,a,i,r):g(e,a,i,r)))}function u(e,t,n){var r,i=y[t],o=y[n.name];if("overridesShorthands"in i&&-1<i.overridesShorthands.indexOf(n.name))return!0;if(o&&"componentOf"in o)for(r in e[t])if(-1<o.componentOf.indexOf(r))return!0;return!1}function l(e){var t,n;for(n in e){if(void 0!==t&&e[n].important!=t)return!0;t=e[n].important}return!1}function p(e,t,n){var r,i,o,a,s=y[t],u=[k.PROPERTY,[k.PROPERTY_NAME,t],[k.PROPERTY_VALUE,s.defaultValue]],l=A(u);for(b([l],n,[]),o=0,a=s.components.length;o<a;o++)if(r=e[s.components[o]],i=y[r.name].canOverride,!c(i.bind(null,n),l.components[o],r))return!1;return!0}function h(e){var t,n,r,i,o=null;for(n in e)if(r=e[n],"restore"in(i=y[n])){if(E([r.all[r.position]],w),t=i.restore(r,y).length,null!==o&&t!==o)return!1;o=t}return!0}function d(e){var t,n,r=null;for(t in e){if(n=v(e[t]),null!==r&&r!==n)return!0;r=n}return!1}function m(e,t,n,r){var i,o,a,s,u=function(e,t,n){var r,i,o,a,s,u,l=[],c={},f={},p=y[t],h=[k.PROPERTY,[k.PROPERTY_NAME,t],[k.PROPERTY_VALUE,p.defaultValue]],d=A(h);for(b([d],n,[]),s=0,u=p.components.length;s<u;s++)r=e[p.components[s]],v(r)?(i=r.all[r.position].slice(0,2),Array.prototype.push.apply(i,r.value),l.push(i),(o=_(r)).value=C(e,o.name),d.components[s]=o,c[r.name]=_(r)):((o=_(r)).all=r.all,d.components[s]=o,f[r.name]=r);return a=O(f,1),h[1].push(a),E([d],w),h=h.slice(0,2),Array.prototype.push.apply(h,d.value),l.unshift(h),[l,d,c]}(t,n,r),l=function(e,t,n){var r,i,o,a,s,u,l=[],c={},f={},p=y[t],h=[k.PROPERTY,[k.PROPERTY_NAME,t],[k.PROPERTY_VALUE,"inherit"]],d=A(h);for(b([d],n,[]),s=0,u=p.components.length;s<u;s++)r=e[p.components[s]],v(r)?c[r.name]=r:(i=r.all[r.position].slice(0,2),Array.prototype.push.apply(i,r.value),l.push(i),f[r.name]=_(r));return o=O(c,1),h[1].push(o),a=O(c,2),h[2].push(a),l.unshift(h),[l,d,f]}(t,n,r),c=u[0],f=l[0],p=x(c).length<x(f).length,h=p?c:f,d=p?u[1]:l[1],m=p?u[2]:l[2],g=t[Object.keys(t)[0]].all;for(i in d.position=g.length,d.shorthand=!0,d.dirty=!0,d.all=g,d.all.push(h[0]),e.push(d),t)(o=t[i]).unused=!0,o.name in m&&(a=m[o.name],s=S(h,i),a.position=g.length,a.all=g,a.all.push(s),e.push(a))}function C(e,t){var n=y[t];return"oppositeTo"in n?e[n.oppositeTo].value:[[k.PROPERTY_VALUE,n.defaultValue]]}function O(e,t){var n,r,i,o,a=[];for(o in e)i=(r=(n=e[o]).all[n.position])[t][r[t].length-1],Array.prototype.push.apply(a,i);return a.sort(s)}function s(e,t){var n=e[0],r=t[0],i=e[1],o=t[1];return n<r?-1:n===r&&i<o?-1:1}function S(e,t){var n,r;for(n=0,r=e.length;n<r;n++)if(e[n][1][1]==t)return e[n]}function g(e,t,n,r){var i,o,a,s=y[n],u=[k.PROPERTY,[k.PROPERTY_NAME,n],[k.PROPERTY_VALUE,s.defaultValue]],l=A(u);l.shorthand=!0,l.dirty=!0,b([l],r,[]);for(var c=0,f=s.components.length;c<f;c++){var p=t[s.components[c]];l.components[c]=_(p),l.important=p.important,a=p.all}for(var h in t)t[h].unused=!0;i=O(t,1),u[1].push(i),o=O(t,2),u[2].push(o),l.position=a.length,l.all=a,l.all.push(u),e.push(l)}t.exports=function(e,t){var n,r,i,o,a,s,u,l={};if(!(e.length<3)){for(o=0,a=e.length;o<a;o++)if(i=e[o],n=y[i.name],!i.unused&&!i.hack&&!i.block&&(f(e,o,l,t),n&&n.componentOf))for(s=0,u=n.componentOf.length;s<u;s++)l[r=n.componentOf[s]]=l[r]||{},l[r][i.name]=i;f(e,o,l,t)}}},{"../../../tokenizer/token":84,"../../../writer/one-time":98,"../../restore-from-optimizing":56,"../../wrap-for-optimizing":58,"../clone":20,"../compactable":21,"../restore-with-components":48,"./every-values-pair":30,"./has-inherit":32,"./populate-components":39}],36:[function(e,t,n){var c=e("./merge-into-shorthands"),f=e("./override-properties"),p=e("./populate-components"),h=e("../restore-with-components"),d=e("../../wrap-for-optimizing").all,m=e("../../remove-unused"),g=e("../../restore-from-optimizing"),v=e("../../../options/optimization-level").OptimizationLevel;t.exports=function e(t,n,r,i){var o,a,s,u=i.options.level[v.Two],l=d(t,!1,u.skipProperties);for(p(l,i.validator,i.warnings),a=0,s=l.length;a<s;a++)(o=l[a]).block&&e(o.value[0][1],n,r,i);r&&u.mergeIntoShorthands&&c(l,i.validator),n&&u.overrideProperties&&f(l,r,i.options.compatibility,i.validator),g(l,h),m(l)}},{"../../../options/optimization-level":65,"../../remove-unused":55,"../../restore-from-optimizing":56,"../../wrap-for-optimizing":58,"../restore-with-components":48,"./merge-into-shorthands":35,"./override-properties":37,"./populate-components":39}],37:[function(e,t,n){var y=e("./has-inherit"),_=e("./every-values-pair"),w=e("./find-component-in"),E=e("./is-component-of"),A=e("./is-mergeable-shorthand"),x=e("./overrides-non-component-shorthand"),k=e("./vendor-prefixes").same,C=e("../compactable"),u=e("../clone").deep,l=e("../restore-with-components"),s=e("../clone").shallow,c=e("../../restore-from-optimizing"),f=e("../../../tokenizer/token"),p=e("../../../tokenizer/marker"),r=e("../../../writer/one-time").property;function O(e,t){for(var n=0;n<e.components.length;n++){var r=e.components[n],i=C[r.name],o=i&&i.canOverride||o.sameValue,a=s(r);if(a.value=[[f.PROPERTY_VALUE,i.defaultValue]],!_(o.bind(null,t),a,r))return!0}return!1}function h(e,t){t.unused=!0,T(t,B(e)),e.value=t.value}function d(e,t){t.unused=!0,e.multiplex=!0,e.value=t.value}function S(e,t){var n,r;t.multiplex?d(e,t):e.multiplex?h(e,t):(n=e,(r=t).unused=!0,n.value=r.value)}function D(e,t){t.unused=!0;for(var n=0,r=e.components.length;n<r;n++)S(e.components[n],t.components[n],e.multiplex)}function T(e,t){e.multiplex=!0,C[e.name].shorthand?function(e,t){var n,r,i;for(r=0,i=e.components.length;r<i;r++)(n=e.components[r]).multiplex||o(n,t)}(e,t):o(e,t)}function o(e,t){for(var n,r=C[e.name],i="real"==r.intoMultiplexMode,o="real"==r.intoMultiplexMode?e.value.slice(0):"placeholder"==r.intoMultiplexMode?r.placeholderValue:r.defaultValue,a=B(e),s=o.length;a<t;a++)if(e.value.push([f.PROPERTY_VALUE,p.COMMA]),Array.isArray(o))for(n=0;n<s;n++)e.value.push(i?o[n]:[f.PROPERTY_VALUE,o[n]]);else e.value.push(i?o:[f.PROPERTY_VALUE,o])}function B(e){for(var t=0,n=0,r=e.value.length;n<r;n++)e.value[n][1]==p.COMMA&&t++;return t+1}function m(e){var t=[f.PROPERTY,[f.PROPERTY_NAME,e.name]].concat(e.value);return r([t],0).length}function R(e,t,n){for(var r=0,i=t;0<=i&&(e[i].name!=n||e[i].unused||r++,!(1<r));i--);return 1<r}function L(e,t){for(var n=0,r=e.components.length;n<r;n++)if(!F(t.isUrl,e.components[n])&&F(t.isFunction,e.components[n]))return!0;return!1}function F(e,t){for(var n=0,r=t.value.length;n<r;n++)if(t.value[n][1]!=p.COMMA&&e(t.value[n][1]))return!0;return!1}function q(e,t){if(!e.multiplex&&!t.multiplex||e.multiplex&&t.multiplex)return!1;var n,r=e.multiplex?e:t,i=e.multiplex?t:e,o=u(r);c([o],l);var a=u(i);c([a],l);var s=m(o)+1+m(a);return e.multiplex?h(n=w(o,a),a):(n=w(a,o),T(a,B(o)),d(n,o)),c([a],l),s<=m(a)}function U(e){return e.name in C}function M(e,t){return!e.multiplex&&("background"==e.name||"background-image"==e.name)&&t.multiplex&&("background"==t.name||"background-image"==t.name)&&function(e){for(var t=function(e){for(var t=[],n=0,r=[],i=e.length;n<i;n++){var o=e[n];o[1]==p.COMMA?(t.push(r),r=[]):r.push(o)}return t.push(r),t}(e),n=0,r=t.length;n<r;n++)if(1==t[n].length&&"none"==t[n][0][1])return!0;return!1}(t.value)}t.exports=function(e,t,n,r){var i,o,a,s,u,l,c,f,p,h,d;e:for(p=e.length-1;0<=p;p--)if(U(o=e[p])&&!o.block){i=C[o.name].canOverride;t:for(h=p-1;0<=h;h--)if(U(a=e[h])&&!a.block&&!a.unused&&!o.unused&&(!a.hack||o.hack||o.important)&&(a.hack||a.important||!o.hack)&&(a.important!=o.important||a.hack[0]==o.hack[0])&&!(a.important==o.important&&(a.hack[0]!=o.hack[0]||a.hack[1]&&a.hack[1]!=o.hack[1])||y(o)||M(a,o)))if(o.shorthand&&E(o,a)){if(!o.important&&a.important)continue;if(!k([a],o.components))continue;if(!F(r.isFunction,a)&&L(o,r))continue;if(!A(o)){a.unused=!0;continue}s=w(o,a),i=C[a.name].canOverride,_(i.bind(null,r),a,s)&&(a.unused=!0)}else if(o.shorthand&&x(o,a)){if(!o.important&&a.important)continue;if(!k([a],o.components))continue;if(!F(r.isFunction,a)&&L(o,r))continue;for(d=(u=a.shorthand?a.components:[a]).length-1;0<=d;d--)if(l=u[d],c=w(o,l),i=C[l.name].canOverride,!_(i.bind(null,r),a,c))continue t;a.unused=!0}else if(t&&a.shorthand&&!o.shorthand&&E(a,o,!0)){if(o.important&&!a.important)continue;if(!o.important&&a.important){o.unused=!0;continue}if(R(e,p-1,a.name))continue;if(L(a,r))continue;if(!A(a))continue;if(s=w(a,o),_(i.bind(null,r),s,o)){var m=!n.properties.backgroundClipMerging&&-1<s.name.indexOf("background-clip")||!n.properties.backgroundOriginMerging&&-1<s.name.indexOf("background-origin")||!n.properties.backgroundSizeMerging&&-1<s.name.indexOf("background-size"),g=C[o.name].nonMergeableValue===o.value[0][1];if(m||g)continue;if(!n.properties.merging&&O(a,r))continue;if(s.value[0][1]!=o.value[0][1]&&(y(a)||y(o)))continue;if(q(a,o))continue;!a.multiplex&&o.multiplex&&T(a,B(o)),S(s,o),a.dirty=!0}}else if(t&&a.shorthand&&o.shorthand&&a.name==o.name){if(!a.multiplex&&o.multiplex)continue;if(!o.important&&a.important){o.unused=!0;continue e}if(o.important&&!a.important){a.unused=!0;continue}if(!A(o)){a.unused=!0;continue}for(d=a.components.length-1;0<=d;d--){var v=a.components[d],b=o.components[d];if(i=C[v.name].canOverride,!_(i.bind(null,r),v,b))continue e}D(a,o),a.dirty=!0}else if(t&&a.shorthand&&o.shorthand&&E(a,o)){if(!a.important&&o.important)continue;if(s=w(a,o),i=C[o.name].canOverride,!_(i.bind(null,r),s,o))continue;if(a.important&&!o.important){o.unused=!0;continue}if(1<C[o.name].restore(o,C).length)continue;S(s=w(a,o),o),o.dirty=!0}else if(a.name==o.name){if(f=!0,o.shorthand)for(d=o.components.length-1;0<=d&&f;d--)l=a.components[d],c=o.components[d],i=C[c.name].canOverride,f=f&&_(i.bind(null,r),l,c);else i=C[o.name].canOverride,f=_(i.bind(null,r),a,o);if(a.important&&!o.important&&f){o.unused=!0;continue}if(!a.important&&o.important&&f){a.unused=!0;continue}if(!f)continue;a.unused=!0}}}},{"../../../tokenizer/marker":83,"../../../tokenizer/token":84,"../../../writer/one-time":98,"../../restore-from-optimizing":56,"../clone":20,"../compactable":21,"../restore-with-components":48,"./every-values-pair":30,"./find-component-in":31,"./has-inherit":32,"./is-component-of":33,"./is-mergeable-shorthand":34,"./overrides-non-component-shorthand":38,"./vendor-prefixes":41}],38:[function(e,t,n){var r=e("../compactable");t.exports=function(e,t){return e.name in r&&"overridesShorthands"in r[e.name]&&-1<r[e.name].overridesShorthands.indexOf(t.name)}},{"../compactable":21}],39:[function(e,t,n){var l=e("../compactable"),c=e("../invalid-property-error");t.exports=function(e,t,n){for(var r,i,o,a=e.length-1;0<=a;a--){var s=e[a],u=l[s.name];if(u&&u.shorthand){s.shorthand=!0,s.dirty=!0;try{if(s.components=u.breakUp(s,l,t),u.shorthandComponents)for(i=0,o=s.components.length;i<o;i++)(r=s.components[i]).components=l[r.name].breakUp(r,l,t)}catch(e){if(!(e instanceof c))throw e;s.components=[],n.push(e.message)}0<s.components.length?s.multiplex=s.components[0].multiplex:s.unused=!0}}}},{"../compactable":21,"../invalid-property-error":23}],40:[function(e,t,n){var o=e("./vendor-prefixes").same;t.exports=function(e,t,n,r,i){return!(!o(t,n)||i&&e.isVariable(t)!==e.isVariable(n))}},{"./vendor-prefixes":41}],41:[function(e,t,n){var r=/(?:^|\W)(\-\w+\-)/g;function i(e){for(var t,n=[];null!==(t=r.exec(e));)-1==n.indexOf(t[0])&&n.push(t[0]);return n}t.exports={unique:i,same:function(e,t){return i(e).sort().join(",")==i(t).sort().join(",")}}},{}],42:[function(e,t,n){var _=e("./is-mergeable"),g=e("./properties/optimize"),v=e("../../utils/clone-array"),b=e("../../tokenizer/token"),w=e("../../writer/one-time").body,y=e("../../writer/one-time").rules;function E(e){for(var t=[],n=0;n<e.length;n++)t.push([e[n][1]]);return t}function A(e,t,n,r,i){for(var o=[],a=[],s=[],u=t.length-1;0<=u;u--)if(!n.filterOut(u,o)){var l=t[u].where,c=e[l],f=v(c[2]);o=o.concat(f),a.push(f),s.push(l)}g(o,!0,!1,i);for(var p=s.length,h=o.length-1,d=p-1;0<=d;)if((0===d||o[h]&&-1<a[d].indexOf(o[h]))&&-1<h)h--;else{var m=o.splice(h+1);n.callback(e[s[d]],m,p,d),d--}}t.exports=function(e,t){for(var n=t.options,r=n.compatibility.selectors.mergeablePseudoClasses,i=n.compatibility.selectors.mergeablePseudoElements,o=n.compatibility.selectors.multiplePseudoMerging,a={},s=[],u=e.length-1;0<=u;u--){var l=e[u];if(l[0]==b.RULE&&0!==l[2].length)for(var c=y(l[1]),f=1<l[1].length&&_(c,r,i,o),p=E(l[1]),h=f?[c].concat(p):[c],d=0,m=h.length;d<m;d++){var g=h[d];a[g]?s.push(g):a[g]=[],a[g].push({where:u,list:p,isPartial:f&&0<d,isComplex:f&&0===d})}}!function(e,t,n,r,i){function o(e,t){return c[e].isPartial&&0===t.length}function a(e,t,n,r){c[n-r-1].isPartial||(e[2]=t)}for(var s=0,u=t.length;s<u;s++){var l=t[s],c=n[l];A(e,c,{filterOut:o,callback:a},0,i)}}(e,s,a,0,t),function(e,t,n,r){var i=n.compatibility.selectors.mergeablePseudoClasses,o=n.compatibility.selectors.mergeablePseudoElements,a=n.compatibility.selectors.multiplePseudoMerging,s={};function u(e){return s.data[e].where<s.intoPosition}function l(e,t,n,r){0===r&&s.reducedBodies.push(t)}e:for(var c in t){var f=t[c];if(f[0].isComplex){var p=f[f.length-1].where,h=e[p],d=[],m=_(c,i,o,a)?f[0].list:[c];s.intoPosition=p,s.reducedBodies=d;for(var g=0,v=m.length;g<v;g++){var b=m[g],y=t[b];if(y.length<2)continue e;if(s.data=y,A(e,y,{filterOut:u,callback:l},0,r),w(d[d.length-1])!=w(d[0]))continue e}h[2]=d[0]}}}(e,a,n,t)}},{"../../tokenizer/token":84,"../../utils/clone-array":86,"../../writer/one-time":98,"./is-mergeable":24,"./properties/optimize":36}],43:[function(e,t,n){var a=e("../../tokenizer/token"),s=e("../../writer/one-time").all;t.exports=function(e){var t,n,r,i,o=[];for(r=0,i=e.length;r<i;r++)(t=e[r])[0]!=a.AT_RULE_BLOCK&&"@font-face"!=t[1][0][1]||(n=s([t]),-1<o.indexOf(n)?t[2]=[]:o.push(n))}},{"../../tokenizer/token":84,"../../writer/one-time":98}],44:[function(e,t,n){var s=e("../../tokenizer/token"),u=e("../../writer/one-time").all,l=e("../../writer/one-time").rules;t.exports=function(e){var t,n,r,i,o,a={};for(i=0,o=e.length;i<o;i++)(n=e[i])[0]==s.NESTED_BLOCK&&((t=a[r=l(n[1])+"%"+u(n[2])])&&(t[2]=[]),a[r]=n)}},{"../../tokenizer/token":84,"../../writer/one-time":98}],45:[function(e,t,n){var c=e("../../tokenizer/token"),f=e("../../writer/one-time").body,p=e("../../writer/one-time").rules;t.exports=function(e){for(var t,n,r,i,o={},a=[],s=0,u=e.length;s<u;s++)(n=e[s])[0]==c.RULE&&(o[t=p(n[1])]&&1==o[t].length?a.push(t):o[t]=o[t]||[],o[t].push(s));for(s=0,u=a.length;s<u;s++){i=[];for(var l=o[t=a[s]].length-1;0<=l;l--)n=e[o[t][l]],r=f(n[2]),-1<i.indexOf(r)?n[2]=[]:i.push(r)}}},{"../../tokenizer/token":84,"../../writer/one-time":98}],46:[function(e,t,n){var f=e("./properties/populate-components"),p=e("../wrap-for-optimizing").single,h=e("../restore-from-optimizing"),c=e("../../tokenizer/token"),d=/^(\-moz\-|\-o\-|\-webkit\-)?animation-name$/,m=/^(\-moz\-|\-o\-|\-webkit\-)?animation$/,r=/^@(\-moz\-|\-o\-|\-webkit\-)?keyframes /,i=/\s{0,31}!important$/,o=/^(['"]?)(.*)\1$/;function g(e){return e.replace(o,"$2").replace(i,"")}function a(e,t,n,r){var i,o,a,s,u,l={};for(s=0,u=e.length;s<u;s++)t(e[s],l);if(0!==Object.keys(l).length)for(i in function e(t,n,r,i){var o=n(r);var a,s;for(a=0,s=t.length;a<s;a++)switch(t[a][0]){case c.RULE:o(t[a],i);break;case c.NESTED_BLOCK:e(t[a][2],n,r,i)}}(e,n,l,r),l)for(s=0,u=(o=l[i]).length;s<u;s++)(a=o[s])[a[0]==c.AT_RULE?1:2]=[]}function s(e,t){var n;e[0]==c.AT_RULE_BLOCK&&0===e[1][0][1].indexOf("@counter-style")&&(t[n=e[1][0][1].split(" ")[1]]=t[n]||[],t[n].push(e))}function u(a){return function(e,t){var n,r,i,o;for(i=0,o=e[2].length;i<o;i++)"list-style"==(n=e[2][i])[1][1]&&(r=p(n),f([r],t.validator,t.warnings),r.components[0].value[0][1]in a&&delete a[n[2][1]],h([r])),"list-style-type"==n[1][1]&&n[2][1]in a&&delete a[n[2][1]]}}function l(e,t){var n,r,i,o;if(e[0]==c.AT_RULE_BLOCK&&"@font-face"==e[1][0][1])for(i=0,o=e[2].length;i<o;i++)if("font-family"==(n=e[2][i])[1][1]){t[r=g(n[2][1].toLowerCase())]=t[r]||[],t[r].push(e);break}}function v(c){return function(e,t){var n,r,i,o,a,s,u,l;for(a=0,s=e[2].length;a<s;a++){if("font"==(n=e[2][a])[1][1]){for(r=p(n),f([r],t.validator,t.warnings),u=0,l=(i=r.components[6]).value.length;u<l;u++)(o=g(i.value[u][1].toLowerCase()))in c&&delete c[o];h([r])}if("font-family"==n[1][1])for(u=2,l=n.length;u<l;u++)(o=g(n[u][1].toLowerCase()))in c&&delete c[o]}}}function b(e,t){var n;e[0]==c.NESTED_BLOCK&&r.test(e[1][0][1])&&(t[n=e[1][0][1].split(" ")[1]]=t[n]||[],t[n].push(e))}function y(l){return function(e,t){var n,r,i,o,a,s,u;for(o=0,a=e[2].length;o<a;o++){if(n=e[2][o],m.test(n[1][1])){for(r=p(n),f([r],t.validator,t.warnings),s=0,u=(i=r.components[7]).value.length;s<u;s++)i.value[s][1]in l&&delete l[i.value[s][1]];h([r])}if(d.test(n[1][1]))for(s=2,u=n.length;s<u;s++)n[s][1]in l&&delete l[n[s][1]]}}}function _(e,t){var n;e[0]==c.AT_RULE&&0===e[1].indexOf("@namespace")&&(t[n=e[1].split(" ")[1]]=t[n]||[],t[n].push(e))}function w(s){var u=new RegExp(Object.keys(s).join("\\||")+"\\|","g");return function(e){var t,n,r,i,o,a;for(r=0,i=e[1].length;r<i;r++)for(o=0,a=(t=e[1][r][1].match(u)).length;o<a;o++)(n=t[o].substring(0,t[o].length-1))in s&&delete s[n]}}t.exports=function(e,t){a(e,s,u,t),a(e,l,v,t),a(e,b,y,t),a(e,_,w,t)}},{"../../tokenizer/token":84,"../restore-from-optimizing":56,"../wrap-for-optimizing":58,"./properties/populate-components":39}],47:[function(e,t,n){var m=e("./rules-overlap"),g=e("./specificities-overlap"),v=/align\-items|box\-align|box\-pack|flex|justify/,b=/^border\-(top|right|bottom|left|color|style|width|radius)/;function o(e,t,n){var r,i,o=e[0],a=e[1],s=e[2],u=e[5],l=e[6],c=t[0],f=t[1],p=t[2],h=t[5],d=t[6];return!("font"==o&&"line-height"==c||"font"==c&&"line-height"==o)&&((!v.test(o)||!v.test(c))&&(!(s==p&&_(o)==_(c)&&y(o)^y(c))&&(("border"!=s||!b.test(p)||!("border"==o||o==p||a!=f&&w(o,c)))&&(("border"!=p||!b.test(s)||!("border"==c||c==s||a!=f&&w(o,c)))&&(("border"!=s||"border"!=p||o==c||!(E(o)&&A(c)||A(o)&&E(c)))&&(s!=p||(!(o!=c||s!=p||a!=f&&(i=f,!y(r=a)||!y(i)||r.split("-")[1]==i.split("-")[2]))||(o!=c&&s==p&&o!=s&&c!=p||(o!=c&&s==p&&a==f||(!(!d||!l||x(s)||x(p)||m(h,u,!1))||!g(u,h,n)))))))))))}function y(e){return/^\-(?:moz|webkit|ms|o)\-/.test(e)}function _(e){return e.replace(/^\-(?:moz|webkit|ms|o)\-/,"")}function w(e,t){return e.split("-").pop()==t.split("-").pop()}function E(e){return"border-top"==e||"border-right"==e||"border-bottom"==e||"border-left"==e}function A(e){return"border-color"==e||"border-style"==e||"border-width"==e}function x(e){return"font"==e||"line-height"==e||"list-style"==e}t.exports={canReorder:function(e,t,n){for(var r=t.length-1;0<=r;r--)for(var i=e.length-1;0<=i;i--)if(!o(e[i],t[r],n))return!1;return!0},canReorderSingle:o}},{"./rules-overlap":51,"./specificities-overlap":52}],48:[function(e,t,n){var r=e("./compactable");t.exports=function(e){var t=r[e.name];return t&&t.shorthand?t.restore(e,r):e.value}},{"./compactable":21}],49:[function(e,t,n){var g=e("./clone").shallow,v=e("../../tokenizer/token"),b=e("../../tokenizer/marker");function y(e){for(var t=0,n=e.length;t<n;t++){var r=e[t][1];if("inherit"!=r&&r!=b.COMMA&&r!=b.FORWARD_SLASH)return!1}return!0}function c(e){var t=e.components,n=t[0].value[0],r=t[1].value[0],i=t[2].value[0],o=t[3].value[0];return n[1]==r[1]&&n[1]==i[1]&&n[1]==o[1]?[n]:n[1]==i[1]&&r[1]==o[1]?[n,r]:r[1]==o[1]?[n,r,i]:[n,r,i,o]}function s(e,t,n){var r,i,o;for(i=0,o=e.length;i<o;i++)if((r=e[i]).name==n&&r.value[0][1]==t[n].defaultValue)return!0;return!1}t.exports={background:function(e,n,t){var r,i,o=e.components,a=[];function s(e){Array.prototype.unshift.apply(a,e.value)}function u(e){var t=n[e.name];return t.doubleValues&&1==t.defaultValue.length?e.value[0][1]==t.defaultValue[0]&&(!e.value[1]||e.value[1][1]==t.defaultValue[0]):t.doubleValues&&1!=t.defaultValue.length?e.value[0][1]==t.defaultValue[0]&&(e.value[1]?e.value[1][1]:e.value[0][1])==t.defaultValue[1]:e.value[0][1]==t.defaultValue}for(var l=o.length-1;0<=l;l--){var c=o[l],f=u(c);if("background-clip"==c.name){var p=o[l-1],h=u(p);i=!(r=c.value[0][1]==p.value[0][1])&&(h&&!f||!h&&!f||!h&&f&&c.value[0][1]!=p.value[0][1]),r?s(p):i&&(s(c),s(p)),l--}else if("background-size"==c.name){var d=o[l-1],m=u(d);i=!(r=!m&&f)&&(m&&!f||!m&&!f),r?s(d):i?(s(c),a.unshift([v.PROPERTY_VALUE,b.FORWARD_SLASH]),s(d)):1==d.value.length&&s(d),l--}else{if(f||n[c.name].multiplexLastOnly&&!t)continue;s(c)}}return 0===a.length&&1==e.value.length&&"0"==e.value[0][1]&&a.push(e.value[0]),0===a.length&&a.push([v.PROPERTY_VALUE,n[e.name].defaultValue]),y(a)?[a[0]]:a},borderRadius:function(e,t){if(e.multiplex){for(var n=g(e),r=g(e),i=0;i<4;i++){var o=e.components[i],a=g(e);a.value=[o.value[0]],n.components.push(a);var s=g(e);s.value=[o.value[1]||o.value[0]],r.components.push(s)}var u=c(n),l=c(r);return u.length!=l.length||u[0][1]!=l[0][1]||1<u.length&&u[1][1]!=l[1][1]||2<u.length&&u[2][1]!=l[2][1]||3<u.length&&u[3][1]!=l[3][1]?u.concat([[v.PROPERTY_VALUE,b.FORWARD_SLASH]]).concat(l):u}return c(e)},font:function(e,t){var n,r=e.components,i=[],o=0,a=0;if(0===e.value[0][1].indexOf(b.INTERNAL))return e.value[0][1]=e.value[0][1].substring(b.INTERNAL.length),e.value;for(;o<4;)(n=r[o]).value[0][1]!=t[n.name].defaultValue&&Array.prototype.push.apply(i,n.value),o++;for(Array.prototype.push.apply(i,r[o].value),r[++o].value[0][1]!=t[r[o].name].defaultValue&&(Array.prototype.push.apply(i,[[v.PROPERTY_VALUE,b.FORWARD_SLASH]]),Array.prototype.push.apply(i,r[o].value)),o++;r[o].value[a];)i.push(r[o].value[a]),r[o].value[a+1]&&i.push([v.PROPERTY_VALUE,b.COMMA]),a++;return y(i)?[i[0]]:i},fourValues:c,multiplex:function(m){return function(e,t){if(!e.multiplex)return m(e,t,!0);var n,r,i=0,o=[],a={};for(n=0,r=e.components[0].value.length;n<r;n++)e.components[0].value[n][1]==b.COMMA&&i++;for(n=0;n<=i;n++){for(var s=g(e),u=0,l=e.components.length;u<l;u++){var c=e.components[u],f=g(c);s.components.push(f);for(var p=a[f.name]||0,h=c.value.length;p<h;p++){if(c.value[p][1]==b.COMMA){a[f.name]=p+1;break}f.value.push(c.value[p])}}var d=m(s,t,n==i);Array.prototype.push.apply(o,d),n<i&&o.push([v.PROPERTY_VALUE,b.COMMA])}return o}},withoutDefaults:function(e,t){for(var n=e.components,r=[],i=n.length-1;0<=i;i--){var o=n[i],a=t[o.name];(o.value[0][1]!=a.defaultValue||"keepUnlessDefault"in a&&!s(n,t,a.keepUnlessDefault))&&r.unshift(o.value[0])}return 0===r.length&&r.push([v.PROPERTY_VALUE,t[e.name].defaultValue]),y(r)?[r[0]]:r}}},{"../../tokenizer/marker":83,"../../tokenizer/token":84,"./clone":20}],50:[function(e,t,n){var K=e("./reorderable").canReorderSingle,G=e("./extract-properties"),Y=e("./is-mergeable"),W=e("./tidy-rule-duplicates"),Q=e("../../tokenizer/token"),Z=e("../../utils/clone-array"),J=e("../../writer/one-time").body,X=e("../../writer/one-time").rules;function ee(e,t){return t<e?1:-1}t.exports=function(g,e){var t,n,r,i=e.options,o=i.compatibility.selectors.mergeablePseudoClasses,a=i.compatibility.selectors.mergeablePseudoElements,s=i.compatibility.selectors.mergeLimit,u=i.compatibility.selectors.multiplePseudoMerging,l=e.cache.specificity,p={},c=[],h={},f=[],d=2,m="%";function v(e,t){var n=function(e){for(var t=[],n=0,r=e.length;n<r;n++)t.push(X(e[n][1]));return t.join(m)}(t);return h[n]=h[n]||[],h[n].push([e,t]),n}function b(e){var t,n=e.split(m),r=[];for(var i in h){var o=i.split(m);for(t=o.length-1;0<=t;t--)if(-1<n.indexOf(o[t])){r.push(i);break}}for(t=r.length-1;0<=t;t--)delete h[r[t]]}function y(e){for(var t=[],n=[],r=e.length-1;0<=r;r--)Y(X(e[r][1]),o,a,u)&&(n.unshift(e[r]),0<e[r][2].length&&-1==t.indexOf(e[r])&&t.push(e[r]));return 1<t.length?n:[]}function _(e,t){var n=t[0],r=t[1],i=t[4],o=n.length+r.length+1,a=[],s=[],u=y(p[i]);if(!(u.length<2)){var l=E(u,o,1),c=l[0];if(0<c[1])return function(e,t,n){for(var r=n.length-1;0<=r;r--){var i=v(t,n[r][0]);if(1<h[i].length&&C(e,h[i])){b(i);break}}}(e,t,l);for(var f=c[0].length-1;0<=f;f--)a=c[0][f][1].concat(a),s.unshift(c[0][f]);x(e,[t],a=W(a),s)}}function w(e,t){return e[1]>t[1]?1:e[1]==t[1]?0:-1}function E(e,t,n){return function e(t,n,r,i){var o=[[t,A(t,n,r)]];if(2<t.length&&0<i)for(var a=t.length-1;0<=a;a--){var s=Array.prototype.slice.call(t,0);s.splice(a,1),o=o.concat(e(s,n,r,i-1))}return o}(e,t,n,d-1).sort(w)}function A(e,t,n){for(var r=0,i=e.length-1;0<=i;i--)r+=e[i][2].length>n?X(e[i][1]).length:-1;return r-(e.length-1)*t+1}function x(e,t,n,r){var i,o,a,s,u=[];for(i=r.length-1;0<=i;i--){var l=r[i];for(o=l[2].length-1;0<=o;o--){var c=l[2][o];for(a=0,s=t.length;a<s;a++){var f=t[a],p=c[1][1],h=f[0],d=f[4];if(p==h&&J([c])==d){l[2].splice(o,1);break}}}}for(i=t.length-1;0<=i;i--)u.unshift(t[i][3]);var m=[Q.RULE,n,u];g.splice(e,0,m)}function k(e,t){var n=t[4],r=p[n];r&&1<r.length&&(function(e,t){var n,r,i=[],o=[],a=t[4],s=y(p[a]);if(!(s.length<2)){e:for(var u in p){var l=p[u];for(n=s.length-1;0<=n;n--)if(-1==l.indexOf(s[n]))continue e;i.push(u)}if(i.length<2)return!1;for(n=i.length-1;0<=n;n--)for(r=c.length-1;0<=r;r--)if(c[r][4]==i[n]){o.unshift([c[r],s]);break}return C(e,o)}}(e,t)||_(e,t))}function C(e,t){for(var n,r=0,i=[],o=t.length-1;0<=o;o--)r+=(n=t[o][0])[4].length+(0<o?1:0),i.push(n);var a=E(t[0][1],r,i.length)[0];if(0<a[1])return!1;var s=[],u=[];for(o=a[0].length-1;0<=o;o--)s=a[0][o][1].concat(s),u.unshift(a[0][o]);for(x(e,i,s=W(s),u),o=i.length-1;0<=o;o--){n=i[o];var l=c.indexOf(n);delete p[n[4]],-1<l&&-1==f.indexOf(l)&&f.push(l)}return!0}function O(e,t,n){if(e[0]!=t[0])return!1;var r=t[4],i=p[r];return i&&-1<i.indexOf(n)}for(var S=g.length-1;0<=S;S--){var D,T,B,R,L,F=g[S];if(F[0]==Q.RULE)D=!0;else{if(F[0]!=Q.NESTED_BLOCK)continue;D=!1}var q=c.length,U=G(F);f=[];var M=[];for(T=U.length-1;0<=T;T--)for(B=T-1;0<=B;B--)if(!K(U[T],U[B],l)){M.push(T);break}for(T=U.length-1;0<=T;T--){var N=U[T],P=!1;for(B=0;B<q;B++){var I=c[B];-1==f.indexOf(B)&&(!K(N,I,l)&&!O(N,I,F)||p[I[4]]&&p[I[4]].length===s)&&(k(S+1,I),-1==f.indexOf(B)&&(f.push(B),delete p[I[4]])),P||(P=N[0]==I[0]&&N[1]==I[1])&&(L=B)}if(D&&!(-1<M.indexOf(T))){var z=N[4];P&&c[L][5].length+N[5].length>s?(k(S+1,c[L]),c.splice(L,1),p[z]=[F],P=!1):(p[z]=p[z]||[],p[z].push(F)),P?c[L]=(t=c[L],n=N,r=void 0,(r=Z(t))[5]=r[5].concat(n[5]),r):c.push(N)}}for(T=0,R=(f=f.sort(ee)).length;T<R;T++){var j=f[T]-T;c.splice(j,1)}}for(var V=g[0]&&g[0][0]==Q.AT_RULE&&0===g[0][1].indexOf("@charset")?1:0;V<g.length-1;V++){var H=g[V][0]===Q.AT_RULE&&0===g[V][1].indexOf("@import"),$=g[V][0]===Q.COMMENT;if(!H&&!$)break}for(S=0;S<c.length;S++)k(V,c[S])}},{"../../tokenizer/token":84,"../../utils/clone-array":86,"../../writer/one-time":98,"./extract-properties":22,"./is-mergeable":24,"./reorderable":47,"./tidy-rule-duplicates":54}],51:[function(e,t,n){var r=/\-\-.+$/;function l(e){return e.replace(r,"")}t.exports=function(e,t,n){var r,i,o,a,s,u;for(o=0,a=e.length;o<a;o++)for(r=e[o][1],s=0,u=t.length;s<u;s++){if(r==(i=t[s][1]))return!0;if(n&&l(r)==l(i))return!0}return!1}},{}],52:[function(e,t,n){var r=e("./specificity");function l(e,t){var n;return e in t||(t[e]=n=r(e)),n||t[e]}t.exports=function(e,t,n){var r,i,o,a,s,u;for(o=0,a=e.length;o<a;o++)for(r=l(e[o][1],n),s=0,u=t.length;s<u;s++)if(i=l(t[s][1],n),r[0]===i[0]&&r[1]===i[1]&&r[2]===i[2])return!0;return!1}},{"./specificity":53}],53:[function(e,t,n){var h=e("../../tokenizer/marker"),d=".",m="#",g=":",v=/[a-zA-Z]/,b=":not(",y=/[\s,\(>~\+]/;t.exports=function(e){var t,n,r,i,o,a,s,u,l=[0,0,0],c=0,f=!1,p=!1;for(a=0,s=e.length;a<s;a++){if(t=e[a],n);else if(t!=h.SINGLE_QUOTE||i||r)if(t==h.SINGLE_QUOTE&&!i&&r)r=!1;else if(t!=h.DOUBLE_QUOTE||i||r)if(t==h.DOUBLE_QUOTE&&i&&!r)i=!1;else{if(r||i)continue;0<c&&!f||(t==h.OPEN_ROUND_BRACKET?c++:t==h.CLOSE_ROUND_BRACKET&&1==c?(c--,f=!1):t==h.CLOSE_ROUND_BRACKET?c--:t==m?l[0]++:t==d||t==h.OPEN_SQUARE_BRACKET?l[1]++:t!=g||p||(u=a,e.indexOf(b,u)===u)?t==g?f=!0:(0===a||o)&&v.test(t)&&l[2]++:(l[1]++,f=!1))}else i=!0;else r=!0;n=t==h.BACK_SLASH,p=t==g,o=!n&&y.test(t)}return l}},{"../../tokenizer/marker":83}],54:[function(e,t,n){function a(e,t){return e[1]>t[1]?1:-1}t.exports=function(e){for(var t=[],n=[],r=0,i=e.length;r<i;r++){var o=e[r];-1==n.indexOf(o[1])&&(n.push(o[1]),t.push(o))}return t.sort(a)}},{}],55:[function(e,t,n){t.exports=function(e){for(var t=e.length-1;0<=t;t--){var n=e[t];n.unused&&n.all.splice(n.position,1)}}},{}],56:[function(e,t,n){var u=e("./hack"),l=e("../tokenizer/marker"),c="*",f="\\",p="!important",h="_",d="!ie";t.exports=function(e,t){var n,r,i,o,a;for(o=e.length-1;0<=o;o--)(n=e[o]).unused||(n.dirty||n.important||n.hack)&&(t?(r=t(n),n.value=r):r=n.value,n.important&&((a=n).value[a.value.length-1][1]+=p),n.hack&&(s=n,s.hack[0]==u.UNDERSCORE?s.name=h+s.name:s.hack[0]==u.ASTERISK?s.name=c+s.name:s.hack[0]==u.BACKSLASH?s.value[s.value.length-1][1]+=f+s.hack[1]:s.hack[0]==u.BANG&&(s.value[s.value.length-1][1]+=l.SPACE+d)),"all"in n&&((i=n.all[n.position])[1][1]=n.name,i.splice(2,i.length-1),Array.prototype.push.apply(i,r)));var s}},{"../tokenizer/marker":83,"./hack":8}],57:[function(e,t,n){var r="var\\(\\-\\-[^\\)]+\\)",i=new RegExp("^(\\-moz\\-|\\-webkit\\-)?calc\\([^\\)]+\\)$","i"),a=/[0-9]/,o=new RegExp("^(var\\(\\-\\-[^\\)]+\\)|[A-Z]+(\\-|[A-Z]|[0-9])+\\(.*?\\)|\\-(\\-|[A-Z]|[0-9])+\\(.*?\\))$","i"),s=/^hsl\(\s{0,31}[\-\.]?\d+\s{0,31},\s{0,31}\.?\d+%\s{0,31},\s{0,31}\.?\d+%\s{0,31}\)|hsla\(\s{0,31}[\-\.]?\d+\s{0,31},\s{0,31}\.?\d+%\s{0,31},\s{0,31}\.?\d+%\s{0,31},\s{0,31}\.?\d+\s{0,31}\)$/,u=/^(\-[a-z0-9_][a-z0-9\-_]*|[a-z][a-z0-9\-_]*)$/i,l=/^[a-z]+$/i,c=/^-([a-z0-9]|-)*$/i,f=/^rgb\(\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31}\)|rgba\(\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\.\d]+\s{0,31}\)$/,p=/^(cubic\-bezier|steps)\([^\)]+\)$/,h=["ms","s"],d=/^url\([\s\S]+\)$/i,m=new RegExp("^"+r+"$","i"),g=/^#[0-9a-f]{8}$/i,v=/^#[0-9a-f]{4}$/i,b=/^#[0-9a-f]{6}$/i,y=/^#[0-9a-f]{3}$/i,_=".",w="-",E="+",A={"^":["inherit","initial","unset"],"*-style":["auto","dashed","dotted","double","groove","hidden","inset","none","outset","ridge","solid"],"*-timing-function":["ease","ease-in","ease-in-out","ease-out","linear","step-end","step-start"],"animation-direction":["alternate","alternate-reverse","normal","reverse"],"animation-fill-mode":["backwards","both","forwards","none"],"animation-iteration-count":["infinite"],"animation-name":["none"],"animation-play-state":["paused","running"],"background-attachment":["fixed","inherit","local","scroll"],"background-clip":["border-box","content-box","inherit","padding-box","text"],"background-origin":["border-box","content-box","inherit","padding-box"],"background-position":["bottom","center","left","right","top"],"background-repeat":["no-repeat","inherit","repeat","repeat-x","repeat-y","round","space"],"background-size":["auto","cover","contain"],"border-collapse":["collapse","inherit","separate"],bottom:["auto"],clear:["both","left","none","right"],color:["transparent"],cursor:["all-scroll","auto","col-resize","crosshair","default","e-resize","help","move","n-resize","ne-resize","no-drop","not-allowed","nw-resize","pointer","progress","row-resize","s-resize","se-resize","sw-resize","text","vertical-text","w-resize","wait"],display:["block","inline","inline-block","inline-table","list-item","none","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group"],float:["left","none","right"],left:["auto"],font:["caption","icon","menu","message-box","small-caption","status-bar","unset"],"font-size":["large","larger","medium","small","smaller","x-large","x-small","xx-large","xx-small"],"font-stretch":["condensed","expanded","extra-condensed","extra-expanded","normal","semi-condensed","semi-expanded","ultra-condensed","ultra-expanded"],"font-style":["italic","normal","oblique"],"font-variant":["normal","small-caps"],"font-weight":["100","200","300","400","500","600","700","800","900","bold","bolder","lighter","normal"],"line-height":["normal"],"list-style-position":["inside","outside"],"list-style-type":["armenian","circle","decimal","decimal-leading-zero","disc","decimal|disc","georgian","lower-alpha","lower-greek","lower-latin","lower-roman","none","square","upper-alpha","upper-latin","upper-roman"],overflow:["auto","hidden","scroll","visible"],position:["absolute","fixed","relative","static"],right:["auto"],"text-align":["center","justify","left","left|right","right"],"text-decoration":["line-through","none","overline","underline"],"text-overflow":["clip","ellipsis"],top:["auto"],"vertical-align":["baseline","bottom","middle","sub","super","text-bottom","text-top","top"],visibility:["collapse","hidden","visible"],"white-space":["normal","nowrap","pre"],width:["inherit","initial","medium","thick","thin"]},x=["%","ch","cm","em","ex","in","mm","pc","pt","px","rem","vh","vm","vmax","vmin","vw"];function k(e){return"auto"!=e&&(R("color")(e)||(n=e,y.test(n)||v.test(n)||b.test(n)||g.test(n))||C(e)||(t=e,l.test(t)));var t,n}function C(e){return F(e)||D(e)}function O(e){return i.test(e)}function S(e){return o.test(e)}function D(e){return s.test(e)}function T(e){return u.test(e)}function B(e){return"none"==e||"inherit"==e||P(e)}function R(t){return function(e){return-1<A[t].indexOf(e)}}function L(e){return z(e)==e.length}function F(e){return f.test(e)}function q(e){return c.test(e)}function U(e){return L(e)&&0<=parseFloat(e)}function M(e){return m.test(e)}function N(e){var t=z(e);return t==e.length&&0===parseInt(e)||-1<t&&-1<h.indexOf(e.slice(t+1))}function P(e){return d.test(e)}function I(e){return"auto"==e||L(e)||R("^")(e)}function z(e){var t,n,r,i=!1,o=!1;for(n=0,r=e.length;n<r;n++)if(t=e[n],0!==n||t!=E&&t!=w){if(0<n&&o&&(t==E||t==w))return n-1;if(t!=_||i){if(t==_&&i)return n-1;if(a.test(t))continue;return n-1}i=!0}else o=!0;return n}t.exports=function(t){var n,e=x.slice(0).filter(function(e){return!(e in t.units)||!0===t.units[e]});return{colorOpacity:t.colors.opacity,isAnimationDirectionKeyword:R("animation-direction"),isAnimationFillModeKeyword:R("animation-fill-mode"),isAnimationIterationCountKeyword:R("animation-iteration-count"),isAnimationNameKeyword:R("animation-name"),isAnimationPlayStateKeyword:R("animation-play-state"),isTimingFunction:(n=R("*-timing-function"),function(e){return n(e)||p.test(e)}),isBackgroundAttachmentKeyword:R("background-attachment"),isBackgroundClipKeyword:R("background-clip"),isBackgroundOriginKeyword:R("background-origin"),isBackgroundPositionKeyword:R("background-position"),isBackgroundRepeatKeyword:R("background-repeat"),isBackgroundSizeKeyword:R("background-size"),isColor:k,isColorFunction:C,isDynamicUnit:O,isFontKeyword:R("font"),isFontSizeKeyword:R("font-size"),isFontStretchKeyword:R("font-stretch"),isFontStyleKeyword:R("font-style"),isFontVariantKeyword:R("font-variant"),isFontWeightKeyword:R("font-weight"),isFunction:S,isGlobal:R("^"),isHslColor:D,isIdentifier:T,isImage:B,isKeyword:R,isLineHeightKeyword:R("line-height"),isListStylePositionKeyword:R("list-style-position"),isListStyleTypeKeyword:R("list-style-type"),isNumber:L,isPrefixed:q,isPositiveNumber:U,isRgbColor:F,isStyleKeyword:R("*-style"),isTime:N,isUnit:function(e,t){var n=z(t);return n==t.length&&0===parseInt(t)||-1<n&&-1<e.indexOf(t.slice(n+1))||"auto"==t||"inherit"==t}.bind(null,e),isUrl:P,isVariable:M,isWidth:R("width"),isZIndex:I}}},{}],58:[function(e,t,n){var d=e("./hack"),m=e("../tokenizer/marker"),g=e("../tokenizer/token"),v={ASTERISK:"*",BACKSLASH:"\\",BANG:"!",BANG_SUFFIX_PATTERN:/!\w+$/,IMPORTANT_TOKEN:"!important",IMPORTANT_TOKEN_PATTERN:new RegExp("!important$","i"),IMPORTANT_WORD:"important",IMPORTANT_WORD_PATTERN:new RegExp("important$","i"),SUFFIX_BANG_PATTERN:/!$/,UNDERSCORE:"_",VARIABLE_REFERENCE_PATTERN:/var\(--.+\)$/};function s(e){var t,n,r,i;for(t=2,n=e.length;t<n;t++)if((r=e[t])[0]==g.PROPERTY_VALUE&&(i=r[1],v.VARIABLE_REFERENCE_PATTERN.test(i)))return!0;return!1}function u(e){var t,n,r,i=function(e){if(e.length<3)return!1;var t=e[e.length-1];return!!v.IMPORTANT_TOKEN_PATTERN.test(t[1])||!(!v.IMPORTANT_WORD_PATTERN.test(t[1])||!v.SUFFIX_BANG_PATTERN.test(e[e.length-2][1]))}(e);i&&(n=(t=e)[t.length-1],r=t[t.length-2],v.IMPORTANT_TOKEN_PATTERN.test(n[1])?n[1]=n[1].replace(v.IMPORTANT_TOKEN_PATTERN,""):(n[1]=n[1].replace(v.IMPORTANT_WORD_PATTERN,""),r[1]=r[1].replace(v.SUFFIX_BANG_PATTERN,"")),0===n[1].length&&t.pop(),0===r[1].length&&t.pop());var o,a,s,u,l,c,f,p,h=(a=!1,s=(o=e)[1][1],u=o[o.length-1],s[0]==v.UNDERSCORE?a=[d.UNDERSCORE]:s[0]==v.ASTERISK?a=[d.ASTERISK]:u[1][0]!=v.BANG||u[1].match(v.IMPORTANT_WORD_PATTERN)?0<u[1].indexOf(v.BANG)&&!u[1].match(v.IMPORTANT_WORD_PATTERN)&&v.BANG_SUFFIX_PATTERN.test(u[1])?a=[d.BANG]:0<u[1].indexOf(v.BACKSLASH)&&u[1].indexOf(v.BACKSLASH)==u[1].length-v.BACKSLASH.length-1?a=[d.BACKSLASH,u[1].substring(u[1].indexOf(v.BACKSLASH)+1)]:0===u[1].indexOf(v.BACKSLASH)&&2==u[1].length&&(a=[d.BACKSLASH,u[1].substring(1)]):a=[d.BANG],a);return h[0]==d.ASTERISK||h[0]==d.UNDERSCORE?(p=e)[1][1]=p[1][1].substring(1):h[0]!=d.BACKSLASH&&h[0]!=d.BANG||(c=h,(f=(l=e)[l.length-1])[1]=f[1].substring(0,f[1].indexOf(c[0]==d.BACKSLASH?v.BACKSLASH:v.BANG)).trim(),0===f[1].length&&l.pop()),{block:e[2]&&e[2][0]==g.PROPERTY_BLOCK,components:[],dirty:!1,hack:h,important:i,name:e[1][1],multiplex:3<e.length&&function(e){var t,n,r;for(n=3,r=e.length;n<r;n++)if((t=e[n])[0]==g.PROPERTY_VALUE&&(t[1]==m.COMMA||t[1]==m.FORWARD_SLASH))return!0;return!1}(e),position:0,shorthand:!1,unused:!1,value:e.slice(2)}}t.exports={all:function(e,t,n){var r,i,o,a=[];for(o=e.length-1;0<=o;o--)(i=e[o])[0]==g.PROPERTY&&(!t&&s(i)||n&&-1<n.indexOf(i[1][1])||((r=u(i)).all=e,r.position=o,a.unshift(r)));return a},single:u}},{"../tokenizer/marker":83,"../tokenizer/token":84,"./hack":8}],59:[function(e,t,n){var r={"*":{colors:{opacity:!0},properties:{backgroundClipMerging:!0,backgroundOriginMerging:!0,backgroundSizeMerging:!0,colors:!0,ieBangHack:!1,ieFilters:!1,iePrefixHack:!1,ieSuffixHack:!1,merging:!0,shorterLengthUnits:!1,spaceAfterClosingBrace:!0,urlQuotes:!1,zeroUnits:!0},selectors:{adjacentSpace:!1,ie7Hack:!1,mergeablePseudoClasses:[":active",":after",":before",":empty",":checked",":disabled",":empty",":enabled",":first-child",":first-letter",":first-line",":first-of-type",":focus",":hover",":lang",":last-child",":last-of-type",":link",":not",":nth-child",":nth-last-child",":nth-last-of-type",":nth-of-type",":only-child",":only-of-type",":root",":target",":visited"],mergeablePseudoElements:["::after","::before","::first-letter","::first-line"],mergeLimit:8191,multiplePseudoMerging:!0},units:{ch:!0,in:!0,pc:!0,pt:!0,rem:!0,vh:!0,vm:!0,vmax:!0,vmin:!0,vw:!0}}};function i(e,t){for(var n in e){var r=e[n];"object"!=typeof r||Array.isArray(r)?t[n]=n in t?t[n]:r:t[n]=i(r,t[n]||{})}return t}r.ie11=r["*"],r.ie10=r["*"],r.ie9=i(r["*"],{properties:{ieFilters:!0,ieSuffixHack:!0}}),r.ie8=i(r.ie9,{colors:{opacity:!1},properties:{backgroundClipMerging:!1,backgroundOriginMerging:!1,backgroundSizeMerging:!1,iePrefixHack:!0,merging:!1},selectors:{mergeablePseudoClasses:[":after",":before",":first-child",":first-letter",":focus",":hover",":visited"],mergeablePseudoElements:[]},units:{ch:!1,rem:!1,vh:!1,vm:!1,vmax:!1,vmin:!1,vw:!1}}),r.ie7=i(r.ie8,{properties:{ieBangHack:!0},selectors:{ie7Hack:!0,mergeablePseudoClasses:[":first-child",":first-letter",":hover",":visited"]}}),t.exports=function(e){return i(r["*"],function(o){if("object"==typeof o)return o;if(!/[,\+\-]/.test(o))return r[o]||r["*"];var e=o.split(","),t=e[0]in r?r[e.shift()]:r["*"];return o={},e.forEach(function(e){var t="+"==e[0],n=e.substring(1).split("."),r=n[0],i=n[1];o[r]=o[r]||{},o[r][i]=t}),i(t,o)}(e))}},{}],60:[function(e,t,n){var r=e("../reader/load-remote-resource");t.exports=function(e){return e||r}},{"../reader/load-remote-resource":74}],61:[function(e,t,n){var r=e("os").EOL,i=e("../utils/override"),o={AfterAtRule:"afterAtRule",AfterBlockBegins:"afterBlockBegins",AfterBlockEnds:"afterBlockEnds",AfterComment:"afterComment",AfterProperty:"afterProperty",AfterRuleBegins:"afterRuleBegins",AfterRuleEnds:"afterRuleEnds",BeforeBlockEnds:"beforeBlockEnds",BetweenSelectors:"betweenSelectors"},a={CarriageReturnLineFeed:"\r\n",LineFeed:"\n",System:r},s={Space:" ",Tab:"\t"},u={AroundSelectorRelation:"aroundSelectorRelation",BeforeBlockBegins:"beforeBlockBegins",BeforeValue:"beforeValue"},l={breaks:b(!1),breakWith:a.System,indentBy:0,indentWith:s.Space,spaces:y(!1),wrapAt:!1,semicolonAfterLastProperty:!1},c=";",f=":",p=",",h="=",d="false",m="off",g="true",v="on";function b(e){var t={};return t[o.AfterAtRule]=e,t[o.AfterBlockBegins]=e,t[o.AfterBlockEnds]=e,t[o.AfterComment]=e,t[o.AfterProperty]=e,t[o.AfterRuleBegins]=e,t[o.AfterRuleEnds]=e,t[o.BeforeBlockEnds]=e,t[o.BetweenSelectors]=e,t}function y(e){var t={};return t[u.AroundSelectorRelation]=e,t[u.BeforeBlockBegins]=e,t[u.BeforeValue]=e,t}function _(e){switch(e){case"windows":case"crlf":case a.CarriageReturnLineFeed:return a.CarriageReturnLineFeed;case"unix":case"lf":case a.LineFeed:return a.LineFeed;default:return r}}function w(e){switch(e){case"space":return s.Space;case"tab":return s.Tab;default:return e}}t.exports={Breaks:o,Spaces:u,formatFrom:function(e){return void 0!==e&&!1!==e&&("object"==typeof e&&"breakWith"in e&&(e=i(e,{breakWith:_(e.breakWith)})),"object"==typeof e&&"indentBy"in e&&(e=i(e,{indentBy:parseInt(e.indentBy)})),"object"==typeof e&&"indentWith"in e&&(e=i(e,{indentWith:w(e.indentWith)})),"object"==typeof e?i(l,e):"object"==typeof e?i(l,e):"string"==typeof e&&"beautify"==e?i(l,{breaks:b(!0),indentBy:2,spaces:y(!0)}):"string"==typeof e&&"keep-breaks"==e?i(l,{breaks:{afterAtRule:!0,afterBlockBegins:!0,afterBlockEnds:!0,afterComment:!0,afterRuleEnds:!0,beforeBlockEnds:!0}}):"string"==typeof e?i(l,e.split(c).reduce(function(e,t){var n=t.split(f),r=n[0],i=n[1];return"breaks"==r||"spaces"==r?e[r]=i.split(p).reduce(function(e,t){var n=t.split(h),r=n[0],i=n[1];return e[r]=function(e){switch(e){case d:case m:return!1;case g:case v:return!0;default:return e}}(i),e},{}):"indentBy"==r||"wrapAt"==r?e[r]=parseInt(i):"indentWith"==r?e[r]=w(i):"breakWith"==r&&(e[r]=_(i)),e},{})):l)}}},{"../utils/override":95,os:109}],62:[function(e,t,n){(function(n){var r=e("url"),i=e("../utils/override");t.exports=function(e){return i((t=n.env.HTTP_PROXY||n.env.http_proxy)?{hostname:r.parse(t).hostname,port:parseInt(r.parse(t).port)}:{},e||{});var t}}).call(this,e("_process"))},{"../utils/override":95,_process:112,url:162}],63:[function(e,t,n){t.exports=function(e){return e||5e3}},{}],64:[function(e,t,n){t.exports=function(e){return Array.isArray(e)?e:!1===e?["none"]:void 0===e?["local"]:e.split(",")}},{}],65:[function(e,t,n){var o=e("./rounding-precision").roundingPrecisionFrom,a=e("../utils/override"),s={Zero:"0",One:"1",Two:"2"},u={};u[s.Zero]={},u[s.One]={cleanupCharsets:!0,normalizeUrls:!0,optimizeBackground:!0,optimizeBorderRadius:!0,optimizeFilter:!0,optimizeFontWeight:!0,optimizeOutline:!0,removeEmpty:!0,removeNegativePaddings:!0,removeQuotes:!0,removeWhitespace:!0,replaceMultipleZeros:!0,replaceTimeUnits:!0,replaceZeroUnits:!0,roundingPrecision:o(void 0),selectorsSortingMethod:"standard",specialComments:"all",tidyAtRules:!0,tidyBlockScopes:!0,tidySelectors:!0,transform:function(){}},u[s.Two]={mergeAdjacentRules:!0,mergeIntoShorthands:!0,mergeMedia:!0,mergeNonAdjacentRules:!0,mergeSemantically:!1,overrideProperties:!0,removeEmpty:!0,reduceNonAdjacentRules:!0,removeDuplicateFontRules:!0,removeDuplicateMediaBlocks:!0,removeDuplicateRules:!0,removeUnusedAtRules:!1,restructureRules:!1,skipProperties:[]};var l="*",c="all",r="false",i="off",f="true",p="on",h=";",d=":";function m(e,t){var n,r=a(u[e],{});for(n in r)"boolean"==typeof r[n]&&(r[n]=t);return r}function g(e){switch(e){case r:case i:return!1;case f:case p:return!0;default:return e}}function v(e,o){return e.split(h).reduce(function(e,t){var n=t.split(d),r=n[0],i=g(n[1]);return l==r||c==r?e=a(e,m(o,i)):e[r]=i,e},{})}t.exports={OptimizationLevel:s,optimizationLevelFrom:function(e){var t=a(u,{}),n=s.Zero,r=s.One,i=s.Two;return void 0===e?delete t[i]:("string"==typeof e&&(e=parseInt(e)),"number"==typeof e&&e===parseInt(i)||("number"==typeof e&&e===parseInt(r)?delete t[i]:"number"==typeof e&&e===parseInt(n)?(delete t[i],delete t[r]):("object"==typeof e&&(e=function(e){var t,n,r=a(e,{});for(n=0;n<=2;n++)(t=""+n)in r&&(void 0===r[t]||!1===r[t])&&delete r[t],t in r&&!0===r[t]&&(r[t]={}),t in r&&"string"==typeof r[t]&&(r[t]=v(r[t],t));return r}(e)),r in e&&"roundingPrecision"in e[r]&&(e[r].roundingPrecision=o(e[r].roundingPrecision)),i in e&&"skipProperties"in e[i]&&"string"==typeof e[i].skipProperties&&(e[i].skipProperties=e[i].skipProperties.split(",")),(n in e||r in e||i in e)&&(t[n]=a(t[n],e[n])),r in e&&l in e[r]&&(t[r]=a(t[r],m(r,g(e[r][l]))),delete e[r][l]),r in e&&c in e[r]&&(t[r]=a(t[r],m(r,g(e[r][c]))),delete e[r][c]),r in e||i in e?t[r]=a(t[r],e[r]):delete t[r],i in e&&l in e[i]&&(t[i]=a(t[i],m(i,g(e[i][l]))),delete e[i][l]),i in e&&c in e[i]&&(t[i]=a(t[i],m(i,g(e[i][c]))),delete e[i][c]),i in e?t[i]=a(t[i],e[i]):delete t[i]))),t}}},{"../utils/override":95,"./rounding-precision":68}],66:[function(e,r,t){(function(t){var n=e("path");r.exports=function(e){return e?n.resolve(e):t.cwd()}}).call(this,e("_process"))},{_process:112,path:110}],67:[function(e,t,n){t.exports=function(e){return void 0===e||!!e}},{}],68:[function(e,t,n){var o=e("../utils/override"),r=/^\d+$/,a=["*","all"],s="off",i=",",u="=";function l(e){return{ch:e,cm:e,em:e,ex:e,in:e,mm:e,pc:e,pt:e,px:e,q:e,rem:e,vh:e,vmax:e,vmin:e,vw:e,"%":e}}t.exports={DEFAULT:s,roundingPrecisionFrom:function(e){return o(l(s),(t=e,null==t?{}:"boolean"==typeof t?{}:"number"==typeof t&&-1==t?l(s):"number"==typeof t?l(t):"string"==typeof t&&r.test(t)?l(parseInt(t)):"string"!=typeof t||t!=s?"object"!=typeof t?t.split(i).reduce(function(e,t){var n=t.split(u),r=n[0],i=parseInt(n[1]);return(isNaN(i)||-1==i)&&(i=s),-1<a.indexOf(r)?e=o(e,l(i)):e[r]=i,e},{}):t:l(s)));var t}}},{"../utils/override":95}],69:[function(e,t,n){(function(k,C){var O=e("fs"),S=e("path"),D=e("./is-allowed-resource"),T=e("./match-data-uri"),B=e("./rebase-local-map"),R=e("./rebase-remote-map"),L=e("../tokenizer/token"),F=e("../utils/has-protocol"),q=e("../utils/is-data-uri-resource"),U=e("../utils/is-remote-resource"),M=/^\/\*# sourceMappingURL=(\S+) \*\/$/;function N(e){var t,n,r,i=[],o=a(e.sourceTokens[0]);for(r=e.sourceTokens.length;e.index<r;e.index++)if((t=a(n=e.sourceTokens[e.index]))!=o&&(i=[],o=t),i.push(n),e.processedTokens.push(n),n[0]==L.COMMENT&&M.test(n[1]))return s(n[1],t,i,e);return e.callback(e.processedTokens)}function a(e){return(e[0]==L.AT_RULE||e[0]==L.COMMENT?e[2][0]:e[1][0][2][0])[2]}function s(e,t,n,r){return h=e,d=r,m=function(e){return e&&(r.inputSourceMapTracker.track(t,e),function e(t,n){var r;var i,o;for(i=0,o=t.length;i<o;i++)switch((r=t[i])[0]){case L.AT_RULE:P(r,n);break;case L.AT_RULE_BLOCK:e(r[1],n),e(r[2],n);break;case L.AT_RULE_BLOCK_SCOPE:P(r,n);break;case L.NESTED_BLOCK:e(r[1],n),e(r[2],n);break;case L.NESTED_BLOCK_SCOPE:case L.COMMENT:P(r,n);break;case L.PROPERTY:e(r,n);break;case L.PROPERTY_BLOCK:e(r[1],n);break;case L.PROPERTY_NAME:case L.PROPERTY_VALUE:P(r,n);break;case L.RULE:e(r[1],n),e(r[2],n);break;case L.RULE_SCOPE:P(r,n)}return t}(n,r.inputSourceMapTracker)),r.index++,N(r)},y=M.exec(h)[1],q(y)?(_=T(y),w=_[2]?_[2].split(/[=;]/)[2]:"us-ascii",E=_[3]?_[3].split(";")[1]:"utf8",A="utf8"==E?k.unescape(_[4]):_[4],(x=new C(A,E)).charset=w,v=JSON.parse(x.toString()),m(v)):U(y)?(c=function(e){var t;e?(t=JSON.parse(e),b=R(t,y),m(b)):m(null)},f=D(u=y,!0,(l=d).inline),p=!F(u),l.localOnly?(l.warnings.push('Cannot fetch remote resource from "'+u+'" as no callback given.'),c(null)):p?(l.warnings.push('Cannot fetch "'+u+'" as no protocol given.'),c(null)):f?void l.fetch(u,l.inlineRequest,l.inlineTimeout,function(e,t){if(e)return l.warnings.push('Missing source map at "'+u+'" - '+e),c(null);c(t)}):(l.warnings.push('Cannot fetch "'+u+'" as resource is not allowed.'),c(null))):(g=S.resolve(d.rebaseTo,y),s=D(i=g,!1,(o=d).inline),(v=O.existsSync(i)&&O.statSync(i).isFile()?s?(a=O.readFileSync(i,"utf-8"),JSON.parse(a)):(o.warnings.push('Cannot fetch "'+i+'" as resource is not allowed.'),null):(o.warnings.push('Ignoring local source map at "'+i+'" as resource is missing.'),null))?(b=B(v,g,d.rebaseTo),m(b)):m(null));var i,o,a,s,u,l,c,f,p,h,d,m,g,v,b,y,_,w,E,A,x}function P(e,t){var n,r,i=e[1],o=e[2],a=[];for(n=0,r=o.length;n<r;n++)a.push(t.originalPositionFor(o[n],i.length));e[2]=a}t.exports=function(e,t,n){var r={callback:n,fetch:t.options.fetch,index:0,inline:t.options.inline,inlineRequest:t.options.inlineRequest,inlineTimeout:t.options.inlineTimeout,inputSourceMapTracker:t.inputSourceMapTracker,localOnly:t.localOnly,processedTokens:[],rebaseTo:t.options.rebaseTo,sourceTokens:e,warnings:t.warnings};return t.options.sourceMap&&0<e.length?N(r):n(e)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer)},{"../tokenizer/token":84,"../utils/has-protocol":88,"../utils/is-data-uri-resource":89,"../utils/is-remote-resource":93,"./is-allowed-resource":72,"./match-data-uri":75,"./rebase-local-map":78,"./rebase-remote-map":79,buffer:4,fs:3,path:110}],70:[function(e,t,n){var r=e("../utils/split"),i=/^\(/,o=/\)$/,a=/^@import/i,s=/['"]\s*/,u=/\s*['"]/,l=/^url\(\s*/i,c=/\s*\)/i;t.exports=function(e){var t,n;return t=e.replace(a,"").trim().replace(l,"(").replace(c,")").replace(s,"").replace(u,""),[(n=r(t," "))[0].replace(i,"").replace(o,""),n.slice(1).join(" ")]}},{"../utils/split":96}],71:[function(e,t,n){var r=e("source-map").SourceMapConsumer;t.exports=function(){var e={};return{all:function(e){return e}.bind(null,e),isTracking:function(e,t){return t in e}.bind(null,e),originalPositionFor:function e(t,n,r,i){for(var o,a,s=n[0],u=n[1],l=n[2],c={line:s,column:u+r};!o&&c.column>u;)c.column--,o=t[l].originalPositionFor(c);return!o||o.column<0?n:null===o.line&&1<s&&0<i?e(t,[s-1,u,l],r,i-1):null!==o.line?[(a=o).line,a.column,a.source]:n}.bind(null,e),track:function(e,t,n){e[t]=new r(n)}.bind(null,e)}}},{"source-map":154}],72:[function(e,t,n){var f=e("path"),p=e("url"),r=e("../utils/is-remote-resource"),h=e("../utils/has-protocol"),d="http:";function m(e){return r(e)||p.parse(d+"//"+e).host==e}t.exports=function e(t,n,r){var i,o,a,s,u,l,c=!n;if(0===r.length)return!1;for(n&&!h(t)&&(t=d+t),i=n?p.parse(t).host:t,o=n?t:f.resolve(t),l=0;l<r.length;l++)s="!"==(a=r[l])[0],u=a.substring(1),c=s&&n&&m(u)?c&&!e(t,!0,[u]):!s||n||m(u)?s?c&&!0:"all"==a||(n&&"local"==a?c||!1:!(!n||"remote"!=a)||!(!n&&"remote"==a)&&(!n&&"local"==a||a===i||a===t||!(!n||0!==o.indexOf(a))||!n&&0===o.indexOf(f.resolve(a))||n!=m(u)&&c&&!0)):c&&!e(t,!1,[u]);return c}},{"../utils/has-protocol":88,"../utils/is-remote-resource":93,path:110,url:162}],73:[function(e,t,n){var i=e("fs"),o=e("path"),a=e("./is-allowed-resource"),s=e("../utils/has-protocol"),r=e("../utils/is-remote-resource");function u(e){var t,n,r,i=Object.keys(e.uriToSource);for(r=i.length;e.index<r;e.index++){if(t=i[e.index],!(n=e.uriToSource[t]))return l(t,e);e.sourcesContent[t]=n}return e.callback()}function l(t,n){var e;return r(t)?function(n,r,i){var e=a(n,!0,r.inline),t=!s(n);{if(r.localOnly)return r.warnings.push('Cannot fetch remote resource from "'+n+'" as no callback given.'),i(null);if(t)return r.warnings.push('Cannot fetch "'+n+'" as no protocol given.'),i(null);if(!e)return r.warnings.push('Cannot fetch "'+n+'" as resource is not allowed.'),i(null)}r.fetch(n,r.inlineRequest,r.inlineTimeout,function(e,t){e&&r.warnings.push('Missing original source at "'+n+'" - '+e),i(t)})}(t,n,function(e){return n.index++,n.sourcesContent[t]=e,u(n)}):(e=function(e,t){var n=a(e,!1,t.inline),r=o.resolve(t.rebaseTo,e);{if(!i.existsSync(r)||!i.statSync(r).isFile())return t.warnings.push('Ignoring local source map at "'+r+'" as resource is missing.'),null;if(!n)return t.warnings.push('Cannot fetch "'+r+'" as resource is not allowed.'),null}return i.readFileSync(r,"utf8")}(t,n),n.index++,n.sourcesContent[t]=e,u(n))}t.exports=function(e,t){var n={callback:t,fetch:e.options.fetch,index:0,inline:e.options.inline,inlineRequest:e.options.inlineRequest,inlineTimeout:e.options.inlineTimeout,localOnly:e.localOnly,rebaseTo:e.options.rebaseTo,sourcesContent:e.sourcesContent,uriToSource:function(e){var t,n,r,i,o,a={};for(r in e)for(t=e[r],i=0,o=t.sources.length;i<o;i++)n=t.sources[i],r=t.sourceContentFor(n,!0),a[n]=r;return a}(e.inputSourceMapTracker.all()),warnings:e.warnings};return e.options.sourceMap&&e.options.sourceMapInlineSources?u(n):t()}},{"../utils/has-protocol":88,"../utils/is-remote-resource":93,"./is-allowed-resource":72,fs:3,path:110}],74:[function(e,t,n){var u=e("http"),l=e("https"),c=e("url"),f=e("../utils/is-http-resource"),p=e("../utils/is-https-resource"),h=e("../utils/override"),d="http:";t.exports=function n(r,i,o,a){var e,t=i.protocol||i.hostname,s=!1;e=h(c.parse(r),i||{}),void 0!==i.hostname&&(e.protocol=i.protocol||d,e.path=e.href),(t&&!p(t)||f(r)?u.get:l.get)(e,function(e){var t=[];if(!s){if(e.statusCode<200||399<e.statusCode)return a(e.statusCode,null);if(299<e.statusCode)return n(c.resolve(r,e.headers.location),i,o,a);e.on("data",function(e){t.push(e.toString())}),e.on("end",function(){var e=t.join("");a(null,e)})}}).on("error",function(e){s||(s=!0,a(e.message,null))}).on("timeout",function(){s||(s=!0,a("timeout",null))}).setTimeout(o)}},{"../utils/is-http-resource":90,"../utils/is-https-resource":91,"../utils/override":95,http:155,https:104,url:162}],75:[function(e,t,n){var r=/^data:(\S*?)?(;charset=[^;]+)?(;[^,]+?)?,(.+)/;t.exports=function(e){return r.exec(e)}},{}],76:[function(e,t,n){var r=/\\/g;t.exports=function(e){return e.replace(r,"/")}},{}],77:[function(e,r,t){(function(c,f){var p=e("fs"),h=e("path"),d=e("./apply-source-maps"),m=e("./extract-import-url-and-media"),g=e("./is-allowed-resource"),v=e("./load-original-sources"),b=e("./normalize-path"),y=e("./rebase"),_=e("./rebase-local-map"),w=e("./rebase-remote-map"),t=e("./restore-import"),E=e("../tokenizer/tokenize"),A=e("../tokenizer/token"),n=e("../tokenizer/marker"),x=e("../utils/has-protocol"),k=e("../utils/is-import"),C=e("../utils/is-remote-resource"),O="uri:unknown";function S(e,t,n){return t.source=void 0,t.sourcesContent[void 0]=e,t.stats.originalSize+=e.length,R(e,t,{inline:t.options.inline},n)}function D(e,t,n){var r,i,o,a,s,u,l,c;for(r in e)o=e[r],i=T(r),n.push(B(i)),t.sourcesContent[i]=o.styles,o.sourceMap&&(a=o.sourceMap,s=i,u=t,void 0,l="string"==typeof a?JSON.parse(a):a,c=C(s)?w(l,s):_(l,s||O,u.options.rebaseTo),u.inputSourceMapTracker.track(s,c));return n}function T(e){var t,n,r=h.resolve("");return C(e)?e:(t=h.isAbsolute(e)?e:h.resolve(e),n=h.relative(r,t),b(n))}function B(e){return t("url("+e+")","")+n.SEMICOLON}function R(e,t,n,r){var i,o,a,s,u,l={};return t.source?C(t.source)?(l.fromBase=t.source,l.toBase=t.source):(h.isAbsolute(t.source)?l.fromBase=h.dirname(t.source):l.fromBase=h.dirname(h.resolve(t.source)),l.toBase=t.options.rebaseTo):(l.fromBase=h.resolve(""),l.toBase=t.options.rebaseTo),i=E(e,t),i=y(i,t.options.rebase,t.validator,l),1!=(u=n.inline).length||"none"!=u[0]?(o=i,s=n,L({afterContent:!1,callback:r,errors:(a=t).errors,externalContext:a,fetch:a.options.fetch,inlinedStylesheets:s.inlinedStylesheets||a.inlinedStylesheets,inline:s.inline,inlineRequest:a.options.inlineRequest,inlineTimeout:a.options.inlineTimeout,isRemote:s.isRemote||!1,localOnly:a.localOnly,outputTokens:[],rebaseTo:a.options.rebaseTo,sourceTokens:o,warnings:a.warnings})):r(i)}function L(e){var t,n,r,i,o,a,s,u,l;for(n=0,r=e.sourceTokens.length;n<r;n++){if((t=e.sourceTokens[n])[0]==A.AT_RULE&&k(t[1]))return e.sourceTokens.splice(0,n),o=e,void 0,a=m((i=t)[1]),s=a[0],u=a[1],l=i[2],C(s)?function(n,r,i,o){var e=g(n,!0,o.inline),a=n,t=n in o.externalContext.sourcesContent,s=!x(n);{if(-1<o.inlinedStylesheets.indexOf(n))return o.warnings.push('Ignoring remote @import of "'+n+'" as it has already been imported.'),o.sourceTokens=o.sourceTokens.slice(1),L(o);if(o.localOnly&&o.afterContent)return o.warnings.push('Ignoring remote @import of "'+n+'" as no callback given and after other content.'),o.sourceTokens=o.sourceTokens.slice(1),L(o);if(s)return o.warnings.push('Skipping remote @import of "'+n+'" as no protocol given.'),o.outputTokens=o.outputTokens.concat(o.sourceTokens.slice(0,1)),o.sourceTokens=o.sourceTokens.slice(1),L(o);if(o.localOnly&&!t)return o.warnings.push('Skipping remote @import of "'+n+'" as no callback given.'),o.outputTokens=o.outputTokens.concat(o.sourceTokens.slice(0,1)),o.sourceTokens=o.sourceTokens.slice(1),L(o);if(!e&&o.afterContent)return o.warnings.push('Ignoring remote @import of "'+n+'" as resource is not allowed and after other content.'),o.sourceTokens=o.sourceTokens.slice(1),L(o);if(!e)return o.warnings.push('Skipping remote @import of "'+n+'" as resource is not allowed.'),o.outputTokens=o.outputTokens.concat(o.sourceTokens.slice(0,1)),o.sourceTokens=o.sourceTokens.slice(1),L(o)}function u(e,t){return e?(o.errors.push('Broken @import declaration of "'+n+'" - '+e),f.nextTick(function(){o.outputTokens=o.outputTokens.concat(o.sourceTokens.slice(0,1)),o.sourceTokens=o.sourceTokens.slice(1),L(o)})):(o.inline=o.externalContext.options.inline,o.isRemote=!0,o.externalContext.source=a,o.externalContext.sourcesContent[n]=t,o.externalContext.stats.originalSize+=t.length,R(t,o.externalContext,o,function(e){return e=F(e,r,i),o.outputTokens=o.outputTokens.concat(e),o.sourceTokens=o.sourceTokens.slice(1),L(o)}))}return o.inlinedStylesheets.push(n),t?u(null,o.externalContext.sourcesContent[n]):o.fetch(n,o.inlineRequest,o.inlineTimeout,u)}(s,u,l,o):function(e,t,n,r){var i,o=h.resolve(""),a=h.isAbsolute(e)?h.resolve(o,"/"==e[0]?e.substring(1):e):h.resolve(r.rebaseTo,e),s=h.relative(o,a),u=g(e,!1,r.inline),l=b(s),c=l in r.externalContext.sourcesContent;if(-1<r.inlinedStylesheets.indexOf(a))r.warnings.push('Ignoring local @import of "'+e+'" as it has already been imported.');else if(c||p.existsSync(a)&&p.statSync(a).isFile())if(!u&&r.afterContent)r.warnings.push('Ignoring local @import of "'+e+'" as resource is not allowed and after other content.');else if(r.afterContent)r.warnings.push('Ignoring local @import of "'+e+'" as after other content.');else{if(u)return i=c?r.externalContext.sourcesContent[l]:p.readFileSync(a,"utf-8"),r.inlinedStylesheets.push(a),r.inline=r.externalContext.options.inline,r.externalContext.source=l,r.externalContext.sourcesContent[l]=i,r.externalContext.stats.originalSize+=i.length,R(i,r.externalContext,r,function(e){return e=F(e,t,n),r.outputTokens=r.outputTokens.concat(e),r.sourceTokens=r.sourceTokens.slice(1),L(r)});r.warnings.push('Skipping local @import of "'+e+'" as resource is not allowed.'),r.outputTokens=r.outputTokens.concat(r.sourceTokens.slice(0,1))}else r.errors.push('Ignoring local @import of "'+e+'" as resource is missing.');return r.sourceTokens=r.sourceTokens.slice(1),L(r)}(s,u,l,o);t[0]==A.AT_RULE||t[0]==A.COMMENT?e.outputTokens.push(t):(e.outputTokens.push(t),e.afterContent=!0)}return e.sourceTokens=[],e.callback(e.outputTokens)}function F(e,t,n){return t?[[A.NESTED_BLOCK,[[A.NESTED_BLOCK_SCOPE,"@media "+t,n]],e]]:e}r.exports=function(e,t,n){return r=e,i=t,o=function(e){return d(e,t,function(){return v(t,function(){return n(e)})})},"string"==typeof r?S(r,i,o):c.isBuffer(r)?S(r.toString(),i,o):Array.isArray(r)?(u=i,l=o,R(r.reduce(function(e,t){return"string"==typeof t?(n=t,(r=e).push(B(T(n))),r):D(t,u,e);var n,r},[]).join(""),u,{inline:["all"]},l)):"object"==typeof r?(s=o,R(D(r,a=i,[]).join(""),a,{inline:["all"]},s)):void 0;var r,i,o,a,s,u,l}}).call(this,{isBuffer:e("../../../is-buffer/index.js")},e("_process"))},{"../../../is-buffer/index.js":107,"../tokenizer/marker":83,"../tokenizer/token":84,"../tokenizer/tokenize":85,"../utils/has-protocol":88,"../utils/is-import":92,"../utils/is-remote-resource":93,"./apply-source-maps":69,"./extract-import-url-and-media":70,"./is-allowed-resource":72,"./load-original-sources":73,"./normalize-path":76,"./rebase":80,"./rebase-local-map":78,"./rebase-remote-map":79,"./restore-import":81,_process:112,fs:3,path:110}],78:[function(e,t,n){var a=e("path");t.exports=function(e,t,n){var r=a.resolve(""),i=a.resolve(r,t),o=a.dirname(i);return e.sources=e.sources.map(function(e){return a.relative(n,a.resolve(o,e))}),e}},{path:110}],79:[function(e,t,n){var r=e("path"),i=e("url");t.exports=function(e,t){var n=r.dirname(t);return e.sources=e.sources.map(function(e){return i.resolve(n,e)}),e}},{path:110,url:162}],80:[function(e,t,n){var a=e("./extract-import-url-and-media"),s=e("./restore-import"),c=e("./rewrite-url"),f=e("../tokenizer/token"),u=e("../utils/is-import"),p=/^\/\*# sourceMappingURL=(\S+) \*\/$/;function h(e,t,n){if(u(e[1])){var r=a(e[1]),i=c(r[0],n),o=r[1];e[1]=s(i,o)}}function d(e,t,n){var r,i,o,a,s,u;for(o=0,a=e.length;o<a;o++)for(s=2,u=(r=e[o]).length;s<u;s++)i=r[s][1],t.isUrl(i)&&(r[s][1]=c(i,n))}t.exports=function(e,t,n,r){return t?function e(t,n,r){var i,o,a,s,u,l;for(o=0,a=t.length;o<a;o++)switch((i=t[o])[0]){case f.AT_RULE:h(i,0,r);break;case f.AT_RULE_BLOCK:d(i[2],n,r);break;case f.COMMENT:s=i,u=r,l=void 0,(l=p.exec(s[1]))&&-1===l[1].indexOf("data:")&&(s[1]=s[1].replace(l[1],c(l[1],u,!0)));break;case f.NESTED_BLOCK:e(i[2],n,r);break;case f.RULE:d(i[2],n,r)}return t}(e,n,r):function(e,t,n){var r,i,o;for(i=0,o=e.length;i<o;i++)switch((r=e[i])[0]){case f.AT_RULE:h(r,0,n)}return e}(e,0,r)}},{"../tokenizer/token":84,"../utils/is-import":92,"./extract-import-url-and-media":70,"./restore-import":81,"./rewrite-url":82}],81:[function(e,t,n){t.exports=function(e,t){return("@import "+e+" "+t).trim()}},{}],82:[function(n,o,e){(function(e){var s=n("path"),u=n("url"),a='"',l="'",c=/^["']/,f=/["']$/,r=/[\(\)]/,p=/^url\(/i,h=/\)$/,i=/\s/,t="win32"==e.platform;function d(e,t){return t?(n=e,s.isAbsolute(n)&&!m(t.toBase)?e:m(e)||"#"==e[0]||/^\w+:\w+/.test(e)?e:0===e.indexOf("data:")?"'"+e+"'":m(t.toBase)?u.resolve(t.toBase,e):t.absolute?g((o=e,a=t,s.resolve(s.join(a.fromBase||"",o)).replace(a.toBase,""))):g((r=e,i=t,s.relative(i.toBase,s.join(i.fromBase||"",r))))):e;var n,r,i,o,a}function m(e){return/^[^:]+?:\/\//.test(e)||0===e.indexOf("//")}function g(e){return t?e.replace(/\\/g,"/"):e}function v(e){return-1<e.indexOf(l)?a:-1<e.indexOf(a)?l:(n=e,i.test(n)||(t=e,r.test(t))?l:"");var t,n}o.exports=function(e,t,n){var r=e.replace(p,"").replace(h,"").trim(),i=r.replace(c,"").replace(f,"").trim(),o=r[0]==l||r[0]==a?r[0]:v(i);return n?d(i,t):"url("+o+d(i,t)+o+")"}}).call(this,n("_process"))},{_process:112,path:110,url:162}],83:[function(e,t,n){t.exports={ASTERISK:"*",AT:"@",BACK_SLASH:"\\",CARRIAGE_RETURN:"\r",CLOSE_CURLY_BRACKET:"}",CLOSE_ROUND_BRACKET:")",CLOSE_SQUARE_BRACKET:"]",COLON:":",COMMA:",",DOUBLE_QUOTE:'"',EXCLAMATION:"!",FORWARD_SLASH:"/",INTERNAL:"-clean-css-",NEW_LINE_NIX:"\n",OPEN_CURLY_BRACKET:"{",OPEN_ROUND_BRACKET:"(",OPEN_SQUARE_BRACKET:"[",SEMICOLON:";",SINGLE_QUOTE:"'",SPACE:" ",TAB:"\t",UNDERSCORE:"_"}},{}],84:[function(e,t,n){t.exports={AT_RULE:"at-rule",AT_RULE_BLOCK:"at-rule-block",AT_RULE_BLOCK_SCOPE:"at-rule-block-scope",COMMENT:"comment",NESTED_BLOCK:"nested-block",NESTED_BLOCK_SCOPE:"nested-block-scope",PROPERTY:"property",PROPERTY_BLOCK:"property-block",PROPERTY_NAME:"property-name",PROPERTY_VALUE:"property-value",RAW:"raw",RULE:"rule",RULE_SCOPE:"rule-scope"}},{}],85:[function(e,t,n){var z=e("./marker"),j=e("./token"),V=e("../utils/format-position"),H={BLOCK:"block",COMMENT:"comment",DOUBLE_QUOTE:"double-quote",RULE:"rule",SINGLE_QUOTE:"single-quote"},r=["@charset","@import"],i=["@-moz-document","@document","@-moz-keyframes","@-ms-keyframes","@-o-keyframes","@-webkit-keyframes","@keyframes","@media","@supports"],$=/\/\* clean\-css ignore:end \*\/$/,K=/^\/\* clean\-css ignore:start \*\//,G=["@bottom-center","@bottom-left","@bottom-left-corner","@bottom-right","@bottom-right-corner","@left-bottom","@left-middle","@left-top","@right-bottom","@right-middle","@right-top","@top-center","@top-left","@top-left-corner","@top-right","@top-right-corner"],Y=["@footnote","@footnotes","@left","@page-float-bottom","@page-float-top","@right"],W=/^\[\s{0,31}\d+\s{0,31}\]$/,o=/[\s\(]/,Q=/[\s|\}]*$/;function Z(e,t,n,r){var i=e[2];return n.inputSourceMapTracker.isTracking(i)?n.inputSourceMapTracker.originalPositionFor(e,t.length,r):e}function J(e){var t=e[0]==z.AT||e[0]==z.UNDERSCORE,n=e.join("").split(o)[0];return t&&-1<i.indexOf(n)?j.NESTED_BLOCK:t&&-1<r.indexOf(n)?j.AT_RULE:t?j.AT_RULE_BLOCK:j.RULE}function X(e){return e==j.RULE?j.RULE_SCOPE:e==j.NESTED_BLOCK?j.NESTED_BLOCK_SCOPE:e==j.AT_RULE_BLOCK?j.AT_RULE_BLOCK_SCOPE:void 0}t.exports=function(e,t){return function e(t,n,r,i){for(var o,a,s,u,l,c,f,p,h,d,m,g,v,b,y,_,w,E,A,x,k=[],C=k,O=[],S=[],D=r.level,T=[],B=[],R=[],L=0,F=!1,q=!1,U=!1,M=!1,N=!1,P=r.position;P.index<t.length;P.index++){var I=t[P.index];if(f=D==H.SINGLE_QUOTE||D==H.DOUBLE_QUOTE,p=I==z.SPACE||I==z.TAB,h=I==z.NEW_LINE_NIX,d=I==z.NEW_LINE_NIX&&t[P.index-1]==z.CARRIAGE_RETURN,m=I==z.CARRIAGE_RETURN&&t[P.index+1]&&t[P.index+1]!=z.NEW_LINE_NIX,g=!q&&D!=H.COMMENT&&!f&&I==z.ASTERISK&&t[P.index-1]==z.FORWARD_SLASH,b=!F&&!f&&I==z.FORWARD_SLASH&&t[P.index-1]==z.ASTERISK,v=D==H.COMMENT&&b,L=Math.max(L,0),u=0===B.length?[P.line,P.column,P.source]:u,y)B.push(I);else if(v||D!=H.COMMENT)if(g||v||!U)if(g&&(D==H.BLOCK||D==H.RULE)&&1<B.length)S.push(u),B.push(I),R.push(B.slice(0,B.length-2)),B=B.slice(B.length-2),u=[P.line,P.column-1,P.source],T.push(D),D=H.COMMENT;else if(g)T.push(D),D=H.COMMENT,B.push(I);else if(v&&(x=B,K.test(x.join("")+z.FORWARD_SLASH)))l=B.join("").trim()+I,o=[j.COMMENT,l,[Z(u,l,n)]],C.push(o),U=!0,u=S.pop()||null,B=R.pop()||[];else if(v&&(A=B,$.test(A.join("")+z.FORWARD_SLASH)))l=B.join("")+I,_=l.lastIndexOf(z.FORWARD_SLASH+z.ASTERISK),c=l.substring(0,_),o=[j.RAW,c,[Z(u,c,n)]],C.push(o),c=l.substring(_),u=[P.line,P.column-c.length+1,P.source],o=[j.COMMENT,c,[Z(u,c,n)]],C.push(o),U=!1,D=T.pop(),u=S.pop()||null,B=R.pop()||[];else if(v)l=B.join("").trim()+I,o=[j.COMMENT,l,[Z(u,l,n)]],C.push(o),D=T.pop(),u=S.pop()||null,B=R.pop()||[];else if(b&&t[P.index+1]!=z.ASTERISK)n.warnings.push("Unexpected '*/' at "+V([P.line,P.column,P.source])+"."),B=[];else if(I!=z.SINGLE_QUOTE||f)if(I==z.SINGLE_QUOTE&&D==H.SINGLE_QUOTE)D=T.pop(),B.push(I);else if(I!=z.DOUBLE_QUOTE||f)if(I==z.DOUBLE_QUOTE&&D==H.DOUBLE_QUOTE)D=T.pop(),B.push(I);else if(!g&&!v&&I!=z.CLOSE_ROUND_BRACKET&&I!=z.OPEN_ROUND_BRACKET&&D!=H.COMMENT&&!f&&0<L)B.push(I);else if(I!=z.OPEN_ROUND_BRACKET||f||D==H.COMMENT||M)if(I!=z.CLOSE_ROUND_BRACKET||f||D==H.COMMENT||M)if(I==z.SEMICOLON&&D==H.BLOCK&&B[0]==z.AT)l=B.join("").trim(),k.push([j.AT_RULE,l,[Z(u,l,n)]]),B=[];else if(I==z.COMMA&&D==H.BLOCK&&a)l=B.join("").trim(),a[1].push([X(a[0]),l,[Z(u,l,n,a[1].length)]]),B=[];else if(I==z.COMMA&&D==H.BLOCK&&J(B)==j.AT_RULE)B.push(I);else if(I==z.COMMA&&D==H.BLOCK)a=[J(B),[],[]],l=B.join("").trim(),a[1].push([X(a[0]),l,[Z(u,l,n,0)]]),B=[];else if(I==z.OPEN_CURLY_BRACKET&&D==H.BLOCK&&a&&a[0]==j.NESTED_BLOCK)l=B.join("").trim(),a[1].push([j.NESTED_BLOCK_SCOPE,l,[Z(u,l,n)]]),k.push(a),T.push(D),P.column++,P.index++,B=[],a[2]=e(t,n,r,!0),a=null;else if(I==z.OPEN_CURLY_BRACKET&&D==H.BLOCK&&J(B)==j.NESTED_BLOCK)l=B.join("").trim(),(a=a||[j.NESTED_BLOCK,[],[]])[1].push([j.NESTED_BLOCK_SCOPE,l,[Z(u,l,n)]]),k.push(a),T.push(D),P.column++,P.index++,B=[],a[2]=e(t,n,r,!0),a=null;else if(I==z.OPEN_CURLY_BRACKET&&D==H.BLOCK)l=B.join("").trim(),(a=a||[J(B),[],[]])[1].push([X(a[0]),l,[Z(u,l,n,a[1].length)]]),C=a[2],k.push(a),T.push(D),D=H.RULE,B=[];else if(I==z.OPEN_CURLY_BRACKET&&D==H.RULE&&M)O.push(a),a=[j.PROPERTY_BLOCK,[]],s.push(a),C=a[1],T.push(D),D=H.RULE,M=!1;else if(I==z.OPEN_CURLY_BRACKET&&D==H.RULE&&(E=B.join("").trim(),-1<G.indexOf(E)||-1<Y.indexOf(E)))l=B.join("").trim(),O.push(a),(a=[j.AT_RULE_BLOCK,[],[]])[1].push([j.AT_RULE_BLOCK_SCOPE,l,[Z(u,l,n)]]),C.push(a),C=a[2],T.push(D),D=H.RULE,B=[];else if(I!=z.COLON||D!=H.RULE||M)if(I==z.SEMICOLON&&D==H.RULE&&s&&0<O.length&&0<B.length&&B[0]==z.AT)l=B.join("").trim(),a[1].push([j.AT_RULE,l,[Z(u,l,n)]]),B=[];else if(I==z.SEMICOLON&&D==H.RULE&&s&&0<B.length)l=B.join("").trim(),s.push([j.PROPERTY_VALUE,l,[Z(u,l,n)]]),s=null,M=!1,B=[];else if(I==z.SEMICOLON&&D==H.RULE&&s&&0===B.length)s=null,M=!1;else if(I==z.SEMICOLON&&D==H.RULE&&0<B.length&&B[0]==z.AT)l=B.join(""),C.push([j.AT_RULE,l,[Z(u,l,n)]]),M=!1,B=[];else if(I==z.SEMICOLON&&D==H.RULE&&N)N=!1,B=[];else if(I==z.SEMICOLON&&D==H.RULE&&0===B.length);else if(I==z.CLOSE_CURLY_BRACKET&&D==H.RULE&&s&&M&&0<B.length&&0<O.length)l=B.join(""),s.push([j.PROPERTY_VALUE,l,[Z(u,l,n)]]),s=null,a=O.pop(),C=a[2],D=T.pop(),M=!1,B=[];else if(I==z.CLOSE_CURLY_BRACKET&&D==H.RULE&&s&&0<B.length&&B[0]==z.AT&&0<O.length)l=B.join(""),a[1].push([j.AT_RULE,l,[Z(u,l,n)]]),s=null,a=O.pop(),C=a[2],D=T.pop(),M=!1,B=[];else if(I==z.CLOSE_CURLY_BRACKET&&D==H.RULE&&s&&0<O.length)s=null,a=O.pop(),C=a[2],D=T.pop(),M=!1;else if(I==z.CLOSE_CURLY_BRACKET&&D==H.RULE&&s&&0<B.length)l=B.join(""),s.push([j.PROPERTY_VALUE,l,[Z(u,l,n)]]),s=null,a=O.pop(),C=k,D=T.pop(),M=!1,B=[];else if(I==z.CLOSE_CURLY_BRACKET&&D==H.RULE&&0<B.length&&B[0]==z.AT)a=s=null,l=B.join("").trim(),C.push([j.AT_RULE,l,[Z(u,l,n)]]),C=k,D=T.pop(),M=!1,B=[];else if(I==z.CLOSE_CURLY_BRACKET&&D==H.RULE&&T[T.length-1]==H.RULE)s=null,a=O.pop(),C=a[2],D=T.pop(),N=!(M=!1),B=[];else if(I==z.CLOSE_CURLY_BRACKET&&D==H.RULE)a=s=null,C=k,D=T.pop(),M=!1;else if(I==z.CLOSE_CURLY_BRACKET&&D==H.BLOCK&&!i&&P.index<=t.length-1)n.warnings.push("Unexpected '}' at "+V([P.line,P.column,P.source])+"."),B.push(I);else{if(I==z.CLOSE_CURLY_BRACKET&&D==H.BLOCK)break;I==z.OPEN_ROUND_BRACKET&&D==H.RULE&&M?(B.push(I),L++):I==z.CLOSE_ROUND_BRACKET&&D==H.RULE&&M&&1==L?(B.push(I),l=B.join("").trim(),s.push([j.PROPERTY_VALUE,l,[Z(u,l,n)]]),L--,B=[]):I==z.CLOSE_ROUND_BRACKET&&D==H.RULE&&M?(B.push(I),L--):I==z.FORWARD_SLASH&&t[P.index+1]!=z.ASTERISK&&D==H.RULE&&M&&0<B.length?(l=B.join("").trim(),s.push([j.PROPERTY_VALUE,l,[Z(u,l,n)]]),s.push([j.PROPERTY_VALUE,I,[[P.line,P.column,P.source]]]),B=[]):I==z.FORWARD_SLASH&&t[P.index+1]!=z.ASTERISK&&D==H.RULE&&M?(s.push([j.PROPERTY_VALUE,I,[[P.line,P.column,P.source]]]),B=[]):I==z.COMMA&&D==H.RULE&&M&&0<B.length?(l=B.join("").trim(),s.push([j.PROPERTY_VALUE,l,[Z(u,l,n)]]),s.push([j.PROPERTY_VALUE,I,[[P.line,P.column,P.source]]]),B=[]):I==z.COMMA&&D==H.RULE&&M?(s.push([j.PROPERTY_VALUE,I,[[P.line,P.column,P.source]]]),B=[]):I==z.CLOSE_SQUARE_BRACKET&&s&&1<s.length&&0<B.length&&(w=B,W.test(w.join("")+z.CLOSE_SQUARE_BRACKET))?(B.push(I),l=B.join("").trim(),s[s.length-1][1]+=l,B=[]):(p||h&&!d)&&D==H.RULE&&M&&s&&0<B.length?(l=B.join("").trim(),s.push([j.PROPERTY_VALUE,l,[Z(u,l,n)]]),B=[]):d&&D==H.RULE&&M&&s&&1<B.length?(l=B.join("").trim(),s.push([j.PROPERTY_VALUE,l,[Z(u,l,n)]]),B=[]):d&&D==H.RULE&&M?B=[]:1==B.length&&d?B.pop():(0<B.length||!p&&!h&&!d&&!m)&&B.push(I)}else l=B.join("").trim(),s=[j.PROPERTY,[j.PROPERTY_NAME,l,[Z(u,l,n)]]],C.push(s),M=!0,B=[];else B.push(I),L--;else B.push(I),L++;else T.push(D),D=H.DOUBLE_QUOTE,B.push(I);else T.push(D),D=H.SINGLE_QUOTE,B.push(I);else B.push(I);else B.push(I);y=!y&&I==z.BACK_SLASH,F=g,q=v,P.line=d||h||m?P.line+1:P.line,P.column=d||h||m?0:P.column+1}return M&&n.warnings.push("Missing '}' at "+V([P.line,P.column,P.source])+"."),M&&0<B.length&&(l=B.join("").replace(Q,""),s.push([j.PROPERTY_VALUE,l,[Z(u,l,n)]]),B=[]),0<B.length&&n.warnings.push("Invalid character(s) '"+B.join("")+"' at "+V(u)+". Ignoring."),k}(e,t,{level:H.BLOCK,position:{source:t.source||void 0,line:1,column:0,index:0}},!1)}},{"../utils/format-position":87,"./marker":83,"./token":84}],86:[function(e,t,n){t.exports=function e(t){for(var n=t.slice(0),r=0,i=n.length;r<i;r++)Array.isArray(n[r])&&(n[r]=e(n[r]));return n}},{}],87:[function(e,t,n){t.exports=function(e){var t=e[0],n=e[1],r=e[2];return r?r+":"+t+":"+n:t+":"+n}},{}],88:[function(e,t,n){var r=/^\/\//;t.exports=function(e){return!r.test(e)}},{}],89:[function(e,t,n){var r=/^data:(\S*?)?(;charset=[^;]+)?(;[^,]+?)?,(.+)/;t.exports=function(e){return r.test(e)}},{}],90:[function(e,t,n){var r=/^http:\/\//;t.exports=function(e){return r.test(e)}},{}],91:[function(e,t,n){var r=/^https:\/\//;t.exports=function(e){return r.test(e)}},{}],92:[function(e,t,n){var r=/^@import/i;t.exports=function(e){return r.test(e)}},{}],93:[function(e,t,n){var r=/^(\w+:\/\/|\/\/)/;t.exports=function(e){return r.test(e)}},{}],94:[function(e,t,n){var u=/([0-9]+)/;function l(e){return""+parseInt(e)==e?parseInt(e):e}t.exports=function(e,t){var n,r,i,o,a=(""+e).split(u).map(l),s=(""+t).split(u).map(l);for(i=0,o=Math.min(a.length,s.length);i<o;i++)if((n=a[i])!=(r=s[i]))return r<n?1:-1;return a.length>s.length?1:a.length==s.length?0:-1}},{}],95:[function(e,t,n){t.exports=function e(t,n){var r,i,o,a={};for(r in t)o=t[r],Array.isArray(o)?a[r]=o.slice(0):a[r]="object"==typeof o&&null!==o?e(o,{}):o;for(i in n)o=n[i],i in a&&Array.isArray(o)?a[i]=o.slice(0):a[i]=i in a&&"object"==typeof o&&null!==o?e(a[i],o):o;return a}},{}],96:[function(e,t,n){var c=e("../tokenizer/marker");t.exports=function(e,t){var n,r=c.OPEN_ROUND_BRACKET,i=c.CLOSE_ROUND_BRACKET,o=0,a=0,s=0,u=e.length,l=[];if(-1==e.indexOf(t))return[e];if(-1==e.indexOf(r))return e.split(t);for(;a<u;)e[a]==r?o++:e[a]==i&&o--,0===o&&0<a&&a+1<u&&e[a]==t&&(l.push(e.substring(s,a)),s=a+1),a++;return s<a+1&&((n=e.substring(s))[n.length-1]==t&&(n=n.substring(0,n.length-1)),l.push(n)),l}},{"../tokenizer/marker":83}],97:[function(e,t,n){var c="",f=e("../options/format").Breaks,p=e("../options/format").Spaces,h=e("../tokenizer/marker"),d=e("../tokenizer/token");function a(e,t,n){return!e.spaceAfterClosingBrace&&("background"==(l=t)[1][1]||"transform"==l[1][1]||"src"==l[1][1])&&(s=t)[u=n][1][s[u][1].length-1]==h.CLOSE_ROUND_BRACKET||(o=t)[(a=n)+1]&&o[a+1][1]==h.FORWARD_SLASH||t[n][1]==h.FORWARD_SLASH||(r=t)[(i=n)+1]&&r[i+1][1]==h.COMMA||t[n][1]==h.COMMA;var r,i,o,a,s,u,l}function m(e,t){for(var n,r=e.store,i=0,o=t.length;i<o;i++)r(e,t[i]),i<o-1&&r(e,(n=e).format?h.COMMA+(u(n,f.BetweenSelectors)?n.format.breakWith:c)+n.indentWith:h.COMMA)}function g(e,t){for(var n=function(e){for(var t=e.length-1;0<=t&&e[t][0]==d.COMMENT;t--);return t}(t),r=0,i=t.length;r<i;r++)o(e,t,r,n)}function o(e,t,n,r){var i,o=e.store,a=t[n],s=a[2][0]==d.PROPERTY_BLOCK;i=e.format?!(!e.format.semicolonAfterLastProperty&&!s)||n<r:n<r||s;var u,l=n===r;switch(a[0]){case d.AT_RULE:o(e,a),o(e,w(e,f.AfterProperty,!1));break;case d.AT_RULE_BLOCK:m(e,a[1]),o(e,y(e,f.AfterRuleBegins,!0)),g(e,a[2]),o(e,_(e,f.AfterRuleEnds,!1,l));break;case d.COMMENT:o(e,a);break;case d.PROPERTY:o(e,a[1]),o(e,(u=e).format?h.COLON+(b(u,p.BeforeValue)?h.SPACE:c):h.COLON),v(e,a),o(e,i?w(e,f.AfterProperty,l):c);break;case d.RAW:o(e,a)}}function v(e,t){var n,r,i,o=e.store;if(t[2][0]==d.PROPERTY_BLOCK)o(e,y(e,f.AfterBlockBegins,!1)),g(e,t[2][1]),o(e,_(e,f.AfterBlockEnds,!1,!0));else for(n=2,r=t.length;n<r;n++)o(e,t[n]),n<r-1&&("filter"==(i=t)[1][1]||"-ms-filter"==i[1][1]||!a(e,t,n))&&o(e,h.SPACE)}function u(e,t){return e.format&&e.format.breaks[t]}function b(e,t){return e.format&&e.format.spaces[t]}function y(e,t,n){return e.format?(e.indentBy+=e.format.indentBy,e.indentWith=e.format.indentWith.repeat(e.indentBy),(n&&b(e,p.BeforeBlockBegins)?h.SPACE:c)+h.OPEN_CURLY_BRACKET+(u(e,t)?e.format.breakWith:c)+e.indentWith):h.OPEN_CURLY_BRACKET}function _(e,t,n,r){return e.format?(e.indentBy-=e.format.indentBy,e.indentWith=e.format.indentWith.repeat(e.indentBy),(u(e,f.AfterProperty)||n&&u(e,f.BeforeBlockEnds)?e.format.breakWith:c)+e.indentWith+h.CLOSE_CURLY_BRACKET+(r?c:(u(e,t)?e.format.breakWith:c)+e.indentWith)):h.CLOSE_CURLY_BRACKET}function w(e,t,n){return e.format?h.SEMICOLON+(n||!u(e,t)?c:e.format.breakWith+e.indentWith):h.SEMICOLON}t.exports={all:function e(t,n){var r,i,o,a,s=t.store;for(o=0,a=n.length;o<a;o++)switch(i=o==a-1,(r=n[o])[0]){case d.AT_RULE:s(t,r),s(t,w(t,f.AfterAtRule,i));break;case d.AT_RULE_BLOCK:m(t,r[1]),s(t,y(t,f.AfterRuleBegins,!0)),g(t,r[2]),s(t,_(t,f.AfterRuleEnds,!1,i));break;case d.NESTED_BLOCK:m(t,r[1]),s(t,y(t,f.AfterBlockBegins,!0)),e(t,r[2]),s(t,_(t,f.AfterBlockEnds,!0,i));break;case d.COMMENT:s(t,r),s(t,u(t,f.AfterComment)?t.format.breakWith:c);break;case d.RAW:s(t,r);break;case d.RULE:m(t,r[1]),s(t,y(t,f.AfterRuleBegins,!0)),g(t,r[2]),s(t,_(t,f.AfterRuleEnds,!1,i))}},body:g,property:o,rules:m,value:v}},{"../options/format":61,"../tokenizer/marker":83,"../tokenizer/token":84}],98:[function(e,t,n){var r=e("./helpers");function i(e,t){e.output.push("string"==typeof t?t:t[1])}function o(){return{output:[],store:i}}t.exports={all:function(e){var t=o();return r.all(t,e),t.output.join("")},body:function(e){var t=o();return r.body(t,e),t.output.join("")},property:function(e,t){var n=o();return r.property(n,e,t,!0),n.output.join("")},rules:function(e){var t=o();return r.rules(t,e),t.output.join("")},value:function(e){var t=o();return r.value(t,e),t.output.join("")}}},{"./helpers":97}],99:[function(e,t,n){var r=e("./helpers").all;function i(e,t){var n="string"==typeof t?t:t[1];(0,e.wrap)(e,n),a(e,n),e.output.push(n)}function o(e,t){e.column+t.length>e.format.wrapAt&&(a(e,e.format.breakWith),e.output.push(e.format.breakWith))}function a(e,t){var n=t.split("\n");e.line+=n.length-1,e.column=1<n.length?0:e.column+n.pop().length}t.exports=function(e,t){var n={column:0,format:t.options.format,indentBy:0,indentWith:"",line:1,output:[],spaceAfterClosingBrace:t.options.compatibility.properties.spaceAfterClosingBrace,store:i,wrap:t.options.format.wrapAt?o:function(){}};return r(n,e),{styles:n.output.join("")}}},{"./helpers":97}],100:[function(t,n,e){(function(e){var r=t("source-map").SourceMapGenerator,i=t("./helpers").all,s=t("../utils/is-remote-resource"),u="win32"==e.platform,l=/\//g,c="$stdin",f="\\";function o(e,t){var n="string"==typeof t,r=n?t:t[1],i=n?null:t[2];(0,e.wrap)(e,r),p(e,r,i),e.output.push(r)}function a(e,t){e.column+t.length>e.format.wrapAt&&(p(e,e.format.breakWith,!1),e.output.push(e.format.breakWith))}function p(e,t,n){var r=t.split("\n");n&&function(e,t){for(var n=0,r=t.length;n<r;n++)h(e,t[n])}(e,n),e.line+=r.length-1,e.column=1<r.length?0:e.column+r.pop().length}function h(e,t){var n=t[0],r=t[1],i=t[2],o=i,a=o||c;u&&o&&!s(o)&&(a=o.replace(l,f)),e.outputMap.addMapping({generated:{line:e.line,column:e.column},source:a,original:{line:n,column:r}}),e.inlineSources&&i in e.sourcesContent&&e.outputMap.setSourceContent(a,e.sourcesContent[i])}n.exports=function(e,t){var n={column:0,format:t.options.format,indentBy:0,indentWith:"",inlineSources:t.options.sourceMapInlineSources,line:1,output:[],outputMap:new r,sourcesContent:t.sourcesContent,spaceAfterClosingBrace:t.options.compatibility.properties.spaceAfterClosingBrace,store:o,wrap:t.options.format.wrapAt?a:function(){}};return i(n,e),{sourceMap:n.outputMap,styles:n.output.join("")}}}).call(this,t("_process"))},{"../utils/is-remote-resource":93,"./helpers":97,_process:112,"source-map":154}],101:[function(e,t,n){(function(e){function t(e){return Object.prototype.toString.call(e)}n.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===t(e)},n.isBoolean=function(e){return"boolean"==typeof e},n.isNull=function(e){return null===e},n.isNullOrUndefined=function(e){return null==e},n.isNumber=function(e){return"number"==typeof e},n.isString=function(e){return"string"==typeof e},n.isSymbol=function(e){return"symbol"==typeof e},n.isUndefined=function(e){return void 0===e},n.isRegExp=function(e){return"[object RegExp]"===t(e)},n.isObject=function(e){return"object"==typeof e&&null!==e},n.isDate=function(e){return"[object Date]"===t(e)},n.isError=function(e){return"[object Error]"===t(e)||e instanceof Error},n.isFunction=function(e){return"function"==typeof e},n.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},n.isBuffer=e.isBuffer}).call(this,{isBuffer:e("../../is-buffer/index.js")})},{"../../is-buffer/index.js":107}],102:[function(e,t,n){var u=Object.create||function(e){var t=function(){};return t.prototype=e,new t},a=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return n},o=Function.prototype.bind||function(e){var t=this;return function(){return t.apply(e,arguments)}};function r(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=u(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}((t.exports=r).EventEmitter=r).prototype._events=void 0,r.prototype._maxListeners=void 0;var i,s=10;try{var l={};Object.defineProperty&&Object.defineProperty(l,"x",{value:0}),i=0===l.x}catch(e){i=!1}function c(e){return void 0===e._maxListeners?r.defaultMaxListeners:e._maxListeners}function f(e,t,n,r){var i,o,a;if("function"!=typeof n)throw new TypeError('"listener" argument must be a function');if((o=e._events)?(o.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),o=e._events),a=o[t]):(o=e._events=u(null),e._eventsCount=0),a){if("function"==typeof a?a=o[t]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),!a.warned&&(i=c(e))&&0<i&&a.length>i){a.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+a.length+' "'+String(t)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=a.length,"object"==typeof console&&console.warn&&console.warn("%s: %s",s.name,s.message)}}else a=o[t]=n,++e._eventsCount;return e}function p(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t<e.length;++t)e[t]=arguments[t];this.listener.apply(this.target,e)}}function h(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=o.call(p,r);return i.listener=n,r.wrapFn=i}function d(e,t,n){var r=e._events;if(!r)return[];var i=r[t];return i?"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(i):g(i,i.length):[]}function m(e){var t=this._events;if(t){var n=t[e];if("function"==typeof n)return 1;if(n)return n.length}return 0}function g(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}i?Object.defineProperty(r,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e||e<0||e!=e)throw new TypeError('"defaultMaxListeners" must be a positive number');s=e}}):r.defaultMaxListeners=s,r.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},r.prototype.getMaxListeners=function(){return c(this)},r.prototype.emit=function(e){var t,n,r,i,o,a,s="error"===e;if(a=this._events)s=s&&null==a.error;else if(!s)return!1;if(s){if(1<arguments.length&&(t=arguments[1]),t instanceof Error)throw t;var u=new Error('Unhandled "error" event. ('+t+")");throw u.context=t,u}if(!(n=a[e]))return!1;var l="function"==typeof n;switch(r=arguments.length){case 1:!function(e,t,n){if(t)e.call(n);else for(var r=e.length,i=g(e,r),o=0;o<r;++o)i[o].call(n)}(n,l,this);break;case 2:!function(e,t,n,r){if(t)e.call(n,r);else for(var i=e.length,o=g(e,i),a=0;a<i;++a)o[a].call(n,r)}(n,l,this,arguments[1]);break;case 3:!function(e,t,n,r,i){if(t)e.call(n,r,i);else for(var o=e.length,a=g(e,o),s=0;s<o;++s)a[s].call(n,r,i)}(n,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,n,r,i,o){if(t)e.call(n,r,i,o);else for(var a=e.length,s=g(e,a),u=0;u<a;++u)s[u].call(n,r,i,o)}(n,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(r-1),o=1;o<r;o++)i[o-1]=arguments[o];!function(e,t,n,r){if(t)e.apply(n,r);else for(var i=e.length,o=g(e,i),a=0;a<i;++a)o[a].apply(n,r)}(n,l,this,i)}return!0},r.prototype.on=r.prototype.addListener=function(e,t){return f(this,e,t,!1)},r.prototype.prependListener=function(e,t){return f(this,e,t,!0)},r.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,h(this,e,t)),this},r.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,h(this,e,t)),this},r.prototype.removeListener=function(e,t){var n,r,i,o,a;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(r=this._events))return this;if(!(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=u(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(i=-1,o=n.length-1;0<=o;o--)if(n[o]===t||n[o].listener===t){a=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():function(e,t){for(var n=t,r=n+1,i=e.length;r<i;n+=1,r+=1)e[n]=e[r];e.pop()}(n,i),1===n.length&&(r[e]=n[0]),r.removeListener&&this.emit("removeListener",e,a||t)}return this},r.prototype.removeAllListeners=function(e){var t,n,r;if(!(n=this._events))return this;if(!n.removeListener)return 0===arguments.length?(this._events=u(null),this._eventsCount=0):n[e]&&(0==--this._eventsCount?this._events=u(null):delete n[e]),this;if(0===arguments.length){var i,o=a(n);for(r=0;r<o.length;++r)"removeListener"!==(i=o[r])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=u(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(t)for(r=t.length-1;0<=r;r--)this.removeListener(e,t[r]);return this},r.prototype.listeners=function(e){return d(this,e,!0)},r.prototype.rawListeners=function(e){return d(this,e,!1)},r.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):m.call(e,t)},r.prototype.listenerCount=m,r.prototype.eventNames=function(){return 0<this._eventsCount?Reflect.ownKeys(this._events):[]}},{}],103:[function(e,B,R){(function(T){!function(e){var t="object"==typeof R&&R,n="object"==typeof B&&B&&B.exports==t&&B,r="object"==typeof T&&T;r.global!==r&&r.window!==r||(e=r);var s=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=/[\x01-\x7F]/g,l=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,c=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,f={"­":"shy","‌":"zwnj","‍":"zwj","‎":"lrm","⁣":"ic","⁢":"it","⁡":"af","‏":"rlm","​":"ZeroWidthSpace","⁠":"NoBreak","̑":"DownBreve","⃛":"tdot","⃜":"DotDot","\t":"Tab","\n":"NewLine"," ":"puncsp"," ":"MediumSpace"," ":"thinsp"," ":"hairsp"," ":"emsp13"," ":"ensp"," ":"emsp14"," ":"emsp"," ":"numsp"," ":"nbsp","  ":"ThickSpace","‾":"oline",_:"lowbar","‐":"dash","–":"ndash","—":"mdash","―":"horbar",",":"comma",";":"semi","⁏":"bsemi",":":"colon","⩴":"Colone","!":"excl","¡":"iexcl","?":"quest","¿":"iquest",".":"period","‥":"nldr","…":"mldr","·":"middot","'":"apos","‘":"lsquo","’":"rsquo","‚":"sbquo","‹":"lsaquo","›":"rsaquo",'"':"quot","“":"ldquo","”":"rdquo","„":"bdquo","«":"laquo","»":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","⌈":"lceil","⌉":"rceil","⌊":"lfloor","⌋":"rfloor","⦅":"lopar","⦆":"ropar","⦋":"lbrke","⦌":"rbrke","⦍":"lbrkslu","⦎":"rbrksld","⦏":"lbrksld","⦐":"rbrkslu","⦑":"langd","⦒":"rangd","⦓":"lparlt","⦔":"rpargt","⦕":"gtlPar","⦖":"ltrPar","⟦":"lobrk","⟧":"robrk","⟨":"lang","⟩":"rang","⟪":"Lang","⟫":"Rang","⟬":"loang","⟭":"roang","❲":"lbbrk","❳":"rbbrk","‖":"Vert","§":"sect","¶":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","‰":"permil","‱":"pertenk","†":"dagger","‡":"Dagger","•":"bull","⁃":"hybull","′":"prime","″":"Prime","‴":"tprime","⁗":"qprime","‵":"bprime","⁁":"caret","`":"grave","´":"acute","˜":"tilde","^":"Hat","¯":"macr","˘":"breve","˙":"dot","¨":"die","˚":"ring","˝":"dblac","¸":"cedil","˛":"ogon","ˆ":"circ","ˇ":"caron","°":"deg","©":"copy","®":"reg","℗":"copysr","℘":"wp","℞":"rx","℧":"mho","℩":"iiota","←":"larr","↚":"nlarr","→":"rarr","↛":"nrarr","↑":"uarr","↓":"darr","↔":"harr","↮":"nharr","↕":"varr","↖":"nwarr","↗":"nearr","↘":"searr","↙":"swarr","↝":"rarrw","↝̸":"nrarrw","↞":"Larr","↟":"Uarr","↠":"Rarr","↡":"Darr","↢":"larrtl","↣":"rarrtl","↤":"mapstoleft","↥":"mapstoup","↦":"map","↧":"mapstodown","↩":"larrhk","↪":"rarrhk","↫":"larrlp","↬":"rarrlp","↭":"harrw","↰":"lsh","↱":"rsh","↲":"ldsh","↳":"rdsh","↵":"crarr","↶":"cularr","↷":"curarr","↺":"olarr","↻":"orarr","↼":"lharu","↽":"lhard","↾":"uharr","↿":"uharl","⇀":"rharu","⇁":"rhard","⇂":"dharr","⇃":"dharl","⇄":"rlarr","⇅":"udarr","⇆":"lrarr","⇇":"llarr","⇈":"uuarr","⇉":"rrarr","⇊":"ddarr","⇋":"lrhar","⇌":"rlhar","⇐":"lArr","⇍":"nlArr","⇑":"uArr","⇒":"rArr","⇏":"nrArr","⇓":"dArr","⇔":"iff","⇎":"nhArr","⇕":"vArr","⇖":"nwArr","⇗":"neArr","⇘":"seArr","⇙":"swArr","⇚":"lAarr","⇛":"rAarr","⇝":"zigrarr","⇤":"larrb","⇥":"rarrb","⇵":"duarr","⇽":"loarr","⇾":"roarr","⇿":"hoarr","∀":"forall","∁":"comp","∂":"part","∂̸":"npart","∃":"exist","∄":"nexist","∅":"empty","∇":"Del","∈":"in","∉":"notin","∋":"ni","∌":"notni","϶":"bepsi","∏":"prod","∐":"coprod","∑":"sum","+":"plus","±":"pm","÷":"div","×":"times","<":"lt","≮":"nlt","<⃒":"nvlt","=":"equals","≠":"ne","=⃥":"bne","⩵":"Equal",">":"gt","≯":"ngt",">⃒":"nvgt","¬":"not","|":"vert","¦":"brvbar","−":"minus","∓":"mp","∔":"plusdo","⁄":"frasl","∖":"setmn","∗":"lowast","∘":"compfn","√":"Sqrt","∝":"prop","∞":"infin","∟":"angrt","∠":"ang","∠⃒":"nang","∡":"angmsd","∢":"angsph","∣":"mid","∤":"nmid","∥":"par","∦":"npar","∧":"and","∨":"or","∩":"cap","∩︀":"caps","∪":"cup","∪︀":"cups","∫":"int","∬":"Int","∭":"tint","⨌":"qint","∮":"oint","∯":"Conint","∰":"Cconint","∱":"cwint","∲":"cwconint","∳":"awconint","∴":"there4","∵":"becaus","∶":"ratio","∷":"Colon","∸":"minusd","∺":"mDDot","∻":"homtht","∼":"sim","≁":"nsim","∼⃒":"nvsim","∽":"bsim","∽̱":"race","∾":"ac","∾̳":"acE","∿":"acd","≀":"wr","≂":"esim","≂̸":"nesim","≃":"sime","≄":"nsime","≅":"cong","≇":"ncong","≆":"simne","≈":"ap","≉":"nap","≊":"ape","≋":"apid","≋̸":"napid","≌":"bcong","≍":"CupCap","≭":"NotCupCap","≍⃒":"nvap","≎":"bump","≎̸":"nbump","≏":"bumpe","≏̸":"nbumpe","≐":"doteq","≐̸":"nedot","≑":"eDot","≒":"efDot","≓":"erDot","≔":"colone","≕":"ecolon","≖":"ecir","≗":"cire","≙":"wedgeq","≚":"veeeq","≜":"trie","≟":"equest","≡":"equiv","≢":"nequiv","≡⃥":"bnequiv","≤":"le","≰":"nle","≤⃒":"nvle","≥":"ge","≱":"nge","≥⃒":"nvge","≦":"lE","≦̸":"nlE","≧":"gE","≧̸":"ngE","≨︀":"lvnE","≨":"lnE","≩":"gnE","≩︀":"gvnE","≪":"ll","≪̸":"nLtv","≪⃒":"nLt","≫":"gg","≫̸":"nGtv","≫⃒":"nGt","≬":"twixt","≲":"lsim","≴":"nlsim","≳":"gsim","≵":"ngsim","≶":"lg","≸":"ntlg","≷":"gl","≹":"ntgl","≺":"pr","⊀":"npr","≻":"sc","⊁":"nsc","≼":"prcue","⋠":"nprcue","≽":"sccue","⋡":"nsccue","≾":"prsim","≿":"scsim","≿̸":"NotSucceedsTilde","⊂":"sub","⊄":"nsub","⊂⃒":"vnsub","⊃":"sup","⊅":"nsup","⊃⃒":"vnsup","⊆":"sube","⊈":"nsube","⊇":"supe","⊉":"nsupe","⊊︀":"vsubne","⊊":"subne","⊋︀":"vsupne","⊋":"supne","⊍":"cupdot","⊎":"uplus","⊏":"sqsub","⊏̸":"NotSquareSubset","⊐":"sqsup","⊐̸":"NotSquareSuperset","⊑":"sqsube","⋢":"nsqsube","⊒":"sqsupe","⋣":"nsqsupe","⊓":"sqcap","⊓︀":"sqcaps","⊔":"sqcup","⊔︀":"sqcups","⊕":"oplus","⊖":"ominus","⊗":"otimes","⊘":"osol","⊙":"odot","⊚":"ocir","⊛":"oast","⊝":"odash","⊞":"plusb","⊟":"minusb","⊠":"timesb","⊡":"sdotb","⊢":"vdash","⊬":"nvdash","⊣":"dashv","⊤":"top","⊥":"bot","⊧":"models","⊨":"vDash","⊭":"nvDash","⊩":"Vdash","⊮":"nVdash","⊪":"Vvdash","⊫":"VDash","⊯":"nVDash","⊰":"prurel","⊲":"vltri","⋪":"nltri","⊳":"vrtri","⋫":"nrtri","⊴":"ltrie","⋬":"nltrie","⊴⃒":"nvltrie","⊵":"rtrie","⋭":"nrtrie","⊵⃒":"nvrtrie","⊶":"origof","⊷":"imof","⊸":"mumap","⊹":"hercon","⊺":"intcal","⊻":"veebar","⊽":"barvee","⊾":"angrtvb","⊿":"lrtri","⋀":"Wedge","⋁":"Vee","⋂":"xcap","⋃":"xcup","⋄":"diam","⋅":"sdot","⋆":"Star","⋇":"divonx","⋈":"bowtie","⋉":"ltimes","⋊":"rtimes","⋋":"lthree","⋌":"rthree","⋍":"bsime","⋎":"cuvee","⋏":"cuwed","⋐":"Sub","⋑":"Sup","⋒":"Cap","⋓":"Cup","⋔":"fork","⋕":"epar","⋖":"ltdot","⋗":"gtdot","⋘":"Ll","⋘̸":"nLl","⋙":"Gg","⋙̸":"nGg","⋚︀":"lesg","⋚":"leg","⋛":"gel","⋛︀":"gesl","⋞":"cuepr","⋟":"cuesc","⋦":"lnsim","⋧":"gnsim","⋨":"prnsim","⋩":"scnsim","⋮":"vellip","⋯":"ctdot","⋰":"utdot","⋱":"dtdot","⋲":"disin","⋳":"isinsv","⋴":"isins","⋵":"isindot","⋵̸":"notindot","⋶":"notinvc","⋷":"notinvb","⋹":"isinE","⋹̸":"notinE","⋺":"nisd","⋻":"xnis","⋼":"nis","⋽":"notnivc","⋾":"notnivb","⌅":"barwed","⌆":"Barwed","⌌":"drcrop","⌍":"dlcrop","⌎":"urcrop","⌏":"ulcrop","⌐":"bnot","⌒":"profline","⌓":"profsurf","⌕":"telrec","⌖":"target","⌜":"ulcorn","⌝":"urcorn","⌞":"dlcorn","⌟":"drcorn","⌢":"frown","⌣":"smile","⌭":"cylcty","⌮":"profalar","⌶":"topbot","⌽":"ovbar","⌿":"solbar","⍼":"angzarr","⎰":"lmoust","⎱":"rmoust","⎴":"tbrk","⎵":"bbrk","⎶":"bbrktbrk","⏜":"OverParenthesis","⏝":"UnderParenthesis","⏞":"OverBrace","⏟":"UnderBrace","⏢":"trpezium","⏧":"elinters","␣":"blank","─":"boxh","│":"boxv","┌":"boxdr","┐":"boxdl","└":"boxur","┘":"boxul","├":"boxvr","┤":"boxvl","┬":"boxhd","┴":"boxhu","┼":"boxvh","═":"boxH","║":"boxV","╒":"boxdR","╓":"boxDr","╔":"boxDR","╕":"boxdL","╖":"boxDl","╗":"boxDL","╘":"boxuR","╙":"boxUr","╚":"boxUR","╛":"boxuL","╜":"boxUl","╝":"boxUL","╞":"boxvR","╟":"boxVr","╠":"boxVR","╡":"boxvL","╢":"boxVl","╣":"boxVL","╤":"boxHd","╥":"boxhD","╦":"boxHD","╧":"boxHu","╨":"boxhU","╩":"boxHU","╪":"boxvH","╫":"boxVh","╬":"boxVH","▀":"uhblk","▄":"lhblk","█":"block","░":"blk14","▒":"blk12","▓":"blk34","□":"squ","▪":"squf","▫":"EmptyVerySmallSquare","▭":"rect","▮":"marker","▱":"fltns","△":"xutri","▴":"utrif","▵":"utri","▸":"rtrif","▹":"rtri","▽":"xdtri","▾":"dtrif","▿":"dtri","◂":"ltrif","◃":"ltri","◊":"loz","○":"cir","◬":"tridot","◯":"xcirc","◸":"ultri","◹":"urtri","◺":"lltri","◻":"EmptySmallSquare","◼":"FilledSmallSquare","★":"starf","☆":"star","☎":"phone","♀":"female","♂":"male","♠":"spades","♣":"clubs","♥":"hearts","♦":"diams","♪":"sung","✓":"check","✗":"cross","✠":"malt","✶":"sext","❘":"VerticalSeparator","⟈":"bsolhsub","⟉":"suphsol","⟵":"xlarr","⟶":"xrarr","⟷":"xharr","⟸":"xlArr","⟹":"xrArr","⟺":"xhArr","⟼":"xmap","⟿":"dzigrarr","⤂":"nvlArr","⤃":"nvrArr","⤄":"nvHarr","⤅":"Map","⤌":"lbarr","⤍":"rbarr","⤎":"lBarr","⤏":"rBarr","⤐":"RBarr","⤑":"DDotrahd","⤒":"UpArrowBar","⤓":"DownArrowBar","⤖":"Rarrtl","⤙":"latail","⤚":"ratail","⤛":"lAtail","⤜":"rAtail","⤝":"larrfs","⤞":"rarrfs","⤟":"larrbfs","⤠":"rarrbfs","⤣":"nwarhk","⤤":"nearhk","⤥":"searhk","⤦":"swarhk","⤧":"nwnear","⤨":"toea","⤩":"tosa","⤪":"swnwar","⤳":"rarrc","⤳̸":"nrarrc","⤵":"cudarrr","⤶":"ldca","⤷":"rdca","⤸":"cudarrl","⤹":"larrpl","⤼":"curarrm","⤽":"cularrp","⥅":"rarrpl","⥈":"harrcir","⥉":"Uarrocir","⥊":"lurdshar","⥋":"ldrushar","⥎":"LeftRightVector","⥏":"RightUpDownVector","⥐":"DownLeftRightVector","⥑":"LeftUpDownVector","⥒":"LeftVectorBar","⥓":"RightVectorBar","⥔":"RightUpVectorBar","⥕":"RightDownVectorBar","⥖":"DownLeftVectorBar","⥗":"DownRightVectorBar","⥘":"LeftUpVectorBar","⥙":"LeftDownVectorBar","⥚":"LeftTeeVector","⥛":"RightTeeVector","⥜":"RightUpTeeVector","⥝":"RightDownTeeVector","⥞":"DownLeftTeeVector","⥟":"DownRightTeeVector","⥠":"LeftUpTeeVector","⥡":"LeftDownTeeVector","⥢":"lHar","⥣":"uHar","⥤":"rHar","⥥":"dHar","⥦":"luruhar","⥧":"ldrdhar","⥨":"ruluhar","⥩":"rdldhar","⥪":"lharul","⥫":"llhard","⥬":"rharul","⥭":"lrhard","⥮":"udhar","⥯":"duhar","⥰":"RoundImplies","⥱":"erarr","⥲":"simrarr","⥳":"larrsim","⥴":"rarrsim","⥵":"rarrap","⥶":"ltlarr","⥸":"gtrarr","⥹":"subrarr","⥻":"suplarr","⥼":"lfisht","⥽":"rfisht","⥾":"ufisht","⥿":"dfisht","⦚":"vzigzag","⦜":"vangrt","⦝":"angrtvbd","⦤":"ange","⦥":"range","⦦":"dwangle","⦧":"uwangle","⦨":"angmsdaa","⦩":"angmsdab","⦪":"angmsdac","⦫":"angmsdad","⦬":"angmsdae","⦭":"angmsdaf","⦮":"angmsdag","⦯":"angmsdah","⦰":"bemptyv","⦱":"demptyv","⦲":"cemptyv","⦳":"raemptyv","⦴":"laemptyv","⦵":"ohbar","⦶":"omid","⦷":"opar","⦹":"operp","⦻":"olcross","⦼":"odsold","⦾":"olcir","⦿":"ofcir","⧀":"olt","⧁":"ogt","⧂":"cirscir","⧃":"cirE","⧄":"solb","⧅":"bsolb","⧉":"boxbox","⧍":"trisb","⧎":"rtriltri","⧏":"LeftTriangleBar","⧏̸":"NotLeftTriangleBar","⧐":"RightTriangleBar","⧐̸":"NotRightTriangleBar","⧜":"iinfin","⧝":"infintie","⧞":"nvinfin","⧣":"eparsl","⧤":"smeparsl","⧥":"eqvparsl","⧫":"lozf","⧴":"RuleDelayed","⧶":"dsol","⨀":"xodot","⨁":"xoplus","⨂":"xotime","⨄":"xuplus","⨆":"xsqcup","⨍":"fpartint","⨐":"cirfnint","⨑":"awint","⨒":"rppolint","⨓":"scpolint","⨔":"npolint","⨕":"pointint","⨖":"quatint","⨗":"intlarhk","⨢":"pluscir","⨣":"plusacir","⨤":"simplus","⨥":"plusdu","⨦":"plussim","⨧":"plustwo","⨩":"mcomma","⨪":"minusdu","⨭":"loplus","⨮":"roplus","⨯":"Cross","⨰":"timesd","⨱":"timesbar","⨳":"smashp","⨴":"lotimes","⨵":"rotimes","⨶":"otimesas","⨷":"Otimes","⨸":"odiv","⨹":"triplus","⨺":"triminus","⨻":"tritime","⨼":"iprod","⨿":"amalg","⩀":"capdot","⩂":"ncup","⩃":"ncap","⩄":"capand","⩅":"cupor","⩆":"cupcap","⩇":"capcup","⩈":"cupbrcap","⩉":"capbrcup","⩊":"cupcup","⩋":"capcap","⩌":"ccups","⩍":"ccaps","⩐":"ccupssm","⩓":"And","⩔":"Or","⩕":"andand","⩖":"oror","⩗":"orslope","⩘":"andslope","⩚":"andv","⩛":"orv","⩜":"andd","⩝":"ord","⩟":"wedbar","⩦":"sdote","⩪":"simdot","⩭":"congdot","⩭̸":"ncongdot","⩮":"easter","⩯":"apacir","⩰":"apE","⩰̸":"napE","⩱":"eplus","⩲":"pluse","⩳":"Esim","⩷":"eDDot","⩸":"equivDD","⩹":"ltcir","⩺":"gtcir","⩻":"ltquest","⩼":"gtquest","⩽":"les","⩽̸":"nles","⩾":"ges","⩾̸":"nges","⩿":"lesdot","⪀":"gesdot","⪁":"lesdoto","⪂":"gesdoto","⪃":"lesdotor","⪄":"gesdotol","⪅":"lap","⪆":"gap","⪇":"lne","⪈":"gne","⪉":"lnap","⪊":"gnap","⪋":"lEg","⪌":"gEl","⪍":"lsime","⪎":"gsime","⪏":"lsimg","⪐":"gsiml","⪑":"lgE","⪒":"glE","⪓":"lesges","⪔":"gesles","⪕":"els","⪖":"egs","⪗":"elsdot","⪘":"egsdot","⪙":"el","⪚":"eg","⪝":"siml","⪞":"simg","⪟":"simlE","⪠":"simgE","⪡":"LessLess","⪡̸":"NotNestedLessLess","⪢":"GreaterGreater","⪢̸":"NotNestedGreaterGreater","⪤":"glj","⪥":"gla","⪦":"ltcc","⪧":"gtcc","⪨":"lescc","⪩":"gescc","⪪":"smt","⪫":"lat","⪬":"smte","⪬︀":"smtes","⪭":"late","⪭︀":"lates","⪮":"bumpE","⪯":"pre","⪯̸":"npre","⪰":"sce","⪰̸":"nsce","⪳":"prE","⪴":"scE","⪵":"prnE","⪶":"scnE","⪷":"prap","⪸":"scap","⪹":"prnap","⪺":"scnap","⪻":"Pr","⪼":"Sc","⪽":"subdot","⪾":"supdot","⪿":"subplus","⫀":"supplus","⫁":"submult","⫂":"supmult","⫃":"subedot","⫄":"supedot","⫅":"subE","⫅̸":"nsubE","⫆":"supE","⫆̸":"nsupE","⫇":"subsim","⫈":"supsim","⫋︀":"vsubnE","⫋":"subnE","⫌︀":"vsupnE","⫌":"supnE","⫏":"csub","⫐":"csup","⫑":"csube","⫒":"csupe","⫓":"subsup","⫔":"supsub","⫕":"subsub","⫖":"supsup","⫗":"suphsub","⫘":"supdsub","⫙":"forkv","⫚":"topfork","⫛":"mlcp","⫤":"Dashv","⫦":"Vdashl","⫧":"Barv","⫨":"vBar","⫩":"vBarv","⫫":"Vbar","⫬":"Not","⫭":"bNot","⫮":"rnmid","⫯":"cirmid","⫰":"midcir","⫱":"topcir","⫲":"nhpar","⫳":"parsim","⫽":"parsl","⫽⃥":"nparsl","♭":"flat","♮":"natur","♯":"sharp","¤":"curren","¢":"cent",$:"dollar","£":"pound","¥":"yen","€":"euro","¹":"sup1","½":"half","⅓":"frac13","¼":"frac14","⅕":"frac15","⅙":"frac16","⅛":"frac18","²":"sup2","⅔":"frac23","⅖":"frac25","³":"sup3","¾":"frac34","⅗":"frac35","⅜":"frac38","⅘":"frac45","⅚":"frac56","⅝":"frac58","⅞":"frac78","𝒶":"ascr","𝕒":"aopf","𝔞":"afr","𝔸":"Aopf","𝔄":"Afr","𝒜":"Ascr","ª":"ordf","á":"aacute","Á":"Aacute","à":"agrave","À":"Agrave","ă":"abreve","Ă":"Abreve","â":"acirc","Â":"Acirc","å":"aring","Å":"angst","ä":"auml","Ä":"Auml","ã":"atilde","Ã":"Atilde","ą":"aogon","Ą":"Aogon","ā":"amacr","Ā":"Amacr","æ":"aelig","Æ":"AElig","𝒷":"bscr","𝕓":"bopf","𝔟":"bfr","𝔹":"Bopf","ℬ":"Bscr","𝔅":"Bfr","𝔠":"cfr","𝒸":"cscr","𝕔":"copf","ℭ":"Cfr","𝒞":"Cscr","ℂ":"Copf","ć":"cacute","Ć":"Cacute","ĉ":"ccirc","Ĉ":"Ccirc","č":"ccaron","Č":"Ccaron","ċ":"cdot","Ċ":"Cdot","ç":"ccedil","Ç":"Ccedil","℅":"incare","𝔡":"dfr","ⅆ":"dd","𝕕":"dopf","𝒹":"dscr","𝒟":"Dscr","𝔇":"Dfr","ⅅ":"DD","𝔻":"Dopf","ď":"dcaron","Ď":"Dcaron","đ":"dstrok","Đ":"Dstrok","ð":"eth","Ð":"ETH","ⅇ":"ee","ℯ":"escr","𝔢":"efr","𝕖":"eopf","ℰ":"Escr","𝔈":"Efr","𝔼":"Eopf","é":"eacute","É":"Eacute","è":"egrave","È":"Egrave","ê":"ecirc","Ê":"Ecirc","ě":"ecaron","Ě":"Ecaron","ë":"euml","Ë":"Euml","ė":"edot","Ė":"Edot","ę":"eogon","Ę":"Eogon","ē":"emacr","Ē":"Emacr","𝔣":"ffr","𝕗":"fopf","𝒻":"fscr","𝔉":"Ffr","𝔽":"Fopf","ℱ":"Fscr","ff":"fflig","ffi":"ffilig","ffl":"ffllig","fi":"filig",fj:"fjlig","fl":"fllig","ƒ":"fnof","ℊ":"gscr","𝕘":"gopf","𝔤":"gfr","𝒢":"Gscr","𝔾":"Gopf","𝔊":"Gfr","ǵ":"gacute","ğ":"gbreve","Ğ":"Gbreve","ĝ":"gcirc","Ĝ":"Gcirc","ġ":"gdot","Ġ":"Gdot","Ģ":"Gcedil","𝔥":"hfr","ℎ":"planckh","𝒽":"hscr","𝕙":"hopf","ℋ":"Hscr","ℌ":"Hfr","ℍ":"Hopf","ĥ":"hcirc","Ĥ":"Hcirc","ℏ":"hbar","ħ":"hstrok","Ħ":"Hstrok","𝕚":"iopf","𝔦":"ifr","𝒾":"iscr","ⅈ":"ii","𝕀":"Iopf","ℐ":"Iscr","ℑ":"Im","í":"iacute","Í":"Iacute","ì":"igrave","Ì":"Igrave","î":"icirc","Î":"Icirc","ï":"iuml","Ï":"Iuml","ĩ":"itilde","Ĩ":"Itilde","İ":"Idot","į":"iogon","Į":"Iogon","ī":"imacr","Ī":"Imacr","ij":"ijlig","IJ":"IJlig","ı":"imath","𝒿":"jscr","𝕛":"jopf","𝔧":"jfr","𝒥":"Jscr","𝔍":"Jfr","𝕁":"Jopf","ĵ":"jcirc","Ĵ":"Jcirc","ȷ":"jmath","𝕜":"kopf","𝓀":"kscr","𝔨":"kfr","𝒦":"Kscr","𝕂":"Kopf","𝔎":"Kfr","ķ":"kcedil","Ķ":"Kcedil","𝔩":"lfr","𝓁":"lscr","ℓ":"ell","𝕝":"lopf","ℒ":"Lscr","𝔏":"Lfr","𝕃":"Lopf","ĺ":"lacute","Ĺ":"Lacute","ľ":"lcaron","Ľ":"Lcaron","ļ":"lcedil","Ļ":"Lcedil","ł":"lstrok","Ł":"Lstrok","ŀ":"lmidot","Ŀ":"Lmidot","𝔪":"mfr","𝕞":"mopf","𝓂":"mscr","𝔐":"Mfr","𝕄":"Mopf","ℳ":"Mscr","𝔫":"nfr","𝕟":"nopf","𝓃":"nscr","ℕ":"Nopf","𝒩":"Nscr","𝔑":"Nfr","ń":"nacute","Ń":"Nacute","ň":"ncaron","Ň":"Ncaron","ñ":"ntilde","Ñ":"Ntilde","ņ":"ncedil","Ņ":"Ncedil","№":"numero","ŋ":"eng","Ŋ":"ENG","𝕠":"oopf","𝔬":"ofr","ℴ":"oscr","𝒪":"Oscr","𝔒":"Ofr","𝕆":"Oopf","º":"ordm","ó":"oacute","Ó":"Oacute","ò":"ograve","Ò":"Ograve","ô":"ocirc","Ô":"Ocirc","ö":"ouml","Ö":"Ouml","ő":"odblac","Ő":"Odblac","õ":"otilde","Õ":"Otilde","ø":"oslash","Ø":"Oslash","ō":"omacr","Ō":"Omacr","œ":"oelig","Œ":"OElig","𝔭":"pfr","𝓅":"pscr","𝕡":"popf","ℙ":"Popf","𝔓":"Pfr","𝒫":"Pscr","𝕢":"qopf","𝔮":"qfr","𝓆":"qscr","𝒬":"Qscr","𝔔":"Qfr","ℚ":"Qopf","ĸ":"kgreen","𝔯":"rfr","𝕣":"ropf","𝓇":"rscr","ℛ":"Rscr","ℜ":"Re","ℝ":"Ropf","ŕ":"racute","Ŕ":"Racute","ř":"rcaron","Ř":"Rcaron","ŗ":"rcedil","Ŗ":"Rcedil","𝕤":"sopf","𝓈":"sscr","𝔰":"sfr","𝕊":"Sopf","𝔖":"Sfr","𝒮":"Sscr","Ⓢ":"oS","ś":"sacute","Ś":"Sacute","ŝ":"scirc","Ŝ":"Scirc","š":"scaron","Š":"Scaron","ş":"scedil","Ş":"Scedil","ß":"szlig","𝔱":"tfr","𝓉":"tscr","𝕥":"topf","𝒯":"Tscr","𝔗":"Tfr","𝕋":"Topf","ť":"tcaron","Ť":"Tcaron","ţ":"tcedil","Ţ":"Tcedil","™":"trade","ŧ":"tstrok","Ŧ":"Tstrok","𝓊":"uscr","𝕦":"uopf","𝔲":"ufr","𝕌":"Uopf","𝔘":"Ufr","𝒰":"Uscr","ú":"uacute","Ú":"Uacute","ù":"ugrave","Ù":"Ugrave","ŭ":"ubreve","Ŭ":"Ubreve","û":"ucirc","Û":"Ucirc","ů":"uring","Ů":"Uring","ü":"uuml","Ü":"Uuml","ű":"udblac","Ű":"Udblac","ũ":"utilde","Ũ":"Utilde","ų":"uogon","Ų":"Uogon","ū":"umacr","Ū":"Umacr","𝔳":"vfr","𝕧":"vopf","𝓋":"vscr","𝔙":"Vfr","𝕍":"Vopf","𝒱":"Vscr","𝕨":"wopf","𝓌":"wscr","𝔴":"wfr","𝒲":"Wscr","𝕎":"Wopf","𝔚":"Wfr","ŵ":"wcirc","Ŵ":"Wcirc","𝔵":"xfr","𝓍":"xscr","𝕩":"xopf","𝕏":"Xopf","𝔛":"Xfr","𝒳":"Xscr","𝔶":"yfr","𝓎":"yscr","𝕪":"yopf","𝒴":"Yscr","𝔜":"Yfr","𝕐":"Yopf","ý":"yacute","Ý":"Yacute","ŷ":"ycirc","Ŷ":"Ycirc","ÿ":"yuml","Ÿ":"Yuml","𝓏":"zscr","𝔷":"zfr","𝕫":"zopf","ℨ":"Zfr","ℤ":"Zopf","𝒵":"Zscr","ź":"zacute","Ź":"Zacute","ž":"zcaron","Ž":"Zcaron","ż":"zdot","Ż":"Zdot","Ƶ":"imped","þ":"thorn","Þ":"THORN","ʼn":"napos","α":"alpha","Α":"Alpha","β":"beta","Β":"Beta","γ":"gamma","Γ":"Gamma","δ":"delta","Δ":"Delta","ε":"epsi","ϵ":"epsiv","Ε":"Epsilon","ϝ":"gammad","Ϝ":"Gammad","ζ":"zeta","Ζ":"Zeta","η":"eta","Η":"Eta","θ":"theta","ϑ":"thetav","Θ":"Theta","ι":"iota","Ι":"Iota","κ":"kappa","ϰ":"kappav","Κ":"Kappa","λ":"lambda","Λ":"Lambda","μ":"mu","µ":"micro","Μ":"Mu","ν":"nu","Ν":"Nu","ξ":"xi","Ξ":"Xi","ο":"omicron","Ο":"Omicron","π":"pi","ϖ":"piv","Π":"Pi","ρ":"rho","ϱ":"rhov","Ρ":"Rho","σ":"sigma","Σ":"Sigma","ς":"sigmaf","τ":"tau","Τ":"Tau","υ":"upsi","Υ":"Upsilon","ϒ":"Upsi","φ":"phi","ϕ":"phiv","Φ":"Phi","χ":"chi","Χ":"Chi","ψ":"psi","Ψ":"Psi","ω":"omega","Ω":"ohm","а":"acy","А":"Acy","б":"bcy","Б":"Bcy","в":"vcy","В":"Vcy","г":"gcy","Г":"Gcy","ѓ":"gjcy","Ѓ":"GJcy","д":"dcy","Д":"Dcy","ђ":"djcy","Ђ":"DJcy","е":"iecy","Е":"IEcy","ё":"iocy","Ё":"IOcy","є":"jukcy","Є":"Jukcy","ж":"zhcy","Ж":"ZHcy","з":"zcy","З":"Zcy","ѕ":"dscy","Ѕ":"DScy","и":"icy","И":"Icy","і":"iukcy","І":"Iukcy","ї":"yicy","Ї":"YIcy","й":"jcy","Й":"Jcy","ј":"jsercy","Ј":"Jsercy","к":"kcy","К":"Kcy","ќ":"kjcy","Ќ":"KJcy","л":"lcy","Л":"Lcy","љ":"ljcy","Љ":"LJcy","м":"mcy","М":"Mcy","н":"ncy","Н":"Ncy","њ":"njcy","Њ":"NJcy","о":"ocy","О":"Ocy","п":"pcy","П":"Pcy","р":"rcy","Р":"Rcy","с":"scy","С":"Scy","т":"tcy","Т":"Tcy","ћ":"tshcy","Ћ":"TSHcy","у":"ucy","У":"Ucy","ў":"ubrcy","Ў":"Ubrcy","ф":"fcy","Ф":"Fcy","х":"khcy","Х":"KHcy","ц":"tscy","Ц":"TScy","ч":"chcy","Ч":"CHcy","џ":"dzcy","Џ":"DZcy","ш":"shcy","Ш":"SHcy","щ":"shchcy","Щ":"SHCHcy","ъ":"hardcy","Ъ":"HARDcy","ы":"ycy","Ы":"Ycy","ь":"softcy","Ь":"SOFTcy","э":"ecy","Э":"Ecy","ю":"yucy","Ю":"YUcy","я":"yacy","Я":"YAcy","ℵ":"aleph","ℶ":"beth","ℷ":"gimel","ℸ":"daleth"},p=/["&'<>`]/g,i={'"':"&quot;","&":"&amp;","'":"&#x27;","<":"&lt;",">":"&gt;","`":"&#x60;"},o=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,h=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,a=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,v={aacute:"á",Aacute:"Á",abreve:"ă",Abreve:"Ă",ac:"∾",acd:"∿",acE:"∾̳",acirc:"â",Acirc:"Â",acute:"´",acy:"а",Acy:"А",aelig:"æ",AElig:"Æ",af:"⁡",afr:"𝔞",Afr:"𝔄",agrave:"à",Agrave:"À",alefsym:"ℵ",aleph:"ℵ",alpha:"α",Alpha:"Α",amacr:"ā",Amacr:"Ā",amalg:"⨿",amp:"&",AMP:"&",and:"∧",And:"⩓",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",Aogon:"Ą",aopf:"𝕒",Aopf:"𝔸",ap:"≈",apacir:"⩯",ape:"≊",apE:"⩰",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",aring:"å",Aring:"Å",ascr:"𝒶",Ascr:"𝒜",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",Bcy:"Б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",beta:"β",Beta:"Β",beth:"ℶ",between:"≬",bfr:"𝔟",Bfr:"𝔅",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bNot:"⫭",bopf:"𝕓",Bopf:"𝔹",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxhD:"╥",boxHd:"╤",boxHD:"╦",boxhu:"┴",boxhU:"╨",boxHu:"╧",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpe:"≏",bumpE:"⪮",bumpeq:"≏",Bumpeq:"≎",cacute:"ć",Cacute:"Ć",cap:"∩",Cap:"⋒",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",ccaron:"č",Ccaron:"Č",ccedil:"ç",Ccedil:"Ç",ccirc:"ĉ",Ccirc:"Ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",Cdot:"Ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",chcy:"ч",CHcy:"Ч",check:"✓",checkmark:"✓",chi:"χ",Chi:"Χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cire:"≗",cirE:"⧃",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",colone:"≔",Colone:"⩴",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",cscr:"𝒸",Cscr:"𝒞",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",Cup:"⋓",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",dArr:"⇓",Darr:"↡",dash:"‐",dashv:"⊣",Dashv:"⫤",dbkarow:"⤏",dblac:"˝",dcaron:"ď",Dcaron:"Ď",dcy:"д",Dcy:"Д",dd:"ⅆ",DD:"ⅅ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",delta:"δ",Delta:"Δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",Dfr:"𝔇",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",DJcy:"Ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",Dopf:"𝔻",dot:"˙",Dot:"¨",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",downarrow:"↓",Downarrow:"⇓",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",Dscr:"𝒟",dscy:"ѕ",DScy:"Ѕ",dsol:"⧶",dstrok:"đ",Dstrok:"Đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",DZcy:"Џ",dzigrarr:"⟿",eacute:"é",Eacute:"É",easter:"⩮",ecaron:"ě",Ecaron:"Ě",ecir:"≖",ecirc:"ê",Ecirc:"Ê",ecolon:"≕",ecy:"э",Ecy:"Э",eDDot:"⩷",edot:"ė",eDot:"≑",Edot:"Ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",Efr:"𝔈",eg:"⪚",egrave:"è",Egrave:"È",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",Emacr:"Ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",eng:"ŋ",ENG:"Ŋ",ensp:" ",eogon:"ę",Eogon:"Ę",eopf:"𝕖",Eopf:"𝔼",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",Epsilon:"Ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",esim:"≂",Esim:"⩳",eta:"η",Eta:"Η",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",fcy:"ф",Fcy:"Ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",Ffr:"𝔉",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",Fopf:"𝔽",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",gamma:"γ",Gamma:"Γ",gammad:"ϝ",Gammad:"Ϝ",gap:"⪆",gbreve:"ğ",Gbreve:"Ğ",Gcedil:"Ģ",gcirc:"ĝ",Gcirc:"Ĝ",gcy:"г",Gcy:"Г",gdot:"ġ",Gdot:"Ġ",ge:"≥",gE:"≧",gel:"⋛",gEl:"⪌",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",Gfr:"𝔊",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",GJcy:"Ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",Gopf:"𝔾",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",gscr:"ℊ",Gscr:"𝒢",gsim:"≳",gsime:"⪎",gsiml:"⪐",gt:">",Gt:"≫",GT:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",HARDcy:"Ъ",harr:"↔",hArr:"⇔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",hcirc:"ĥ",Hcirc:"Ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",hstrok:"ħ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",iacute:"í",Iacute:"Í",ic:"⁣",icirc:"î",Icirc:"Î",icy:"и",Icy:"И",Idot:"İ",iecy:"е",IEcy:"Е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",igrave:"ì",Igrave:"Ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",IJlig:"IJ",Im:"ℑ",imacr:"ī",Imacr:"Ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",Int:"∬",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",iocy:"ё",IOcy:"Ё",iogon:"į",Iogon:"Į",iopf:"𝕚",Iopf:"𝕀",iota:"ι",Iota:"Ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",Itilde:"Ĩ",iukcy:"і",Iukcy:"І",iuml:"ï",Iuml:"Ï",jcirc:"ĵ",Jcirc:"Ĵ",jcy:"й",Jcy:"Й",jfr:"𝔧",Jfr:"𝔍",jmath:"ȷ",jopf:"𝕛",Jopf:"𝕁",jscr:"𝒿",Jscr:"𝒥",jsercy:"ј",Jsercy:"Ј",jukcy:"є",Jukcy:"Є",kappa:"κ",Kappa:"Κ",kappav:"ϰ",kcedil:"ķ",Kcedil:"Ķ",kcy:"к",Kcy:"К",kfr:"𝔨",Kfr:"𝔎",kgreen:"ĸ",khcy:"х",KHcy:"Х",kjcy:"ќ",KJcy:"Ќ",kopf:"𝕜",Kopf:"𝕂",kscr:"𝓀",Kscr:"𝒦",lAarr:"⇚",lacute:"ĺ",Lacute:"Ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",Lambda:"Λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larr:"←",lArr:"⇐",Larr:"↞",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",lAtail:"⤛",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",Lcaron:"Ľ",lcedil:"ļ",Lcedil:"Ļ",lceil:"⌈",lcub:"{",lcy:"л",Lcy:"Л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",leftarrow:"←",Leftarrow:"⇐",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",Leftrightarrow:"⇔",LeftRightArrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",leg:"⋚",lEg:"⪋",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",Lfr:"𝔏",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",LJcy:"Љ",ll:"≪",Ll:"⋘",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",lmidot:"ŀ",Lmidot:"Ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",Longleftarrow:"⟸",LongLeftArrow:"⟵",longleftrightarrow:"⟷",Longleftrightarrow:"⟺",LongLeftRightArrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",Longrightarrow:"⟹",LongRightArrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",Lopf:"𝕃",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",Lstrok:"Ł",lt:"<",Lt:"≪",LT:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",Map:"⤅",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",Mcy:"М",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",mfr:"𝔪",Mfr:"𝔐",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",Mopf:"𝕄",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",mu:"μ",Mu:"Μ",multimap:"⊸",mumap:"⊸",nabla:"∇",nacute:"ń",Nacute:"Ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",Ncaron:"Ň",ncedil:"ņ",Ncedil:"Ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",Ncy:"Н",ndash:"–",ne:"≠",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",nfr:"𝔫",Nfr:"𝔑",nge:"≱",ngE:"≧̸",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",ngt:"≯",nGt:"≫⃒",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",NJcy:"Њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nle:"≰",nlE:"≦̸",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nlt:"≮",nLt:"≪⃒",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",not:"¬",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrarr:"↛",nrArr:"⇏",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",Nscr:"𝒩",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsube:"⊈",nsubE:"⫅̸",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupe:"⊉",nsupE:"⫆̸",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntilde:"ñ",Ntilde:"Ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",Nu:"Ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",oacute:"ó",Oacute:"Ó",oast:"⊛",ocir:"⊚",ocirc:"ô",Ocirc:"Ô",ocy:"о",Ocy:"О",odash:"⊝",odblac:"ő",Odblac:"Ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",OElig:"Œ",ofcir:"⦿",ofr:"𝔬",Ofr:"𝔒",ogon:"˛",ograve:"ò",Ograve:"Ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",Omacr:"Ō",omega:"ω",Omega:"Ω",omicron:"ο",Omicron:"Ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",Oopf:"𝕆",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",or:"∨",Or:"⩔",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",oscr:"ℴ",Oscr:"𝒪",oslash:"ø",Oslash:"Ø",osol:"⊘",otilde:"õ",Otilde:"Õ",otimes:"⊗",Otimes:"⨷",otimesas:"⨶",ouml:"ö",Ouml:"Ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",pcy:"п",Pcy:"П",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",Pfr:"𝔓",phi:"φ",Phi:"Φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",Pi:"Π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",pr:"≺",Pr:"⪻",prap:"⪷",prcue:"≼",pre:"⪯",prE:"⪳",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",Pscr:"𝒫",psi:"ψ",Psi:"Ψ",puncsp:" ",qfr:"𝔮",Qfr:"𝔔",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",qscr:"𝓆",Qscr:"𝒬",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",racute:"ŕ",Racute:"Ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarr:"→",rArr:"⇒",Rarr:"↠",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",Rarrtl:"⤖",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",Rcaron:"Ř",rcedil:"ŗ",Rcedil:"Ŗ",rceil:"⌉",rcub:"}",rcy:"р",Rcy:"Р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",Rho:"Ρ",rhov:"ϱ",RightAngleBracket:"⟩",rightarrow:"→",Rightarrow:"⇒",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",sacute:"ś",Sacute:"Ś",sbquo:"‚",sc:"≻",Sc:"⪼",scap:"⪸",scaron:"š",Scaron:"Š",sccue:"≽",sce:"⪰",scE:"⪴",scedil:"ş",Scedil:"Ş",scirc:"ŝ",Scirc:"Ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",Scy:"С",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",Sfr:"𝔖",sfrown:"⌢",sharp:"♯",shchcy:"щ",SHCHcy:"Щ",shcy:"ш",SHcy:"Ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",sigma:"σ",Sigma:"Σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",SOFTcy:"Ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",Sopf:"𝕊",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",Sscr:"𝒮",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",Star:"⋆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",sube:"⊆",subE:"⫅",subedot:"⫃",submult:"⫁",subne:"⊊",subnE:"⫋",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup:"⊃",Sup:"⋑",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supe:"⊇",supE:"⫆",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supne:"⊋",supnE:"⫌",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",tau:"τ",Tau:"Τ",tbrk:"⎴",tcaron:"ť",Tcaron:"Ť",tcedil:"ţ",Tcedil:"Ţ",tcy:"т",Tcy:"Т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",Tfr:"𝔗",there4:"∴",therefore:"∴",Therefore:"∴",theta:"θ",Theta:"Θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",thorn:"þ",THORN:"Þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",Topf:"𝕋",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",Tscr:"𝒯",tscy:"ц",TScy:"Ц",tshcy:"ћ",TSHcy:"Ћ",tstrok:"ŧ",Tstrok:"Ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uacute:"ú",Uacute:"Ú",uarr:"↑",uArr:"⇑",Uarr:"↟",Uarrocir:"⥉",ubrcy:"ў",Ubrcy:"Ў",ubreve:"ŭ",Ubreve:"Ŭ",ucirc:"û",Ucirc:"Û",ucy:"у",Ucy:"У",udarr:"⇅",udblac:"ű",Udblac:"Ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",Ufr:"𝔘",ugrave:"ù",Ugrave:"Ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",Umacr:"Ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",uogon:"ų",Uogon:"Ų",uopf:"𝕦",Uopf:"𝕌",uparrow:"↑",Uparrow:"⇑",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",updownarrow:"↕",Updownarrow:"⇕",UpDownArrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",upsilon:"υ",Upsilon:"Υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",Uring:"Ů",urtri:"◹",uscr:"𝓊",Uscr:"𝒰",utdot:"⋰",utilde:"ũ",Utilde:"Ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uuml:"ü",Uuml:"Ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",vcy:"в",Vcy:"В",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",vee:"∨",Vee:"⋁",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",vfr:"𝔳",Vfr:"𝔙",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",Vopf:"𝕍",vprop:"∝",vrtri:"⊳",vscr:"𝓋",Vscr:"𝒱",vsubne:"⊊︀",vsubnE:"⫋︀",vsupne:"⊋︀",vsupnE:"⫌︀",Vvdash:"⊪",vzigzag:"⦚",wcirc:"ŵ",Wcirc:"Ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",wfr:"𝔴",Wfr:"𝔚",wopf:"𝕨",Wopf:"𝕎",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",Wscr:"𝒲",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",Xfr:"𝔛",xharr:"⟷",xhArr:"⟺",xi:"ξ",Xi:"Ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",Xopf:"𝕏",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",xscr:"𝓍",Xscr:"𝒳",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacute:"ý",Yacute:"Ý",yacy:"я",YAcy:"Я",ycirc:"ŷ",Ycirc:"Ŷ",ycy:"ы",Ycy:"Ы",yen:"¥",yfr:"𝔶",Yfr:"𝔜",yicy:"ї",YIcy:"Ї",yopf:"𝕪",Yopf:"𝕐",yscr:"𝓎",Yscr:"𝒴",yucy:"ю",YUcy:"Ю",yuml:"ÿ",Yuml:"Ÿ",zacute:"ź",Zacute:"Ź",zcaron:"ž",Zcaron:"Ž",zcy:"з",Zcy:"З",zdot:"ż",Zdot:"Ż",zeetrf:"ℨ",ZeroWidthSpace:"​",zeta:"ζ",Zeta:"Ζ",zfr:"𝔷",Zfr:"ℨ",zhcy:"ж",ZHcy:"Ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",zscr:"𝓏",Zscr:"𝒵",zwj:"‍",zwnj:"‌"},b={aacute:"á",Aacute:"Á",acirc:"â",Acirc:"Â",acute:"´",aelig:"æ",AElig:"Æ",agrave:"à",Agrave:"À",amp:"&",AMP:"&",aring:"å",Aring:"Å",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",brvbar:"¦",ccedil:"ç",Ccedil:"Ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",Eacute:"É",ecirc:"ê",Ecirc:"Ê",egrave:"è",Egrave:"È",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",iacute:"í",Iacute:"Í",icirc:"î",Icirc:"Î",iexcl:"¡",igrave:"ì",Igrave:"Ì",iquest:"¿",iuml:"ï",Iuml:"Ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",Ntilde:"Ñ",oacute:"ó",Oacute:"Ó",ocirc:"ô",Ocirc:"Ô",ograve:"ò",Ograve:"Ò",ordf:"ª",ordm:"º",oslash:"ø",Oslash:"Ø",otilde:"õ",Otilde:"Õ",ouml:"ö",Ouml:"Ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",THORN:"Þ",times:"×",uacute:"ú",Uacute:"Ú",ucirc:"û",Ucirc:"Û",ugrave:"ù",Ugrave:"Ù",uml:"¨",uuml:"ü",Uuml:"Ü",yacute:"ý",Yacute:"Ý",yen:"¥",yuml:"ÿ"},d={0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},m=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],g=String.fromCharCode,y={}.hasOwnProperty,_=function(e,t){return y.call(e,t)},w=function(e,t){if(!e)return t;var n,r={};for(n in t)r[n]=_(e,n)?e[n]:t[n];return r},E=function(e,t){var n="";return 55296<=e&&e<=57343||1114111<e?(t&&k("character reference outside the permissible Unicode range"),"�"):_(d,e)?(t&&k("disallowed character reference"),d[e]):(t&&function(e,t){for(var n=-1,r=e.length;++n<r;)if(e[n]==t)return!0;return!1}(m,e)&&k("disallowed character reference"),65535<e&&(n+=g((e-=65536)>>>10&1023|55296),e=56320|1023&e),n+=g(e))},A=function(e){return"&#x"+e.toString(16).toUpperCase()+";"},x=function(e){return"&#"+e+";"},k=function(e){throw Error("Parse error: "+e)},C=function(e,t){(t=w(t,C.options)).strict&&h.test(e)&&k("forbidden code point");var n=t.encodeEverything,r=t.useNamedReferences,i=t.allowUnsafeSymbols,o=t.decimal?x:A,a=function(e){return o(e.charCodeAt(0))};return n?(e=e.replace(u,function(e){return r&&_(f,e)?"&"+f[e]+";":a(e)}),r&&(e=e.replace(/&gt;\u20D2/g,"&nvgt;").replace(/&lt;\u20D2/g,"&nvlt;").replace(/&#x66;&#x6A;/g,"&fjlig;")),r&&(e=e.replace(c,function(e){return"&"+f[e]+";"}))):r?(i||(e=e.replace(p,function(e){return"&"+f[e]+";"})),e=(e=e.replace(/&gt;\u20D2/g,"&nvgt;").replace(/&lt;\u20D2/g,"&nvlt;")).replace(c,function(e){return"&"+f[e]+";"})):i||(e=e.replace(p,a)),e.replace(s,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return o(1024*(t-55296)+n-56320+65536)}).replace(l,a)};C.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var O=function(e,m){var g=(m=w(m,O.options)).strict;return g&&o.test(e)&&k("malformed character reference"),e.replace(a,function(e,t,n,r,i,o,a,s,u){var l,c,f,p,h,d;return t?v[h=t]:n?(h=n,(d=r)&&m.isAttributeValue?(g&&"="==d&&k("`&` did not start a character reference"),e):(g&&k("named character reference was not terminated by a semicolon"),b[h]+(d||""))):i?(f=i,c=o,g&&!c&&k("character reference was not terminated by a semicolon"),l=parseInt(f,10),E(l,g)):a?(p=a,c=s,g&&!c&&k("character reference was not terminated by a semicolon"),l=parseInt(p,16),E(l,g)):(g&&k("named character reference was not terminated by a semicolon"),e)})};O.options={isAttributeValue:!1,strict:!1};var S={version:"1.2.0",encode:C,decode:O,escape:function(e){return e.replace(p,function(e){return i[e]})},unescape:O};if("function"==typeof define&&"object"==typeof define.amd&&define.amd)define(function(){return S});else if(t&&!t.nodeType)if(n)n.exports=S;else for(var D in S)_(S,D)&&(t[D]=S[D]);else e.he=S}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],104:[function(e,t,n){var r=e("http"),i=e("url"),o=t.exports;for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);function s(e){if("string"==typeof e&&(e=i.parse(e)),e.protocol||(e.protocol="https:"),"https:"!==e.protocol)throw new Error('Protocol "'+e.protocol+'" not supported. Expected "https:"');return e}o.request=function(e,t){return e=s(e),r.request.call(this,e,t)},o.get=function(e,t){return e=s(e),r.get.call(this,e,t)}},{http:155,url:162}],105:[function(e,t,n){n.read=function(e,t,n,r,i){var o,a,s=8*i-r-1,u=(1<<s)-1,l=u>>1,c=-7,f=n?i-1:0,p=n?-1:1,h=e[t+f];for(f+=p,o=h&(1<<-c)-1,h>>=-c,c+=s;0<c;o=256*o+e[t+f],f+=p,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=r;0<c;a=256*a+e[t+f],f+=p,c-=8);if(0===o)o=1-l;else{if(o===u)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,r),o-=l}return(h?-1:1)*a*Math.pow(2,o-r)},n.write=function(e,t,n,r,i,o){var a,s,u,l=8*o-i-1,c=(1<<l)-1,f=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:o-1,d=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),2<=(t+=1<=a+f?p/u:p*Math.pow(2,1-f))*u&&(a++,u/=2),c<=a+f?(s=0,a=c):1<=a+f?(s=(t*u-1)*Math.pow(2,i),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));8<=i;e[n+h]=255&s,h+=d,s/=256,i-=8);for(a=a<<i|s,l+=i;0<l;e[n+h]=255&a,h+=d,a/=256,l-=8);e[n+h-d]|=128*m}},{}],106:[function(e,t,n){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},{}],107:[function(e,t,n){function r(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}t.exports=function(e){return null!=e&&(r(e)||"function"==typeof(t=e).readFloatLE&&"function"==typeof t.slice&&r(t.slice(0,0))||!!e._isBuffer);var t}},{}],108:[function(e,t,n){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],109:[function(e,t,n){n.endianness=function(){return"LE"},n.hostname=function(){return"undefined"!=typeof location?location.hostname:""},n.loadavg=function(){return[]},n.uptime=function(){return 0},n.freemem=function(){return Number.MAX_VALUE},n.totalmem=function(){return Number.MAX_VALUE},n.cpus=function(){return[]},n.type=function(){return"Browser"},n.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},n.networkInterfaces=n.getNetworkInterfaces=function(){return{}},n.arch=function(){return"javascript"},n.platform=function(){return"browser"},n.tmpdir=n.tmpDir=function(){return"/tmp"},n.EOL="\n",n.homedir=function(){return"/"}},{}],110:[function(e,t,l){(function(i){function o(e,t){for(var n=0,r=e.length-1;0<=r;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function a(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}l.resolve=function(){for(var e="",t=!1,n=arguments.length-1;-1<=n&&!t;n--){var r=0<=n?arguments[n]:i.cwd();if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return(t?"/":"")+(e=o(a(e.split("/"),function(e){return!!e}),!t).join("/"))||"."},l.normalize=function(e){var t=l.isAbsolute(e),n="/"===r(e,-1);return(e=o(a(e.split("/"),function(e){return!!e}),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e},l.isAbsolute=function(e){return"/"===e.charAt(0)},l.join=function(){var e=Array.prototype.slice.call(arguments,0);return l.normalize(a(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},l.relative=function(e,t){function n(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;0<=n&&""===e[n];n--);return n<t?[]:e.slice(t,n-t+1)}e=l.resolve(e).substr(1),t=l.resolve(t).substr(1);for(var r=n(e.split("/")),i=n(t.split("/")),o=Math.min(r.length,i.length),a=o,s=0;s<o;s++)if(r[s]!==i[s]){a=s;break}var u=[];for(s=a;s<r.length;s++)u.push("..");return(u=u.concat(i.slice(a))).join("/")},l.sep="/",l.delimiter=":",l.dirname=function(e){if("string"!=typeof e&&(e+=""),0===e.length)return".";for(var t=e.charCodeAt(0),n=47===t,r=-1,i=!0,o=e.length-1;1<=o;--o)if(47===(t=e.charCodeAt(o))){if(!i){r=o;break}}else i=!1;return-1===r?n?"/":".":n&&1===r?"/":e.slice(0,r)},l.basename=function(e,t){var n=function(e){"string"!=typeof e&&(e+="");var t,n=0,r=-1,i=!0;for(t=e.length-1;0<=t;--t)if(47===e.charCodeAt(t)){if(!i){n=t+1;break}}else-1===r&&(i=!1,r=t+1);return-1===r?"":e.slice(n,r)}(e);return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},l.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,n=0,r=-1,i=!0,o=0,a=e.length-1;0<=a;--a){var s=e.charCodeAt(a);if(47===s){if(i)continue;n=a+1;break}-1===r&&(i=!1,r=a+1),46===s?-1===t?t=a:1!==o&&(o=1):-1!==t&&(o=-1)}return-1===t||-1===r||0===o||1===o&&t===r-1&&t===n+1?"":e.slice(t,r)};var r="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,e("_process"))},{_process:112}],111:[function(e,t,n){(function(s){"use strict";!s.version||0===s.version.indexOf("v0.")||0===s.version.indexOf("v1.")&&0!==s.version.indexOf("v1.8.")?t.exports={nextTick:function(e,t,n,r){if("function"!=typeof e)throw new TypeError('"callback" argument must be a function');var i,o,a=arguments.length;switch(a){case 0:case 1:return s.nextTick(e);case 2:return s.nextTick(function(){e.call(null,t)});case 3:return s.nextTick(function(){e.call(null,t,n)});case 4:return s.nextTick(function(){e.call(null,t,n,r)});default:for(i=new Array(a-1),o=0;o<i.length;)i[o++]=arguments[o];return s.nextTick(function(){e.apply(null,i)})}}}:t.exports=s}).call(this,e("_process"))},{_process:112}],112:[function(e,t,n){var r,i,o=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function u(t){if(r===setTimeout)return setTimeout(t,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{i="function"==typeof clearTimeout?clearTimeout:s}catch(e){i=s}}();var l,c=[],f=!1,p=-1;function h(){f&&l&&(f=!1,l.length?c=l.concat(c):p=-1,c.length&&d())}function d(){if(!f){var e=u(h);f=!0;for(var t=c.length;t;){for(l=c,c=[];++p<t;)l&&l[p].run();p=-1,t=c.length}l=null,f=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===s||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(e)}}function m(e,t){this.fun=e,this.array=t}function g(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new m(e,t)),1!==c.length||f||u(d)},m.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=g,o.addListener=g,o.once=g,o.off=g,o.removeListener=g,o.removeAllListeners=g,o.emit=g,o.prependListener=g,o.prependOnceListener=g,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}],113:[function(e,R,L){(function(B){!function(e){var t="object"==typeof L&&L&&!L.nodeType&&L,n="object"==typeof R&&R&&!R.nodeType&&R,r="object"==typeof B&&B;r.global!==r&&r.window!==r&&r.self!==r||(e=r);var i,o,v=2147483647,b=36,y=1,_=26,a=38,s=700,w=72,E=128,A="-",u=/^xn--/,l=/[^\x20-\x7E]/,c=/[\x2E\u3002\uFF0E\uFF61]/g,f={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},p=b-y,x=Math.floor,k=String.fromCharCode;function C(e){throw new RangeError(f[e])}function h(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function d(e,t){var n=e.split("@"),r="";return 1<n.length&&(r=n[0]+"@",e=n[1]),r+h((e=e.replace(c,".")).split("."),t).join(".")}function O(e){for(var t,n,r=[],i=0,o=e.length;i<o;)55296<=(t=e.charCodeAt(i++))&&t<=56319&&i<o?56320==(64512&(n=e.charCodeAt(i++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),i--):r.push(t);return r}function S(e){return h(e,function(e){var t="";return 65535<e&&(t+=k((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=k(e)}).join("")}function D(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function T(e,t,n){var r=0;for(e=n?x(e/s):e>>1,e+=x(e/t);p*_>>1<e;r+=b)e=x(e/p);return x(r+(p+1)*e/(e+a))}function m(e){var t,n,r,i,o,a,s,u,l,c,f,p=[],h=e.length,d=0,m=E,g=w;for((n=e.lastIndexOf(A))<0&&(n=0),r=0;r<n;++r)128<=e.charCodeAt(r)&&C("not-basic"),p.push(e.charCodeAt(r));for(i=0<n?n+1:0;i<h;){for(o=d,a=1,s=b;h<=i&&C("invalid-input"),f=e.charCodeAt(i++),(b<=(u=f-48<10?f-22:f-65<26?f-65:f-97<26?f-97:b)||u>x((v-d)/a))&&C("overflow"),d+=u*a,!(u<(l=s<=g?y:g+_<=s?_:s-g));s+=b)a>x(v/(c=b-l))&&C("overflow"),a*=c;g=T(d-o,t=p.length+1,0==o),x(d/t)>v-m&&C("overflow"),m+=x(d/t),d%=t,p.splice(d++,0,m)}return S(p)}function g(e){var t,n,r,i,o,a,s,u,l,c,f,p,h,d,m,g=[];for(p=(e=O(e)).length,t=E,o=w,a=n=0;a<p;++a)(f=e[a])<128&&g.push(k(f));for(r=i=g.length,i&&g.push(A);r<p;){for(s=v,a=0;a<p;++a)t<=(f=e[a])&&f<s&&(s=f);for(s-t>x((v-n)/(h=r+1))&&C("overflow"),n+=(s-t)*h,t=s,a=0;a<p;++a)if((f=e[a])<t&&++n>v&&C("overflow"),f==t){for(u=n,l=b;!(u<(c=l<=o?y:o+_<=l?_:l-o));l+=b)m=u-c,d=b-c,g.push(k(D(c+m%d,0))),u=x(m/d);g.push(k(D(u,0))),o=T(n,h,r==i),n=0,++r}++n,++t}return g.join("")}if(i={version:"1.4.1",ucs2:{decode:O,encode:S},decode:m,encode:g,toASCII:function(e){return d(e,function(e){return l.test(e)?"xn--"+g(e):e})},toUnicode:function(e){return d(e,function(e){return u.test(e)?m(e.slice(4).toLowerCase()):e})}},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return i});else if(t&&n)if(R.exports==t)n.exports=i;else for(o in i)i.hasOwnProperty(o)&&(t[o]=i[o]);else e.punycode=i}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],114:[function(e,t,n){"use strict";t.exports=function(e,t,n,r){t=t||"&",n=n||"=";var i={};if("string"!=typeof e||0===e.length)return i;var o=/\+/g;e=e.split(t);var a=1e3;r&&"number"==typeof r.maxKeys&&(a=r.maxKeys);var s,u,l=e.length;0<a&&a<l&&(l=a);for(var c=0;c<l;++c){var f,p,h,d,m=e[c].replace(o,"%20"),g=m.indexOf(n);p=0<=g?(f=m.substr(0,g),m.substr(g+1)):(f=m,""),h=decodeURIComponent(f),d=decodeURIComponent(p),s=i,u=h,Object.prototype.hasOwnProperty.call(s,u)?v(i[h])?i[h].push(d):i[h]=[i[h],d]:i[h]=d}return i};var v=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],115:[function(e,t,n){"use strict";var o=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(n,r,i,e){return r=r||"&",i=i||"=",null===n&&(n=void 0),"object"==typeof n?s(u(n),function(e){var t=encodeURIComponent(o(e))+i;return a(n[e])?s(n[e],function(e){return t+encodeURIComponent(o(e))}).join(r):t+encodeURIComponent(o(n[e]))}).join(r):e?encodeURIComponent(o(e))+i+encodeURIComponent(o(n)):""};var a=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function s(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var u=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},{}],116:[function(e,t,n){"use strict";n.decode=n.parse=e("./decode"),n.encode=n.stringify=e("./encode")},{"./decode":114,"./encode":115}],117:[function(e,t,n){"use strict";var r=e("process-nextick-args"),i=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};t.exports=f;var o=e("core-util-is");o.inherits=e("inherits");var a=e("./_stream_readable"),s=e("./_stream_writable");o.inherits(f,a);for(var u=i(s.prototype),l=0;l<u.length;l++){var c=u[l];f.prototype[c]||(f.prototype[c]=s.prototype[c])}function f(e){if(!(this instanceof f))return new f(e);a.call(this,e),s.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",p)}function p(){this.allowHalfOpen||this._writableState.ended||r.nextTick(h,this)}function h(e){e.end()}Object.defineProperty(f.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(f.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}}),f.prototype._destroy=function(e,t){this.push(null),this.end(),r.nextTick(t,e)}},{"./_stream_readable":119,"./_stream_writable":121,"core-util-is":101,inherits:106,"process-nextick-args":111}],118:[function(e,t,n){"use strict";t.exports=o;var r=e("./_stream_transform"),i=e("core-util-is");function o(e){if(!(this instanceof o))return new o(e);r.call(this,e)}i.inherits=e("inherits"),i.inherits(o,r),o.prototype._transform=function(e,t,n){n(null,e)}},{"./_stream_transform":120,"core-util-is":101,inherits:106}],119:[function(L,F,e){(function(g,e){"use strict";var v=L("process-nextick-args");F.exports=p;var a,b=L("isarray");p.ReadableState=o;L("events").EventEmitter;var y=function(e,t){return e.listeners(t).length},i=L("./internal/streams/stream"),l=L("safe-buffer").Buffer,c=e.Uint8Array||function(){};var t=L("core-util-is");t.inherits=L("inherits");var n=L("util"),_=void 0;_=n&&n.debuglog?n.debuglog("stream"):function(){};var s,u=L("./internal/streams/BufferList"),r=L("./internal/streams/destroy");t.inherits(p,i);var f=["error","close","destroy","pause","resume"];function o(e,t){e=e||{};var n=t instanceof(a=a||L("./_stream_duplex"));this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,i=e.readableHighWaterMark,o=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n&&(i||0===i)?i:o,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new u,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(s||(s=L("string_decoder/").StringDecoder),this.decoder=new s(e.encoding),this.encoding=e.encoding)}function p(e){if(a=a||L("./_stream_duplex"),!(this instanceof p))return new p(e);this._readableState=new o(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),i.call(this)}function h(e,t,n,r,i){var o,a,s,u=e._readableState;null===t?(u.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,E(e)}(e,u)):(i||(o=function(e,t){var n;r=t,l.isBuffer(r)||r instanceof c||"string"==typeof t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));var r;return n}(u,t)),o?e.emit("error",o):u.objectMode||t&&0<t.length?("string"==typeof t||u.objectMode||Object.getPrototypeOf(t)===l.prototype||(a=t,t=l.from(a)),r?u.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):d(e,u,t,!0):u.ended?e.emit("error",new Error("stream.push() after EOF")):(u.reading=!1,u.decoder&&!n?(t=u.decoder.write(t),u.objectMode||0!==t.length?d(e,u,t,!1):x(e,u)):d(e,u,t,!1))):r||(u.reading=!1));return!(s=u).ended&&(s.needReadable||s.length<s.highWaterMark||0===s.length)}function d(e,t,n,r){t.flowing&&0===t.length&&!t.sync?(e.emit("data",n),e.read(0)):(t.length+=t.objectMode?1:n.length,r?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&E(e)),x(e,t)}Object.defineProperty(p.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),p.prototype.destroy=r.destroy,p.prototype._undestroy=r.undestroy,p.prototype._destroy=function(e,t){this.push(null),t(e)},p.prototype.push=function(e,t){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof e&&((t=t||r.defaultEncoding)!==r.encoding&&(e=l.from(e,t),t=""),n=!0),h(this,e,t,!1,n)},p.prototype.unshift=function(e){return h(this,e,null,!0,!1)},p.prototype.isPaused=function(){return!1===this._readableState.flowing},p.prototype.setEncoding=function(e){return s||(s=L("string_decoder/").StringDecoder),this._readableState.decoder=new s(e),this._readableState.encoding=e,this};var m=8388608;function w(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=(m<=(n=e)?n=m:(n--,n|=n>>>1,n|=n>>>2,n|=n>>>4,n|=n>>>8,n|=n>>>16,n++),n)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0));var n}function E(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(_("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?v.nextTick(A,e):A(e))}function A(e){_("emit readable"),e.emit("readable"),S(e)}function x(e,t){t.readingMore||(t.readingMore=!0,v.nextTick(k,e,t))}function k(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(_("maybeReadMore read 0"),e.read(0),n!==t.length);)n=t.length;t.readingMore=!1}function C(e){_("readable nexttick read 0"),e.read(0)}function O(e,t){t.reading||(_("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),S(e),t.flowing&&!t.reading&&e.read(0)}function S(e){var t=e._readableState;for(_("flow",t.flowing);t.flowing&&null!==e.read(););}function D(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;e<t.head.data.length?(r=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):r=e===t.head.data.length?t.shift():n?function(e,t){var n=t.head,r=1,i=n.data;e-=i.length;for(;n=n.next;){var o=n.data,a=e>o.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n).data=o.slice(a);break}++r}return t.length-=r,i}(e,t):function(e,t){var n=l.allocUnsafe(e),r=t.head,i=1;r.data.copy(n),e-=r.data.length;for(;r=r.next;){var o=r.data,a=e>o.length?o.length:e;if(o.copy(n,n.length-e,0,a),0===(e-=a)){a===o.length?(++i,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r).data=o.slice(a);break}++i}return t.length-=i,n}(e,t);return r}(e,t.buffer,t.decoder),n);var n}function T(e){var t=e._readableState;if(0<t.length)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,v.nextTick(B,t,e))}function B(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function R(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}p.prototype.read=function(e){_("read",e),e=parseInt(e,10);var t=this._readableState,n=e;if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return _("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?T(this):E(this),null;if(0===(e=w(e,t))&&t.ended)return 0===t.length&&T(this),null;var r,i=t.needReadable;return _("need readable",i),(0===t.length||t.length-e<t.highWaterMark)&&_("length less than watermark",i=!0),t.ended||t.reading?_("reading or ended",i=!1):i&&(_("do read"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=w(n,t))),null===(r=0<e?D(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&T(this)),null!==r&&this.emit("data",r),r},p.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},p.prototype.pipe=function(n,e){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=n;break;case 1:i.pipes=[i.pipes,n];break;default:i.pipes.push(n)}i.pipesCount+=1,_("pipe count=%d opts=%j",i.pipesCount,e);var t=(!e||!1!==e.end)&&n!==g.stdout&&n!==g.stderr?a:m;function o(e,t){_("onunpipe"),e===r&&t&&!1===t.hasUnpiped&&(t.hasUnpiped=!0,_("cleanup"),n.removeListener("close",h),n.removeListener("finish",d),n.removeListener("drain",u),n.removeListener("error",p),n.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",m),r.removeListener("data",f),l=!0,!i.awaitDrain||n._writableState&&!n._writableState.needDrain||u())}function a(){_("onend"),n.end()}i.endEmitted?v.nextTick(t):r.once("end",t),n.on("unpipe",o);var s,u=(s=r,function(){var e=s._readableState;_("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&y(s,"data")&&(e.flowing=!0,S(s))});n.on("drain",u);var l=!1;var c=!1;function f(e){_("ondata"),(c=!1)!==n.write(e)||c||((1===i.pipesCount&&i.pipes===n||1<i.pipesCount&&-1!==R(i.pipes,n))&&!l&&(_("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,c=!0),r.pause())}function p(e){_("onerror",e),m(),n.removeListener("error",p),0===y(n,"error")&&n.emit("error",e)}function h(){n.removeListener("finish",d),m()}function d(){_("onfinish"),n.removeListener("close",h),m()}function m(){_("unpipe"),r.unpipe(n)}return r.on("data",f),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?b(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(n,"error",p),n.once("close",h),n.once("finish",d),n.emit("pipe",r),i.flowing||(_("pipe resume"),r.resume()),n},p.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o<i;o++)r[o].emit("unpipe",this,n);return this}var a=R(t.pipes,e);return-1===a||(t.pipes.splice(a,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,n)),this},p.prototype.addListener=p.prototype.on=function(e,t){var n=i.prototype.on.call(this,e,t);if("data"===e)!1!==this._readableState.flowing&&this.resume();else if("readable"===e){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&E(this):v.nextTick(C,this))}return n},p.prototype.resume=function(){var e,t,n=this._readableState;return n.flowing||(_("resume"),n.flowing=!0,e=this,(t=n).resumeScheduled||(t.resumeScheduled=!0,v.nextTick(O,e,t))),this},p.prototype.pause=function(){return _("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(_("pause"),this._readableState.flowing=!1,this.emit("pause")),this},p.prototype.wrap=function(t){var n=this,r=this._readableState,i=!1;for(var e in t.on("end",function(){if(_("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&n.push(e)}n.push(null)}),t.on("data",function(e){(_("wrapped data"),r.decoder&&(e=r.decoder.write(e)),r.objectMode&&null==e)||(r.objectMode||e&&e.length)&&(n.push(e)||(i=!0,t.pause()))}),t)void 0===this[e]&&"function"==typeof t[e]&&(this[e]=function(e){return function(){return t[e].apply(t,arguments)}}(e));for(var o=0;o<f.length;o++)t.on(f[o],this.emit.bind(this,f[o]));return this._read=function(e){_("wrapped _read",e),i&&(i=!1,t.resume())},this},Object.defineProperty(p.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),p._fromList=D}).call(this,L("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./_stream_duplex":117,"./internal/streams/BufferList":122,"./internal/streams/destroy":123,"./internal/streams/stream":124,_process:112,"core-util-is":101,events:102,inherits:106,isarray:108,"process-nextick-args":111,"safe-buffer":143,"string_decoder/":159,util:2}],120:[function(e,t,n){"use strict";t.exports=o;var r=e("./_stream_duplex"),i=e("core-util-is");function o(e){if(!(this instanceof o))return new o(e);r.call(this,e),this._transformState={afterTransform:function(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,(n.writecb=null)!=t&&this.push(t),r(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush&&(this._flush=e.flush)),this.on("prefinish",a)}function a(){var n=this;"function"==typeof this._flush?this._flush(function(e,t){s(n,e,t)}):s(this,null,null)}function s(e,t,n){if(t)return e.emit("error",t);if(null!=n&&e.push(n),e._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(e._transformState.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}i.inherits=e("inherits"),i.inherits(o,r),o.prototype.push=function(e,t){return this._transformState.needTransform=!1,r.prototype.push.call(this,e,t)},o.prototype._transform=function(e,t,n){throw new Error("_transform() is not implemented")},o.prototype._write=function(e,t,n){var r=this._transformState;if(r.writecb=n,r.writechunk=e,r.writeencoding=t,!r.transforming){var i=this._readableState;(r.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},o.prototype._read=function(e){var t=this._transformState;null!==t.writechunk&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0},o.prototype._destroy=function(e,t){var n=this;r.prototype._destroy.call(this,e,function(e){t(e),n.emit("close")})}},{"./_stream_duplex":117,"core-util-is":101,inherits:106}],121:[function(A,x,e){(function(e,t,n){"use strict";var v=A("process-nextick-args");function f(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var i=r.callback;t.pendingcb--,i(n),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}x.exports=c;var s,p=!e.browser&&-1<["v0.10","v0.9."].indexOf(e.version.slice(0,5))?n:v.nextTick;c.WritableState=l;var r=A("core-util-is");r.inherits=A("inherits");var i={deprecate:A("util-deprecate")},o=A("./internal/streams/stream"),b=A("safe-buffer").Buffer,y=t.Uint8Array||function(){};var a,u=A("./internal/streams/destroy");function _(){}function l(e,t){s=s||A("./_stream_duplex"),e=e||{};var n=t instanceof s;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var r=e.highWaterMark,i=e.writableHighWaterMark,o=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n&&(i||0===i)?i:o,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var a=(this.destroyed=!1)===e.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,i=n.writecb;if(f=n,f.writing=!1,f.writecb=null,f.length-=f.writelen,f.writelen=0,t)a=e,s=n,u=r,l=t,c=i,--s.pendingcb,u?(v.nextTick(c,l),v.nextTick(E,a,s),a._writableState.errorEmitted=!0,a.emit("error",l)):(c(l),a._writableState.errorEmitted=!0,a.emit("error",l),E(a,s));else{var o=m(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||d(e,n),r?p(h,e,n,o,i):h(e,n,o,i)}var a,s,u,l,c;var f}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new f(this)}function c(e){if(s=s||A("./_stream_duplex"),!(a.call(c,this)||this instanceof s))return new c(e);this._writableState=new l(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),o.call(this)}function w(e,t,n,r,i,o,a){t.writelen=r,t.writecb=a,t.writing=!0,t.sync=!0,n?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function h(e,t,n,r){var i,o;n||(i=e,0===(o=t).length&&o.needDrain&&(o.needDrain=!1,i.emit("drain"))),t.pendingcb--,r(),E(e,t)}function d(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,i=new Array(r),o=t.corkedRequestsFree;o.entry=n;for(var a=0,s=!0;n;)(i[a]=n).isBuf||(s=!1),n=n.next,a+=1;i.allBuffers=s,w(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new f(t),t.bufferedRequestCount=0}else{for(;n;){var u=n.chunk,l=n.encoding,c=n.callback;if(w(e,t,!1,t.objectMode?1:u.length,u,l,c),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function m(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function g(t,n){t._final(function(e){n.pendingcb--,e&&t.emit("error",e),n.prefinished=!0,t.emit("prefinish"),E(t,n)})}function E(e,t){var n,r,i=m(t);return i&&(n=e,(r=t).prefinished||r.finalCalled||("function"==typeof n._final?(r.pendingcb++,r.finalCalled=!0,v.nextTick(g,n,r)):(r.prefinished=!0,n.emit("prefinish"))),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),i}r.inherits(c,o),l.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(l.prototype,"buffer",{get:i.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(a=Function.prototype[Symbol.hasInstance],Object.defineProperty(c,Symbol.hasInstance,{value:function(e){return!!a.call(this,e)||this===c&&(e&&e._writableState instanceof l)}})):a=function(e){return e instanceof this},c.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},c.prototype.write=function(e,t,n){var r,i,o,a,s,u,l,c,f,p,h,d=this._writableState,m=!1,g=!d.objectMode&&(r=e,b.isBuffer(r)||r instanceof y);return g&&!b.isBuffer(e)&&(i=e,e=b.from(i)),"function"==typeof t&&(n=t,t=null),g?t="buffer":t||(t=d.defaultEncoding),"function"!=typeof n&&(n=_),d.ended?(f=this,p=n,h=new Error("write after end"),f.emit("error",h),v.nextTick(p,h)):(g||(o=this,a=d,u=n,c=!(l=!0),null===(s=e)?c=new TypeError("May not write null values to stream"):"string"==typeof s||void 0===s||a.objectMode||(c=new TypeError("Invalid non-string/buffer chunk")),c&&(o.emit("error",c),v.nextTick(u,c),l=!1),l))&&(d.pendingcb++,m=function(e,t,n,r,i,o){if(!n){var a=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=b.from(t,n));return t}(t,r,i);r!==a&&(n=!0,i="buffer",r=a)}var s=t.objectMode?1:r.length;t.length+=s;var u=t.length<t.highWaterMark;u||(t.needDrain=!0);if(t.writing||t.corked){var l=t.lastBufferedRequest;t.lastBufferedRequest={chunk:r,encoding:i,isBuf:n,callback:o,next:null},l?l.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else w(e,t,!1,s,r,i,o);return u}(this,d,g,e,t,n)),m},c.prototype.cork=function(){this._writableState.corked++},c.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||d(this,e))},c.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(-1<["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(c.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),c.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},c.prototype._writev=null,c.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,t=e=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,n){t.ending=!0,E(e,t),n&&(t.finished?v.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(c.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),c.prototype.destroy=u.destroy,c.prototype._undestroy=u.undestroy,c.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,A("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},A("timers").setImmediate)},{"./_stream_duplex":117,"./internal/streams/destroy":123,"./internal/streams/stream":124,_process:112,"core-util-is":101,inherits:106,"process-nextick-args":111,"safe-buffer":143,timers:160,"util-deprecate":164}],122:[function(e,t,n){"use strict";var s=e("safe-buffer").Buffer,r=e("util");t.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};0<this.length?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return s.alloc(0);if(1===this.length)return this.head.data;for(var t,n,r,i=s.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=o.data,n=i,r=a,t.copy(n,r),a+=o.data.length,o=o.next;return i},e}(),r&&r.inspect&&r.inspect.custom&&(t.exports.prototype[r.inspect.custom]=function(){var e=r.inspect({length:this.length});return this.constructor.name+" "+e})},{"safe-buffer":143,util:2}],123:[function(e,t,n){"use strict";var o=e("process-nextick-args");function a(e,t){e.emit("error",t)}t.exports={destroy:function(e,t){var n=this,r=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return r||i?t?t(e):!e||this._writableState&&this._writableState.errorEmitted||o.nextTick(a,this,e):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(o.nextTick(a,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):t&&t(e)})),this},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{"process-nextick-args":111}],124:[function(e,t,n){t.exports=e("events").EventEmitter},{events:102}],125:[function(e,t,n){(((n=t.exports=e("./lib/_stream_readable.js")).Stream=n).Readable=n).Writable=e("./lib/_stream_writable.js"),n.Duplex=e("./lib/_stream_duplex.js"),n.Transform=e("./lib/_stream_transform.js"),n.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":117,"./lib/_stream_passthrough.js":118,"./lib/_stream_readable.js":119,"./lib/_stream_transform.js":120,"./lib/_stream_writable.js":121}],126:[function(e,t,n){"use strict";t.exports={ABSOLUTE:"absolute",PATH_RELATIVE:"pathRelative",ROOT_RELATIVE:"rootRelative",SHORTEST:"shortest"}},{}],127:[function(e,t,n){"use strict";var m=e("./constants");function g(e,t){var n=t.removeEmptyQueries&&e.extra.relation.minimumPort;return e.query.string[n?"stripped":"full"]}function v(e,t){return!e.extra.relation.minimumQuery||t.output===m.ABSOLUTE||t.output===m.ROOT_RELATIVE}function b(e,t){var n=t.removeDirectoryIndexes&&e.extra.resourceIsIndex,r=e.extra.relation.minimumResource&&t.output!==m.ABSOLUTE&&t.output!==m.ROOT_RELATIVE;return!!e.resource&&!r&&!n}t.exports=function(e,t){var n,r,i,o,a,s,u,l,c,f,p,h,d="";return d+=(r=t,i="",((n=e).extra.relation.maximumHost||r.output===m.ABSOLUTE)&&(n.extra.relation.minimumScheme&&r.schemeRelative&&r.output!==m.ABSOLUTE?i+="//":i+=n.scheme+"://"),i),d+=(a=t,!(o=e).auth||a.removeAuth||!o.extra.relation.maximumHost&&a.output!==m.ABSOLUTE?"":o.auth+"@"),d+=(u=t,(s=e).host.full&&(s.extra.relation.maximumAuth||u.output===m.ABSOLUTE)?s.host.full:""),d+=(l=e).port&&!l.extra.portIsDefault&&l.extra.relation.maximumHost?":"+l.port:"",d+=function(e,t){var n="",r=e.path.absolute.string,i=e.path.relative.string,o=b(e,t);if(e.extra.relation.maximumHost||t.output===m.ABSOLUTE||t.output===m.ROOT_RELATIVE)n=r;else if(i.length<=r.length&&t.output===m.SHORTEST||t.output===m.PATH_RELATIVE){if(""===(n=i)){var a=v(e,t)&&!!g(e,t);e.extra.relation.maximumPath&&!o?n="./":!e.extra.relation.overridesQuery||o||a||(n="./")}}else n=r;return"/"!==n||o||!t.removeRootTrailingSlash||e.extra.relation.minimumPort&&t.output!==m.ABSOLUTE||(n=""),n}(e,t),d+=b(c=e,t)?c.resource:"",d+=v(f=e,p=t)?g(f,p):"",d+=(h=e).hash?h.hash:""}},{"./constants":126}],128:[function(e,t,n){"use strict";var r=e("./constants"),i=e("./format"),o=e("./options"),a=e("./util/object"),s=e("./parse"),u=e("./relate");function l(e,t){this.options=o(t,{defaultPorts:{ftp:21,http:80,https:443},directoryIndexes:["index.html"],ignore_www:!1,output:l.SHORTEST,rejectedSchemes:["data","javascript","mailto"],removeAuth:!1,removeDirectoryIndexes:!0,removeEmptyQueries:!1,removeRootTrailingSlash:!0,schemeRelative:!0,site:void 0,slashesDenoteHost:!0}),this.from=s.from(e,this.options,null)}l.prototype.relate=function(e,t,n){if(a.isPlainObject(t)?(n=t,t=e,e=null):t||(t=e,e=null),n=o(n,this.options),e=e||n.site,!(e=s.from(e,n,this.from))||!e.href)throw new Error("from value not defined.");if(e.extra.hrefInfo.minimumPathOnly)throw new Error("from value supplied is not absolute: "+e.href);return!1===(t=s.to(t,n)).valid?t.href:(t=u(e,t,n),t=i(t,n))},l.relate=function(e,t,n){return(new l).relate(e,t,n)},a.shallowMerge(l,r),t.exports=l},{"./constants":126,"./format":127,"./options":129,"./parse":132,"./relate":139,"./util/object":141}],129:[function(e,t,n){"use strict";var a=e("./util/object");t.exports=function(e,t){if(a.isPlainObject(e)){var n={};for(var r in t)t.hasOwnProperty(r)&&(void 0!==e[r]?n[r]=(i=e[r],(o=t[r])instanceof Object&&i instanceof Object?o instanceof Array&&i instanceof Array?o.concat(i):a.shallowMerge(i,o):i):n[r]=t[r]);return n}var i,o;return t}},{"./util/object":141}],130:[function(e,t,n){"use strict";t.exports=function(e,t){if(t.ignore_www){var n=e.host.full;if(n){var r=n;0===n.indexOf("www.")&&(r=n.substr(4)),e.host.stripped=r}}}},{}],131:[function(e,t,n){"use strict";t.exports=function(e){var t=!(e.scheme||e.auth||e.host.full||e.port),n=t&&!e.path.absolute.string,r=n&&!e.resource,i=r&&!e.query.string.full.length,o=i&&!e.hash;e.extra.hrefInfo.minimumPathOnly=t,e.extra.hrefInfo.minimumResourceOnly=n,e.extra.hrefInfo.minimumQueryOnly=r,e.extra.hrefInfo.minimumHashOnly=i,e.extra.hrefInfo.empty=o}},{}],132:[function(e,t,n){"use strict";var r=e("./hrefInfo"),i=e("./host"),o=e("./path"),a=e("./port"),s=e("./query"),u=e("./urlstring"),l=e("../util/path");function c(e,t){var n=u(e,t);return!1===n.valid||(i(n,t),a(n,t),o(n,t),s(n,t),r(n)),n}t.exports={from:function(e,t,n){if(e){var r=c(e,t),i=l.resolveDotSegments(r.path.absolute.array);return r.path.absolute.array=i,r.path.absolute.string="/"+l.join(i),r}return n},to:c}},{"../util/path":142,"./host":130,"./hrefInfo":131,"./path":133,"./port":134,"./query":135,"./urlstring":136}],133:[function(e,t,n){"use strict";function s(e){if("/"===e)return[];var t=[];return e.split("/").forEach(function(e){""!==e&&t.push(e)}),t}t.exports=function(e,t){var n,r,i=e.path.absolute.string;if(i){var o=i.lastIndexOf("/");if(-1<o){if(++o<i.length){var a=i.substr(o);"."!==a&&".."!==a?(e.resource=a,i=i.substr(0,o)):i+="/"}e.path.absolute.string=i,e.path.absolute.array=s(i)}else"."===i||".."===i?(i+="/",e.path.absolute.string=i,e.path.absolute.array=s(i)):(e.resource=i,e.path.absolute.string=null);e.extra.resourceIsIndex=(n=e.resource,r=!1,t.directoryIndexes.every(function(e){return e!==n||!(r=!0)}),r)}}},{}],134:[function(e,t,n){"use strict";t.exports=function(e,t){var n=-1;for(var r in t.defaultPorts)if(r===e.scheme&&t.defaultPorts.hasOwnProperty(r)){n=t.defaultPorts[r];break}-1<n&&(n=n.toString(),null===e.port&&(e.port=n),e.extra.portIsDefault=e.port===n)}},{}],135:[function(e,t,n){"use strict";var a=Object.prototype.hasOwnProperty;function r(e,t){var n=0,r="";for(var i in e)if(""!==i&&!0===a.call(e,i)){var o=e[i];""===o&&t||(r+=1==++n?"?":"&",i=encodeURIComponent(i),r+=""!==o?i+"="+encodeURIComponent(o).replace(/%20/g,"+"):i)}return r}t.exports=function(e,t){e.query.string.full=r(e.query.object,!1),t.removeEmptyQueries&&(e.query.string.stripped=r(e.query.object,!0))}},{}],136:[function(e,t,n){"use strict";var a=e("url").parse;t.exports=function(e,t){return i=e,o=!0,t.rejectedSchemes.every(function(e){return o=!(0===i.indexOf(e+":"))}),o?(n=a(e,!0,t.slashesDenoteHost),(r=n.protocol)&&r.indexOf(":")===r.length-1&&(r=r.substr(0,r.length-1)),n.host={full:n.hostname,stripped:null},n.path={absolute:{array:null,string:n.pathname},relative:{array:null,string:null}},n.query={object:n.query,string:{full:null,stripped:null}},n.extra={hrefInfo:{minimumPathOnly:null,minimumResourceOnly:null,minimumQueryOnly:null,minimumHashOnly:null,empty:null,separatorOnlyQuery:"?"===n.search},portIsDefault:null,relation:{maximumScheme:null,maximumAuth:null,maximumHost:null,maximumPort:null,maximumPath:null,maximumResource:null,maximumQuery:null,maximumHash:null,minimumScheme:null,minimumAuth:null,minimumHost:null,minimumPort:null,minimumPath:null,minimumResource:null,minimumQuery:null,minimumHash:null,overridesQuery:null},resourceIsIndex:null,slashes:n.slashes},n.resource=null,n.scheme=r,delete n.hostname,delete n.pathname,delete n.protocol,delete n.search,delete n.slashes,n):{href:e,valid:!1};var n,r,i,o}},{url:162}],137:[function(e,t,n){"use strict";var s=e("./findRelation"),u=e("../util/object"),l=e("../util/path");t.exports=function(e,t,n){var r,i,o,a;s.upToPath(e,t,n),e.extra.relation.minimumScheme&&(e.scheme=t.scheme),e.extra.relation.minimumAuth&&(e.auth=t.auth),e.extra.relation.minimumHost&&(e.host=u.clone(t.host)),e.extra.relation.minimumPort&&(i=t,(r=e).port=i.port,r.extra.portIsDefault=i.extra.portIsDefault),e.extra.relation.minimumScheme&&function(e,t){if(e.extra.relation.maximumHost||!e.extra.hrefInfo.minimumResourceOnly){var n=e.path.absolute.array,r="/";n?(e.extra.hrefInfo.minimumPathOnly&&0!==e.path.absolute.string.indexOf("/")&&(n=t.path.absolute.array.concat(n)),n=l.resolveDotSegments(n),r+=l.join(n)):n=[],e.path.absolute.array=n,e.path.absolute.string=r}else e.path=u.clone(t.path)}(e,t),s.pathOn(e,t,n),e.extra.relation.minimumResource&&(a=t,(o=e).resource=a.resource,o.extra.resourceIsIndex=a.extra.resourceIsIndex),e.extra.relation.minimumQuery&&(e.query=u.clone(t.query)),e.extra.relation.minimumHash&&(e.hash=t.hash)}},{"../util/object":141,"../util/path":142,"./findRelation":138}],138:[function(e,t,n){"use strict";t.exports={pathOn:function(e,t,n){var r=e.extra.hrefInfo.minimumQueryOnly,i=e.extra.hrefInfo.minimumHashOnly,o=e.extra.hrefInfo.empty,a=e.extra.relation.minimumPort,s=e.extra.relation.minimumScheme,u=a&&e.path.absolute.string===t.path.absolute.string,l=e.resource===t.resource||!e.resource&&t.extra.resourceIsIndex||n.removeDirectoryIndexes&&e.extra.resourceIsIndex&&!t.resource,c=u&&(l||r||i||o),f=n.removeEmptyQueries?"stripped":"full",p=e.query.string[f],h=t.query.string[f],d=c&&!!p&&p===h||(i||o)&&!e.extra.hrefInfo.separatorOnlyQuery,m=d&&e.hash===t.hash;e.extra.relation.minimumPath=u,e.extra.relation.minimumResource=c,e.extra.relation.minimumQuery=d,e.extra.relation.minimumHash=m,e.extra.relation.maximumPort=!s||s&&!u,e.extra.relation.maximumPath=!s||s&&!c,e.extra.relation.maximumResource=!s||s&&!d,e.extra.relation.maximumQuery=!s||s&&!m,e.extra.relation.maximumHash=!s||s&&!m,e.extra.relation.overridesQuery=u&&e.extra.relation.maximumResource&&!d&&!!h},upToPath:function(e,t,n){var r=e.extra.hrefInfo.minimumPathOnly,i=e.scheme===t.scheme||!e.scheme,o=i&&(e.auth===t.auth||n.removeAuth||r),a=n.ignore_www?"stripped":"full",s=o&&(e.host[a]===t.host[a]||r),u=s&&(e.port===t.port||r);e.extra.relation.minimumScheme=i,e.extra.relation.minimumAuth=o,e.extra.relation.minimumHost=s,e.extra.relation.minimumPort=u,e.extra.relation.maximumScheme=!i||i&&!o,e.extra.relation.maximumAuth=!i||i&&!s,e.extra.relation.maximumHost=!i||i&&!u}}},{}],139:[function(e,t,n){"use strict";var r=e("./absolutize"),i=e("./relativize");t.exports=function(e,t,n){return r(t,e,n),i(t,e,n),t}},{"./absolutize":137,"./relativize":140}],140:[function(e,t,n){"use strict";var l=e("../util/path");t.exports=function(e,t,n){if(e.extra.relation.minimumScheme){var r=(i=e.path.absolute.array,o=t.path.absolute.array,a=[],s=!0,u=-1,o.forEach(function(e,t){s&&(i[t]!==e?s=!1:u=t),s||a.push("..")}),i.forEach(function(e,t){u<t&&a.push(e)}),a);e.path.relative.array=r,e.path.relative.string=l.join(r)}var i,o,a,s,u}},{"../util/path":142}],141:[function(e,t,n){"use strict";t.exports={clone:function e(t){if(t instanceof Object){var n=t instanceof Array?[]:{};for(var r in t)t.hasOwnProperty(r)&&(n[r]=e(t[r]));return n}return t},isPlainObject:function(e){return!!e&&"object"==typeof e&&e.constructor===Object},shallowMerge:function(e,t){if(e instanceof Object&&t instanceof Object)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}}},{}],142:[function(e,t,n){"use strict";t.exports={join:function(e){return 0<e.length?e.join("/")+"/":""},resolveDotSegments:function(e){var t=[];return e.forEach(function(e){".."!==e?"."!==e&&t.push(e):0<t.length&&t.splice(t.length-1,1)}),t}}},{}],143:[function(e,t,n){var r=e("buffer"),i=r.Buffer;function o(e,t){for(var n in e)t[n]=e[n]}function a(e,t,n){return i(e,t,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=r:(o(r,n),n.Buffer=a),o(i,a),a.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,n)},a.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=i(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},a.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},a.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},{buffer:4}],144:[function(e,t,n){var o=e("./util"),a=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;function u(){this._array=[],this._set=s?new Map:Object.create(null)}u.fromArray=function(e,t){for(var n=new u,r=0,i=e.length;r<i;r++)n.add(e[r],t);return n},u.prototype.size=function(){return s?this._set.size:Object.getOwnPropertyNames(this._set).length},u.prototype.add=function(e,t){var n=s?e:o.toSetString(e),r=s?this.has(e):a.call(this._set,n),i=this._array.length;r&&!t||this._array.push(e),r||(s?this._set.set(e,i):this._set[n]=i)},u.prototype.has=function(e){if(s)return this._set.has(e);var t=o.toSetString(e);return a.call(this._set,t)},u.prototype.indexOf=function(e){if(s){var t=this._set.get(e);if(0<=t)return t}else{var n=o.toSetString(e);if(a.call(this._set,n))return this._set[n]}throw new Error('"'+e+'" is not in the set.')},u.prototype.at=function(e){if(0<=e&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},u.prototype.toArray=function(){return this._array.slice()},n.ArraySet=u},{"./util":153}],145:[function(e,t,n){var c=e("./base64");n.encode=function(e){for(var t,n,r="",i=(n=e)<0?1+(-n<<1):0+(n<<1);t=31&i,0<(i>>>=5)&&(t|=32),r+=c.encode(t),0<i;);return r},n.decode=function(e,t,n){var r,i,o,a,s=e.length,u=0,l=0;do{if(s<=t)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=c.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));r=!!(32&i),u+=(i&=31)<<l,l+=5}while(r);n.value=(a=(o=u)>>1,1==(1&o)?-a:a),n.rest=t}},{"./base64":146}],146:[function(e,t,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");n.encode=function(e){if(0<=e&&e<r.length)return r[e];throw new TypeError("Must be between 0 and 63: "+e)},n.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1}},{}],147:[function(e,t,l){l.GREATEST_LOWER_BOUND=1,l.LEAST_UPPER_BOUND=2,l.search=function(e,t,n,r){if(0===t.length)return-1;var i=function e(t,n,r,i,o,a){var s=Math.floor((n-t)/2)+t,u=o(r,i[s],!0);return 0===u?s:0<u?1<n-s?e(s,n,r,i,o,a):a==l.LEAST_UPPER_BOUND?n<i.length?n:-1:s:1<s-t?e(t,s,r,i,o,a):a==l.LEAST_UPPER_BOUND?s:t<0?-1:t}(-1,t.length,e,t,n,r||l.GREATEST_LOWER_BOUND);if(i<0)return-1;for(;0<=i-1&&0===n(t[i],t[i-1],!0);)--i;return i}},{}],148:[function(e,t,n){var s=e("./util");function r(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}r.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},r.prototype.add=function(e){var t,n,r,i,o,a;t=this._last,n=e,r=t.generatedLine,i=n.generatedLine,o=t.generatedColumn,a=n.generatedColumn,r<i||i==r&&o<=a||s.compareByGeneratedPositionsInflated(t,n)<=0?this._last=e:this._sorted=!1,this._array.push(e)},r.prototype.toArray=function(){return this._sorted||(this._array.sort(s.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=r},{"./util":153}],149:[function(e,t,n){function c(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function f(e,t,n,r){if(n<r){var i=n-1;c(e,(u=n,l=r,Math.round(u+Math.random()*(l-u))),r);for(var o=e[r],a=n;a<r;a++)t(e[a],o)<=0&&c(e,i+=1,a);c(e,i+1,a);var s=i+1;f(e,t,n,s-1),f(e,t,s+1,r)}var u,l}n.quickSort=function(e,t){f(e,t,0,e.length-1)}},{}],150:[function(e,t,n){var y=e("./util"),u=e("./binary-search"),p=e("./array-set").ArraySet,_=e("./base64-vlq"),w=e("./quick-sort").quickSort;function a(e,t){var n=e;return"string"==typeof e&&(n=y.parseSourceMapInput(e)),null!=n.sections?new r(n,t):new h(n,t)}function h(e,t){var n=e;"string"==typeof e&&(n=y.parseSourceMapInput(e));var r=y.getArg(n,"version"),i=y.getArg(n,"sources"),o=y.getArg(n,"names",[]),a=y.getArg(n,"sourceRoot",null),s=y.getArg(n,"sourcesContent",null),u=y.getArg(n,"mappings"),l=y.getArg(n,"file",null);if(r!=this._version)throw new Error("Unsupported version: "+r);a&&(a=y.normalize(a)),i=i.map(String).map(y.normalize).map(function(e){return a&&y.isAbsolute(a)&&y.isAbsolute(e)?y.relative(a,e):e}),this._names=p.fromArray(o.map(String),!0),this._sources=p.fromArray(i,!0),this._absoluteSources=this._sources.toArray().map(function(e){return y.computeSourceURL(a,e,t)}),this.sourceRoot=a,this.sourcesContent=s,this._mappings=u,this._sourceMapURL=t,this.file=l}function E(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function r(e,i){var t=e;"string"==typeof e&&(t=y.parseSourceMapInput(e));var n=y.getArg(t,"version"),r=y.getArg(t,"sections");if(n!=this._version)throw new Error("Unsupported version: "+n);this._sources=new p,this._names=new p;var o={line:-1,column:0};this._sections=r.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var t=y.getArg(e,"offset"),n=y.getArg(t,"line"),r=y.getArg(t,"column");if(n<o.line||n===o.line&&r<o.column)throw new Error("Section offsets must be ordered and non-overlapping.");return o=t,{generatedOffset:{generatedLine:n+1,generatedColumn:r+1},consumer:new a(y.getArg(e,"map"),i)}})}a.fromSourceMap=function(e,t){return h.fromSourceMap(e,t)},a.prototype._version=3,a.prototype.__generatedMappings=null,Object.defineProperty(a.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),a.prototype.__originalMappings=null,Object.defineProperty(a.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),a.prototype._charIsMappingSeparator=function(e,t){var n=e.charAt(t);return";"===n||","===n},a.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")},a.GENERATED_ORDER=1,a.ORIGINAL_ORDER=2,a.GREATEST_LOWER_BOUND=1,a.LEAST_UPPER_BOUND=2,a.prototype.eachMapping=function(e,t,n){var r,i=t||null;switch(n||a.GENERATED_ORDER){case a.GENERATED_ORDER:r=this._generatedMappings;break;case a.ORIGINAL_ORDER:r=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var o=this.sourceRoot;r.map(function(e){var t=null===e.source?null:this._sources.at(e.source);return{source:t=y.computeSourceURL(o,t,this._sourceMapURL),generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}},this).forEach(e,i)},a.prototype.allGeneratedPositionsFor=function(e){var t=y.getArg(e,"line"),n={source:y.getArg(e,"source"),originalLine:t,originalColumn:y.getArg(e,"column",0)};if(n.source=this._findSourceIndex(n.source),n.source<0)return[];var r=[],i=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",y.compareByOriginalPositions,u.LEAST_UPPER_BOUND);if(0<=i){var o=this._originalMappings[i];if(void 0===e.column)for(var a=o.originalLine;o&&o.originalLine===a;)r.push({line:y.getArg(o,"generatedLine",null),column:y.getArg(o,"generatedColumn",null),lastColumn:y.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++i];else for(var s=o.originalColumn;o&&o.originalLine===t&&o.originalColumn==s;)r.push({line:y.getArg(o,"generatedLine",null),column:y.getArg(o,"generatedColumn",null),lastColumn:y.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++i]}return r},n.SourceMapConsumer=a,(h.prototype=Object.create(a.prototype)).consumer=a,h.prototype._findSourceIndex=function(e){var t,n=e;if(null!=this.sourceRoot&&(n=y.relative(this.sourceRoot,n)),this._sources.has(n))return this._sources.indexOf(n);for(t=0;t<this._absoluteSources.length;++t)if(this._absoluteSources[t]==e)return t;return-1},h.fromSourceMap=function(e,t){var n=Object.create(h.prototype),r=n._names=p.fromArray(e._names.toArray(),!0),i=n._sources=p.fromArray(e._sources.toArray(),!0);n.sourceRoot=e._sourceRoot,n.sourcesContent=e._generateSourcesContent(n._sources.toArray(),n.sourceRoot),n.file=e._file,n._sourceMapURL=t,n._absoluteSources=n._sources.toArray().map(function(e){return y.computeSourceURL(n.sourceRoot,e,t)});for(var o=e._mappings.toArray().slice(),a=n.__generatedMappings=[],s=n.__originalMappings=[],u=0,l=o.length;u<l;u++){var c=o[u],f=new E;f.generatedLine=c.generatedLine,f.generatedColumn=c.generatedColumn,c.source&&(f.source=i.indexOf(c.source),f.originalLine=c.originalLine,f.originalColumn=c.originalColumn,c.name&&(f.name=r.indexOf(c.name)),s.push(f)),a.push(f)}return w(n.__originalMappings,y.compareByOriginalPositions),n},h.prototype._version=3,Object.defineProperty(h.prototype,"sources",{get:function(){return this._absoluteSources.slice()}}),h.prototype._parseMappings=function(e,t){for(var n,r,i,o,a,s=1,u=0,l=0,c=0,f=0,p=0,h=e.length,d=0,m={},g={},v=[],b=[];d<h;)if(";"===e.charAt(d))s++,d++,u=0;else if(","===e.charAt(d))d++;else{for((n=new E).generatedLine=s,o=d;o<h&&!this._charIsMappingSeparator(e,o);o++);if(i=m[r=e.slice(d,o)])d+=r.length;else{for(i=[];d<o;)_.decode(e,d,g),a=g.value,d=g.rest,i.push(a);if(2===i.length)throw new Error("Found a source, but no line and column");if(3===i.length)throw new Error("Found a source and line, but no column");m[r]=i}n.generatedColumn=u+i[0],u=n.generatedColumn,1<i.length&&(n.source=f+i[1],f+=i[1],n.originalLine=l+i[2],l=n.originalLine,n.originalLine+=1,n.originalColumn=c+i[3],c=n.originalColumn,4<i.length&&(n.name=p+i[4],p+=i[4])),b.push(n),"number"==typeof n.originalLine&&v.push(n)}w(b,y.compareByGeneratedPositionsDeflated),this.__generatedMappings=b,w(v,y.compareByOriginalPositions),this.__originalMappings=v},h.prototype._findMapping=function(e,t,n,r,i,o){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return u.search(e,t,i,o)},h.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var n=this._generatedMappings[e+1];if(t.generatedLine===n.generatedLine){t.lastGeneratedColumn=n.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},h.prototype.originalPositionFor=function(e){var t={generatedLine:y.getArg(e,"line"),generatedColumn:y.getArg(e,"column")},n=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",y.compareByGeneratedPositionsDeflated,y.getArg(e,"bias",a.GREATEST_LOWER_BOUND));if(0<=n){var r=this._generatedMappings[n];if(r.generatedLine===t.generatedLine){var i=y.getArg(r,"source",null);null!==i&&(i=this._sources.at(i),i=y.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var o=y.getArg(r,"name",null);return null!==o&&(o=this._names.at(o)),{source:i,line:y.getArg(r,"originalLine",null),column:y.getArg(r,"originalColumn",null),name:o}}}return{source:null,line:null,column:null,name:null}},h.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},h.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var n=this._findSourceIndex(e);if(0<=n)return this.sourcesContent[n];var r,i=e;if(null!=this.sourceRoot&&(i=y.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(r=y.urlParse(this.sourceRoot))){var o=i.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(o))return this.sourcesContent[this._sources.indexOf(o)];if((!r.path||"/"==r.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(t)return null;throw new Error('"'+i+'" is not in the SourceMap.')},h.prototype.generatedPositionFor=function(e){var t=y.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var n={source:t,originalLine:y.getArg(e,"line"),originalColumn:y.getArg(e,"column")},r=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",y.compareByOriginalPositions,y.getArg(e,"bias",a.GREATEST_LOWER_BOUND));if(0<=r){var i=this._originalMappings[r];if(i.source===n.source)return{line:y.getArg(i,"generatedLine",null),column:y.getArg(i,"generatedColumn",null),lastColumn:y.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=h,(r.prototype=Object.create(a.prototype)).constructor=a,r.prototype._version=3,Object.defineProperty(r.prototype,"sources",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var n=0;n<this._sections[t].consumer.sources.length;n++)e.push(this._sections[t].consumer.sources[n]);return e}}),r.prototype.originalPositionFor=function(e){var t={generatedLine:y.getArg(e,"line"),generatedColumn:y.getArg(e,"column")},n=u.search(t,this._sections,function(e,t){var n=e.generatedLine-t.generatedOffset.generatedLine;return n||e.generatedColumn-t.generatedOffset.generatedColumn}),r=this._sections[n];return r?r.consumer.originalPositionFor({line:t.generatedLine-(r.generatedOffset.generatedLine-1),column:t.generatedColumn-(r.generatedOffset.generatedLine===t.generatedLine?r.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},r.prototype.hasContentsOfAllSources=function(){return this._sections.every(function(e){return e.consumer.hasContentsOfAllSources()})},r.prototype.sourceContentFor=function(e,t){for(var n=0;n<this._sections.length;n++){var r=this._sections[n].consumer.sourceContentFor(e,!0);if(r)return r}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},r.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var n=this._sections[t];if(-1!==n.consumer._findSourceIndex(y.getArg(e,"source"))){var r=n.consumer.generatedPositionFor(e);if(r)return{line:r.line+(n.generatedOffset.generatedLine-1),column:r.column+(n.generatedOffset.generatedLine===r.line?n.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},r.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var n=0;n<this._sections.length;n++)for(var r=this._sections[n],i=r.consumer._generatedMappings,o=0;o<i.length;o++){var a=i[o],s=r.consumer._sources.at(a.source);s=y.computeSourceURL(r.consumer.sourceRoot,s,this._sourceMapURL),this._sources.add(s),s=this._sources.indexOf(s);var u=null;a.name&&(u=r.consumer._names.at(a.name),this._names.add(u),u=this._names.indexOf(u));var l={source:s,generatedLine:a.generatedLine+(r.generatedOffset.generatedLine-1),generatedColumn:a.generatedColumn+(r.generatedOffset.generatedLine===a.generatedLine?r.generatedOffset.generatedColumn-1:0),originalLine:a.originalLine,originalColumn:a.originalColumn,name:u};this.__generatedMappings.push(l),"number"==typeof l.originalLine&&this.__originalMappings.push(l)}w(this.__generatedMappings,y.compareByGeneratedPositionsDeflated),w(this.__originalMappings,y.compareByOriginalPositions)},n.IndexedSourceMapConsumer=r},{"./array-set":144,"./base64-vlq":145,"./binary-search":147,"./quick-sort":149,"./util":153}],151:[function(e,t,n){var d=e("./base64-vlq"),m=e("./util"),r=e("./array-set").ArraySet,i=e("./mapping-list").MappingList;function a(e){e||(e={}),this._file=m.getArg(e,"file",null),this._sourceRoot=m.getArg(e,"sourceRoot",null),this._skipValidation=m.getArg(e,"skipValidation",!1),this._sources=new r,this._names=new r,this._mappings=new i,this._sourcesContents=null}a.prototype._version=3,a.fromSourceMap=function(r){var i=r.sourceRoot,o=new a({file:r.file,sourceRoot:i});return r.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(t.source=e.source,null!=i&&(t.source=m.relative(i,t.source)),t.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(t.name=e.name)),o.addMapping(t)}),r.sources.forEach(function(e){var t=e;null!==i&&(t=m.relative(i,e)),o._sources.has(t)||o._sources.add(t);var n=r.sourceContentFor(e);null!=n&&o.setSourceContent(e,n)}),o},a.prototype.addMapping=function(e){var t=m.getArg(e,"generated"),n=m.getArg(e,"original",null),r=m.getArg(e,"source",null),i=m.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,n,r,i),null!=r&&(r=String(r),this._sources.has(r)||this._sources.add(r)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=n&&n.line,originalColumn:null!=n&&n.column,source:r,name:i})},a.prototype.setSourceContent=function(e,t){var n=e;null!=this._sourceRoot&&(n=m.relative(this._sourceRoot,n)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[m.toSetString(n)]=t):this._sourcesContents&&(delete this._sourcesContents[m.toSetString(n)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},a.prototype.applySourceMap=function(i,e,o){var a=e;if(null==e){if(null==i.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');a=i.file}var s=this._sourceRoot;null!=s&&(a=m.relative(s,a));var u=new r,l=new r;this._mappings.unsortedForEach(function(e){if(e.source===a&&null!=e.originalLine){var t=i.originalPositionFor({line:e.originalLine,column:e.originalColumn});null!=t.source&&(e.source=t.source,null!=o&&(e.source=m.join(o,e.source)),null!=s&&(e.source=m.relative(s,e.source)),e.originalLine=t.line,e.originalColumn=t.column,null!=t.name&&(e.name=t.name))}var n=e.source;null==n||u.has(n)||u.add(n);var r=e.name;null==r||l.has(r)||l.add(r)},this),this._sources=u,this._names=l,i.sources.forEach(function(e){var t=i.sourceContentFor(e);null!=t&&(null!=o&&(e=m.join(o,e)),null!=s&&(e=m.relative(s,e)),this.setSourceContent(e,t))},this)},a.prototype._validateMapping=function(e,t,n,r){if(t&&"number"!=typeof t.line&&"number"!=typeof t.column)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((!(e&&"line"in e&&"column"in e&&0<e.line&&0<=e.column)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&0<e.line&&0<=e.column&&0<t.line&&0<=t.column&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},a.prototype._serializeMappings=function(){for(var e,t,n,r,i=0,o=1,a=0,s=0,u=0,l=0,c="",f=this._mappings.toArray(),p=0,h=f.length;p<h;p++){if(e="",(t=f[p]).generatedLine!==o)for(i=0;t.generatedLine!==o;)e+=";",o++;else if(0<p){if(!m.compareByGeneratedPositionsInflated(t,f[p-1]))continue;e+=","}e+=d.encode(t.generatedColumn-i),i=t.generatedColumn,null!=t.source&&(r=this._sources.indexOf(t.source),e+=d.encode(r-l),l=r,e+=d.encode(t.originalLine-1-s),s=t.originalLine-1,e+=d.encode(t.originalColumn-a),a=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=d.encode(n-u),u=n)),c+=e}return c},a.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=m.relative(n,e));var t=m.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,t)?this._sourcesContents[t]:null},this)},a.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},a.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=a},{"./array-set":144,"./base64-vlq":145,"./mapping-list":148,"./util":153}],152:[function(e,t,n){var r=e("./source-map-generator").SourceMapGenerator,p=e("./util"),h=/(\r?\n)/,o="$$$isSourceNode$$$";function d(e,t,n,r,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==i?null:i,this[o]=!0,null!=r&&this.add(r)}d.fromStringWithSourceMap=function(e,n,r){var i=new d,o=e.split(h),a=0,s=function(){return e()+(e()||"");function e(){return a<o.length?o[a++]:void 0}},u=1,l=0,c=null;return n.eachMapping(function(e){if(null!==c){if(!(u<e.generatedLine)){var t=(n=o[a]||"").substr(0,e.generatedColumn-l);return o[a]=n.substr(e.generatedColumn-l),l=e.generatedColumn,f(c,t),void(c=e)}f(c,s()),u++,l=0}for(;u<e.generatedLine;)i.add(s()),u++;if(l<e.generatedColumn){var n=o[a]||"";i.add(n.substr(0,e.generatedColumn)),o[a]=n.substr(e.generatedColumn),l=e.generatedColumn}c=e},this),a<o.length&&(c&&f(c,s()),i.add(o.splice(a).join(""))),n.sources.forEach(function(e){var t=n.sourceContentFor(e);null!=t&&(null!=r&&(e=p.join(r,e)),i.setSourceContent(e,t))}),i;function f(e,t){if(null===e||void 0===e.source)i.add(t);else{var n=r?p.join(r,e.source):e.source;i.add(new d(e.originalLine,e.originalColumn,n,t,e.name))}}},d.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[o]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},d.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;0<=t;t--)this.prepend(e[t]);else{if(!e[o]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},d.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n<r;n++)(t=this.children[n])[o]?t.walk(e):""!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},d.prototype.join=function(e){var t,n,r=this.children.length;if(0<r){for(t=[],n=0;n<r-1;n++)t.push(this.children[n]),t.push(e);t.push(this.children[n]),this.children=t}return this},d.prototype.replaceRight=function(e,t){var n=this.children[this.children.length-1];return n[o]?n.replaceRight(e,t):"string"==typeof n?this.children[this.children.length-1]=n.replace(e,t):this.children.push("".replace(e,t)),this},d.prototype.setSourceContent=function(e,t){this.sourceContents[p.toSetString(e)]=t},d.prototype.walkSourceContents=function(e){for(var t=0,n=this.children.length;t<n;t++)this.children[t][o]&&this.children[t].walkSourceContents(e);var r=Object.keys(this.sourceContents);for(t=0,n=r.length;t<n;t++)e(p.fromSetString(r[t]),this.sourceContents[r[t]])},d.prototype.toString=function(){var t="";return this.walk(function(e){t+=e}),t},d.prototype.toStringWithSourceMap=function(e){var i={code:"",line:1,column:0},o=new r(e),a=!1,s=null,u=null,l=null,c=null;return this.walk(function(e,t){i.code+=e,null!==t.source&&null!==t.line&&null!==t.column?(s===t.source&&u===t.line&&l===t.column&&c===t.name||o.addMapping({source:t.source,original:{line:t.line,column:t.column},generated:{line:i.line,column:i.column},name:t.name}),s=t.source,u=t.line,l=t.column,c=t.name,a=!0):a&&(o.addMapping({generated:{line:i.line,column:i.column}}),s=null,a=!1);for(var n=0,r=e.length;n<r;n++)10===e.charCodeAt(n)?(i.line++,i.column=0,n+1===r?(s=null,a=!1):a&&o.addMapping({source:t.source,original:{line:t.line,column:t.column},generated:{line:i.line,column:i.column},name:t.name})):i.column++}),this.walkSourceContents(function(e,t){o.setSourceContent(e,t)}),{code:i.code,map:o}},n.SourceNode=d},{"./source-map-generator":151,"./util":153}],153:[function(e,t,u){u.getArg=function(e,t,n){if(t in e)return e[t];if(3===arguments.length)return n;throw new Error('"'+t+'" is a required argument.')};var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,o=/^data:.+\,.+$/;function l(e){var t=e.match(n);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function c(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function a(e){var t=e,n=l(e);if(n){if(!n.path)return e;t=n.path}for(var r,i=u.isAbsolute(t),o=t.split(/\/+/),a=0,s=o.length-1;0<=s;s--)"."===(r=o[s])?o.splice(s,1):".."===r?a++:0<a&&(""===r?(o.splice(s+1,a),a=0):(o.splice(s,2),a--));return""===(t=o.join("/"))&&(t=i?"/":"."),n?(n.path=t,c(n)):t}function s(e,t){""===e&&(e="."),""===t&&(t=".");var n=l(t),r=l(e);if(r&&(e=r.path||"/"),n&&!n.scheme)return r&&(n.scheme=r.scheme),c(n);if(n||t.match(o))return t;if(r&&!r.host&&!r.path)return r.host=t,c(r);var i="/"===t.charAt(0)?t:a(e.replace(/\/+$/,"")+"/"+t);return r?(r.path=i,c(r)):i}u.urlParse=l,u.urlGenerate=c,u.normalize=a,u.join=s,u.isAbsolute=function(e){return"/"===e.charAt(0)||n.test(e)},u.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)};var r=!("__proto__"in Object.create(null));function i(e){return e}function f(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;0<=n;n--)if(36!==e.charCodeAt(n))return!1;return!0}function p(e,t){return e===t?0:null===e?1:null===t?-1:t<e?1:-1}u.toSetString=r?i:function(e){return f(e)?"$"+e:e},u.fromSetString=r?i:function(e){return f(e)?e.slice(1):e},u.compareByOriginalPositions=function(e,t,n){var r=p(e.source,t.source);return 0!==r?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)||n?r:0!=(r=e.generatedColumn-t.generatedColumn)?r:0!=(r=e.generatedLine-t.generatedLine)?r:p(e.name,t.name)},u.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!=(r=e.generatedColumn-t.generatedColumn)||n?r:0!==(r=p(e.source,t.source))?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)?r:p(e.name,t.name)},u.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!=(n=e.generatedColumn-t.generatedColumn)?n:0!==(n=p(e.source,t.source))?n:0!=(n=e.originalLine-t.originalLine)?n:0!=(n=e.originalColumn-t.originalColumn)?n:p(e.name,t.name)},u.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},u.computeSourceURL=function(e,t,n){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),n){var r=l(n);if(!r)throw new Error("sourceMapURL could not be parsed");if(r.path){var i=r.path.lastIndexOf("/");0<=i&&(r.path=r.path.substring(0,i+1))}t=s(c(r),t)}return a(t)}},{}],154:[function(e,t,n){n.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,n.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,n.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":150,"./lib/source-map-generator":151,"./lib/source-node":152}],155:[function(n,e,i){(function(u){var l=n("./lib/request"),e=n("./lib/response"),c=n("xtend"),t=n("builtin-status-codes"),f=n("url"),r=i;r.request=function(e,t){e="string"==typeof e?f.parse(e):c(e);var n=-1===u.location.protocol.search(/^https?:$/)?"http:":"",r=e.protocol||n,i=e.hostname||e.host,o=e.port,a=e.path||"/";i&&-1!==i.indexOf(":")&&(i="["+i+"]"),e.url=(i?r+"//"+i:"")+(o?":"+o:"")+a,e.method=(e.method||"GET").toUpperCase(),e.headers=e.headers||{};var s=new l(e);return t&&s.on("response",t),s},r.get=function(e,t){var n=r.request(e,t);return n.end(),n},r.ClientRequest=l,r.IncomingMessage=e.IncomingMessage,r.Agent=function(){},r.Agent.defaultMaxSockets=4,r.globalAgent=new r.Agent,r.STATUS_CODES=t,r.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./lib/request":157,"./lib/response":158,"builtin-status-codes":5,url:162,xtend:165}],156:[function(e,t,s){(function(e){s.fetch=a(e.fetch)&&a(e.ReadableStream),s.writableStream=a(e.WritableStream),s.abortController=a(e.AbortController),s.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),s.blobConstructor=!0}catch(e){}var t;function n(){if(void 0!==t)return t;if(e.XMLHttpRequest){t=new e.XMLHttpRequest;try{t.open("GET",e.XDomainRequest?"/":"https://example.com")}catch(e){t=null}}else t=null;return t}function r(e){var t=n();if(!t)return!1;try{return t.responseType=e,t.responseType===e}catch(e){}return!1}var i=void 0!==e.ArrayBuffer,o=i&&a(e.ArrayBuffer.prototype.slice);function a(e){return"function"==typeof e}s.arraybuffer=s.fetch||i&&r("arraybuffer"),s.msstream=!s.fetch&&o&&r("ms-stream"),s.mozchunkedarraybuffer=!s.fetch&&i&&r("moz-chunked-arraybuffer"),s.overrideMimeType=s.fetch||!!n()&&a(n().overrideMimeType),s.vbArray=a(e.VBArray),t=null}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],157:[function(o,s,e){(function(u,l,c){var f=o("./capability"),e=o("inherits"),t=o("./response"),a=o("readable-stream"),p=o("to-arraybuffer"),n=t.IncomingMessage,h=t.readyStates;var r=s.exports=function(t){var e,n=this;a.Writable.call(n),n._opts=t,n._body=[],n._headers={},t.auth&&n.setHeader("Authorization","Basic "+new c(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){n.setHeader(e,t.headers[e])});var r,i,o=!0;if("disable-fetch"===t.mode||"requestTimeout"in t&&!f.abortController)e=!(o=!1);else if("prefer-streaming"===t.mode)e=!1;else if("allow-wrong-content-type"===t.mode)e=!f.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");e=!0}n._mode=(r=e,i=o,f.fetch&&i?"fetch":f.mozchunkedarraybuffer?"moz-chunked-arraybuffer":f.msstream?"ms-stream":f.arraybuffer&&r?"arraybuffer":f.vbArray&&r?"text:vbarray":"text"),n._fetchTimer=null,n.on("finish",function(){n._onFinish()})};e(r,a.Writable),r.prototype.setHeader=function(e,t){var n=e.toLowerCase();-1===i.indexOf(n)&&(this._headers[n]={name:e,value:t})},r.prototype.getHeader=function(e){var t=this._headers[e.toLowerCase()];return t?t.value:null},r.prototype.removeHeader=function(e){delete this._headers[e.toLowerCase()]},r.prototype._onFinish=function(){var t=this;if(!t._destroyed){var e=t._opts,r=t._headers,n=null;"GET"!==e.method&&"HEAD"!==e.method&&(n=f.arraybuffer?p(c.concat(t._body)):f.blobConstructor?new l.Blob(t._body.map(function(e){return p(e)}),{type:(r["content-type"]||{}).value||""}):c.concat(t._body).toString());var i=[];if(Object.keys(r).forEach(function(e){var t=r[e].name,n=r[e].value;Array.isArray(n)?n.forEach(function(e){i.push([t,e])}):i.push([t,n])}),"fetch"===t._mode){var o=null;if(f.abortController){var a=new AbortController;o=a.signal,t._fetchAbortController=a,"requestTimeout"in e&&0!==e.requestTimeout&&(t._fetchTimer=l.setTimeout(function(){t.emit("requestTimeout"),t._fetchAbortController&&t._fetchAbortController.abort()},e.requestTimeout))}l.fetch(t._opts.url,{method:t._opts.method,headers:i,body:n||void 0,mode:"cors",credentials:e.withCredentials?"include":"same-origin",signal:o}).then(function(e){t._fetchResponse=e,t._connect()},function(e){l.clearTimeout(t._fetchTimer),t._destroyed||t.emit("error",e)})}else{var s=t._xhr=new l.XMLHttpRequest;try{s.open(t._opts.method,t._opts.url,!0)}catch(e){return void u.nextTick(function(){t.emit("error",e)})}"responseType"in s&&(s.responseType=t._mode.split(":")[0]),"withCredentials"in s&&(s.withCredentials=!!e.withCredentials),"text"===t._mode&&"overrideMimeType"in s&&s.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in e&&(s.timeout=e.requestTimeout,s.ontimeout=function(){t.emit("requestTimeout")}),i.forEach(function(e){s.setRequestHeader(e[0],e[1])}),t._response=null,s.onreadystatechange=function(){switch(s.readyState){case h.LOADING:case h.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(s.onprogress=function(){t._onXHRProgress()}),s.onerror=function(){t._destroyed||t.emit("error",new Error("XHR error"))};try{s.send(n)}catch(e){return void u.nextTick(function(){t.emit("error",e)})}}}},r.prototype._onXHRProgress=function(){(function(e){try{var t=e.status;return null!==t&&0!==t}catch(e){return!1}})(this._xhr)&&!this._destroyed&&(this._response||this._connect(),this._response._onXHRProgress())},r.prototype._connect=function(){var t=this;t._destroyed||(t._response=new n(t._xhr,t._fetchResponse,t._mode,t._fetchTimer),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},r.prototype._write=function(e,t,n){this._body.push(e),n()},r.prototype.abort=r.prototype.destroy=function(){this._destroyed=!0,l.clearTimeout(this._fetchTimer),this._response&&(this._response._destroyed=!0),this._xhr?this._xhr.abort():this._fetchAbortController&&this._fetchAbortController.abort()},r.prototype.end=function(e,t,n){"function"==typeof e&&(n=e,e=void 0),a.Writable.prototype.end.call(this,e,t,n)},r.prototype.flushHeaders=function(){},r.prototype.setTimeout=function(){},r.prototype.setNoDelay=function(){},r.prototype.setSocketKeepAlive=function(){};var i=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]}).call(this,o("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},o("buffer").Buffer)},{"./capability":156,"./response":158,_process:112,buffer:4,inherits:106,"readable-stream":125,"to-arraybuffer":161}],158:[function(n,e,r){(function(l,c,f){var p=n("./capability"),e=n("inherits"),h=n("readable-stream"),s=r.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},t=r.IncomingMessage=function(e,t,n,r){var i=this;if(h.Readable.call(i),i._mode=n,i.headers={},i.rawHeaders=[],i.trailers={},i.rawTrailers=[],i.on("end",function(){l.nextTick(function(){i.emit("close")})}),"fetch"===n){if(i._fetchResponse=t,i.url=t.url,i.statusCode=t.status,i.statusMessage=t.statusText,t.headers.forEach(function(e,t){i.headers[t.toLowerCase()]=e,i.rawHeaders.push(t,e)}),p.writableStream){var o=new WritableStream({write:function(n){return new Promise(function(e,t){i._destroyed?t():i.push(new f(n))?e():i._resumeFetch=e})},close:function(){c.clearTimeout(r),i._destroyed||i.push(null)},abort:function(e){i._destroyed||i.emit("error",e)}});try{return void t.body.pipeTo(o).catch(function(e){c.clearTimeout(r),i._destroyed||i.emit("error",e)})}catch(e){}}var a=t.body.getReader();!function t(){a.read().then(function(e){if(!i._destroyed){if(e.done)return c.clearTimeout(r),void i.push(null);i.push(new f(e.value)),t()}}).catch(function(e){c.clearTimeout(r),i._destroyed||i.emit("error",e)})}()}else{if(i._xhr=e,i._pos=0,i.url=e.responseURL,i.statusCode=e.status,i.statusMessage=e.statusText,e.getAllResponseHeaders().split(/\r?\n/).forEach(function(e){var t=e.match(/^([^:]+):\s*(.*)/);if(t){var n=t[1].toLowerCase();"set-cookie"===n?(void 0===i.headers[n]&&(i.headers[n]=[]),i.headers[n].push(t[2])):void 0!==i.headers[n]?i.headers[n]+=", "+t[2]:i.headers[n]=t[2],i.rawHeaders.push(t[1],t[2])}}),i._charset="x-user-defined",!p.overrideMimeType){var s=i.rawHeaders["mime-type"];if(s){var u=s.match(/;\s*charset=([^;])(;|$)/);u&&(i._charset=u[1].toLowerCase())}i._charset||(i._charset="utf-8")}}};e(t,h.Readable),t.prototype._read=function(){var e=this._resumeFetch;e&&(this._resumeFetch=null,e())},t.prototype._onXHRProgress=function(){var t=this,e=t._xhr,n=null;switch(t._mode){case"text:vbarray":if(e.readyState!==s.DONE)break;try{n=new c.VBArray(e.responseBody).toArray()}catch(e){}if(null!==n){t.push(new f(n));break}case"text":try{n=e.responseText}catch(e){t._mode="text:vbarray";break}if(n.length>t._pos){var r=n.substr(t._pos);if("x-user-defined"===t._charset){for(var i=new f(r.length),o=0;o<r.length;o++)i[o]=255&r.charCodeAt(o);t.push(i)}else t.push(r,t._charset);t._pos=n.length}break;case"arraybuffer":if(e.readyState!==s.DONE||!e.response)break;n=e.response,t.push(new f(new Uint8Array(n)));break;case"moz-chunked-arraybuffer":if(n=e.response,e.readyState!==s.LOADING||!n)break;t.push(new f(new Uint8Array(n)));break;case"ms-stream":if(n=e.response,e.readyState!==s.LOADING)break;var a=new c.MSStreamReader;a.onprogress=function(){a.result.byteLength>t._pos&&(t.push(new f(new Uint8Array(a.result.slice(t._pos)))),t._pos=a.result.byteLength)},a.onload=function(){t.push(null)},a.readAsArrayBuffer(n)}t._xhr.readyState===s.DONE&&"ms-stream"!==t._mode&&t.push(null)}}).call(this,n("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n("buffer").Buffer)},{"./capability":156,_process:112,buffer:4,inherits:106,"readable-stream":125}],159:[function(e,t,n){"use strict";var r=e("safe-buffer").Buffer,i=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=l,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=c,this.end=f,t=3;break;default:return this.write=p,void(this.end=h)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(1<e.lastNeed&&1<t.length){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(2<e.lastNeed&&2<t.length&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2!=0)return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1);var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(55296<=r&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function c(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function f(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function p(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}(n.StringDecoder=o).prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<e.length?t?t+this.text(e,n):this.text(e,n):t||""},o.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t},o.prototype.text=function(e,t){var n=function(e,t,n){var r=t.length-1;if(r<n)return 0;var i=a(t[r]);if(0<=i)return 0<i&&(e.lastNeed=i-1),i;if(--r<n||-2===i)return 0;if(0<=(i=a(t[r])))return 0<i&&(e.lastNeed=i-2),i;if(--r<n||-2===i)return 0;if(0<=(i=a(t[r])))return 0<i&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},{"safe-buffer":143}],160:[function(u,e,l){(function(e,t){var r=u("process/browser.js").nextTick,n=Function.prototype.apply,i=Array.prototype.slice,o={},a=0;function s(e,t){this._id=e,this._clearFn=t}l.setTimeout=function(){return new s(n.call(setTimeout,window,arguments),clearTimeout)},l.setInterval=function(){return new s(n.call(setInterval,window,arguments),clearInterval)},l.clearTimeout=l.clearInterval=function(e){e.close()},s.prototype.unref=s.prototype.ref=function(){},s.prototype.close=function(){this._clearFn.call(window,this._id)},l.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},l.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},l._unrefActive=l.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},l.setImmediate="function"==typeof e?e:function(e){var t=a++,n=!(arguments.length<2)&&i.call(arguments,1);return o[t]=!0,r(function(){o[t]&&(n?e.apply(null,n):e.call(null),l.clearImmediate(t))}),t},l.clearImmediate="function"==typeof t?t:function(e){delete o[e]}}).call(this,u("timers").setImmediate,u("timers").clearImmediate)},{"process/browser.js":112,timers:160}],161:[function(e,t,n){var i=e("buffer").Buffer;t.exports=function(e){if(e instanceof Uint8Array){if(0===e.byteOffset&&e.byteLength===e.buffer.byteLength)return e.buffer;if("function"==typeof e.buffer.slice)return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}if(i.isBuffer(e)){for(var t=new Uint8Array(e.length),n=e.length,r=0;r<n;r++)t[r]=e[r];return t.buffer}throw new Error("Argument must be a Buffer")}},{buffer:4}],162:[function(e,t,n){"use strict";var L=e("punycode"),F=e("./util");function O(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}n.parse=o,n.resolve=function(e,t){return o(e,!1,!0).resolve(t)},n.resolveObject=function(e,t){return e?o(e,!1,!0).resolveObject(t):t},n.format=function(e){F.isString(e)&&(e=o(e));return e instanceof O?e.format():O.prototype.format.call(e)},n.Url=O;var q=/^([a-z0-9.+-]+:)/i,r=/:[0-9]*$/,U=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,i=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),M=["'"].concat(i),N=["%","/","?",";","#"].concat(M),P=["/","?","#"],I=/^[+a-z0-9A-Z_-]{0,63}$/,z=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,j={javascript:!0,"javascript:":!0},V={javascript:!0,"javascript:":!0},H={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},$=e("querystring");function o(e,t,n){if(e&&F.isObject(e)&&e instanceof O)return e;var r=new O;return r.parse(e,t,n),r}O.prototype.parse=function(e,t,n){if(!F.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var r=e.indexOf("?"),i=-1!==r&&r<e.indexOf("#")?"?":"#",o=e.split(i);o[0]=o[0].replace(/\\/g,"/");var a=e=o.join(i);if(a=a.trim(),!n&&1===e.split("#").length){var s=U.exec(a);if(s)return this.path=a,this.href=a,this.pathname=s[1],s[2]?(this.search=s[2],this.query=t?$.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var u=q.exec(a);if(u){var l=(u=u[0]).toLowerCase();this.protocol=l,a=a.substr(u.length)}if(n||u||a.match(/^\/\/[^@\/]+@[^@\/]+/)){var c="//"===a.substr(0,2);!c||u&&V[u]||(a=a.substr(2),this.slashes=!0)}if(!V[u]&&(c||u&&!H[u])){for(var f,p,h=-1,d=0;d<P.length;d++){-1!==(m=a.indexOf(P[d]))&&(-1===h||m<h)&&(h=m)}-1!==(p=-1===h?a.lastIndexOf("@"):a.lastIndexOf("@",h))&&(f=a.slice(0,p),a=a.slice(p+1),this.auth=decodeURIComponent(f)),h=-1;for(d=0;d<N.length;d++){var m;-1!==(m=a.indexOf(N[d]))&&(-1===h||m<h)&&(h=m)}-1===h&&(h=a.length),this.host=a.slice(0,h),a=a.slice(h),this.parseHost(),this.hostname=this.hostname||"";var g="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!g)for(var v=this.hostname.split(/\./),b=(d=0,v.length);d<b;d++){var y=v[d];if(y&&!y.match(I)){for(var _="",w=0,E=y.length;w<E;w++)127<y.charCodeAt(w)?_+="x":_+=y[w];if(!_.match(I)){var A=v.slice(0,d),x=v.slice(d+1),k=y.match(z);k&&(A.push(k[1]),x.unshift(k[2])),x.length&&(a="/"+x.join(".")+a),this.hostname=A.join(".");break}}}255<this.hostname.length?this.hostname="":this.hostname=this.hostname.toLowerCase(),g||(this.hostname=L.toASCII(this.hostname));var C=this.port?":"+this.port:"",O=this.hostname||"";this.host=O+C,this.href+=this.host,g&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==a[0]&&(a="/"+a))}if(!j[l])for(d=0,b=M.length;d<b;d++){var S=M[d];if(-1!==a.indexOf(S)){var D=encodeURIComponent(S);D===S&&(D=escape(S)),a=a.split(S).join(D)}}var T=a.indexOf("#");-1!==T&&(this.hash=a.substr(T),a=a.slice(0,T));var B=a.indexOf("?");if(-1!==B?(this.search=a.substr(B),this.query=a.substr(B+1),t&&(this.query=$.parse(this.query)),a=a.slice(0,B)):t&&(this.search="",this.query={}),a&&(this.pathname=a),H[l]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){C=this.pathname||"";var R=this.search||"";this.path=C+R}return this.href=this.format(),this},O.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",i=!1,o="";this.host?i=e+this.host:this.hostname&&(i=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&F.isObject(this.query)&&Object.keys(this.query).length&&(o=$.stringify(this.query));var a=this.search||o&&"?"+o||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||H[t])&&!1!==i?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),r&&"#"!==r.charAt(0)&&(r="#"+r),a&&"?"!==a.charAt(0)&&(a="?"+a),t+i+(n=n.replace(/[?#]/g,function(e){return encodeURIComponent(e)}))+(a=a.replace("#","%23"))+r},O.prototype.resolve=function(e){return this.resolveObject(o(e,!1,!0)).format()},O.prototype.resolveObject=function(e){if(F.isString(e)){var t=new O;t.parse(e,!1,!0),e=t}for(var n=new O,r=Object.keys(this),i=0;i<r.length;i++){var o=r[i];n[o]=this[o]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var a=Object.keys(e),s=0;s<a.length;s++){var u=a[s];"protocol"!==u&&(n[u]=e[u])}return H[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!H[e.protocol]){for(var l=Object.keys(e),c=0;c<l.length;c++){var f=l[c];n[f]=e[f]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||V[e.protocol])n.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==p[0]&&p.unshift(""),p.length<2&&p.unshift(""),n.pathname=p.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var h=n.pathname||"",d=n.search||"";n.path=h+d}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var m=n.pathname&&"/"===n.pathname.charAt(0),g=e.host||e.pathname&&"/"===e.pathname.charAt(0),v=g||m||n.host&&e.pathname,b=v,y=n.pathname&&n.pathname.split("/")||[],_=(p=e.pathname&&e.pathname.split("/")||[],n.protocol&&!H[n.protocol]);if(_&&(n.hostname="",n.port=null,n.host&&(""===y[0]?y[0]=n.host:y.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===p[0]?p[0]=e.host:p.unshift(e.host)),e.host=null),v=v&&(""===p[0]||""===y[0])),g)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,y=p;else if(p.length)y||(y=[]),y.pop(),y=y.concat(p),n.search=e.search,n.query=e.query;else if(!F.isNullOrUndefined(e.search)){if(_)n.hostname=n.host=y.shift(),(k=!!(n.host&&0<n.host.indexOf("@"))&&n.host.split("@"))&&(n.auth=k.shift(),n.host=n.hostname=k.shift());return n.search=e.search,n.query=e.query,F.isNull(n.pathname)&&F.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!y.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var w=y.slice(-1)[0],E=(n.host||e.host||1<y.length)&&("."===w||".."===w)||""===w,A=0,x=y.length;0<=x;x--)"."===(w=y[x])?y.splice(x,1):".."===w?(y.splice(x,1),A++):A&&(y.splice(x,1),A--);if(!v&&!b)for(;A--;A)y.unshift("..");!v||""===y[0]||y[0]&&"/"===y[0].charAt(0)||y.unshift(""),E&&"/"!==y.join("/").substr(-1)&&y.push("");var k,C=""===y[0]||y[0]&&"/"===y[0].charAt(0);_&&(n.hostname=n.host=C?"":y.length?y.shift():"",(k=!!(n.host&&0<n.host.indexOf("@"))&&n.host.split("@"))&&(n.auth=k.shift(),n.host=n.hostname=k.shift()));return(v=v||n.host&&y.length)&&!C&&y.unshift(""),y.length?n.pathname=y.join("/"):(n.pathname=null,n.path=null),F.isNull(n.pathname)&&F.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},O.prototype.parseHost=function(){var e=this.host,t=r.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":163,punycode:113,querystring:116}],163:[function(e,t,n){"use strict";t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],164:[function(e,t,n){(function(n){function r(e){try{if(!n.localStorage)return!1}catch(e){return!1}var t=n.localStorage[e];return null!=t&&"true"===String(t).toLowerCase()}t.exports=function(e,t){if(r("noDeprecation"))return e;var n=!1;return function(){if(!n){if(r("throwDeprecation"))throw new Error(t);r("traceDeprecation")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],165:[function(e,t,n){t.exports=function(){for(var e={},t=0;t<arguments.length;t++){var n=arguments[t];for(var r in n)i.call(n,r)&&(e[r]=n[r])}return e};var i=Object.prototype.hasOwnProperty},{}],166:[function(e,t,n){"use strict";var r=e("./utils").createMapFromString;function i(e){return r(e,!0)}var o,a,s=/([^\s"'<>/=]+)/,u=[/=/],l=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^ \t\n\f\r"'`=<>]+)/.source],c="((?:"+(a="["+(o="A-Za-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u0131\\u0134-\\u013E\\u0141-\\u0148\\u014A-\\u017E\\u0180-\\u01C3\\u01CD-\\u01F0\\u01F4\\u01F5\\u01FA-\\u0217\\u0250-\\u02A8\\u02BB-\\u02C1\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03CE\\u03D0-\\u03D6\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2-\\u03F3\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E-\\u0481\\u0490-\\u04C4\\u04C7\\u04C8\\u04CB\\u04CC\\u04D0-\\u04EB\\u04EE-\\u04F5\\u04F8\\u04F9\\u0531-\\u0556\\u0559\\u0561-\\u0586\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u063A\\u0641-\\u064A\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D3\\u06D5\\u06E5\\u06E6\\u0905-\\u0939\\u093D\\u0958-\\u0961\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\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-\\u0A8B\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AE0\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B36-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB5\\u0BB7-\\u0BB9\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D60\\u0D61\\u0E01-\\u0E2E\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E45\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD\\u0EAE\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0F40-\\u0F47\\u0F49-\\u0F69\\u10A0-\\u10C5\\u10D0-\\u10F6\\u1100\\u1102\\u1103\\u1105-\\u1107\\u1109\\u110B\\u110C\\u110E-\\u1112\\u113C\\u113E\\u1140\\u114C\\u114E\\u1150\\u1154\\u1155\\u1159\\u115F-\\u1161\\u1163\\u1165\\u1167\\u1169\\u116D\\u116E\\u1172\\u1173\\u1175\\u119E\\u11A8\\u11AB\\u11AE\\u11AF\\u11B7\\u11B8\\u11BA\\u11BC-\\u11C2\\u11EB\\u11F0\\u11F9\\u1E00-\\u1E9B\\u1EA0-\\u1EF9\\u1F00-\\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\\u2126\\u212A\\u212B\\u212E\\u2180-\\u2182\\u3007\\u3021-\\u3029\\u3041-\\u3094\\u30A1-\\u30FA\\u3105-\\u312C\\u4E00-\\u9FA5\\uAC00-\\uD7A3")+"_]["+o+"0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE7-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\.\\-_\\u0300-\\u0345\\u0360\\u0361\\u0483-\\u0486\\u0591-\\u05A1\\u05A3-\\u05B9\\u05BB-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u064B-\\u0652\\u0670\\u06D6-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0901-\\u0903\\u093C\\u093E-\\u094D\\u0951-\\u0954\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A02\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A70\\u0A71\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B43\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B82\\u0B83\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C01-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C82\\u0C83\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D43\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86-\\u0F8B\\u0F90-\\u0F95\\u0F97\\u0F99-\\u0FAD\\u0FB1-\\u0FB7\\u0FB9\\u20D0-\\u20DC\\u20E1\\u302A-\\u302F\\u3099\\u309A\\xB7\\u02D0\\u02D1\\u0387\\u0640\\u0E46\\u0EC6\\u3005\\u3031-\\u3035\\u309D\\u309E\\u30FC-\\u30FE]*")+"\\:)?"+a+")",A=new RegExp("^<"+c),x=/^\s*(\/?)>/,k=new RegExp("^<\\/"+c+"[^>]*>"),C=/^<!DOCTYPE\s?[^>]+>/i,O=!1;"x".replace(/x(.)?/g,function(e,t){O=""===t});var S=i("area,base,basefont,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),D=i("a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,noscript,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,svg,textarea,tt,u,var"),T=i("colgroup,dd,dt,li,option,p,td,tfoot,th,thead,tr,source"),B=i("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),R=i("script,style"),L=i("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,ol,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track,ul"),F={};function q(e){var t,n=s.source+"(?:\\s*("+(t=e,u.concat(t.customAttrAssign||[]).map(function(e){return"(?:"+e.source+")"}).join("|"))+")[ \\t\\n\\f\\r]*(?:"+l.join("|")+"))?";if(e.customAttrSurround){for(var r=[],i=e.customAttrSurround.length-1;0<=i;i--)r[i]="(?:("+e.customAttrSurround[i][0].source+")\\s*"+n+"\\s*("+e.customAttrSurround[i][1].source+"))";r.push("(?:"+n+")"),n="(?:"+r.join("|")+")"}return new RegExp("^\\s*"+n)}function f(e,f){for(var o,t,n,r,a=[],s=q(f);e;){if(t=e,o&&R(o)){var i=o.toLowerCase(),u=F[i]||(F[i]=new RegExp("([\\s\\S]*?)</"+i+"[^>]*>","i"));e=e.replace(u,function(e,t){return"script"!==i&&"style"!==i&&"noscript"!==i&&(t=t.replace(/<!--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),f.chars&&f.chars(t),""}),E("</"+i+">",i)}else{var l,c=e.indexOf("<");if(0===c){if(/^<!--/.test(e)){var p=e.indexOf("--\x3e");if(0<=p){f.comment&&f.comment(e.substring(4,p)),e=e.substring(p+3),n="";continue}}if(/^<!\[/.test(e)){var h=e.indexOf("]>");if(0<=h){f.comment&&f.comment(e.substring(2,h+1),!0),e=e.substring(h+2),n="";continue}}var d=e.match(C);if(d){f.doctype&&f.doctype(d[0]),e=e.substring(d[0].length),n="";continue}var m=e.match(k);if(m){e=e.substring(m[0].length),m[0].replace(k,E),n="/"+m[1].toLowerCase();continue}var g=b(e);if(g){e=g.rest,_(g),n=g.tagName.toLowerCase();continue}}var v=b(e=0<=c?(l=e.substring(0,c),e.substring(c)):(l=e,""));r=v?v.tagName:(v=e.match(k))?"/"+v[1]:"",f.chars&&f.chars(l,n,r),n=""}if(e===t)throw new Error("Parse Error: "+e)}function b(e){var t=e.match(A);if(t){var n,r,i={tagName:t[1],attrs:[]};for(e=e.slice(t[0].length);!(n=e.match(x))&&(r=e.match(s));)e=e.slice(r[0].length),i.attrs.push(r);if(n)return i.unarySlash=n[1],i.rest=e.slice(n[0].length),i}}function y(e){if(0<=w(e))return E("",e),!0}function _(e){var t=e.tagName,n=e.unarySlash;if(f.html5&&("p"===o&&L(t)?E("",o):"tbody"===t?y("thead"):"tfoot"===t&&(y("tbody")||y("thead")),"col"===t&&w("colgroup")<0&&(o="colgroup",a.push({tag:o,attrs:[]}),f.start&&f.start(o,[],!1,""))),!f.html5&&!D(t))for(;o&&D(o);)E("",o);T(t)&&o===t&&E("",t);var r=S(t)||"html"===t&&"head"===o||!!n,i=e.attrs.map(function(t){var n,r,e,i,o,a;function s(e){return o=t[e],void 0!==(r=t[e+1])?'"':void 0!==(r=t[e+2])?"'":(void 0===(r=t[e+3])&&B(n)&&(r=n),"")}O&&-1===t[0].indexOf('""')&&(""===t[3]&&delete t[3],""===t[4]&&delete t[4],""===t[5]&&delete t[5]);var u=1;if(f.customAttrSurround)for(var l=0,c=f.customAttrSurround.length;l<c;l++,u+=7)if(n=t[u+1]){a=s(u+2),e=t[u],i=t[u+6];break}return!n&&(n=t[u])&&(a=s(u+1)),{name:n,value:r,customAssign:o||"=",customOpen:e||"",customClose:i||"",quote:a||""}});r||(a.push({tag:t,attrs:i}),o=t,n=""),f.start&&f.start(t,i,r,n)}function w(e){var t,n=e.toLowerCase();for(t=a.length-1;0<=t&&a[t].tag.toLowerCase()!==n;t--);return t}function E(e,t){var n;if(0<=(n=t?w(t):0)){for(var r=a.length-1;n<=r;r--)f.end&&f.end(a[r].tag,a[r].attrs,n<r||!e);a.length=n,o=n&&a[n-1].tag}else"br"===t.toLowerCase()?f.start&&f.start(t,[],!0,""):"p"===t.toLowerCase()&&(f.start&&f.start(t,[],!1,"",!0),f.end&&f.end(t,[]))}f.partialMarkup||E()}n.HTMLParser=f,n.HTMLtoXML=function(e){var o="";return new f(e,{start:function(e,t,n){o+="<"+e;for(var r=0,i=t.length;r<i;r++)o+=" "+t[r].name+'="'+(t[r].value||"").replace(/"/g,"&#34;")+'"';o+=(n?"/":"")+">"},end:function(e){o+="</"+e+">"},chars:function(e){o+=e},comment:function(e){o+="\x3c!--"+e+"--\x3e"},ignore:function(e){o+=e}}),o},n.HTMLtoDOM=function(e,o){var a={html:!0,head:!0,body:!0,title:!0},s={link:"head",base:"head"};o?o=o.ownerDocument||o.getOwnerDocument&&o.getOwnerDocument()||o:"undefined"!=typeof DOMDocument?o=new DOMDocument:"undefined"!=typeof document&&document.implementation&&document.implementation.createDocument?o=document.implementation.createDocument("","",null):"undefined"!=typeof ActiveX&&(o=new ActiveXObject("Msxml.DOMDocument"));var t,n,u=[];if(!(o.documentElement||o.getDocumentElement&&o.getDocumentElement())&&o.createElement&&(t=o.createElement("html"),(n=o.createElement("head")).appendChild(o.createElement("title")),t.appendChild(n),t.appendChild(o.createElement("body")),o.appendChild(t)),o.getElementsByTagName)for(var r in a)a[r]=o.getElementsByTagName(r)[0];var l=a.body;return new f(e,{start:function(e,t,n){if(a[e])l=a[e];else{var r=o.createElement(e);for(var i in t)r.setAttribute(t[i].name,t[i].value);s[e]&&"boolean"!=typeof a[s[e]]?a[s[e]].appendChild(r):l&&l.appendChild&&l.appendChild(r),n||(u.push(r),l=r)}},end:function(){u.length-=1,l=u[u.length-1]},chars:function(e){l.appendChild(o.createTextNode(e))},comment:function(){},ignore:function(){}}),o}},{"./utils":168}],167:[function(e,t,n){"use strict";function r(){}function o(){}r.prototype.sort=function(e,t){t=t||0;for(var n=0,r=this.keys.length;n<r;n++){var i=this.keys[n],o=i.slice(1),a=e.indexOf(o,t);if(-1!==a){for(;a!==t&&(e.splice(a,1),e.splice(t,0,o)),t++,-1!==(a=e.indexOf(o,t)););return this[i].sort(e,t)}}return e},o.prototype={add:function(n){var r=this;n.forEach(function(e){var t="$"+e;r[t]||(r[t]=[],r[t].processed=0),r[t].push(n)})},createSorter:function(){var i=this,t=new r;return t.keys=Object.keys(i).sort(function(e,t){var n=i[e].length,r=i[t].length;return n<r?1:r<n?-1:e<t?-1:t<e?1:0}).filter(function(e){if(i[e].processed<i[e].length){var n=e.slice(1),r=new o;return i[e].forEach(function(e){for(var t;-1!==(t=e.indexOf(n));)e.splice(t,1);e.forEach(function(e){i["$"+e].processed++}),r.add(e.slice(0))}),t[e]=r.createSorter(),!0}return!1}),t}},t.exports=o},{}],168:[function(e,t,n){"use strict";function r(e,t){var n={};return e.forEach(function(e){n[e]=1}),t?function(e){return 1===n[e.toLowerCase()]}:function(e){return 1===n[e]}}n.createMap=r,n.createMapFromString=function(e,t){return r(e.split(/,/),t)}},{}],"html-minifier":[function(e,t,n){"use strict";var c=e("clean-css"),d=e("he").decode,h=e("./htmlparser").HTMLParser,s=e("relateurl"),B=e("./tokenchain"),u=e("uglify-js"),r=e("./utils");function R(e){return e&&e.replace(/^[ \n\r\t\f]+/,"").replace(/[ \n\r\t\f]+$/,"")}function p(e){return e&&e.replace(/[ \n\r\t\f\xA0]+/g,function(e){return"\t"===e?"\t":e.replace(/(^|\xA0+)[^\xA0]+/g,"$1 ")})}function f(e,n,t,r,i){var o="",a="";return n.preserveLineBreaks&&(e=e.replace(/^[ \n\r\t\f]*?[\n\r][ \n\r\t\f]*/,function(){return o="\n",""}).replace(/[ \n\r\t\f]*?[\n\r][ \n\r\t\f]*$/,function(){return a="\n",""})),t&&(e=e.replace(/^[ \n\r\t\f\xA0]+/,function(e){var t=!o&&n.conservativeCollapse;return t&&"\t"===e?"\t":e.replace(/^[^\xA0]+/,"").replace(/(\xA0+)[^\xA0]+/g,"$1 ")||(t?" ":"")})),r&&(e=e.replace(/[ \n\r\t\f\xA0]+$/,function(e){var t=!a&&n.conservativeCollapse;return t&&"\t"===e?"\t":e.replace(/[^\xA0]+(\xA0+)/g," $1").replace(/[^\xA0]+$/,"")||(t?" ":"")})),i&&(e=p(e)),o+e+a}var i=r.createMapFromString,L=i("a,abbr,acronym,b,bdi,bdo,big,button,cite,code,del,dfn,em,font,i,ins,kbd,label,mark,math,nobr,object,q,rp,rt,rtc,ruby,s,samp,select,small,span,strike,strong,sub,sup,svg,textarea,time,tt,u,var"),F=i("a,abbr,acronym,b,big,del,em,font,i,ins,kbd,mark,nobr,rp,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var"),a=i("comment,img,input,wbr");function q(e,t,n,r){var i=t&&!a(t);i&&!r.collapseInlineTagWhitespace&&(i="/"===t.charAt(0)?!L(t.slice(1)):!F(t));var o=n&&!a(n);return o&&!r.collapseInlineTagWhitespace&&(o="/"===n.charAt(0)?!F(n.slice(1)):!L(n)),f(e,r,i,o,t&&n)}function m(e,t){for(var n=e.length;n--;)if(e[n].name.toLowerCase()===t)return!0;return!1}var o=r.createMap(["text/javascript","text/ecmascript","text/jscript","application/javascript","application/x-javascript","application/ecmascript"]);function U(e){return""===(e=R(e.split(/;/,2)[0]).toLowerCase())||o(e)}function g(e){return""===(e=R(e).toLowerCase())||"text/css"===e}function M(e,t){if("style"!==e)return!1;for(var n=0,r=t.length;n<r;n++){if("type"===t[n].name.toLowerCase())return g(t[n].value)}return!0}var v=i("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),b=i("true,false");function y(e,t,n){if("link"!==e)return!1;for(var r=0,i=t.length;r<i;r++)if("rel"===t[r].name&&t[r].value===n)return!0}var _=i("img,source");function w(e,t,n,a,r){if(function(e,t){var n=t.customEventAttributes;if(n){for(var r=n.length;r--;)if(n[r].test(e))return!0;return!1}return/^on[a-z]{3,}$/.test(e)}(t,a))return n=R(n).replace(/^javascript:\s*/i,""),a.minifyJS(n,!0);if("class"===t)return n=R(n),n=a.sortClassName?a.sortClassName(n):p(n);if(c=t,/^(?:a|area|link|base)$/.test(f=e)&&"href"===c||"img"===f&&/^(?:src|longdesc|usemap)$/.test(c)||"object"===f&&/^(?:classid|codebase|data|usemap)$/.test(c)||"q"===f&&"cite"===c||"blockquote"===f&&"cite"===c||("ins"===f||"del"===f)&&"cite"===c||"form"===f&&"action"===c||"input"===f&&("src"===c||"usemap"===c)||"head"===f&&"profile"===c||"script"===f&&("src"===c||"for"===c))return n=R(n),y(e,r,"canonical")?n:a.minifyURLs(n);if(u=t,/^(?:a|area|object|button)$/.test(l=e)&&"tabindex"===u||"input"===l&&("maxlength"===u||"tabindex"===u)||"select"===l&&("size"===u||"tabindex"===u)||"textarea"===l&&/^(?:rows|cols|tabindex)$/.test(u)||"colgroup"===l&&"span"===u||"col"===l&&"span"===u||("th"===l||"td"===l)&&("rowspan"===u||"colspan"===u))return R(n);if("style"===t)return(n=R(n))&&(/;$/.test(n)&&!/&#?[0-9a-zA-Z]+;$/.test(n)&&(n=n.replace(/\s*;$/,";")),n=a.minifyCSS(n,"inline")),n;if(s=e,"srcset"===t&&_(s))n=R(n).split(/\s+,\s*|\s*,\s+/).map(function(e){var t=e,n="",r=e.match(/\s+([1-9][0-9]*w|[0-9]+(?:\.[0-9]+)?x)$/);if(r){t=t.slice(0,-r[0].length);var i=+r[1].slice(0,-1),o=r[1].slice(-1);1===i&&"x"===o||(n=" "+i+o)}return a.minifyURLs(t)+n}).join(", ");else if(function(e,t){if("meta"!==e)return!1;for(var n=0,r=t.length;n<r;n++)if("name"===t[n].name&&"viewport"===t[n].value)return!0}(e,r)&&"content"===t)n=n.replace(/\s+/g,"").replace(/[0-9]+\.[0-9]+/g,function(e){return(+e).toString()});else if(a.customAttrCollapse&&a.customAttrCollapse.test(t))n=n.replace(/\n+|\r+|\s{2,}/g,"");else if("script"===e&&"type"===t)n=R(n.replace(/\s*;\s*/g,";"));else if(i=e,o=r,"media"===t&&(y(i,o,"stylesheet")||M(i,o)))return n=R(n),a.minifyCSS(n,"media");var i,o,s,u,l,c,f;return n}function N(e){return"/* clean-css ignore:start */"+e+"/* clean-css ignore:end */"}function P(e,t){switch(t){case"inline":return"*{"+e+"}";case"media":return"@media "+e+"{a{top:0}}";default:return e}}var I=i("html,head,body,colgroup,tbody"),z=i("html,head,body,li,dt,dd,p,rb,rt,rtc,rp,optgroup,option,colgroup,caption,thead,tbody,tfoot,tr,td,th"),j=i("meta,link,script,style,template,noscript"),V=i("dt,dd"),H=i("address,article,aside,blockquote,details,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,main,menu,nav,ol,p,pre,section,table,ul"),$=i("a,audio,del,ins,map,noscript,video"),K=i("rb,rt,rtc,rp"),G=i("rb,rtc,rp"),Y=i("option,optgroup"),W=i("tbody,tfoot"),Q=i("thead,tbody,tfoot"),Z=i("td,th"),J=i("html,head,body"),X=i("html,body"),ee=i("head,colgroup,caption"),te=i("dt,thead"),ne=i("a,abbr,acronym,address,applet,area,article,aside,audio,b,base,basefont,bdi,bdo,bgsound,big,blink,blockquote,body,br,button,canvas,caption,center,cite,code,col,colgroup,command,content,data,datalist,dd,del,details,dfn,dialog,dir,div,dl,dt,element,em,embed,fieldset,figcaption,figure,font,footer,form,frame,frameset,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,i,iframe,image,img,input,ins,isindex,kbd,keygen,label,legend,li,link,listing,main,map,mark,marquee,menu,menuitem,meta,meter,multicol,nav,nobr,noembed,noframes,noscript,object,ol,optgroup,option,output,p,param,picture,plaintext,pre,progress,q,rb,rp,rt,rtc,ruby,s,samp,script,section,select,shadow,small,source,spacer,span,strike,strong,style,sub,summary,sup,table,tbody,td,template,textarea,tfoot,th,thead,time,title,tr,track,tt,u,ul,var,video,wbr,xmp");var E=new RegExp("^(?:class|id|style|title|lang|dir|on(?:focus|blur|change|click|dblclick|mouse(?:down|up|over|move|out)|key(?:press|down|up)))$");function re(e,t){for(var n=t.length-1;0<=n;n--)if(t[n].name===e)return!0;return!1}function ie(e){return!/^(?:script|style|pre|textarea)$/.test(e)}function oe(e){return!/^(?:pre|textarea)$/.test(e)}function ae(e,t,n,r){var i,o,a,s,u,l,c,f,p=r.name(e.name),h=e.value;if((r.decodeEntities&&h&&(h=d(h,{isAttributeValue:!0})),!(r.removeRedundantAttributes&&(i=n,o=p,s=t,a=(a=h)?R(a.toLowerCase()):"","script"===i&&"language"===o&&"javascript"===a||"form"===i&&"method"===o&&"get"===a||"input"===i&&"type"===o&&"text"===a||"script"===i&&"charset"===o&&!m(s,"src")||"a"===i&&"name"===o&&m(s,"id")||"area"===i&&"shape"===o&&"rect"===a)||r.removeScriptTypeAttributes&&"script"===n&&"type"===p&&U(h)||r.removeStyleLinkTypeAttributes&&("style"===n||"link"===n)&&"type"===p&&g(h)))&&(h&&(h=w(n,p,h,r,t)),!r.removeEmptyAttributes||(u=n,l=p,f=r,(c=h)&&!/^\s*$/.test(c)||!("function"==typeof f.removeEmptyAttributes?f.removeEmptyAttributes(l,u):"input"===u&&"value"===l||E.test(l)))))return r.decodeEntities&&h&&(h=h.replace(/&(#?[0-9a-zA-Z]+;)/g,"&amp;$1")),{attr:e,name:p,value:h}}function se(e,t,n,r,i){var o,a,s,u,l=e.name,c=e.value,f=e.attr,p=f.quote;if(void 0===c||n.removeAttributeQuotes&&!~c.indexOf(i)&&/^[^ \t\n\f\r"'`=<>]+$/.test(c))a=!r||t||/\/$/.test(c)?c+" ":c;else{if(!n.preventAttributesEscaping){if(void 0===n.quoteCharacter)p=(c.match(/'/g)||[]).length<(c.match(/"/g)||[]).length?"'":'"';else p="'"===n.quoteCharacter?"'":'"';c='"'===p?c.replace(/"/g,"&#34;"):c.replace(/'/g,"&#39;")}a=p+c+p,r||n.removeTagWhitespace||(a+=" ")}return void 0===c||n.collapseBooleanAttributes&&(s=l.toLowerCase(),u=c.toLowerCase(),v(s)||"draggable"===s&&!b(u))?(o=l,r||(o+=" ")):o=l+f.customAssign+a,f.customOpen+o+f.customClose}function ue(e){return e}function le(e){for(var t;t=Math.random().toString(36).replace(/^0\.[0-9]*/,""),~e.indexOf(t););return t}var ce=i("script,style");function fe(i,m,e){m.collapseWhitespace&&(i=f(i,m,!0,!0));var g,v,a,b,s,y=[],_="",w="",E=[],A=[],x=[],k="",C="",o=[],u=[];i=i.replace(/<!-- htmlmin:ignore -->([\s\S]*?)<!-- htmlmin:ignore -->/g,function(e,t){if(!a){a=le(i);var n=new RegExp("^"+a+"([0-9]+)$");m.ignoreCustomComments?m.ignoreCustomComments=m.ignoreCustomComments.slice():m.ignoreCustomComments=[],m.ignoreCustomComments.push(n)}var r="\x3c!--"+a+o.length+"--\x3e";return o.push(t),r});var t=m.ignoreCustomFragments.map(function(e){return e.source});if(t.length){var n=new RegExp("\\s*(?:"+t.join("|")+")+\\s*","g");i=i.replace(n,function(e){var n,t;b||(b=le(i),s=new RegExp("(\\s*)"+b+"([0-9]+)(\\s*)","g"),m.minifyCSS&&(m.minifyCSS=(t=m.minifyCSS,function(r,e){r=r.replace(s,function(e,t,n){var r=u[+n];return r[1]+b+n+r[2]});var i=[];return(new c).minify(P(r,e)).warnings.forEach(function(e){var t=s.exec(e);if(t){var n=b+t[2];r=r.replace(n,N(n)),i.push(n)}}),r=t(r,e),i.forEach(function(e){r=r.replace(N(e),e)}),r})),m.minifyJS&&(m.minifyJS=(n=m.minifyJS,function(e,t){return n(e.replace(s,function(e,t,n){var r=u[+n];return r[1]+b+n+r[2]}),t)})));var r=b+u.length;return u.push(/^(\s*)[\s\S]*?(\s*)$/.exec(e)),"\t"+r+"\t"})}function O(e,t){return m.canTrimWhitespace(e,t,oe)}function S(){for(var e=y.length-1;0<e&&!/^<[^/!]/.test(y[e]);)e--;y.length=Math.max(0,e)}function D(){for(var e=y.length-1;0<e&&!/^<\//.test(y[e]);)e--;y.length=Math.max(0,e)}function l(e,t){for(var n=null;0<=e&&O(n);e--){var r=y[e],i=r.match(/^<\/([\w:-]+)>$/);if(i)n=i[1];else if(/>$/.test(r)||(y[e]=q(r,null,t,m)))break}}function T(e){var t=y.length-1;if(1<y.length){var n=y[y.length-1];/^(?:<!|$)/.test(n)&&-1===n.indexOf(a)&&t--}l(t,e)}return(m.sortAttributes&&"function"!=typeof m.sortAttributes||m.sortClassName&&"function"!=typeof m.sortClassName)&&function(e,s,t,n){var u=s.sortAttributes&&Object.create(null),l=s.sortClassName&&new B;function c(e){return e.map(function(e){return s.name(e.name)})}function r(e,t){return!t||-1===e.indexOf(t)}function f(e){return r(e,t)&&r(e,n)}var i=s.log;if(s.log=ue,s.sortAttributes=!1,s.sortClassName=!1,function t(e){var o,a;new h(e,{start:function(e,t){u&&(u[e]||(u[e]=new B),u[e].add(c(t).filter(f)));for(var n=0,r=t.length;n<r;n++){var i=t[n];l&&i.value&&"class"===s.name(i.name)?l.add(R(i.value).split(/[ \t\n\f\r]+/).filter(f)):s.processScripts&&"type"===i.name.toLowerCase()&&(o=e,a=i.value)}},end:function(){o=""},chars:function(e){s.processScripts&&ce(o)&&-1<s.processScripts.indexOf(a)&&t(e)}})}(fe(e,s)),s.log=i,u){var o=Object.create(null);for(var a in u)o[a]=u[a].createSorter();s.sortAttributes=function(e,n){var t=o[e];if(t){var r=Object.create(null),i=c(n);i.forEach(function(e,t){(r[e]||(r[e]=[])).push(n[t])}),t.sort(i).forEach(function(e,t){n[t]=r[e].shift()})}}}if(l){var p=l.createSorter();s.sortClassName=function(e){return p.sort(e.split(/[ \n\f\r]+/)).join(" ")}}}(i,m,a,b),new h(i,{partialMarkup:e,html5:m.html5,start:function(e,t,n,r,i){"svg"===e.toLowerCase()&&((m=Object.create(m)).caseSensitive=!0,m.keepClosingSlash=!0,m.name=ue),e=m.name(e),F(g=w=e)||(_=""),v=!1,E=t;var o,a,s=m.removeOptionalTags;if(s){var u=ne(e);u&&function(e,t){switch(e){case"html":case"head":return!0;case"body":return!j(t);case"colgroup":return"col"===t;case"tbody":return"tr"===t}return!1}(k,e)&&S(),k="",u&&function(e,t){switch(e){case"html":case"head":case"body":case"colgroup":case"caption":return!0;case"li":case"optgroup":case"tr":return t===e;case"dt":case"dd":return V(t);case"p":return H(t);case"rb":case"rt":case"rp":return K(t);case"rtc":return G(t);case"option":return Y(t);case"thead":case"tbody":return W(t);case"tfoot":return"tbody"===t;case"td":case"th":return Z(t)}return!1}(C,e)&&(D(),s=!function(e,t){switch(t){case"colgroup":return"colgroup"===e;case"tbody":return Q(e)}return!1}(C,e)),C=""}m.collapseWhitespace&&(A.length||T(e),n||(O(e,t)&&!A.length||A.push(e),o=e,a=t,(!m.canCollapseWhitespace(o,a,ie)||x.length)&&x.push(e)));var l="<"+e,c=r&&m.keepClosingSlash;y.push(l),m.sortAttributes&&m.sortAttributes(e,t);for(var f=[],p=t.length,h=!0;0<=--p;){var d=ae(t[p],t,e,m);d&&(f.unshift(se(d,c,m,h,b)),h=!1)}0<f.length?(y.push(" "),y.push.apply(y,f)):s&&I(e)&&(k=e),y.push(y.pop()+(c?"/":"")+">"),i&&!m.includeAutoGeneratedTags&&(S(),k="")},end:function(e,t,n){"svg"===e.toLowerCase()&&(m=Object.getPrototypeOf(m)),e=m.name(e),m.collapseWhitespace&&(A.length?e===A[A.length-1]&&A.pop():T("/"+e),x.length&&e===x[x.length-1]&&x.pop());var r=!1;e===w&&(w="",r=!v),m.removeOptionalTags&&(r&&J(k)&&S(),k="",!ne(e)||!C||te(C)||"p"===C&&$(e)||D(),C=z(e)?e:""),m.removeEmptyElements&&r&&function(e,t){switch(e){case"textarea":return!1;case"audio":case"script":case"video":if(re("src",t))return!1;break;case"iframe":if(re("src",t)||re("srcdoc",t))return!1;break;case"object":if(re("data",t))return!1;break;case"applet":if(re("code",t))return!1}return!0}(e,t)?(S(),C=k=""):(n&&!m.includeAutoGeneratedTags?C="":y.push("</"+e+">"),g="/"+e,L(e)?r&&(_+="|"):_="")},chars:function(t,e,n){if(e=""===e?"comment":e,n=""===n?"comment":n,m.decodeEntities&&t&&!ce(w)&&(t=d(t)),m.collapseWhitespace){if(!A.length){if("comment"===e){var r=y[y.length-1];if(-1===r.indexOf(a)&&(r||(e=g),1<y.length&&(!r||!m.conservativeCollapse&&/ $/.test(_)))){var i=y.length-2;y[i]=y[i].replace(/\s+$/,function(e){return t=e+t,""})}}if(e)if("/nobr"===e||"wbr"===e){if(/^\s/.test(t)){for(var o=y.length-1;0<o&&0!==y[o].lastIndexOf("<"+e);)o--;l(o-1,"br")}}else F("/"===e.charAt(0)?e.slice(1):e)&&(t=f(t,m,/(?:^|\s)$/.test(_)));!(t=e||n?q(t,e,n,m):f(t,m,!0,!0))&&/\s$/.test(_)&&e&&"/"===e.charAt(0)&&l(y.length-1,n)}x.length||"html"===n||e&&n||(t=f(t,m,!1,!1,!0))}m.processScripts&&ce(w)&&(t=function(e,t,n){for(var r=0,i=n.length;r<i;r++)if("type"===n[r].name.toLowerCase()&&-1<t.processScripts.indexOf(n[r].value))return fe(e,t);return e}(t,m,E)),function(e,t){if("script"!==e)return!1;for(var n=0,r=t.length;n<r;n++)if("type"===t[n].name.toLowerCase())return U(t[n].value);return!0}(w,E)&&(t=m.minifyJS(t)),M(w,E)&&(t=m.minifyCSS(t)),m.removeOptionalTags&&t&&(("html"===k||"body"===k&&!/^\s/.test(t))&&S(),k="",(X(C)||ee(C)&&!/^\s/.test(t))&&D(),C=""),g=/^\s*$/.test(t)?e:"comment",m.decodeEntities&&t&&!ce(w)&&(t=t.replace(/&((?:Iacute|aacute|uacute|plusmn|Otilde|otilde|agrave|Agrave|Yacute|yacute|Oslash|oslash|atilde|Atilde|brvbar|ccedil|Ccedil|Ograve|curren|divide|eacute|Eacute|ograve|Oacute|egrave|Egrave|Ugrave|frac12|frac14|frac34|ugrave|oacute|iacute|Ntilde|ntilde|Uacute|middot|igrave|Igrave|iquest|Aacute|cedil|laquo|micro|iexcl|Icirc|icirc|acirc|Ucirc|Ecirc|ocirc|Ocirc|ecirc|ucirc|Aring|aring|AElig|aelig|acute|pound|raquo|Acirc|times|THORN|szlig|thorn|COPY|auml|ordf|ordm|Uuml|macr|uuml|Auml|ouml|Ouml|para|nbsp|euml|quot|QUOT|Euml|yuml|cent|sect|copy|sup1|sup2|sup3|iuml|Iuml|ETH|shy|reg|not|yen|amp|AMP|REG|uml|eth|deg|gt|GT|LT|lt)(?!;)|(?:#?[0-9a-zA-Z]+;))/g,"&amp$1").replace(/</g,"&lt;")),s&&m.collapseWhitespace&&A.length&&(t=t.replace(s,function(e,t,n){return u[+n][0]})),_+=t,t&&(v=!0),y.push(t)},comment:function(e,t){var n,i,r=t?"<!":"\x3c!--",o=t?">":"--\x3e";e=/^\[if\s[^\]]+]|\[endif]$/.test(e)?r+(n=e,(i=m).processConditionalComments?n.replace(/^(\[if\s[^\]]+]>)([\s\S]*?)(<!\[endif])$/,function(e,t,n,r){return t+fe(n,i,!0)+r}):n)+o:m.removeComments?function(e,t){for(var n=0,r=t.ignoreCustomComments.length;n<r;n++)if(t.ignoreCustomComments[n].test(e))return!0;return!1}(e,m)?"\x3c!--"+e+"--\x3e":"":r+e+o,m.removeOptionalTags&&e&&(C=k=""),y.push(e)},doctype:function(e){y.push(m.useShortDoctype?"<!doctype"+(m.removeTagWhitespace?"":" ")+"html>":p(e))},customAttrAssign:m.customAttrAssign,customAttrSurround:m.customAttrSurround}),m.removeOptionalTags&&(J(k)&&S(),C&&!te(C)&&D()),m.collapseWhitespace&&T("br"),function(e,t,n,r){var i,o=t.maxLineLength;if(o){for(var a="",s=[];e.length;){var u=a.length,l=e[0].indexOf("\n");l<0?a+=r(n(e.shift())):(a+=r(n(e[0].slice(0,l))),e[0]=e[0].slice(l+1)),0<u&&a.length>o?(s.push(a.slice(0,u)),a=a.slice(u)):0<=l&&(s.push(a),a="")}a&&s.push(a),i=s.join("\n")}else i=r(n(e.join("")));return t.collapseWhitespace?f(i,t,!0,!0):i}(y,m,s?function(e){return e.replace(s,function(e,t,n,r){var i=u[+n][0];return m.collapseWhitespace?("\t"!==t&&(i=t+i),"\t"!==r&&(i+=r),f(i,{preserveLineBreaks:m.preserveLineBreaks,conservativeCollapse:!m.trimCustomFragments},/^[ \n\r\t\f]/.test(i),/[ \n\r\t\f]$/.test(i))):i})}:ue,a?function(e){return e.replace(new RegExp("\x3c!--"+a+"([0-9]+)--\x3e","g"),function(e,t){return o[+t]})}:ue)}n.minify=function(e,t){var n,a,r=Date.now();n=t||{},a={name:function(e){return e.toLowerCase()},canCollapseWhitespace:ie,canTrimWhitespace:oe,html5:!0,ignoreCustomComments:[/^!/],ignoreCustomFragments:[/<%[\s\S]*?%>/,/<\?[\s\S]*?\?>/],includeAutoGeneratedTags:!0,log:ue,minifyCSS:ue,minifyJS:ue,minifyURLs:ue},Object.keys(n).forEach(function(e){var o=n[e];if("caseSensitive"===e)o&&(a.name=ue);else if("log"===e)"function"==typeof o&&(a.log=o);else if("minifyCSS"===e&&"function"!=typeof o){if(!o)return;"object"!=typeof o&&(o={}),a.minifyCSS=function(e,t){e=e.replace(/(url\s*\(\s*)("|'|)(.*?)\2(\s*\))/gi,function(e,t,n,r,i){return t+n+a.minifyURLs(r)+n+i});var n=new c(o).minify(P(e,t));return 0<n.errors.length?(n.errors.forEach(a.log),e):function(e,t){var n;switch(t){case"inline":n=e.match(/^\*\{([\s\S]*)\}$/);break;case"media":n=e.match(/^@media ([\s\S]*?)\s*{[\s\S]*}$/)}return n?n[1]:e}(n.styles,t)}}else if("minifyJS"===e&&"function"!=typeof o){if(!o)return;"object"!=typeof o&&(o={}),(o.parse||(o.parse={})).bare_returns=!1,a.minifyJS=function(e,t){var n=e.match(/^\s*<!--.*/),r=n?e.slice(n[0].length).replace(/\n\s*-->\s*$/,""):e;o.parse.bare_returns=t;var i=u.minify(r,o);return i.error?(a.log(i.error),e):i.code.replace(/;$/,"")}}else if("minifyURLs"===e&&"function"!=typeof o){if(!o)return;"string"==typeof o?o={site:o}:"object"!=typeof o&&(o={}),a.minifyURLs=function(t){try{return s.relate(t,o)}catch(e){return a.log(e),t}}}else a[e]=o});var i=fe(e,t=a);return t.log("minified in: "+(Date.now()-r)+"ms"),i}},{"./htmlparser":166,"./tokenchain":167,"./utils":168,"clean-css":6,he:103,relateurl:128,"uglify-js":"uglify-js"}],"uglify-js":[function(e,t,n){(function(u){!function(d){"use strict";function e(e){return e.split("")}function re(e,t){return 0<=t.indexOf(e)}function K(e,t){for(var n=t.length;0<=--n;)if(e(t[n]))return t[n]}function t(e){Object.defineProperty(e.prototype,"stack",{get:function(){var e=new Error(this.message);e.name=this.name;try{throw e}catch(e){return e.stack}}})}function o(e,t){this.message=e,this.defs=t}function $(e,t,n){!0===e&&(e={});var r=e||{};if(n)for(var i in r)if(se(r,i)&&!se(t,i))throw new o("`"+i+"` is not a supported option",t);for(var i in t)se(t,i)&&(r[i]=e&&se(e,i)?e[i]:t[i]);return r}function n(e,t){var n=0;for(var r in t)se(t,r)&&(e[r]=t[r],n++);return n}function G(){}function ie(){return!1}function Y(){return!0}function D(){return this}function T(){return null}((o.prototype=Object.create(Error.prototype)).constructor=o).prototype.name="DefaultsError",t(o);var oe=function(){function e(n,r,i){var o,a=[],s=[];function e(){var e=r(n[o],o),t=e instanceof f;return t&&(e=e.v),e instanceof l?(e=e.v)instanceof c?s.push.apply(s,i?e.v.slice().reverse():e.v):s.push(e):e!==u&&(e instanceof c?a.push.apply(a,i?e.v.slice().reverse():e.v):a.push(e)),t}if(Array.isArray(n))if(i){for(o=n.length;0<=--o&&!e(););a.reverse(),s.reverse()}else for(o=0;o<n.length&&!e();++o);else for(o in n)if(se(n,o)&&e())break;return s.concat(a)}e.at_top=function(e){return new l(e)},e.splice=function(e){return new c(e)},e.last=function(e){return new f(e)};var u=e.skip={};function l(e){this.v=e}function c(e){this.v=e}function f(e){this.v=e}return e}();function g(e,t){if(e.indexOf(t)<0)return e.push(t)}function B(e,n){return e.replace(/\{(.+?)\}/g,function(e,t){return n&&n[t]})}function R(e,t){var n=e.indexOf(t);0<=n&&e.splice(n,1)}function W(e){Array.isArray(e)||(e=e.split(" "));var t=Object.create(null);return e.forEach(function(e){t[e]=!0}),t}function ae(e,t){for(var n=e.length;0<=--n;)if(!t(e[n]))return!1;return!0}function L(){this._values=Object.create(null),this._size=0}function se(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function F(e){for(var t,n=e.parent(-1),r=0;t=e.parent(r++);n=t){if("Call"==t.TYPE){if(t.expression===n)continue}else if(t instanceof tt){if(t.left===n)continue}else if(t instanceof nt){if(t.condition===n)continue}else if(t instanceof We){if(t.expression===n)continue}else if(t instanceof Ye){if(t.expressions[0]===n)continue}else{if(t instanceof le)return t.body===n;if(t instanceof et&&t.expression===n)continue}return!1}}function r(e,t,n,r){void 0===r&&(r=ue);var i=t=t?t.split(/\s+/):[];r&&r.PROPS&&(t=t.concat(r.PROPS));var o=["return function AST_",e,"(props){","if(props){"];t.forEach(function(e){o.push("this.",e,"=props.",e,";")});var a=r&&new r;(a&&a.initialize||n&&n.initialize)&&o.push("this.initialize();"),o.push("}}");var s=new Function(o.join(""))();if(a&&(s.prototype=a,s.BASE=r),r&&r.SUBCLASSES.push(s),(s.prototype.CTOR=s).PROPS=t||null,s.SELF_PROPS=i,s.SUBCLASSES=[],e&&(s.prototype.TYPE=s.TYPE=e),n)for(var u in n)se(n,u)&&(/^\$/.test(u)?s[u.substr(1)]=n[u]:s.prototype[u]=n[u]);return s.DEFMETHOD=function(e,t){this.prototype[e]=t},void 0!==d&&(d["AST_"+e]=s),s}L.prototype={set:function(e,t){return this.has(e)||++this._size,this._values["$"+e]=t,this},add:function(e,t){return this.has(e)?this.get(e).push(t):this.set(e,[t]),this},get:function(e){return this._values["$"+e]},del:function(e){return this.has(e)&&(--this._size,delete this._values["$"+e]),this},has:function(e){return"$"+e in this._values},each:function(e){for(var t in this._values)e(this._values[t],t.substr(1))},size:function(){return this._size},map:function(e){var t=[];for(var n in this._values)t.push(e(this._values[n],n.substr(1)));return t},clone:function(){var e=new L;for(var t in this._values)e._values[t]=this._values[t];return e._size=this._size,e},toObject:function(){return this._values}},L.fromObject=function(e){var t=new L;return t._size=n(t._values,e),t};var O=r("Token","type value line col pos endline endcol endpos nlb comments_before comments_after file raw",{},null),ue=r("Node","start end",{_clone:function(e){if(e){var t=this.clone();return t.transform(new Wt(function(e){if(e!==t)return e.clone(!0)}))}return new this.CTOR(this)},clone:function(e){return this._clone(e)},$documentation:"Base class of all AST nodes",$propdoc:{start:"[AST_Token] The first token of this node",end:"[AST_Token] The last token of this node"},_walk:function(e){return e._visit(this)},walk:function(e){return this._walk(e)}},null);ue.warn=function(e,t){ue.warn_function&&ue.warn_function(B(e,t))};var le=r("Statement",null,{$documentation:"Base class of all statements"}),ce=r("Debugger",null,{$documentation:"Represents a debugger statement"},le),fe=r("Directive","value quote",{$documentation:'Represents a directive, like "use strict";',$propdoc:{value:"[string] The value of this directive as a plain string (it's not an AST_String!)",quote:"[string] the original quote character"}},le),pe=r("SimpleStatement","body",{$documentation:"A statement consisting of an expression, i.e. a = 1 + 2",$propdoc:{body:"[AST_Node] an expression node (should not be instanceof AST_Statement)"},_walk:function(e){return e._visit(this,function(){this.body._walk(e)})}},le);function q(e,t){var n=e.body;n instanceof le?n._walk(t):n.forEach(function(e){e._walk(t)})}var he=r("Block","body",{$documentation:"A body of statements (usually braced)",$propdoc:{body:"[AST_Statement*] an array of statements"},_walk:function(e){return e._visit(this,function(){q(this,e)})}},le),de=r("BlockStatement",null,{$documentation:"A block statement"},he),me=r("EmptyStatement",null,{$documentation:"The empty statement (empty block or simply a semicolon)"},le),v=r("StatementWithBody","body",{$documentation:"Base class for all statements that contain one nested body: `For`, `ForIn`, `Do`, `While`, `With`",$propdoc:{body:"[AST_Statement] the body; this should always be present, even if it's an AST_EmptyStatement"}},le),ge=r("LabeledStatement","label",{$documentation:"Statement with a label",$propdoc:{label:"[AST_Label] a label definition"},_walk:function(e){return e._visit(this,function(){this.label._walk(e),this.body._walk(e)})},clone:function(e){var t=this._clone(e);if(e){var n=t.label,r=this.label;t.walk(new Dt(function(e){e instanceof Re&&e.label&&e.label.thedef===r&&(e.label.thedef=n).references.push(e)}))}return t}},v),ve=r("IterationStatement",null,{$documentation:"Internal class.  All loops inherit from it."},v),be=r("DWLoop","condition",{$documentation:"Base class for do/while statements",$propdoc:{condition:"[AST_Node] the loop condition.  Should not be instanceof AST_Statement"}},ve),ye=r("Do",null,{$documentation:"A `do` statement",_walk:function(e){return e._visit(this,function(){this.body._walk(e),this.condition._walk(e)})}},be),_e=r("While",null,{$documentation:"A `while` statement",_walk:function(e){return e._visit(this,function(){this.condition._walk(e),this.body._walk(e)})}},be),we=r("For","init condition step",{$documentation:"A `for` statement",$propdoc:{init:"[AST_Node?] the `for` initialization code, or null if empty",condition:"[AST_Node?] the `for` termination clause, or null if empty",step:"[AST_Node?] the `for` update clause, or null if empty"},_walk:function(e){return e._visit(this,function(){this.init&&this.init._walk(e),this.condition&&this.condition._walk(e),this.step&&this.step._walk(e),this.body._walk(e)})}},ve),Ee=r("ForIn","init object",{$documentation:"A `for ... in` statement",$propdoc:{init:"[AST_Node] the `for/in` initialization code",object:"[AST_Node] the object that we're looping through"},_walk:function(e){return e._visit(this,function(){this.init._walk(e),this.object._walk(e),this.body._walk(e)})}},ve),Ae=r("With","expression",{$documentation:"A `with` statement",$propdoc:{expression:"[AST_Node] the `with` expression"},_walk:function(e){return e._visit(this,function(){this.expression._walk(e),this.body._walk(e)})}},v),xe=r("Scope","variables functions uses_with uses_eval parent_scope enclosed cname",{$documentation:"Base class for all statements introducing a lexical scope",$propdoc:{variables:"[Object/S] a map of name -> SymbolDef for all variables/functions defined in this scope",functions:"[Object/S] like `variables`, but only lists function declarations",uses_with:"[boolean/S] tells whether this scope uses the `with` statement",uses_eval:"[boolean/S] tells whether this scope contains a direct call to the global `eval`",parent_scope:"[AST_Scope?/S] link to the parent scope",enclosed:"[SymbolDef*/S] a list of all symbol definitions that are accessed from this scope or any subscopes",cname:"[integer/S] current index for mangling variables (used internally by the mangler)"},clone:function(e){var t=this._clone(e);return this.variables&&(t.variables=this.variables.clone()),this.functions&&(t.functions=this.functions.clone()),this.enclosed&&(t.enclosed=this.enclosed.slice()),t},pinned:function(){return this.uses_eval||this.uses_with}},he),ke=r("Toplevel","globals",{$documentation:"The toplevel scope",$propdoc:{globals:"[Object/S] a map of name -> SymbolDef for all undeclared names"},wrap_commonjs:function(e){var t=this.body,n="(function(exports){'$ORIG';})(typeof "+e+"=='undefined'?("+e+"={}):"+e+");";return n=(n=Yt(n)).transform(new Wt(function(e){if(e instanceof fe&&"$ORIG"==e.value)return oe.splice(t)}))},wrap_enclose:function(e){"string"!=typeof e&&(e="");var t=e.indexOf(":");t<0&&(t=e.length);var n=this.body;return Yt(["(function(",e.slice(0,t),'){"$ORIG"})(',e.slice(t+1),")"].join("")).transform(new Wt(function(e){if(e instanceof fe&&"$ORIG"==e.value)return oe.splice(n)}))}},xe),Ce=r("Lambda","name argnames uses_arguments",{$documentation:"Base class for functions",$propdoc:{name:"[AST_SymbolDeclaration?] the name of this function",argnames:"[AST_SymbolFunarg*] array of function arguments",uses_arguments:"[boolean/S] tells whether this function accesses the arguments array"},_walk:function(t){return t._visit(this,function(){this.name&&this.name._walk(t),this.argnames.forEach(function(e){e._walk(t)}),q(this,t)})}},xe),Oe=r("Accessor",null,{$documentation:"A setter/getter function.  The `name` property is always null."},Ce),Se=r("Function","inlined",{$documentation:"A function expression"},Ce),De=r("Defun","inlined",{$documentation:"A function definition"},Ce),U=r("Jump",null,{$documentation:"Base class for “jumps” (for now that's `return`, `throw`, `break` and `continue`)"},le),Te=r("Exit","value",{$documentation:"Base class for “exits” (`return` and `throw`)",$propdoc:{value:"[AST_Node?] the value returned or thrown by this statement; could be null for AST_Return"},_walk:function(e){return e._visit(this,this.value&&function(){this.value._walk(e)})}},U),Be=r("Return",null,{$documentation:"A `return` statement"},Te),Q=r("Throw",null,{$documentation:"A `throw` statement"},Te),Re=r("LoopControl","label",{$documentation:"Base class for loop control statements (`break` and `continue`)",$propdoc:{label:"[AST_LabelRef?] the label, or null if none"},_walk:function(e){return e._visit(this,this.label&&function(){this.label._walk(e)})}},U),Le=r("Break",null,{$documentation:"A `break` statement"},Re),Fe=r("Continue",null,{$documentation:"A `continue` statement"},Re),qe=r("If","condition alternative",{$documentation:"A `if` statement",$propdoc:{condition:"[AST_Node] the `if` condition",alternative:"[AST_Statement?] the `else` part, or null if not present"},_walk:function(e){return e._visit(this,function(){this.condition._walk(e),this.body._walk(e),this.alternative&&this.alternative._walk(e)})}},v),Ue=r("Switch","expression",{$documentation:"A `switch` statement",$propdoc:{expression:"[AST_Node] the `switch` “discriminant”"},_walk:function(e){return e._visit(this,function(){this.expression._walk(e),q(this,e)})}},he),Me=r("SwitchBranch",null,{$documentation:"Base class for `switch` branches"},he),Ne=r("Default",null,{$documentation:"A `default` switch branch"},Me),Pe=r("Case","expression",{$documentation:"A `case` switch branch",$propdoc:{expression:"[AST_Node] the `case` expression"},_walk:function(e){return e._visit(this,function(){this.expression._walk(e),q(this,e)})}},Me),Ie=r("Try","bcatch bfinally",{$documentation:"A `try` statement",$propdoc:{bcatch:"[AST_Catch?] the catch block, or null if not present",bfinally:"[AST_Finally?] the finally block, or null if not present"},_walk:function(e){return e._visit(this,function(){q(this,e),this.bcatch&&this.bcatch._walk(e),this.bfinally&&this.bfinally._walk(e)})}},he),ze=r("Catch","argname",{$documentation:"A `catch` node; only makes sense as part of a `try` statement",$propdoc:{argname:"[AST_SymbolCatch] symbol for the exception"},_walk:function(e){return e._visit(this,function(){this.argname._walk(e),q(this,e)})}},he),je=r("Finally",null,{$documentation:"A `finally` node; only makes sense as part of a `try` statement"},he),Ve=r("Definitions","definitions",{$documentation:"Base class for `var` nodes (variable declarations/initializations)",$propdoc:{definitions:"[AST_VarDef*] array of variable definitions"},_walk:function(t){return t._visit(this,function(){this.definitions.forEach(function(e){e._walk(t)})})}},le),He=r("Var",null,{$documentation:"A `var` statement"},Ve),$e=r("VarDef","name value",{$documentation:"A variable declaration; only appears in a AST_Definitions node",$propdoc:{name:"[AST_SymbolVar] name of the variable",value:"[AST_Node?] initializer, or null of there's no initializer"},_walk:function(e){return e._visit(this,function(){this.name._walk(e),this.value&&this.value._walk(e)})}}),Ke=r("Call","expression args",{$documentation:"A function call expression",$propdoc:{expression:"[AST_Node] expression to invoke as function",args:"[AST_Node*] array of arguments"},_walk:function(t){return t._visit(this,function(){this.expression._walk(t),this.args.forEach(function(e){e._walk(t)})})}}),Ge=r("New",null,{$documentation:"An object instantiation.  Derives from a function call since it has exactly the same properties"},Ke),Ye=r("Sequence","expressions",{$documentation:"A sequence expression (comma-separated expressions)",$propdoc:{expressions:"[AST_Node*] array of expressions (at least two)"},_walk:function(t){return t._visit(this,function(){this.expressions.forEach(function(e){e._walk(t)})})}}),We=r("PropAccess","expression property",{$documentation:'Base class for property access expressions, i.e. `a.foo` or `a["foo"]`',$propdoc:{expression:"[AST_Node] the “container” expression",property:"[AST_Node|string] the property to access.  For AST_Dot this is always a plain string, while for AST_Sub it's an arbitrary AST_Node"}}),Qe=r("Dot",null,{$documentation:"A dotted property access expression",_walk:function(e){return e._visit(this,function(){this.expression._walk(e)})}},We),Ze=r("Sub",null,{$documentation:'Index-style property access, i.e. `a["foo"]`',_walk:function(e){return e._visit(this,function(){this.expression._walk(e),this.property._walk(e)})}},We),Je=r("Unary","operator expression",{$documentation:"Base class for unary expressions",$propdoc:{operator:"[string] the operator",expression:"[AST_Node] expression that this unary operator applies to"},_walk:function(e){return e._visit(this,function(){this.expression._walk(e)})}}),Xe=r("UnaryPrefix",null,{$documentation:"Unary prefix expression, i.e. `typeof i` or `++i`"},Je),et=r("UnaryPostfix",null,{$documentation:"Unary postfix expression, i.e. `i++`"},Je),tt=r("Binary","operator left right",{$documentation:"Binary expression, i.e. `a + b`",$propdoc:{left:"[AST_Node] left-hand side expression",operator:"[string] the operator",right:"[AST_Node] right-hand side expression"},_walk:function(e){return e._visit(this,function(){this.left._walk(e),this.right._walk(e)})}}),nt=r("Conditional","condition consequent alternative",{$documentation:"Conditional expression using the ternary operator, i.e. `a ? b : c`",$propdoc:{condition:"[AST_Node]",consequent:"[AST_Node]",alternative:"[AST_Node]"},_walk:function(e){return e._visit(this,function(){this.condition._walk(e),this.consequent._walk(e),this.alternative._walk(e)})}}),rt=r("Assign",null,{$documentation:"An assignment expression — `a = b + 5`"},tt),it=r("Array","elements",{$documentation:"An array literal",$propdoc:{elements:"[AST_Node*] array of elements"},_walk:function(t){return t._visit(this,function(){this.elements.forEach(function(e){e._walk(t)})})}}),ot=r("Object","properties",{$documentation:"An object literal",$propdoc:{properties:"[AST_ObjectProperty*] array of properties"},_walk:function(t){return t._visit(this,function(){this.properties.forEach(function(e){e._walk(t)})})}}),at=r("ObjectProperty","key value",{$documentation:"Base class for literal object properties",$propdoc:{key:"[string|AST_SymbolAccessor] property name. For ObjectKeyVal this is a string. For getters and setters this is an AST_SymbolAccessor.",value:"[AST_Node] property value.  For getters and setters this is an AST_Accessor."},_walk:function(e){return e._visit(this,function(){this.value._walk(e)})}}),st=r("ObjectKeyVal","quote",{$documentation:"A key: value object property",$propdoc:{quote:"[string] the original quote character"}},at),Z=r("ObjectSetter",null,{$documentation:"An object setter property"},at),J=r("ObjectGetter",null,{$documentation:"An object getter property"},at),ut=r("Symbol","scope name thedef",{$propdoc:{name:"[string] name of this symbol",scope:"[AST_Scope/S] the current scope (not necessarily the definition scope)",thedef:"[SymbolDef/S] the definition of this symbol"},$documentation:"Base class for all symbols"}),X=r("SymbolAccessor",null,{$documentation:"The name of a property accessor (setter/getter function)"},ut),lt=r("SymbolDeclaration","init",{$documentation:"A declaration symbol (symbol in var, function name or argument, symbol in catch)"},ut),ct=r("SymbolVar",null,{$documentation:"Symbol defining a variable"},lt),ft=r("SymbolFunarg",null,{$documentation:"Symbol naming a function argument"},ct),pt=r("SymbolDefun",null,{$documentation:"Symbol defining a function"},lt),ht=r("SymbolLambda",null,{$documentation:"Symbol naming a function expression"},lt),dt=r("SymbolCatch",null,{$documentation:"Symbol naming the exception in catch"},lt),ee=r("Label","references",{$documentation:"Symbol naming a label (declaration)",$propdoc:{references:"[AST_LoopControl*] a list of nodes referring to this label"},initialize:function(){this.references=[],this.thedef=this}},ut),mt=r("SymbolRef",null,{$documentation:"Reference to some symbol (not definition/declaration)"},ut),te=r("LabelRef",null,{$documentation:"Reference to a label symbol"},ut),gt=r("This",null,{$documentation:"The `this` symbol"},ut),vt=r("Constant",null,{$documentation:"Base class for all constants",getValue:function(){return this.value}}),bt=r("String","value quote",{$documentation:"A string literal",$propdoc:{value:"[string] the contents of this string",quote:"[string] the original quote character"}},vt),yt=r("Number","value literal",{$documentation:"A number literal",$propdoc:{value:"[number] the numeric value",literal:"[string] numeric value as string (optional)"}},vt),_t=r("RegExp","value",{$documentation:"A regexp literal",$propdoc:{value:"[RegExp] the actual regexp"}},vt),a=r("Atom",null,{$documentation:"Base class for atoms"},vt),wt=r("Null",null,{$documentation:"The `null` atom",value:null},a),Et=r("NaN",null,{$documentation:"The impossible value",value:NaN},a),At=r("Undefined",null,{$documentation:"The `undefined` value",value:void 0},a),xt=r("Hole",null,{$documentation:"A hole in an array",value:void 0},a),kt=r("Infinity",null,{$documentation:"The `Infinity` value",value:1/0},a),Ct=r("Boolean",null,{$documentation:"Base class for booleans"},a),Ot=r("False",null,{$documentation:"The `false` atom",value:!1},Ct),St=r("True",null,{$documentation:"The `true` atom",value:!0},Ct);function Dt(e){this.visit=e,this.stack=[],this.directives=Object.create(null)}Dt.prototype={_visit:function(e,t){this.push(e);var n=this.visit(e,t?function(){t.call(e)}:G);return!n&&t&&t.call(e),this.pop(),n},parent:function(e){return this.stack[this.stack.length-2-(e||0)]},push:function(e){e instanceof Ce?this.directives=Object.create(this.directives):e instanceof fe&&!this.directives[e.value]&&(this.directives[e.value]=e),this.stack.push(e)},pop:function(){this.stack.pop()instanceof Ce&&(this.directives=Object.getPrototypeOf(this.directives))},self:function(){return this.stack[this.stack.length-1]},find_parent:function(e){for(var t=this.stack,n=t.length;0<=--n;){var r=t[n];if(r instanceof e)return r}},has_directive:function(e){var t=this.directives[e];if(t)return t;var n=this.stack[this.stack.length-1];if(n instanceof xe)for(var r=0;r<n.body.length;++r){var i=n.body[r];if(!(i instanceof fe))break;if(i.value==e)return i}},loopcontrol_target:function(e){var t=this.stack;if(e.label)for(var n=t.length;0<=--n;){if((r=t[n])instanceof ge&&r.label.name==e.label.name)return r.body}else for(n=t.length;0<=--n;){var r;if((r=t[n])instanceof ve||e instanceof Le&&r instanceof Ue)return r}},in_boolean_context:function(){for(var e,t=this.self(),n=0;e=this.parent(n);n++){if(e instanceof pe||e instanceof nt&&e.condition===t||e instanceof be&&e.condition===t||e instanceof we&&e.condition===t||e instanceof qe&&e.condition===t||e instanceof Xe&&"!"==e.operator&&e.expression===t)return!0;if(!(e instanceof tt&&("&&"==e.operator||"||"==e.operator)||e instanceof nt||e.tail_node()===t))return!1;t=e}}};var ne="break case catch const continue debugger default delete do else finally for function if in instanceof new return switch throw try typeof var void while with",S="false null true",b="abstract boolean byte char class double enum export extends final float goto implements import int interface let long native package private protected public short static super synchronized this throws transient volatile yield "+S+" "+ne,M="return new delete throw else case";ne=W(ne),b=W(b),M=W(M),S=W(S);var N=W(e("+-*&%=<>!?|~^")),P=/^0x[0-9a-f]+$/i,I=/^0[0-7]+$/,z=W(["in","instanceof","typeof","new","void","delete","++","--","+","-","!","~","&","|","^","*","/","%",">>","<<",">>>","<",">","<=",">=","==","===","!=","!==","?","=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&=","&&","||"]),j=W(e("  \n\r\t\f\v​           \u2028\u2029   \ufeff")),V=W(e("\n\r\u2028\u2029")),H=W(e("[{(,;:")),Tt=W(e("[]{}(),;:")),s={letter:new RegExp("[\\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\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\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-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\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-\\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\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\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\\u2160-\\u2188\\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-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\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-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\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]"),digit:new RegExp("[\\u0030-\\u0039\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]"),non_spacing_mark:new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"),space_combining_mark:new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"),connector_punctuation:new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]")};function Bt(e){return 97<=e&&e<=122||65<=e&&e<=90||170<=e&&s.letter.test(String.fromCharCode(e))}function Rt(e){return"string"==typeof e&&(e=e.charCodeAt(0)),55296<=e&&e<=56319}function Lt(e){return"string"==typeof e&&(e=e.charCodeAt(0)),56320<=e&&e<=57343}function Ft(e){return 48<=e&&e<=57}function f(e){return!b[e]&&/^[a-z_$][a-z0-9_$]*$/i.test(e)}function qt(e){return 36==e||95==e||Bt(e)}function Ut(e){var t,n,r,i=e.charCodeAt(0);return qt(i)||Ft(i)||8204==i||8205==i||(r=e,s.non_spacing_mark.test(r)||s.space_combining_mark.test(r))||(n=e,s.connector_punctuation.test(n))||(t=i,s.digit.test(String.fromCharCode(t)))}function Mt(e){return/^[a-z_$][a-z0-9_$]*$/i.test(e)}function Nt(e,t,n,r,i){this.message=e,this.filename=t,this.line=n,this.col=r,this.pos=i}function Pt(e,t,n,r,i){throw new Nt(e,t,n,r,i)}function It(e,t,n){return e.type==t&&(null==n||e.value==n)}((Nt.prototype=Object.create(Error.prototype)).constructor=Nt).prototype.name="SyntaxError",t(Nt);var zt={};function jt(i,o,a,s){var u={text:i,filename:o,pos:0,tokpos:0,line:1,tokline:0,col:0,tokcol:0,newline_before:!1,regex_allowed:!1,comments_before:[],directives:{},directive_stack:[]};function l(){return u.text.charAt(u.pos)}function c(e,t){var n=u.text.charAt(u.pos++);if(e&&!n)throw zt;return V[n]?(u.newline_before=u.newline_before||!t,++u.line,u.col=0,t||"\r"!=n||"\n"!=l()||(++u.pos,n="\n")):++u.col,n}function f(e){for(;0<e--;)c()}function p(e){return u.text.substr(u.pos,e.length)==e}function h(){u.tokline=u.line,u.tokcol=u.col,u.tokpos=u.pos}var d=!1;function m(e,t,n){u.regex_allowed="operator"==e&&!Ht[t]||"keyword"==e&&M[t]||"punc"==e&&H[t],"punc"==e&&"."==t?d=!0:n||(d=!1);var r={type:e,value:t,line:u.tokline,col:u.tokcol,pos:u.tokpos,endline:u.line,endcol:u.col,endpos:u.pos,nlb:u.newline_before,file:o};return/^(?:num|string|regexp)$/i.test(e)&&(r.raw=i.substring(r.pos,r.endpos)),n||(r.comments_before=u.comments_before,r.comments_after=u.comments_before=[]),u.newline_before=!1,new O(r)}function g(){for(;j[l()];)c()}function v(e){Pt(e,o,u.tokline,u.tokcol,u.tokpos)}function b(i){var o=!1,a=!1,s=!1,u="."==i,e=function(e){for(var t,n="",r=0;(t=l())&&e(t,r++);)n+=c();return n}(function(e,t){var n,r=e.charCodeAt(0);switch(r){case 120:case 88:return!s&&(s=!0);case 101:case 69:return!!s||!o&&(o=a=!0);case 45:return a||0==t&&!i;case 43:return a;case a=!1,46:return!(u||s||o)&&(u=!0)}return Ft(n=r)||Bt(n)});i&&(e=i+e),I.test(e)&&C.has_directive("use strict")&&v("Legacy octal literals are not allowed in strict mode");var t=function(e){if(P.test(e))return parseInt(e.substr(2),16);if(I.test(e))return parseInt(e.substr(1),8);var t=parseFloat(e);return t==e?t:void 0}(e);if(!isNaN(t))return m("num",t);v("Invalid syntax: "+e)}function y(e){var t=c(!0,e);switch(t.charCodeAt(0)){case 110:return"\n";case 114:return"\r";case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 120:return String.fromCharCode(n(2));case 117:return String.fromCharCode(n(4));case 10:return"";case 13:if("\n"==l())return c(!0,e),""}return"0"<=t&&t<="7"?function(e){var t=l();"0"<=t&&t<="7"&&(e+=c(!0))[0]<="3"&&"0"<=(t=l())&&t<="7"&&(e+=c(!0));if("0"===e)return"\0";0<e.length&&C.has_directive("use strict")&&v("Legacy octal escape sequences are not allowed in strict mode");return String.fromCharCode(parseInt(e,8))}(t):t}function n(e){for(var t=0;0<e;--e){var n=parseInt(c(!0),16);isNaN(n)&&v("Invalid hex-character pattern in string"),t=t<<4|n}return t}var _=t("Unterminated string constant",function(e){for(var t=c(),n="";;){var r=c(!0,!0);if("\\"==r)r=y(!0);else if(V[r])v("Unterminated string constant");else if(r==t)break;n+=r}var i=m("string",n);return i.quote=e,i});function w(e){var t,n=u.regex_allowed,r=function(){for(var e=u.text,t=u.pos,n=u.text.length;t<n;++t){var r=e[t];if(V[r])return t}return-1}();return u.pos=-1==r?(t=u.text.substr(u.pos),u.text.length):(t=u.text.substring(u.pos,r),r),u.col=u.tokcol+(u.pos-u.tokpos),u.comments_before.push(m(e,t,!0)),u.regex_allowed=n,C}var e=t("Unterminated multiline comment",function(){var e=u.regex_allowed,t=function(e,t){var n=u.text.indexOf(e,u.pos);if(t&&-1==n)throw zt;return n}("*/",!0),n=u.text.substring(u.pos,t).replace(/\r\n|\r|\u2028|\u2029/g,"\n");return f(n.length+2),u.comments_before.push(m("comment2",n,!0)),u.regex_allowed=e,C});function E(){for(var e,t,n=!1,r="",i=!1;null!=(e=l());)if(n)"u"!=e&&v("Expecting UnicodeEscapeSequence -- uXXXX"),Ut(e=y())||v("Unicode char: "+e.charCodeAt(0)+" is not valid in identifier"),r+=e,n=!1;else if("\\"==e)i=n=!0,c();else{if(!Ut(e))break;r+=c()}return ne[r]&&i&&(t=r.charCodeAt(0).toString(16).toUpperCase(),r="\\u"+"0000".substr(t.length)+t+r.slice(1)),r}var A=t("Unterminated regular expression",function(e){for(var t,n=!1,r=!1;t=c(!0);)if(V[t])v("Unexpected line terminator");else if(n)e+="\\"+t,n=!1;else if("["==t)r=!0,e+=t;else if("]"==t&&r)r=!1,e+=t;else{if("/"==t&&!r)break;"\\"==t?n=!0:e+=t}var i=E();try{var o=new RegExp(e,i);return o.raw_source=e,m("regexp",o)}catch(e){v(e.message)}});function x(e){return m("operator",function e(t){if(!l())return t;var n=t+l();return z[n]?(c(),e(n)):t}(e||c()))}function k(){switch(c(),l()){case"/":return c(),w("comment1");case"*":return c(),e()}return u.regex_allowed?A(""):x("/")}function t(t,n){return function(e){try{return n(e)}catch(e){if(e!==zt)throw e;v(t)}}}function C(e){if(null!=e)return A(e);for(s&&0==u.pos&&p("#!")&&(h(),f(2),w("comment5"));;){if(g(),h(),a){if(p("\x3c!--")){f(4),w("comment3");continue}if(p("--\x3e")&&u.newline_before){f(3),w("comment4");continue}}var t=l();if(!t)return m("eof");var n=t.charCodeAt(0);switch(n){case 34:case 39:return _(t);case 46:return c(),Ft(l().charCodeAt(0))?b("."):m("punc",".");case 47:var r=k();if(r===C)continue;return r}if(Ft(n))return b();if(Tt[t])return m("punc",c());if(N[t])return x();if(92==n||qt(n))return void 0,i=E(),d?m("name",i):S[i]?m("atom",i):ne[i]?z[i]?m("operator",i):m("keyword",i):m("name",i);break}var i;v("Unexpected character '"+t+"'")}return C.context=function(e){return e&&(u=e),u},C.add_directive=function(e){u.directive_stack[u.directive_stack.length-1].push(e),void 0===u.directives[e]?u.directives[e]=1:u.directives[e]++},C.push_directives_stack=function(){u.directive_stack.push([])},C.pop_directives_stack=function(){for(var e=u.directive_stack[u.directive_stack.length-1],t=0;t<e.length;t++)u.directives[e[t]]--;u.directive_stack.pop()},C.has_directive=function(e){return 0<u.directives[e]},C}var Vt=W(["typeof","void","delete","--","++","!","~","-","+"]),Ht=W(["--","++"]),$t=W(["=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&="]),Kt=function(e,t){for(var n=0;n<e.length;++n)for(var r=e[n],i=0;i<r.length;++i)t[r[i]]=n+1;return t}([["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]],{}),Gt=W(["atom","num","string","regexp","name"]);function Yt(e,u){u=$(u,{bare_returns:!1,expression:!1,filename:null,html5_comments:!0,shebang:!0,strict:!1,toplevel:null},!0);var l={input:"string"==typeof e?jt(e,u.filename,u.html5_comments,u.shebang):e,token:null,prev:null,peeked:null,in_function:0,in_directives:!0,in_loop:0,labels:[]};function c(e,t){return It(l.token,e,t)}function f(){return l.peeked||(l.peeked=l.input())}function p(){return l.prev=l.token,l.peeked?(l.token=l.peeked,l.peeked=null):l.token=l.input(),l.in_directives=l.in_directives&&("string"==l.token.type||c("punc",";")),l.token}function h(){return l.prev}function d(e,t,n,r){var i=l.input.context();Pt(e,i.filename,null!=t?t:i.tokline,null!=n?n:i.tokcol,null!=r?r:i.tokpos)}function n(e,t){d(t,e.line,e.col)}function m(e){null==e&&(e=l.token),n(e,"Unexpected token: "+e.type+" ("+e.value+")")}function g(e,t){if(c(e,t))return p();n(l.token,"Unexpected token "+l.token.type+" «"+l.token.value+"», expected "+e+" «"+t+"»")}function v(e){return g("punc",e)}function b(e){return e.nlb||!ae(e.comments_before,function(e){return!e.nlb})}function y(){return!u.strict&&(c("eof")||c("punc","}")||b(l.token))}function _(e){c("punc",";")?p():e||y()||m()}function w(){v("(");var e=V(!0);return v(")"),e}function t(r){return function(){var e=l.token,t=r.apply(null,arguments),n=h();return t.start=e,t.end=n,t}}function E(){(c("operator","/")||c("operator","/="))&&(l.peeked=null,l.token=l.input(l.token.value.substr(1)))}l.token=p();var A=t(function(e){switch(E(),l.token.type){case"string":if(l.in_directives){var t=f();-1==l.token.raw.indexOf("\\")&&(It(t,"punc",";")||It(t,"punc","}")||b(t)||It(t,"eof"))?l.input.add_directive(l.token.value):l.in_directives=!1}var n=l.in_directives,r=x();return n?new fe(r.body):r;case"num":case"regexp":case"operator":case"atom":return x();case"name":return It(f(),"punc",":")?function(){var t=U(ee);ae(l.labels,function(e){return e.name!=t.name})||d("Label "+t.name+" defined twice");v(":"),l.labels.push(t);var e=A();l.labels.pop(),e instanceof ve||t.references.forEach(function(e){e instanceof Fe&&(e=e.label.start,d("Continue label `"+t.name+"` refers to non-IterationStatement.",e.line,e.col,e.pos))});return new ge({body:e,label:t})}():x();case"punc":switch(l.token.value){case"{":return new de({start:l.token,body:O(),end:h()});case"[":case"(":return x();case";":return l.in_directives=!1,p(),new me;default:m()}case"keyword":switch(l.token.value){case"break":return p(),k(Le);case"continue":return p(),k(Fe);case"debugger":return p(),_(),new ce;case"do":p();var i=H(A);g("keyword","while");var o=w();return _(!0),new ye({body:i,condition:o});case"while":return p(),new _e({condition:w(),body:H(A)});case"for":return p(),function(){v("(");var e=null;if(!c("punc",";")&&(e=c("keyword","var")?(p(),D(!0)):V(!0,!0),c("operator","in")))return e instanceof He?1<e.definitions.length&&d("Only one variable declaration allowed in for..in loop",e.start.line,e.start.col,e.start.pos):z(e)||d("Invalid left-hand side in for..in loop",e.start.line,e.start.col,e.start.pos),p(),t=e,n=V(!0),v(")"),new Ee({init:t,object:n,body:H(A)});var t,n;return function(e){v(";");var t=c("punc",";")?null:V(!0);v(";");var n=c("punc",")")?null:V(!0);return v(")"),new we({init:e,condition:t,step:n,body:H(A)})}(e)}();case"function":return!e&&l.input.has_directive("use strict")&&d("In strict mode code, functions can only be declared at top level or immediately within another function."),p(),C(De);case"if":return p(),function(){var e=w(),t=A(),n=null;c("keyword","else")&&(p(),n=A());return new qe({condition:e,body:t,alternative:n})}();case"return":0!=l.in_function||u.bare_returns||d("'return' outside of function"),p();var a=null;return c("punc",";")?p():y()||(a=V(!0),_()),new Be({value:a});case"switch":return p(),new Ue({expression:w(),body:H(S)});case"throw":p(),b(l.token)&&d("Illegal newline after 'throw'");a=V(!0);return _(),new Q({value:a});case"try":return p(),function(){var e=O(),t=null,n=null;if(c("keyword","catch")){var r=l.token;p(),v("(");var i=U(dt);v(")"),t=new ze({start:r,argname:i,body:O(),end:h()})}if(c("keyword","finally")){var r=l.token;p(),n=new je({start:r,body:O(),end:h()})}t||n||d("Missing catch/finally blocks");return new Ie({body:e,bcatch:t,bfinally:n})}();case"var":p();var s=D();return _(),s;case"with":return l.input.has_directive("use strict")&&d("Strict mode may not include a with statement"),p(),new Ae({expression:w(),body:A()})}}m()});function x(e){return new pe({body:(e=V(!0),_(),e)})}function k(e){var t,n=null;y()||(n=U(te,!0)),null!=n?((t=K(function(e){return e.name==n.name},l.labels))||d("Undefined label "+n.name),n.thedef=t):0==l.in_loop&&d(e.TYPE+" not inside a loop or switch"),_();var r=new e({label:n});return t&&t.references.push(r),r}var C=function(e){var t=e===De,n=c("name")?U(t?pt:ht):null;t&&!n&&m(),!n||e===Oe||n instanceof lt||m(h()),v("(");for(var r=[],i=!0;!c("punc",")");)i?i=!1:v(","),r.push(U(ft));p();var o=l.in_loop,a=l.labels;++l.in_function,l.in_directives=!0,l.input.push_directives_stack(),l.in_loop=0,l.labels=[];var s=O(!0);return l.input.has_directive("use strict")&&(n&&q(n),r.forEach(q)),l.input.pop_directives_stack(),--l.in_function,l.in_loop=o,l.labels=a,new e({name:n,argnames:r,body:s})};function O(e){v("{");for(var t=[];!c("punc","}");)c("eof")&&m(),t.push(A(e));return p(),t}function S(){v("{");for(var e,t=[],n=null,r=null;!c("punc","}");)c("eof")&&m(),c("keyword","case")?(r&&(r.end=h()),n=[],r=new Pe({start:(e=l.token,p(),e),expression:V(!0),body:n}),t.push(r),v(":")):c("keyword","default")?(r&&(r.end=h()),n=[],r=new Ne({start:(e=l.token,p(),v(":"),e),body:n}),t.push(r)):(n||m(),n.push(A()));return r&&(r.end=h()),p(),t}var D=function(e){return new He({start:h(),definitions:function(e){for(var t=[];t.push(new $e({start:l.token,name:U(ct),value:c("operator","=")?(p(),V(!1,e)):null,end:h()})),c("punc",",");)p();return t}(e),end:h()})};var s=function(e){if(c("operator","new"))return function(e){var t=l.token;g("operator","new");var n,r=s(!1);n=c("punc","(")?(p(),T(")")):[];var i=new Ge({start:t,expression:r,args:n,end:h()});return M(i),N(i,e)}(e);var t=l.token;if(c("punc")){switch(t.value){case"(":p();var n=V(!0),r=t.comments_before.length;if([].unshift.apply(n.start.comments_before,t.comments_before),t.comments_before=n.start.comments_before,0==(t.comments_before_length=r)&&0<t.comments_before.length){var i=t.comments_before[0];i.nlb||(i.nlb=t.nlb,t.nlb=!1)}t.comments_after=n.start.comments_after,n.start=t,v(")");var o=h();return o.comments_before=n.end.comments_before,[].push.apply(n.end.comments_after,o.comments_after),o.comments_after=n.end.comments_after,n.end=o,n instanceof Ke&&M(n),N(n,e);case"[":return N(B(),e);case"{":return N(R(),e)}m()}if(c("keyword","function")){p();var a=C(Se);return a.start=t,a.end=h(),N(a,e)}if(Gt[l.token.type])return N(function(){var e,t=l.token;switch(t.type){case"name":e=F(mt);break;case"num":e=new yt({start:t,end:t,value:t.value});break;case"string":e=new bt({start:t,end:t,value:t.value,quote:t.quote});break;case"regexp":e=new _t({start:t,end:t,value:t.value});break;case"atom":switch(t.value){case"false":e=new Ot({start:t,end:t});break;case"true":e=new St({start:t,end:t});break;case"null":e=new wt({start:t,end:t})}}return p(),e}(),e);m()};function T(e,t,n){for(var r=!0,i=[];!c("punc",e)&&(r?r=!1:v(","),!t||!c("punc",e));)c("punc",",")&&n?i.push(new xt({start:l.token,end:l.token})):i.push(V(!1));return p(),i}var B=t(function(){return v("["),new it({elements:T("]",!u.strict,!0)})}),a=t(function(){return C(Oe)}),R=t(function(){v("{");for(var e=!0,t=[];!c("punc","}")&&(e?e=!1:v(","),u.strict||!c("punc","}"));){var n=l.token,r=n.type,i=L();if("name"==r&&!c("punc",":")){var o=new X({start:l.token,name:""+L(),end:h()});if("get"==i){t.push(new J({start:n,key:o,value:a(),end:h()}));continue}if("set"==i){t.push(new Z({start:n,key:o,value:a(),end:h()}));continue}}v(":"),t.push(new st({start:n,quote:n.quote,key:""+i,value:V(!1),end:h()}))}return p(),new ot({properties:t})});function L(){var e=l.token;switch(e.type){case"operator":ne[e.value]||m();case"num":case"string":case"name":case"keyword":case"atom":return p(),e.value;default:m()}}function F(e){var t=l.token.value;return new("this"==t?gt:e)({name:String(t),start:l.token,end:l.token})}function q(e){"arguments"!=e.name&&"eval"!=e.name||d("Unexpected "+e.name+" in strict mode",e.start.line,e.start.col,e.start.pos)}function U(e,t){if(!c("name"))return t||d("Name expected"),null;var n=F(e);return l.input.has_directive("use strict")&&n instanceof lt&&q(n),p(),n}function M(e){for(var t=e.start,n=t.comments_before,r=se(t,"comments_before_length")?t.comments_before_length:n.length;0<=--r;){var i=n[r];if(/[@#]__PURE__/.test(i.value)){e.pure=i;break}}}var N=function(e,t){var n,r=e.start;if(c("punc","."))return p(),N(new Qe({start:r,expression:e,property:(n=l.token,"name"!=n.type&&m(),p(),n.value),end:h()}),t);if(c("punc","[")){p();var i=V(!0);return v("]"),N(new Ze({start:r,expression:e,property:i,end:h()}),t)}if(t&&c("punc","(")){p();var o=new Ke({start:r,expression:e,args:T(")"),end:h()});return M(o),N(o,!0)}return e},P=function(e){var t=l.token;if(c("operator")&&Vt[t.value]){p(),E();var n=i(Xe,t,P(e));return n.start=t,n.end=h(),n}for(var r=s(e);c("operator")&&Ht[l.token.value]&&!b(l.token);)(r=i(et,l.token,r)).start=t,r.end=l.token,p();return r};function i(e,t,n){var r=t.value;switch(r){case"++":case"--":z(n)||d("Invalid use of "+r+" operator",t.line,t.col,t.pos);break;case"delete":n instanceof mt&&l.input.has_directive("use strict")&&d("Calling delete on expression not allowed in strict mode",n.start.line,n.start.col,n.start.pos)}return new e({operator:r,expression:n})}var I=function(e,t,n){var r=c("operator")?l.token.value:null;"in"==r&&n&&(r=null);var i=null!=r?Kt[r]:null;if(null!=i&&t<i){p();var o=I(P(!0),i,n);return I(new tt({start:e.start,left:e,operator:r,right:o,end:o.end}),t,n)}return e};var o=function(e){var t,n=l.token,r=(t=e,I(P(!0),0,t));if(c("operator","?")){p();var i=V(!1);return v(":"),new nt({start:n,condition:r,consequent:i,alternative:V(!1,e),end:h()})}return r};function z(e){return e instanceof We||e instanceof mt}var j=function(e){var t=l.token,n=o(e),r=l.token.value;if(c("operator")&&$t[r]){if(z(n))return p(),new rt({start:t,left:n,operator:r,right:j(e),end:h()});d("Invalid assignment")}return n},V=function(e,t){for(var n=l.token,r=[];r.push(j(t)),e&&c("punc",",");)p(),e=!0;return 1==r.length?r[0]:new Ye({start:n,expressions:r,end:f()})};function H(e){++l.in_loop;var t=e();return--l.in_loop,t}return u.expression?V(!0):function(){var e=l.token,t=[];for(l.input.push_directives_stack();!c("eof");)t.push(A(!0));l.input.pop_directives_stack();var n=h(),r=u.toplevel;return r?(r.body=r.body.concat(t),r.end=n):r=new ke({start:e,body:t,end:n}),r}()}function Wt(e,t){Dt.call(this),this.before=e,this.after=t}function i(e,t,n){this.name=t.name,this.orig=[t],this.init=n,this.eliminated=0,this.scope=e,this.references=[],this.replaced=0,this.global=!1,this.mangled_name=null,this.undeclared=!1,this.id=i.next_id++}function c(e,t){var n=e.names_in_use;return n||(e.names_in_use=n=Object.create(e.mangled_names||null),e.cname_holes=[],e.enclosed.forEach(function(e){e.unmangleable(t)&&(n[e.name]=!0)})),n}function p(e){return e=$(e,{eval:!1,ie8:!1,keep_fnames:!1,reserved:[],toplevel:!1}),Array.isArray(e.reserved)||(e.reserved=[]),g(e.reserved,"arguments"),e.reserved.has=W(e.reserved),e}Wt.prototype=new Dt,function(e){function n(e,t){return oe(e,function(e){return e.transform(t,!0)})}e(ue,G),e(ge,function(e,t){e.label=e.label.transform(t),e.body=e.body.transform(t)}),e(pe,function(e,t){e.body=e.body.transform(t)}),e(he,function(e,t){e.body=n(e.body,t)}),e(ye,function(e,t){e.body=e.body.transform(t),e.condition=e.condition.transform(t)}),e(_e,function(e,t){e.condition=e.condition.transform(t),e.body=e.body.transform(t)}),e(we,function(e,t){e.init&&(e.init=e.init.transform(t)),e.condition&&(e.condition=e.condition.transform(t)),e.step&&(e.step=e.step.transform(t)),e.body=e.body.transform(t)}),e(Ee,function(e,t){e.init=e.init.transform(t),e.object=e.object.transform(t),e.body=e.body.transform(t)}),e(Ae,function(e,t){e.expression=e.expression.transform(t),e.body=e.body.transform(t)}),e(Te,function(e,t){e.value&&(e.value=e.value.transform(t))}),e(Re,function(e,t){e.label&&(e.label=e.label.transform(t))}),e(qe,function(e,t){e.condition=e.condition.transform(t),e.body=e.body.transform(t),e.alternative&&(e.alternative=e.alternative.transform(t))}),e(Ue,function(e,t){e.expression=e.expression.transform(t),e.body=n(e.body,t)}),e(Pe,function(e,t){e.expression=e.expression.transform(t),e.body=n(e.body,t)}),e(Ie,function(e,t){e.body=n(e.body,t),e.bcatch&&(e.bcatch=e.bcatch.transform(t)),e.bfinally&&(e.bfinally=e.bfinally.transform(t))}),e(ze,function(e,t){e.argname=e.argname.transform(t),e.body=n(e.body,t)}),e(Ve,function(e,t){e.definitions=n(e.definitions,t)}),e($e,function(e,t){e.name=e.name.transform(t),e.value&&(e.value=e.value.transform(t))}),e(Ce,function(e,t){e.name&&(e.name=e.name.transform(t)),e.argnames=n(e.argnames,t),e.body=n(e.body,t)}),e(Ke,function(e,t){e.expression=e.expression.transform(t),e.args=n(e.args,t)}),e(Ye,function(e,t){e.expressions=n(e.expressions,t)}),e(Qe,function(e,t){e.expression=e.expression.transform(t)}),e(Ze,function(e,t){e.expression=e.expression.transform(t),e.property=e.property.transform(t)}),e(Je,function(e,t){e.expression=e.expression.transform(t)}),e(tt,function(e,t){e.left=e.left.transform(t),e.right=e.right.transform(t)}),e(nt,function(e,t){e.condition=e.condition.transform(t),e.consequent=e.consequent.transform(t),e.alternative=e.alternative.transform(t)}),e(it,function(e,t){e.elements=n(e.elements,t)}),e(ot,function(e,t){e.properties=n(e.properties,t)}),e(at,function(e,t){e.value=e.value.transform(t)})}(function(e,i){e.DEFMETHOD("transform",function(e,t){var n,r;return e.push(this),e.before&&(n=e.before(this,i,t)),void 0===n&&(i(n=this,e),e.after&&void 0!==(r=e.after(n,t))&&(n=r)),e.pop(),n})}),i.next_id=1,i.prototype={unmangleable:function(e){return e||(e={}),this.global&&!e.toplevel||this.undeclared||!e.eval&&this.scope.pinned()||e.keep_fnames&&(this.orig[0]instanceof ht||this.orig[0]instanceof pt)},mangle:function(e){var t=e.cache&&e.cache.props;if(this.global&&t&&t.has(this.name))this.mangled_name=t.get(this.name);else if(!this.mangled_name&&!this.unmangleable(e)){var n;(n=this.redefined())?this.mangled_name=n.mangled_name||n.name:this.mangled_name=function(e,r,t){var n,i=c(e,r),o=e.cname_holes,a=Object.create(null),s=[e];t.references.forEach(function(e){var t=e.scope;do{if(!(s.indexOf(t)<0))break;for(var n in c(t,r))a[n]=!0;s.push(t)}while(t=t.parent_scope)});for(var u=0,l=o.length;u<l;u++)if(n=m(o[u]),!a[n])return o.splice(u,1),e.names_in_use[n]=!0,n;for(;;)if(n=m(++e.cname),!i[n]&&f(n)&&!r.reserved.has[n]){if(!a[n])break;o.push(e.cname)}return e.names_in_use[n]=!0,n}(this.scope,e,this),this.global&&t&&t.set(this.name,this.mangled_name)}},redefined:function(){return this.defun&&this.defun.variables.get(this.name)}},ke.DEFMETHOD("figure_out_scope",function(a){a=$(a,{cache:null,ie8:!1});var o=this,s=o.parent_scope=null,u=null,l=new Dt(function(e,t){if(e instanceof ze){var n=s;return(s=new xe(e)).init_scope_vars(n),t(),s=n,!0}if(e instanceof xe){e.init_scope_vars(s);n=s;var r=u;return u=s=e,t(),s=n,u=r,!0}if(e instanceof Ae)for(var i=s;i;i=i.parent_scope)i.uses_with=!0;else if(e instanceof ut&&(e.scope=s),e instanceof ee&&((e.thedef=e).references=[]),e instanceof pt)(e.scope=u.parent_scope.resolve()).def_function(e,u);else if(e instanceof ht){var o=u.def_function(e,"arguments"==e.name?void 0:u);a.ie8&&(o.defun=u.parent_scope.resolve())}else if(e instanceof ct){if(u.def_variable(e,"SymbolVar"==e.TYPE?null:void 0),u!==s){e.mark_enclosed(a);o=s.find_variable(e);e.thedef!==o&&(e.thedef=o),e.reference(a)}}else e instanceof dt&&(s.def_variable(e).defun=u)});o.walk(l),o.globals=new L;l=new Dt(function(e){if(e instanceof Re)return e.label&&e.label.thedef.references.push(e),!0;if(e instanceof mt){var t=e.name;if("eval"==t&&l.parent()instanceof Ke)for(var n=e.scope;n&&!n.uses_eval;n=n.parent_scope)n.uses_eval=!0;var r=e.scope.find_variable(t);return r?r.scope instanceof Ce&&"arguments"==t&&(r.scope.uses_arguments=!0):r=o.def_global(e),e.thedef=r,e.reference(a),!0}if(e instanceof dt){var i=e.definition().redefined();if(i)for(n=e.scope;n&&(g(n.enclosed,i),n!==i.scope);n=n.parent_scope);return!0}});function n(e,t){var n=e.name,r=e.thedef.references,i=t.find_variable(n)||o.globals.get(n)||t.def_variable(e);r.forEach(function(e){e.thedef=i,e.reference(a)}),e.thedef=i,e.reference(a)}o.walk(l),a.ie8&&o.walk(new Dt(function(e){if(e instanceof dt)return n(e,e.thedef.defun),!0;if(e instanceof ht){var t=e.thedef;return 1==t.orig.length&&(n(e,e.scope.parent_scope),e.thedef.init=t.init),!0}}))}),ke.DEFMETHOD("def_global",function(e){var t=this.globals,n=e.name;if(t.has(n))return t.get(n);var r=new i(this,e);return r.undeclared=!0,r.global=!0,t.set(n,r),r}),xe.DEFMETHOD("init_scope_vars",function(e){this.variables=new L,this.functions=new L,this.uses_with=!1,this.uses_eval=!1,this.parent_scope=e,this.enclosed=[],this.cname=-1}),Ce.DEFMETHOD("init_scope_vars",function(){xe.prototype.init_scope_vars.apply(this,arguments),this.uses_arguments=!1,this.def_variable(new ft({name:"arguments",start:this.start,end:this.end}))}),ut.DEFMETHOD("mark_enclosed",function(e){for(var t=this.definition(),n=this.scope;n&&(g(n.enclosed,t),e.keep_fnames&&n.functions.each(function(e){g(t.scope.enclosed,e)}),n!==t.scope);n=n.parent_scope);}),ut.DEFMETHOD("reference",function(e){this.definition().references.push(this),this.mark_enclosed(e)}),xe.DEFMETHOD("find_variable",function(e){return e instanceof ut&&(e=e.name),this.variables.get(e)||this.parent_scope&&this.parent_scope.find_variable(e)}),xe.DEFMETHOD("def_function",function(e,t){var n=this.def_variable(e,t);return(!n.init||n.init instanceof De)&&(n.init=t),this.functions.set(e.name,n),n}),xe.DEFMETHOD("def_variable",function(e,t){var n=this.variables.get(e.name);return n?(n.orig.push(e),n.init&&(n.scope!==e.scope||n.init instanceof Se)&&(n.init=t)):(n=new i(this,e,t),this.variables.set(e.name,n),n.global=!this.parent_scope),e.thedef=n}),Ce.DEFMETHOD("resolve",D),xe.DEFMETHOD("resolve",function(){return this.parent_scope}),ke.DEFMETHOD("resolve",D),ut.DEFMETHOD("unmangleable",function(e){var t=this.definition();return!t||t.unmangleable(e)}),ee.DEFMETHOD("unmangleable",ie),ut.DEFMETHOD("unreferenced",function(){return!this.definition().references.length&&!this.scope.pinned()}),ut.DEFMETHOD("definition",function(){return this.thedef}),ut.DEFMETHOD("global",function(){return this.definition().global}),ke.DEFMETHOD("mangle_names",function(s){s=p(s);var u=-1;if(s.cache&&s.cache.props){var t=this.mangled_names=Object.create(null);s.cache.props.each(function(e){t[e]=!0})}var l=[],e=new Dt(function(e,t){if(e instanceof ge){var n=u;return t(),u=n,!0}if(e instanceof xe)return t(),s.cache&&e instanceof ke&&e.globals.each(c),e.variables.each(c),!0;if(e instanceof ee){for(var r;!f(r=m(++u)););return e.mangled_name=r,!0}if(!s.ie8&&e instanceof ze){var i=e.argname.definition(),o=i.redefined();return o&&(l.push(i),a(e.argname),i.references.forEach(a)),t(),o||c(i),!0}function a(e){e.thedef=o,e.reference(s),e.thedef=i}});function c(e){s.reserved.has[e.name]||e.mangle(s)}this.walk(e),l.forEach(c)}),ke.DEFMETHOD("find_colliding_names",function(n){var r=n.cache&&n.cache.props,t=Object.create(null);return n.reserved.forEach(i),this.globals.each(o),this.walk(new Dt(function(e){e instanceof xe&&e.variables.each(o),e instanceof dt&&o(e.definition())})),t;function i(e){t[e]=!0}function o(e){var t=e.name;if(e.global&&r&&r.has(t))t=r.get(t);else if(!e.unmangleable(n))return;i(t)}}),ke.DEFMETHOD("expand_names",function(n){m.reset(),m.sort(),n=p(n);var r=this.find_colliding_names(n),i=0;function t(t){if(!(t.global&&n.cache||t.unmangleable(n)||n.reserved.has[t.name])){var e=t.redefined();t.name=e?e.name:function(){for(var e;e=m(i++),r[e]||!f(e););return e}(),t.orig.forEach(function(e){e.name=t.name}),t.references.forEach(function(e){e.name=t.name})}}this.globals.each(t),this.walk(new Dt(function(e){e instanceof xe&&e.variables.each(t),e instanceof dt&&t(e.definition())}))}),ue.DEFMETHOD("tail_node",D),Ye.DEFMETHOD("tail_node",function(){return this.expressions[this.expressions.length-1]}),ke.DEFMETHOD("compute_char_frequency",function(n){n=p(n),m.reset();try{ue.prototype.print=function(e,t){this._print(e,t),this instanceof ut&&!this.unmangleable(n)?m.consider(this.name,-1):n.properties&&(this instanceof Qe?m.consider(this.property,-1):this instanceof Ze&&function e(t){t instanceof bt?m.consider(t.value,-1):t instanceof nt?(e(t.consequent),e(t.alternative)):t instanceof Ye&&e(t.tail_node())}(this.property))},m.consider(this.print_to_string(),1)}finally{ue.prototype.print=ue.prototype._print}m.sort()});var m=function(){var o=Object.create(null);function e(e){for(var t=[],n=0,r=e.length;n<r;n++){var i=e[n];t.push(i),o[i]=-.01*n}return t}var r,i,t=e("0123456789"),n=e("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_");function a(){i=Object.create(o)}function s(e,t){return i[t]-i[e]}function u(e){var t="",n=54;for(e++;t+=r[--e%n],e=Math.floor(e/n),n=64,0<e;);return t}return u.consider=function(e,t){for(var n=e.length;0<=--n;)i[e[n]]+=t},u.sort=function(){r=n.sort(s).concat(t.sort(s))},(u.reset=a)(),u}(),Qt=/^$|[;{][\s\n]*$/;function Zt(e){return"comment2"==e.type&&/@preserve|@license|@cc_on/i.test(e.value)}function Jt(s){var e=!s;s=$(s,{ascii_only:!1,beautify:!1,braces:!1,comments:!1,ie8:!1,indent_level:4,indent_start:0,inline_script:!0,keep_quoted_props:!1,max_line_len:!1,preamble:null,preserve_line:!1,quote_keys:!1,quote_style:0,semicolons:!0,shebang:!0,source_map:null,webkit:!1,width:80,wrap_iife:!1},!0);var u=ie;if(s.comments){var t=s.comments;if("string"==typeof s.comments&&/^\/.*\/[a-zA-Z]*$/.test(s.comments)){var n=s.comments.lastIndexOf("/");t=new RegExp(s.comments.substr(1,n-1),s.comments.substr(n+1))}u=t instanceof RegExp?function(e){return"comment5"!=e.type&&t.test(e.value)}:"function"==typeof t?function(e){return"comment5"!=e.type&&t(this,e)}:"some"===t?Zt:Y}var i=0,o=0,a=1,l=0,c="",f=s.ascii_only?function(e,n){return e.replace(/[\u0000-\u001f\u007f-\uffff]/g,function(e){var t=e.charCodeAt(0).toString(16);if(t.length<=2&&!n){for(;t.length<2;)t="0"+t;return"\\x"+t}for(;t.length<4;)t="0"+t;return"\\u"+t})}:function(e){for(var t="",n=0,r=e.length;n<r;n++)Rt(e[n])&&!Lt(e[n+1])||Lt(e[n])&&!Rt(e[n-1])?t+="\\u"+e.charCodeAt(n).toString(16):t+=e[n];return t};function p(e,t){var n=function(n,e){var r=0,i=0;function t(){return"'"+n.replace(/\x27/g,"\\'")+"'"}function o(){return'"'+n.replace(/\x22/g,'\\"')+'"'}switch(n=n.replace(/[\\\b\f\n\r\v\t\x22\x27\u2028\u2029\0\ufeff]/g,function(e,t){switch(e){case'"':return++r,'"';case"'":return++i,"'";case"\\":return"\\\\";case"\n":return"\\n";case"\r":return"\\r";case"\t":return"\\t";case"\b":return"\\b";case"\f":return"\\f";case"\v":return s.ie8?"\\x0B":"\\v";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";case"\ufeff":return"\\ufeff";case"\0":return/[0-9]/.test(n.charAt(t+1))?"\\x00":"\\0"}return e}),n=f(n),s.quote_style){case 1:return t();case 2:return o();case 3:return"'"==e?t():o();default:return i<r?t():o()}}(e,t);return s.inline_script&&(n=(n=(n=n.replace(/<\x2f(script)([>\/\t\n\f\r ])/gi,"<\\/$1$2")).replace(/\x3c!--/g,"\\x3c!--")).replace(/--\x3e/g,"--\\x3e")),n}function r(e){return function e(t,n){if(n<=0)return"";if(1==n)return t;var r=e(t,n>>1);return r+=r,1&n?r+t:r}(" ",s.indent_start+i-e*s.indent_level)}var h,d,m=!1,g=0,v=!0,b=!1,y=!1,_=!1,w=!1,E=-1,A="",x=s.source_map&&[],k=x?function(t,n){x.forEach(function(e){e.line+=t,e.col+=n})}:G,C=x?function(){x.forEach(function(t){try{s.source_map.add(t.token.file,t.line,t.col,t.token.line,t.token.col,t.name||"name"!=t.token.type?t.name:t.token.value)}catch(e){ue.warn("Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]",{file:t.token.file,line:t.token.line,col:t.token.col,cline:t.line,ccol:t.col,name:t.name||""})}}),x=[]}:G;function O(e){var t=c.lastIndexOf("\n");g<t&&(g=t);var n=c.slice(0,g),r=c.slice(g);for(k(e,r.length-o),a+=e,l+=e,o=r.length,c=n;e--;)c+="\n";c+=r}var S=s.max_line_len?function(){v?o>s.max_line_len&&ue.warn("Output exceeds {max_line_len} characters",s):(o>s.max_line_len&&O(1),v=!0,C())}:G,D=W("( [ + * / - , .");function T(e){var t=(e=String(e)).charAt(0);_&&t&&(_=!1,"\n"!=t&&(T("\n"),R())),w&&t&&(w=!1,/[\s;})]/.test(t)||B()),E=-1;var n=A.charAt(A.length-1);y&&(y=!1,(":"==n&&"}"==t||(!t||";}".indexOf(t)<0)&&";"!=n)&&(s.semicolons||D[t]?(c+=";",o++,l++):(S(),c+="\n",l++,a++,o=0,/^\s+$/.test(e)&&(y=!0)),s.beautify||(b=!1))),b&&((Ut(n)&&(Ut(t)||"\\"==t)||"/"==t&&t==n||("+"==t||"-"==t)&&t==A)&&(c+=" ",o++,l++),b=!1),h&&(x.push({token:h,name:d,line:a,col:o}),h=!1,v&&C()),c+=e,m="("==e[e.length-1],l+=e.length;var r=e.split(/\r?\n/),i=r.length-1;a+=i,o+=r[0].length,0<i&&(S(),o=r[i].length),A=e}var B=s.beautify?function(){T(" ")}:function(){b=!0},R=s.beautify?function(e){s.beautify&&T(r(e?.5:0))}:G,L=s.beautify?function(e,t){!0===e&&(e=N());var n=i;i=e;var r=t();return i=n,r}:function(e,t){return t()},F=s.max_line_len||s.preserve_line?function(){S(),g=c.length,v=!1}:G,q=s.beautify?function(){if(E<0)return T("\n");"\n"!=c[E]&&(c=c.slice(0,E)+"\n"+c.slice(E),l++,a++),E++}:F,U=s.beautify?function(){T(";")}:function(){y=!0};function M(){y=!1,T(";")}function N(){return i+s.indent_level}function P(){return v||S(),c}function I(){var e=c.lastIndexOf("\n");return/^ *$/.test(c.slice(e+1))}var z=[];return{get:P,toString:P,indent:R,indentation:function(){return i},current_width:function(){return o-i},should_break:function(){return s.width&&this.current_width()>=s.width},has_parens:function(){return m},newline:q,print:T,space:B,comma:function(){F(),T(","),F(),B()},colon:function(){T(":"),B()},last:function(){return A},semicolon:U,force_semicolon:M,to_utf8:f,print_name:function(e){var t;T((t=(t=e).toString(),t=f(t,!0)))},print_string:function(e,t,n){var r=p(e,t);!0===n&&-1===r.indexOf("\\")&&(Qt.test(c)||M(),M()),T(r)},encode_string:p,next_indent:N,with_indent:L,with_block:function(e){var t;return T("{"),q(),L(N(),function(){t=e()}),R(),T("}"),t},with_parens:function(e){T("("),F();var t=e();return F(),T(")"),t},with_square:function(e){T("["),F();var t=e();return F(),T("]"),t},add_mapping:x?function(e,t){h=e,d=t}:G,option:function(e){return s[e]},prepend_comments:e?G:function(e){var r=this,t=e.start;if(t&&(!t.comments_before||t.comments_before._dumped!==r)){var i=t.comments_before;if(i||(i=t.comments_before=[]),i._dumped=r,e instanceof Te&&e.value){var o=new Dt(function(e){var t=o.parent();if(!(t instanceof Te||t instanceof tt&&t.left===e||"Call"==t.TYPE&&t.expression===e||t instanceof nt&&t.condition===e||t instanceof Qe&&t.expression===e||t instanceof Ye&&t.expressions[0]===e||t instanceof Ze&&t.expression===e||t instanceof et))return!0;var n=e.start.comments_before;n&&n._dumped!==r&&(n._dumped=r,i=i.concat(n))});o.push(e),e.value.walk(o)}if(0==l){0<i.length&&s.shebang&&"comment5"==i[0].type&&(T("#!"+i.shift().value+"\n"),R());var n=s.preamble;n&&T(n.replace(/\r\n?|[\n\u2028\u2029]|\s*$/g,"\n"))}if(0!=(i=i.filter(u,e)).length){var a=I();i.forEach(function(e,t){a||(e.nlb?(T("\n"),R(),a=!0):0<t&&B()),/comment[134]/.test(e.type)?(T("//"+e.value.replace(/[@#]__PURE__/g," ")+"\n"),R(),a=!0):"comment2"==e.type&&(T("/*"+e.value.replace(/[@#]__PURE__/g," ")+"*/"),a=!1)}),a||(t.nlb?(T("\n"),R()):B())}}},append_comments:e||u===ie?G:function(e,n){var t=e.end;if(t){var r=t[n?"comments_before":"comments_after"];if(r&&r._dumped!==this&&(e instanceof le||ae(r,function(e){return!/comment[134]/.test(e.type)}))){r._dumped=this;var i=c.length;r.filter(u,e).forEach(function(e,t){w=!1,_?(T("\n"),R(),_=!1):e.nlb&&(0<t||!I())?(T("\n"),R()):(0<t||!n)&&B(),/comment[134]/.test(e.type)?(T("//"+e.value.replace(/[@#]__PURE__/g," ")),_=!0):"comment2"==e.type&&(T("/*"+e.value.replace(/[@#]__PURE__/g," ")+"*/"),w=!0)}),c.length>i&&(E=i)}}},line:function(){return a},col:function(){return o},pos:function(){return l},push_node:function(e){z.push(e)},pop_node:s.preserve_line?function(){var e=z.pop();e.start&&e.start.line>a&&O(e.start.line-a)}:function(){z.pop()},parent:function(e){return z[z.length-2-(e||0)]}}}function Xt(e,t){if(!(this instanceof Xt))return new Xt(e,t);Wt.call(this,this.before,this.after),this.options=$(e,{arguments:!t,booleans:!t,collapse_vars:!t,comparisons:!t,conditionals:!t,dead_code:!t,directives:!t,drop_console:!1,drop_debugger:!t,evaluate:!t,expression:!1,global_defs:!1,hoist_funs:!1,hoist_props:!t,hoist_vars:!1,ie8:!1,if_return:!t,inline:!t,join_vars:!t,keep_fargs:!0,keep_fnames:!1,keep_infinity:!1,loops:!t,negate_iife:!t,passes:1,properties:!t,pure_getters:!t&&"strict",pure_funcs:null,reduce_funcs:!t,reduce_vars:!t,sequences:!t,side_effects:!t,switches:!t,top_retain:null,toplevel:!(!e||!e.top_retain),typeofs:!t,unsafe:!1,unsafe_comps:!1,unsafe_Function:!1,unsafe_math:!1,unsafe_proto:!1,unsafe_regexp:!1,unsafe_undefined:!1,unused:!t,warnings:!1},!0);var n=this.options.global_defs;if("object"==typeof n)for(var r in n)/^@/.test(r)&&se(n,r)&&(n[r.slice(1)]=Yt(n[r],{expression:!0}));!0===this.options.inline&&(this.options.inline=3);var i=this.options.pure_funcs;this.pure_funcs="function"==typeof i?i:i?function(e){return i.indexOf(e.expression.print_to_string())<0}:Y;var o=this.options.top_retain;o instanceof RegExp?this.top_retain=function(e){return o.test(e.name)}:"function"==typeof o?this.top_retain=o:o&&("string"==typeof o&&(o=o.split(/,/)),this.top_retain=function(e){return 0<=o.indexOf(e.name)});var a=this.options.toplevel;this.toplevel="string"==typeof a?{funcs:/funcs/.test(a),vars:/vars/.test(a)}:{funcs:a,vars:a};var s=this.options.sequences;this.sequences_limit=1==s?800:0|s,this.warnings_produced={}}function y(e,t){e.walk(new Dt(function(e){return e instanceof Ye?y(e.tail_node(),t):e instanceof bt?t(e.value):e instanceof nt&&(y(e.consequent,t),y(e.alternative,t)),!0}))}function _(e,t){var n=(t=$(t,{builtins:!1,cache:null,debug:!1,keep_quoted:!1,only_cache:!1,regex:null,reserved:null},!0)).reserved;Array.isArray(n)||(n=[]),t.builtins||function(t){function n(e){g(t,e)}["null","true","false","Infinity","-Infinity","undefined"].forEach(n),[Array,Boolean,Date,Error,Function,Math,Number,Object,RegExp,String].forEach(function(e){Object.getOwnPropertyNames(e).map(n),e.prototype&&Object.getOwnPropertyNames(e.prototype).map(n)})}(n);var r,i=-1;t.cache?(r=t.cache.props).each(function(e){g(n,e)}):r=new L;var o,a=t.regex,s=!1!==t.debug;s&&(o=!0===t.debug?"":t.debug);var u=[],l=[];return e.walk(new Dt(function(e){e instanceof st?p(e.key):e instanceof at?p(e.key.name):e instanceof Qe?p(e.property):e instanceof Ze?y(e.property,p):e instanceof Ke&&"Object.defineProperty"==e.expression.print_to_string()&&y(e.args[1],p)})),e.transform(new Wt(function(e){e instanceof st?e.key=h(e.key):e instanceof at?e.key.name=h(e.key.name):e instanceof Qe?e.property=h(e.property):!t.keep_quoted&&e instanceof Ze?e.property=d(e.property):e instanceof Ke&&"Object.defineProperty"==e.expression.print_to_string()&&(e.args[1]=d(e.args[1]))}));function c(e){return!(0<=l.indexOf(e))&&(!(0<=n.indexOf(e))&&(t.only_cache?r.has(e):!/^-?[0-9]+(\.[0-9]+)?(e[+-][0-9]+)?$/.test(e)))}function f(e){return!(a&&!a.test(e))&&(!(0<=n.indexOf(e))&&(r.has(e)||0<=u.indexOf(e)))}function p(e){c(e)&&g(u,e),f(e)||g(l,e)}function h(e){if(!f(e))return e;var t=r.get(e);if(!t){if(s){var n="_$"+e+"$"+o+"_";c(n)&&(t=n)}if(!t)for(;!c(t=m(++i)););r.set(e,t)}return t}function d(e){return e.transform(new Wt(function(e){if(e instanceof Ye){var t=e.expressions.length-1;e.expressions[t]=d(e.expressions[t])}else e instanceof bt?e.value=h(e.value):e instanceof nt&&(e.consequent=d(e.consequent),e.alternative=d(e.alternative));return e}))}}!function(){function e(e,t){e.DEFMETHOD("_codegen",t)}var o=!1,a=null,s=null;function n(e,t){Array.isArray(e)?e.forEach(function(e){n(e,t)}):e.DEFMETHOD("needs_parens",t)}function r(e,n,r,t){var i=e.length-1;o=t,e.forEach(function(e,t){!0!==o||e instanceof fe||e instanceof me||e instanceof pe&&e.body instanceof bt||(o=!1),e instanceof me||(r.indent(),e.print(r),t==i&&n||(r.newline(),n&&r.newline())),!0===o&&e instanceof pe&&e.body instanceof bt&&(o=!1)}),o=!1}function i(e,t){t.print("{"),t.with_indent(t.next_indent(),function(){t.append_comments(e,!0)}),t.print("}")}function u(e,t,n){0<e.body.length?t.with_block(function(){r(e.body,!1,t,n)}):i(e,t)}function l(e,t,n){e.print(t),n&&(e.space(),n.print(e)),e.semicolon()}function c(e,t,n){var r=!1;n&&e.walk(new Dt(function(e){return!!(r||e instanceof xe)||(e instanceof tt&&"in"==e.operator?r=!0:void 0)})),e.print(t,r)}function f(e,t,n){n.option("quote_keys")?n.print_string(e):""+ +e==e&&0<=e?n.print(d(e)):(b[e]?!n.option("ie8"):Mt(e))?t&&n.option("keep_quoted_props")?n.print_string(e,t):n.print_name(e):n.print_string(e,t)}function p(e,t){t.option("braces")?m(e,t):!e||e instanceof me?t.force_semicolon():e.print(t)}function h(e,t){return 0<e.args.length||t.option("beautify")}function d(e){var t,n,r,i=e.toString(10).replace(/^0\./,".").replace("e+","e"),o=[i];return Math.floor(e)===e&&(e<0?o.push("-0x"+(-e).toString(16).toLowerCase()):o.push("0x"+e.toString(16).toLowerCase())),(t=/^\.0+/.exec(i))?(n=t[0].length,r=i.slice(n),o.push(r+"e-"+(r.length+n-1))):(t=/0+$/.exec(i))?(n=t[0].length,o.push(i.slice(0,-n)+"e"+n)):(t=/^(\d)\.(\d+)e(-?\d+)$/.exec(i))&&o.push(t[1]+t[2]+"e"+(t[3]-t[2].length)),function(e){for(var t=e[0],n=t.length,r=1;r<e.length;++r)e[r].length<n&&(n=(t=e[r]).length);return t}(o)}function m(e,t){!e||e instanceof me?t.print("{}"):e instanceof de?e.print(t):t.with_block(function(){t.indent(),e.print(t),t.newline()})}function t(e,t){e.forEach(function(e){e.DEFMETHOD("add_source_map",t)})}ue.DEFMETHOD("print",function(e,t){var n=this,r=n._codegen;function i(){e.prepend_comments(n),n.add_source_map(e),r(n,e),e.append_comments(n)}n instanceof xe?a=n:!s&&n instanceof fe&&"use asm"==n.value&&(s=a),e.push_node(n),t||n.needs_parens(e)?e.with_parens(i):i(),e.pop_node(),n===s&&(s=null)}),ue.DEFMETHOD("_print",ue.prototype.print),ue.DEFMETHOD("print_to_string",function(e){var t=Jt(e);return this.print(t),t.get()}),n(ue,ie),n(Se,function(e){if(!e.has_parens()&&F(e))return!0;var t;if(e.option("webkit")&&((t=e.parent())instanceof We&&t.expression===this))return!0;if(e.option("wrap_iife")&&((t=e.parent())instanceof Ke&&t.expression===this))return!0}),n(ot,function(e){return!e.has_parens()&&F(e)}),n(Je,function(e){var t=e.parent();return t instanceof We&&t.expression===this||t instanceof Ke&&t.expression===this}),n(Ye,function(e){var t=e.parent();return t instanceof Ke||t instanceof Je||t instanceof tt||t instanceof $e||t instanceof We||t instanceof it||t instanceof at||t instanceof nt}),n(tt,function(e){var t=e.parent();if(t instanceof Ke&&t.expression===this)return!0;if(t instanceof Je)return!0;if(t instanceof We&&t.expression===this)return!0;if(t instanceof tt){var n=t.operator,r=Kt[n],i=this.operator,o=Kt[i];if(o<r||r==o&&this===t.right)return!0}}),n(We,function(e){var t=e.parent();if(t instanceof Ge&&t.expression===this){var n=!1;return this.walk(new Dt(function(e){return!!(n||e instanceof xe)||(e instanceof Ke?n=!0:void 0)})),n}}),n(Ke,function(e){var t=e.parent();if(t instanceof Ge&&t.expression===this)return!0;if(e.option("webkit")){var n=e.parent(1);return this.expression instanceof Se&&t instanceof We&&t.expression===this&&n instanceof rt&&n.left===t}}),n(Ge,function(e){var t=e.parent();if(!h(this,e)&&(t instanceof We||t instanceof Ke&&t.expression===this))return!0}),n(yt,function(e){var t=e.parent();if(t instanceof We&&t.expression===this){var n=this.getValue();if(n<0||/^0/.test(d(n)))return!0}}),n([rt,nt],function(e){var t=e.parent();return t instanceof Je||(t instanceof tt&&!(t instanceof rt)||(t instanceof Ke&&t.expression===this||(t instanceof nt&&t.condition===this||(t instanceof We&&t.expression===this||void 0))))}),e(fe,function(e,t){t.print_string(e.value,e.quote),t.semicolon()}),e(ce,function(e,t){t.print("debugger"),t.semicolon()}),v.DEFMETHOD("_do_print_body",function(e){p(this.body,e)}),e(le,function(e,t){e.body.print(t),t.semicolon()}),e(ke,function(e,t){r(e.body,!0,t,!0),t.print("")}),e(ge,function(e,t){e.label.print(t),t.colon(),e.body.print(t)}),e(pe,function(e,t){e.body.print(t),t.semicolon()}),e(de,function(e,t){u(e,t)}),e(me,function(e,t){t.semicolon()}),e(ye,function(e,t){t.print("do"),t.space(),m(e.body,t),t.space(),t.print("while"),t.space(),t.with_parens(function(){e.condition.print(t)}),t.semicolon()}),e(_e,function(e,t){t.print("while"),t.space(),t.with_parens(function(){e.condition.print(t)}),t.space(),e._do_print_body(t)}),e(we,function(e,t){t.print("for"),t.space(),t.with_parens(function(){e.init?(e.init instanceof Ve?e.init.print(t):c(e.init,t,!0),t.print(";"),t.space()):t.print(";"),e.condition?(e.condition.print(t),t.print(";"),t.space()):t.print(";"),e.step&&e.step.print(t)}),t.space(),e._do_print_body(t)}),e(Ee,function(e,t){t.print("for"),t.space(),t.with_parens(function(){e.init.print(t),t.space(),t.print("in"),t.space(),e.object.print(t)}),t.space(),e._do_print_body(t)}),e(Ae,function(e,t){t.print("with"),t.space(),t.with_parens(function(){e.expression.print(t)}),t.space(),e._do_print_body(t)}),Ce.DEFMETHOD("_do_print",function(n,e){var t=this;e||n.print("function"),t.name&&(n.space(),t.name.print(n)),n.with_parens(function(){t.argnames.forEach(function(e,t){t&&n.comma(),e.print(n)})}),n.space(),u(t,n,!0)}),e(Ce,function(e,t){e._do_print(t)}),e(Be,function(e,t){l(t,"return",e.value)}),e(Q,function(e,t){l(t,"throw",e.value)}),e(Le,function(e,t){l(t,"break",e.label)}),e(Fe,function(e,t){l(t,"continue",e.label)}),e(qe,function(e,t){t.print("if"),t.space(),t.with_parens(function(){e.condition.print(t)}),t.space(),e.alternative?(!function(e,t){var n=e.body;if(t.option("braces")||t.option("ie8")&&n instanceof ye)return m(n,t);if(!n)return t.force_semicolon();for(;;)if(n instanceof qe){if(!n.alternative)return m(e.body,t);n=n.alternative}else{if(!(n instanceof v))break;n=n.body}p(e.body,t)}(e,t),t.space(),t.print("else"),t.space(),e.alternative instanceof qe?e.alternative.print(t):p(e.alternative,t)):e._do_print_body(t)}),e(Ue,function(e,n){n.print("switch"),n.space(),n.with_parens(function(){e.expression.print(n)}),n.space();var r=e.body.length-1;r<0?i(e,n):n.with_block(function(){e.body.forEach(function(e,t){n.indent(!0),e.print(n),t<r&&0<e.body.length&&n.newline()})})}),Me.DEFMETHOD("_do_print_body",function(t){t.newline(),this.body.forEach(function(e){t.indent(),e.print(t),t.newline()})}),e(Ne,function(e,t){t.print("default:"),e._do_print_body(t)}),e(Pe,function(e,t){t.print("case"),t.space(),e.expression.print(t),t.print(":"),e._do_print_body(t)}),e(Ie,function(e,t){t.print("try"),t.space(),u(e,t),e.bcatch&&(t.space(),e.bcatch.print(t)),e.bfinally&&(t.space(),e.bfinally.print(t))}),e(ze,function(e,t){t.print("catch"),t.space(),t.with_parens(function(){e.argname.print(t)}),t.space(),u(e,t)}),e(je,function(e,t){t.print("finally"),t.space(),u(e,t)}),e(He,function(e,n){n.print("var"),n.space(),e.definitions.forEach(function(e,t){t&&n.comma(),e.print(n)});var t=n.parent();(t&&t.init!==e||!(t instanceof we||t instanceof Ee))&&n.semicolon()}),e($e,function(e,t){if(e.name.print(t),e.value){t.space(),t.print("="),t.space();var n=t.parent(1),r=n instanceof we||n instanceof Ee;c(e.value,t,r)}}),e(Ke,function(e,n){e.expression.print(n),e instanceof Ge&&!h(e,n)||((e.expression instanceof Ke||e.expression instanceof Ce)&&n.add_mapping(e.start),n.with_parens(function(){e.args.forEach(function(e,t){t&&n.comma(),e.print(n)})}))}),e(Ge,function(e,t){t.print("new"),t.space(),Ke.prototype._codegen(e,t)}),e(Ye,function(e,n){e.expressions.forEach(function(e,t){0<t&&(n.comma(),n.should_break()&&(n.newline(),n.indent())),e.print(n)})}),e(Qe,function(e,t){var n=e.expression;n.print(t);var r=e.property;t.option("ie8")&&b[r]?(t.print("["),t.add_mapping(e.end),t.print_string(r),t.print("]")):(n instanceof yt&&0<=n.getValue()&&(/[xa-f.)]/i.test(t.last())||t.print(".")),t.print("."),t.add_mapping(e.end),t.print_name(r))}),e(Ze,function(e,t){e.expression.print(t),t.print("["),e.property.print(t),t.print("]")}),e(Xe,function(e,t){var n=e.operator;t.print(n),(/^[a-z]/i.test(n)||/[+-]$/.test(n)&&e.expression instanceof Xe&&/^[+-]/.test(e.expression.operator))&&t.space(),e.expression.print(t)}),e(et,function(e,t){e.expression.print(t),t.print(e.operator)}),e(tt,function(e,t){var n=e.operator;e.left.print(t),">"==n[0]&&e.left instanceof et&&"--"==e.left.operator?t.print(" "):t.space(),t.print(n),("<"==n||"<<"==n)&&e.right instanceof Xe&&"!"==e.right.operator&&e.right.expression instanceof Xe&&"--"==e.right.expression.operator?t.print(" "):t.space(),e.right.print(t)}),e(nt,function(e,t){e.condition.print(t),t.space(),t.print("?"),t.space(),e.consequent.print(t),t.space(),t.colon(),e.alternative.print(t)}),e(it,function(t,r){r.with_square(function(){var e=t.elements,n=e.length;0<n&&r.space(),e.forEach(function(e,t){t&&r.comma(),e.print(r),t===n-1&&e instanceof xt&&r.comma()}),0<n&&r.space()})}),e(ot,function(e,n){0<e.properties.length?n.with_block(function(){e.properties.forEach(function(e,t){t&&(n.print(","),n.newline()),n.indent(),e.print(n)}),n.newline()}):i(e,n)}),e(st,function(e,t){f(e.key,e.quote,t),t.colon(),e.value.print(t)}),at.DEFMETHOD("_print_getter_setter",function(e,t){t.print(e),t.space(),f(this.key.name,this.quote,t),this.value._do_print(t,!0)}),e(Z,function(e,t){e._print_getter_setter("set",t)}),e(J,function(e,t){e._print_getter_setter("get",t)}),e(ut,function(e,t){var n=e.definition();t.print_name(n?n.mangled_name||n.name:e.name)}),e(xt,G),e(gt,function(e,t){t.print("this")}),e(vt,function(e,t){t.print(e.getValue())}),e(bt,function(e,t){t.print_string(e.getValue(),e.quote,o)}),e(yt,function(e,t){s&&e.start&&null!=e.start.raw?t.print(e.start.raw):t.print(d(e.getValue()))}),e(_t,function(e,t){var n=e.getValue(),r=n.toString();n.raw_source&&(r="/"+n.raw_source+r.slice(r.lastIndexOf("/"))),r=t.to_utf8(r),t.print(r);var i=t.parent();i instanceof tt&&/^in/.test(i.operator)&&i.left===e&&t.print(" ")}),t([ue,ge,ke],G),t([it,de,ze,vt,ce,Ve,fe,je,U,Ce,Ge,ot,v,ut,Ue,Me,Ie],function(e){e.add_mapping(this.start)}),t([J,Z],function(e){e.add_mapping(this.start,this.key.name)}),t([at],function(e){e.add_mapping(this.start,this.key)})}(),n(Xt.prototype=new Wt,{option:function(e){return this.options[e]},exposed:function(e){if(e.global)for(var t=0,n=e.orig.length;t<n;t++)if(!this.toplevel[e.orig[t]instanceof pt?"funcs":"vars"])return!0;return!1},compress:function(e){e=e.resolve_defines(this),this.option("expression")&&e.process_expression(!0);for(var t=+this.options.passes||1,n=1/0,r=!1,i={ie8:this.option("ie8")},o=0;o<t;o++)if(e.figure_out_scope(i),(0<o||this.option("reduce_vars"))&&e.reset_opt_flags(this),e=e.transform(this),1<t){var a=0;if(e.walk(new Dt(function(){a++})),this.info("pass "+o+": last_count: "+n+", count: "+a),a<n)n=a,r=!1;else{if(r)break;r=!0}}return this.option("expression")&&e.process_expression(!1),e},info:function(){"verbose"==this.options.warnings&&ue.warn.apply(ue,arguments)},warn:function(e,t){if(this.options.warnings){var n=B(e,t);n in this.warnings_produced||(this.warnings_produced[n]=!0,ue.warn.apply(ue,arguments))}},clear_warnings:function(){this.warnings_produced={}},before:function(e,t,n){if(e._squeezed)return e;var r=e instanceof xe;r&&(e.hoist_properties(this),e.hoist_declarations(this)),t(e,this),t(e,this);var i=e.optimize(this);return r&&(i.drop_unused(this),t(i,this)),i===e&&(i._squeezed=!0),i}}),function(e){function m(e,t){if(!((t=d(t))instanceof ue)){var n;if(e instanceof it){var r=e.elements;if("length"==t)return N(r.length,e);"number"==typeof t&&t in r&&(n=r[t])}else if(e instanceof ot){t=""+t;for(var i=e.properties,o=i.length;0<=--o;){if(!(i[o]instanceof st))return;n||i[o].key!==t||(n=i[o].value)}}return n instanceof mt&&n.fixed_value()||n}}function Q(e,t,n,r,i,o){var a=t.parent(i),s=ne(n,a);if(s)return s;if(!o&&a instanceof Ke&&a.expression===n&&!a.is_expr_pure(e)&&(!(r instanceof Se)||!(a instanceof Ge)&&r.contains_this()))return!0;if(a instanceof it)return Q(e,t,a,a,i+1);if(a instanceof st&&n===a.value){var u=t.parent(i+1);return Q(e,t,u,u,i+2)}if(a instanceof We&&a.expression===n){var l=m(r,a.property);return!o&&Q(e,t,a,l,i+1)}}function Z(e){if(e instanceof gt)return!0;if(e instanceof mt)return e.definition().orig[0]instanceof ht;if(e instanceof We){if((e=e.expression)instanceof mt){if(e.is_immutable())return!1;e=e.fixed_value()}return!e||(!!e.is_constant()||Z(e))}return!1}function o(e,t){for(var n,r=0;(n=e.parent(r++))&&!(n instanceof xe);)if(n instanceof ze){n=n.argname.definition().scope;break}return n.find_variable(t)}function J(e,t,n){return n||(n={}),t&&(n.start||(n.start=t.start),n.end||(n.end=t.end)),new e(n)}function M(e,t){return 1==t.length?t[0]:J(Ye,e,{expressions:t.reduce(h,[])})}function N(e,t){switch(typeof e){case"string":return J(bt,t,{value:e});case"number":return isNaN(e)?J(Et,t):isFinite(e)?1/e<0?J(Xe,t,{operator:"-",expression:J(yt,t,{value:-e})}):J(yt,t,{value:e}):e<0?J(Xe,t,{operator:"-",expression:J(kt,t)}):J(kt,t);case"boolean":return J(e?St:Ot,t);case"undefined":return J(At,t);default:if(null===e)return J(wt,t,{value:null});if(e instanceof RegExp)return J(_t,t,{value:e});throw new Error(B("Can't handle constant of type: {type}",{type:typeof e}))}}function a(e,t){return t instanceof We||e.has_directive("use strict")&&z(t)&&"eval"==t.name}function X(e,t,n,r){return t instanceof Xe&&"delete"==t.operator||"Call"==t.TYPE&&t.expression===n&&a(e,r)?M(n,[J(yt,n,{value:0}),r]):r}function h(e,t){return t instanceof Ye?e.push.apply(e,t.expressions):e.push(t),e}function _(e){if(null===e)return[];if(e instanceof de)return e.body;if(e instanceof me)return[];if(e instanceof le)return[e];throw new Error("Can't convert thing to statement array")}function P(e){return null===e||(e instanceof me||e instanceof de&&0==e.body.length)}function w(e){return e instanceof ve&&e.body instanceof de?e.body:e}function ee(e){for(;e instanceof We;)e=e.expression;return e}function I(e){return"Call"==e.TYPE&&(e.expression instanceof Se||I(e.expression))}function z(e){return e instanceof mt&&e.definition().undeclared}e(ue,function(e,t){return e}),ue.DEFMETHOD("equivalent_to",function(e){return this.TYPE==e.TYPE&&this.print_to_string()==e.print_to_string()}),xe.DEFMETHOD("process_expression",function(r,i){var o=this,a=new Wt(function(e){if(r&&e instanceof pe)return J(Be,e,{value:e.body});if(!r&&e instanceof Be){if(i){var t=e.value&&e.value.drop_side_effect_free(i,!0);return t?J(pe,e,{body:t}):J(me,e)}return J(pe,e,{body:e.value||J(Xe,e,{operator:"void",expression:J(yt,e,{value:0})})})}if(e instanceof Ce&&e!==o)return e;if(e instanceof he){var n=e.body.length-1;0<=n&&(e.body[n]=e.body[n].transform(a))}else e instanceof qe?(e.body=e.body.transform(a),e.alternative&&(e.alternative=e.alternative.transform(a))):e instanceof Ae&&(e.body=e.body.transform(a));return e});o.transform(a)}),function(e){function r(e,t,n){n.assignments=0,n.chained=!1,n.direct_access=!1,n.escaped=!1,n.fixed=!n.scope.pinned()&&!t.exposed(n)&&!(n.init instanceof Se&&n.init!==n.scope)&&n.init,n.fixed instanceof De&&!ae(n.references,function(e){var t=e.scope;do{if(n.scope===t)return!0}while(t instanceof Se&&(t=t.parent_scope))})&&(e.defun_ids[n.id]=!1),n.recursive_refs=0,n.references=[],n.should_replace=void 0,n.single_use=void 0}function a(t,n,e){e.variables.each(function(e){r(t,n,e),null===e.fixed?(e.safe_ids=t.safe_ids,f(t,e,!0)):e.fixed&&(t.loop_ids[e.id]=t.in_loop,f(t,e,!0))}),e.may_call_this=function(){e.may_call_this=G,e.contains_this()&&e.functions.each(function(e){e.init instanceof De&&!(e.id in t.defun_ids)&&(t.defun_ids[e.id]=!1)})}}function c(t,n){if(n.id in t.defun_ids){var e=t.defun_ids[n.id];if(!e)return;var r=t.defun_visited[n.id];if(e===t.safe_ids){if(!r)return n.fixed}else r?n.init.enclosed.forEach(function(e){n.init.variables.get(e.name)!==e&&(p(t,e)||(e.fixed=!1))}):t.defun_ids[n.id]=!1}else{if(!t.in_loop)return t.defun_ids[n.id]=t.safe_ids,n.fixed;t.defun_ids[n.id]=!1}}function s(t,e){e.functions.each(function(e){e.init instanceof De&&!t.defun_visited[e.id]&&(t.defun_ids[e.id]=t.safe_ids,e.init.walk(t))})}function u(e){e.safe_ids=Object.create(e.safe_ids)}function l(e){e.safe_ids=Object.getPrototypeOf(e.safe_ids)}function f(e,t,n){e.safe_ids[t.id]=n}function p(e,t){if("m"==t.single_use)return!1;if(e.safe_ids[t.id]){if(null==t.fixed){var n=t.orig[0];if(n instanceof ft||"arguments"==n.name)return!1;t.fixed=J(At,n)}return!0}return t.fixed instanceof De}function h(e,t,n,r){return void 0===t.fixed||(null===t.fixed&&t.safe_ids?(t.safe_ids[t.id]=!1,delete t.safe_ids,!0):!!se(e.safe_ids,t.id)&&(!!p(e,t)&&(!1!==t.fixed&&(!(null!=t.fixed&&(!r||t.references.length>t.assignments))&&(t.fixed instanceof De?r instanceof ue&&t.fixed.parent_scope===n:ae(t.orig,function(e){return!(e instanceof pt||e instanceof ht)}))))))}function d(e,t,n,r,i,o,a){var s=e.parent(o);if(!i||!i.is_constant()){if(s instanceof rt&&"="==s.operator&&r===s.right||s instanceof Ke&&(r!==s.expression||s instanceof Ge)||s instanceof Te&&r===s.value&&r.scope!==t.scope||s instanceof $e&&r===s.value)return!(1<a)||i&&i.is_constant_expression(n)||(a=1),void((!t.escaped||t.escaped>a)&&(t.escaped=a));if(s instanceof it||s instanceof tt&&te[s.operator]||s instanceof nt&&r!==s.condition||s instanceof Ye&&r===s.tail_node())d(e,t,n,s,s,o+1,a);else if(s instanceof st&&r===s.value){var u=e.parent(o+1);d(e,t,n,u,u,o+2,a)}else if(s instanceof We&&r===s.expression&&(d(e,t,n,s,i=m(i,s.property),o+1,a+1),i))return;0<o||s instanceof Ye&&r!==s.tail_node()||s instanceof pe||(t.direct_access=!0)}}e(ue,G);var n=new Dt(function(e){if(e instanceof ut){var t=e.definition();t&&(e instanceof mt&&t.references.push(e),t.fixed=!1)}});e(Oe,function(e,t,n){return u(e),a(e,n,this),t(),l(e),s(e,this),!0}),e(rt,function(e,t,n){var r=this,i=r.left;if(i instanceof mt){var o=i.definition(),a=h(e,o,i.scope,r.right);if(o.assignments++,a){var s=o.fixed;if(s||"="==r.operator){var u="="==r.operator,l=u?r.right:r;if(!Q(n,e,r,l,0))return o.references.push(i),u||(o.chained=!0),o.fixed=u?function(){return r.right}:function(){return J(tt,r,{operator:r.operator.slice(0,-1),left:s instanceof ue?s:s(),right:r.right})},f(e,o,!1),r.right.walk(e),f(e,o,!0),d(e,o,i.scope,r,l,0,1),!0}}}}),e(tt,function(e){if(te[this.operator])return this.left.walk(e),u(e),this.right.walk(e),l(e),!0}),e(Ke,function(e,t){e.find_parent(xe).may_call_this();var n=this.expression;if(n instanceof mt){var r=n.definition();if(r.fixed instanceof De){var i=c(e,r);if(i)return t(),i.walk(e),!0}}}),e(Pe,function(e){return u(e),this.expression.walk(e),l(e),u(e),q(this,e),l(e),!0}),e(nt,function(e){return this.condition.walk(e),u(e),this.consequent.walk(e),l(e),u(e),this.alternative.walk(e),l(e),!0}),e(Ne,function(e,t){return u(e),t(),l(e),!0}),e(De,function(e,t,n){var r=this.name.definition().id;return e.defun_visited[r]||e.defun_ids[r]!==e.safe_ids||(e.defun_visited[r]=!0,this.inlined=!1,u(e),a(e,n,this),t(),l(e),s(e,this)),!0}),e(ye,function(e){var t=e.in_loop;return e.in_loop=this,u(e),this.body.walk(e),x(this)&&(l(e),u(e)),this.condition.walk(e),l(e),e.in_loop=t,!0}),e(we,function(e){this.init&&this.init.walk(e);var t=e.in_loop;return e.in_loop=this,u(e),this.condition&&this.condition.walk(e),this.body.walk(e),this.step&&(x(this)&&(l(e),u(e)),this.step.walk(e)),l(e),e.in_loop=t,!0}),e(Ee,function(e){this.init.walk(n),this.object.walk(e);var t=e.in_loop;return e.in_loop=this,u(e),this.body.walk(e),l(e),e.in_loop=t,!0}),e(Se,function(r,e,t){var i,o=this;return o.inlined=!1,u(r),a(r,t,o),!o.name&&(i=r.parent())instanceof Ke&&i.expression===o&&o.argnames.forEach(function(e,t){var n=e.definition();void 0!==n.fixed||o.uses_arguments&&!r.has_directive("use strict")?n.fixed=!1:(n.fixed=function(){return i.args[t]||J(At,i)},r.loop_ids[n.id]=r.in_loop,f(r,n,!0))}),e(),l(r),s(r,o),!0}),e(qe,function(e){return this.condition.walk(e),u(e),this.body.walk(e),l(e),this.alternative&&(u(e),this.alternative.walk(e),l(e)),!0}),e(ge,function(e){return u(e),this.body.walk(e),l(e),!0}),e(dt,function(){this.definition().fixed=!1}),e(mt,function(e,t,n){var r,i,o,a,s,u=this.definition();if(u.references.push(this),1==u.references.length&&!u.fixed&&u.orig[0]instanceof pt&&(e.loop_ids[u.id]=e.in_loop),void 0!==u.fixed&&p(e,u)?u.fixed&&((r=this.fixed_value())instanceof Ce&&H(e,u)?u.recursive_refs++:r&&(o=e,a=u,n.option("unused")&&!a.scope.pinned()&&a.references.length-a.recursive_refs==1&&o.loop_ids[a.id]===o.in_loop)?u.single_use=r instanceof Ce&&!r.pinned()||u.scope===this.scope&&r.is_constant_expression():u.single_use=!1,Q(n,e,this,r,0,!!(i=r)&&(i.is_constant()||i instanceof Ce||i instanceof gt))&&(u.single_use?u.single_use="m":u.fixed=!1)):u.fixed=!1,d(e,u,this.scope,this,r,0,1),u.fixed instanceof De&&!((s=e.parent())instanceof Ke&&s.expression===this)){var l=c(e,u);l&&l.walk(e)}}),e(ke,function(t,e,n){return this.globals.each(function(e){r(t,n,e)}),u(t),a(t,n,this),e(),l(t),s(t,this),!0}),e(Ie,function(e){return u(e),q(this,e),l(e),this.bcatch&&(u(e),this.bcatch.walk(e),l(e)),this.bfinally&&this.bfinally.walk(e),!0}),e(Je,function(e,t){var n=this;if("++"==n.operator||"--"==n.operator){var r=n.expression;if(r instanceof mt){var i=r.definition(),o=h(e,i,r.scope,!0);if(i.assignments++,o){var a=i.fixed;if(a)return i.references.push(r),i.chained=!0,i.fixed=function(){return J(tt,n,{operator:n.operator.slice(0,-1),left:J(Xe,n,{operator:"+",expression:a instanceof ue?a:a()}),right:J(yt,n,{value:1})})},f(e,i,!0),!0}}}}),e($e,function(e,t){var n=this,r=n.name.definition();if(n.value){if(h(e,r,n.name.scope,n.value))return r.fixed=function(){return n.value},e.loop_ids[r.id]=e.in_loop,f(e,r,!1),t(),f(e,r,!0),!0;r.fixed=!1}}),e(_e,function(e,t){var n=e.in_loop;return e.in_loop=this,u(e),t(),l(e),e.in_loop=n,!0})}(function(e,t){e.DEFMETHOD("reduce_vars",t)}),ke.DEFMETHOD("reset_opt_flags",function(n){var r=new Dt(n.option("reduce_vars")?function(e,t){return e._squeezed=!1,e._optimized=!1,e.reduce_vars(r,t,n)}:function(e){e._squeezed=!1,e._optimized=!1});r.defun_ids=Object.create(null),r.defun_visited=Object.create(null),r.in_loop=null,r.loop_ids=Object.create(null),r.safe_ids=Object.create(null),this.walk(r)}),ut.DEFMETHOD("fixed_value",function(){var e=this.definition().fixed;return!e||e instanceof ue?e:e()}),mt.DEFMETHOD("is_immutable",function(){var e=this.definition().orig;return 1==e.length&&e[0]instanceof ht});var t=W("Array Boolean clearInterval clearTimeout console Date decodeURI decodeURIComponent encodeURI encodeURIComponent Error escape eval EvalError Function isFinite isNaN JSON Math Number parseFloat parseInt RangeError ReferenceError RegExp Object setInterval setTimeout String SyntaxError TypeError unescape URIError");mt.DEFMETHOD("is_declared",function(e){return!this.definition().undeclared||e.option("unsafe")&&t[this.name]});var n,r,j=W("Infinity NaN undefined");function i(e,u){var K,G,Y;!function(){var e=u.self(),t=0;do{if(e instanceof ze||e instanceof je)t++;else if(e instanceof ve)K=!0;else{if(e instanceof xe){Y=e;break}e instanceof Ie&&(G=!0)}}while(e=u.parent(t++))}();for(var W,t=10;W=!1,i(e),u.option("dead_code")&&o(e,u),u.option("if_return")&&r(e,u),0<u.sequences_limit&&(a(e,u),s(e,u)),u.option("join_vars")&&f(e),u.option("collapse_vars")&&n(e,u),W&&0<t--;);function n(n,u){if(Y.pinned())return n;for(var l,e,t,c=[],o=n.length,a=new Wt(function(e){if(C)return e;if(!k)return e!==s[f]?e:++f<s.length?R(e):(k=!0,(d=function e(t,n,r){var i=a.parent(n);if(i instanceof rt)return r&&!(i.left instanceof We||i.left.name in _)?e(i,n+1,r):t;if(i instanceof tt)return!r||te[i.operator]&&i.left!==t?t:e(i,n+1,r);if(i instanceof Ke)return t;if(i instanceof Pe)return t;if(i instanceof nt)return r&&i.condition===t?e(i,n+1,r):t;if(i instanceof Ve)return e(i,n+1,!0);if(i instanceof Te)return r?e(i,n+1,r):t;if(i instanceof qe)return r&&i.condition===t?e(i,n+1,r):t;if(i instanceof ve)return t;if(i instanceof Ye)return e(i,n+1,i.tail_node()!==t);if(i instanceof pe)return e(i,n+1,!0);if(i instanceof Ue)return t;if(i instanceof Je)return t;if(i instanceof $e)return t;return null}(e,0))===e&&(C=!0),e);var t,n,r,i=a.parent();if(function(e,t){if(t instanceof we)return e!==t.init;if(e instanceof rt)return"="!=e.operator&&g.equivalent_to(e.left);if(e instanceof Ke)return g instanceof We&&g.equivalent_to(e.expression);return e instanceof ce||(e instanceof ve?!(e instanceof we):e instanceof Re||e instanceof Ie||e instanceof Ae||!E&&e instanceof mt&&!e.is_declared(u))}(e,i))return C=!0,e;if(!m&&(t=e,(n=i)instanceof tt?te[n.operator]&&n.left!==t:n instanceof nt?n.condition!==t:n instanceof qe&&n.condition!==t)&&(m=i),!S||e instanceof lt||!(b&&g.equivalent_to(e)||y&&(r=y(e,this))))return(function(e,t){if(e instanceof Ke)return!0;if(e instanceof Te)return v||g instanceof We||H(g);if(e instanceof Se)return u.option("ie8")&&e.name&&e.name.name in _;if(e instanceof We)return v||e.expression.may_throw_on_access(u);if(e instanceof mt)return V(e,t)?!t||"="!=t.operator||t.left!==e:v&&H(e);if(e instanceof gt)return V(e,t);if(e instanceof $e)return!!e.value&&(e.name.name in _||v&&H(e.name));var n=ne(e.left,e);if(n&&n.name in _)return!0;if(n instanceof We)return!0}(e,i)||A(e))&&(d=e)instanceof xe&&(C=!0),R(e);if(m&&(r||!w||!E))return C=!0,e;if(ne(e,i))return h&&O++,e;if(O++,h&&p instanceof $e)return e;if(W=C=!0,u.info("Collapsing {name} [{file}:{line},{col}]",{name:e.print_to_string(),file:e.start.file,line:e.start.line,col:e.start.col}),p instanceof et)return J(Xe,p,p);if(p instanceof $e){var o=p.name.definition();return o.references.length-o.replaced!=1||u.exposed(o)?J(rt,p,{operator:"=",left:J(mt,p.name,p.name),right:p.value}):(o.replaced++,X(u,i,e,p.value))}return p.write_only=!1,p},function(e){C||(d===e&&(C=!0),m===e&&(m=null))}),r=new Wt(function(e){return C?e:k?e instanceof mt&&e.name==B.name?(--O||(C=!0),ne(e,r.parent())?e:(B.replaced++,h.replaced--,p.value.clone())):e instanceof Ne||e instanceof xe?e:void 0:e!==s[f]?e:++f<s.length?void 0:(k=!0,e)});0<=--o;){0==o&&u.option("unused")&&L();var s=[];for(F(n[o]);0<c.length;){s=c.pop();var f=0,p=s[s.length-1],h=null,d=null,m=null,g=q(p),i=p instanceof rt&&"="==p.operator&&p.right,v=g&&g.has_side_effects(u),b=g&&!v&&!Z(g),y=i&&U(i);if(b||y){var _=P(p),w=(t=void 0,(t=ee(e=g))instanceof mt&&t.definition().scope===Y&&!(K&&(t.name in _&&_[t.name]!==e||p instanceof Je||p instanceof rt&&"="!=p.operator)));v||(v=z(p));var E=j(),A=p.may_throw(u)?G?function(e){return e.has_side_effects(u)}:$:ie,x=p.name instanceof ft,k=x,C=!1,O=0,S=!l||!k;if(!S){for(var D=u.self().argnames.lastIndexOf(p.name)+1;!C&&D<l.length;D++)l[D].transform(a);S=!0}for(var T=o;!C&&T<n.length;T++)n[T].transform(a);if(h){var B=p.name.definition();if(C&&B.references.length-B.replaced>O)O=!1;else{C=!1,f=0,k=x;for(T=o;!C&&T<n.length;T++)n[T].transform(r);h.single_use=!1}}O&&!I(p)&&n.splice(o,1)}}}function R(e){if(e instanceof xe)return e;if(e instanceof Ue){e.expression=e.expression.transform(a);for(var t=0,n=e.body.length;!C&&t<n;t++){var r=e.body[t];if(r instanceof Pe){if(!k){if(r!==s[f])continue;f++}if(r.expression=r.expression.transform(a),!E)break}}return C=!0,e}}function L(){var e,n=u.self();if(n instanceof Se&&!n.name&&!n.uses_arguments&&!n.pinned()&&(e=u.parent())instanceof Ke&&e.expression===n){var r=u.has_directive("use strict");r&&!re(r,n.body)&&(r=!1);var t=n.argnames.length;l=e.args.slice(t);for(var i=Object.create(null),o=t;0<=--o;){var a=n.argnames[o],s=e.args[o];l.unshift(J($e,a,{name:a,value:s})),a.name in i||(i[a.name]=!0,s?s instanceof Ce&&s.pinned()?s=null:s.walk(new Dt(function(e){if(!s)return!0;if(e instanceof mt&&n.variables.has(e.name)){var t=e.definition().scope;if(t!==Y)for(;t=t.parent_scope;)if(t===Y)return!0;s=null}return e instanceof gt&&(r||!this.find_parent(xe))?!(s=null):void 0})):s=J(At,a).transform(u),s&&c.unshift([J($e,a,{name:a,value:s})]))}}}function F(e){if(s.push(e),e instanceof rt)c.push(s.slice()),F(e.right);else if(e instanceof tt)F(e.left),F(e.right);else if(e instanceof Ke)F(e.expression),e.args.forEach(F);else if(e instanceof Pe)F(e.expression);else if(e instanceof nt)F(e.condition),F(e.consequent),F(e.alternative);else if(e instanceof Ve)e.definitions.forEach(F);else if(e instanceof be)F(e.condition),e.body instanceof he||F(e.body);else if(e instanceof Te)e.value&&F(e.value);else if(e instanceof we)e.init&&F(e.init),e.condition&&F(e.condition),e.step&&F(e.step),e.body instanceof he||F(e.body);else if(e instanceof Ee)F(e.object),e.body instanceof he||F(e.body);else if(e instanceof qe)F(e.condition),e.body instanceof he||F(e.body),!e.alternative||e.alternative instanceof he||F(e.alternative);else if(e instanceof Ye)e.expressions.forEach(F);else if(e instanceof pe)F(e.body);else if(e instanceof Ue)F(e.expression),e.body.forEach(F);else if(e instanceof Je)"++"==e.operator||"--"==e.operator?c.push(s.slice()):F(e.expression);else if(e instanceof $e&&e.value){var t=e.name.definition();t.references.length>t.replaced&&c.push(s.slice()),F(e.value)}s.pop()}function q(e){if(!(e instanceof $e))return e[e instanceof rt?"left":"expression"];var t=e.name.definition();if(re(e.name,t.orig)){var n=t.references.length-t.replaced;return 1<t.orig.length-t.eliminated&&!(e.name instanceof ft)||(1<n?function(e){var t=e.value;if(t instanceof mt&&"arguments"!=t.name){var n=t.definition();if(!n.undeclared)return h=n}}(e):!u.exposed(t))?J(mt,e.name,e.name):void 0}}function U(e){if(e instanceof mt){var t=e.evaluate(u);return t===e?M:N(t,M)}if(e instanceof gt)return M;if(e.is_truthy())return N(!0,ie);if(e.is_constant())return N(e.evaluate(u),M);if(!(g instanceof mt))return!1;if(!function e(t){return!(t instanceof it)&&(t instanceof tt&&te[t.operator]?e(t.left)&&e(t.right):!(t instanceof Ke)&&(t instanceof nt?e(t.consequent)&&e(t.alternative):!(t instanceof ot||t.has_side_effects(u))))}(e))return!1;var n,r=g.definition();return e.walk(new Dt(function(e){if(n)return!0;e instanceof mt&&e.definition()===r&&(n=!0)})),!n&&M}function M(e){return i.equivalent_to(e)}function N(n,r){return function(e,t){if(t.in_boolean_context()){if(n&&e.is_truthy()&&!e.has_side_effects(u))return!0;if(e.is_constant())return!e.evaluate(u)==!n}return r(e)}}function P(e){var n=Object.create(null);p instanceof $e&&(n[p.name.name]=g);var r=new Dt(function(e){var t=ee(e);(t instanceof mt||t instanceof gt)&&(n[t.name]=n[t.name]||Q(u,r,e,e,0))});return e.walk(r),n}function I(r){if(r.name instanceof ft){var e=u.self().argnames.indexOf(r.name),t=u.parent().args;return t[e]&&(t[e]=J(yt,t[e],{value:0})),!0}var i=!1;return n[o].transform(new Wt(function(e,t,n){return i?e:e===r||e.body===r?(i=!0,e instanceof $e?(e.value=null,e):n?oe.skip:null):void 0},function(e){if(e instanceof Ye)switch(e.expressions.length){case 0:return null;case 1:return e.expressions[0]}}))}function z(e){return!(e instanceof Je)&&(t=e,t[t instanceof rt?"right":"value"]).has_side_effects(u);var t}function j(){if(v)return!1;if(h)return!0;if(g instanceof mt){var e=g.definition();if(e.references.length-e.replaced==(p instanceof $e?1:2))return!0}return!1}function V(e,t){var n=_[e.name];if(n)return n!==g?!(t instanceof Ke):void(y=!1)}function H(e){var t=e.definition();return!(1==t.orig.length&&t.orig[0]instanceof pt)&&(t.scope!==Y||!ae(t.references,function(e){return e.scope.resolve()===Y}))}function $(e,t){if(e instanceof rt)return $(e.left,!0);if(e instanceof Je)return $(e.expression,!0);if(e instanceof $e)return e.value&&$(e.value);if(t){if(e instanceof Qe)return $(e.expression,!0);if(e instanceof Ze)return $(e.expression,!0);if(e instanceof mt)return e.definition().scope!==Y}return!1}}function i(e){for(var t=[],n=0;n<e.length;){var r=e[n];r instanceof de?(W=!0,i(r.body),[].splice.apply(e,[n,1].concat(r.body)),n+=r.body.length):r instanceof me?(W=!0,e.splice(n,1)):r instanceof fe?t.indexOf(r.value)<0?(n++,t.push(r.value)):(W=!0,e.splice(n,1)):n++}}function r(i,r){for(var o=r.self(),e=function(e){for(var t=0,n=e.length;0<=--n;){var r=e[n];if(r instanceof qe&&r.body instanceof Be&&1<++t)return!0}return!1}(i),a=o instanceof Ce,t=i.length;0<=--t;){var n=i[t],s=v(t),u=i[s];if(a&&!u&&n instanceof Be){if(!n.value){W=!0,i.splice(t,1);continue}if(n.value instanceof Xe&&"void"==n.value.operator){W=!0,i[t]=J(pe,n,{body:n.value.expression});continue}}if(n instanceof qe){var l;if(d(l=A(n.body))){l.label&&R(l.label.thedef.references,l),W=!0,(n=n.clone()).condition=n.condition.negate(r);var c=g(n.body,l);n.body=J(de,n,{body:_(n.alternative).concat(m())}),n.alternative=J(de,n,{body:c}),i[t]=n.transform(r);continue}if(l&&!n.alternative&&n.body instanceof de&&u instanceof U){var f=n.condition.negate(r);if(f.print_to_string().length<=n.condition.print_to_string().length){W=!0,(n=n.clone()).condition=f,i[s]=n.body,n.body=u,i[t]=n.transform(r);continue}}if(d(l=A(n.alternative))){l.label&&R(l.label.thedef.references,l),W=!0,(n=n.clone()).body=J(de,n.body,{body:_(n.body).concat(m())});c=g(n.alternative,l);n.alternative=J(de,n.alternative,{body:c}),i[t]=n.transform(r);continue}}if(n instanceof qe&&n.body instanceof Be){var p=n.body.value;if(!p&&!n.alternative&&(a&&!u||u instanceof Be&&!u.value)){W=!0,i[t]=J(pe,n.condition,{body:n.condition});continue}if(p&&!n.alternative&&u instanceof Be&&u.value){W=!0,(n=n.clone()).alternative=u,i.splice(t,1,n.transform(r)),i.splice(s,1);continue}if(p&&!n.alternative&&(!u&&a&&e||u instanceof Be)){W=!0,(n=n.clone()).alternative=u||J(Be,n,{value:null}),i.splice(t,1,n.transform(r)),u&&i.splice(s,1);continue}var h=i[b(t)];if(r.option("sequences")&&a&&!n.alternative&&h instanceof qe&&h.body instanceof Be&&v(s)==i.length&&u instanceof pe){W=!0,(n=n.clone()).alternative=J(de,u,{body:[u,J(Be,u,{value:null})]}),i.splice(t,1,n.transform(r)),i.splice(s,1);continue}}}function d(e){if(!e)return!1;var t,n=e instanceof Re?r.loopcontrol_target(e):null;return e instanceof Be&&a&&(!(t=e.value)||t instanceof Xe&&"void"==t.operator)||e instanceof Fe&&o===w(n)||e instanceof Le&&n instanceof de&&o===n}function m(){var e=i.slice(t+1);return i.length=t+1,e.filter(function(e){return!(e instanceof De)||(i.push(e),!1)})}function g(e,t){var n=_(e).slice(0,-1);return t.value&&n.push(J(pe,t.value,{body:t.value.expression})),n}function v(e){for(var t=e+1,n=i.length;t<n;t++){var r=i[t];if(!(r instanceof He&&y(r)))break}return t}function b(e){for(var t=e;0<=--t;){var n=i[t];if(!(n instanceof He&&y(n)))break}return t}}function o(t,n){for(var e,r=n.self(),i=0,o=0,a=t.length;i<a;i++){var s=t[i];if(s instanceof Re){var u=n.loopcontrol_target(s);s instanceof Le&&!(u instanceof ve)&&w(u)===r||s instanceof Fe&&w(u)===r?s.label&&R(s.label.thedef.references,s):t[o++]=s}else t[o++]=s;if(A(s)){e=t.slice(i+1);break}}t.length=o,W=o!=a,e&&e.forEach(function(e){E(n,e,t)})}function y(e){return ae(e.definitions,function(e){return!e.value})}function a(t,e){if(!(t.length<2)){for(var n=[],r=0,i=0,o=t.length;i<o;i++){var a=t[i];if(a instanceof pe){n.length>=e.sequences_limit&&u();var s=a.body;0<n.length&&(s=s.drop_side_effect_free(e)),s&&h(n,s)}else a instanceof Ve&&y(a)||a instanceof De||u(),t[r++]=a}u(),(t.length=r)!=o&&(W=!0)}function u(){if(n.length){var e=M(n[0],n);t[r++]=J(pe,e,{body:e}),n=[]}}}function p(e,t){if(!(e instanceof de))return e;for(var n=null,r=0,i=e.body.length;r<i;r++){var o=e.body[r];if(o instanceof He&&y(o))t.push(o);else{if(n)return!1;n=o}}return n}function s(e,n){function t(e){i--,W=!0;var t=r.body;return M(t,[t,e]).transform(n)}for(var r,i=0,o=0;o<e.length;o++){var a=e[o];if(r)if(a instanceof Te)a.value=t(a.value||J(At,a).transform(n));else if(a instanceof we){if(!(a.init instanceof Ve)){var s=!1;r.body.walk(new Dt(function(e){return!!(s||e instanceof xe)||(e instanceof tt&&"in"==e.operator?s=!0:void 0)})),s||(a.init?a.init=t(a.init):(a.init=r.body,i--,W=!0))}}else a instanceof Ee?a.object=t(a.object):a instanceof qe?a.condition=t(a.condition):a instanceof Ue?a.expression=t(a.expression):a instanceof Ae&&(a.expression=t(a.expression));if(n.option("conditionals")&&a instanceof qe){var u=[],l=p(a.body,u),c=p(a.alternative,u);if(!1!==l&&!1!==c&&0<u.length){var f=u.length;u.push(J(qe,a,{condition:a.condition,body:l||J(me,a.body),alternative:c})),u.unshift(i,1),[].splice.apply(e,u),o+=f,i+=f+1,W=!(r=null);continue}}e[i++]=a,r=a instanceof pe?a:null}e.length=i}function l(e,t){var n;if(t instanceof rt?n=[t]:t instanceof Ye&&(n=t.expressions.slice()),n){if(e instanceof Ve){var r=e.definitions[e.definitions.length-1];if(c(r.name,r.value,n))return n}for(var i=n.length-1;0<=--i;){var o=n[i];if(o instanceof rt&&("="==o.operator&&o.left instanceof mt)){var a=n.slice(i+1);if(c(o.left,o.right,a))return n.slice(0,i+1).concat(a)}}}}function c(e,t,n){if(t instanceof ot){var r=!1;do{var i=n[0];if(!(i instanceof rt))break;if("="!=i.operator)break;if(!(i.left instanceof We))break;var o=i.left.expression;if(!(o instanceof mt))break;if(e.name!=o.name)break;if(!i.right.is_constant_expression(Y))break;var a=i.left.property;if(a instanceof ue&&(a=a.evaluate(u)),a instanceof ue)break;a=""+a;var s=u.has_directive("use strict")?function(e){return e.key!=a&&e.key.name!=a}:function(e){return e.key.name!=a};if(!ae(t.properties,s))break;t.properties.push(J(st,i,{key:a,value:i.right})),n.shift(),r=!0}while(n.length);return r}}function f(r){for(var e,t=0,i=-1,n=r.length;t<n;t++){var o=r[t],a=r[i];if(o instanceof Ve)a&&a.TYPE==o.TYPE?(a.definitions=a.definitions.concat(o.definitions),W=!0):e&&e.TYPE==o.TYPE&&y(o)?(e.definitions=e.definitions.concat(o.definitions),W=!0):e=r[++i]=o;else if(o instanceof Te)o.value=u(o.value);else if(o instanceof we){(s=l(a,o.init))?(W=!0,o.init=s.length?M(o.init,s):null,r[++i]=o):a instanceof He&&(!o.init||o.init.TYPE==a.TYPE)?(o.init&&(a.definitions=a.definitions.concat(o.init.definitions)),o.init=a,r[i]=o,W=!0):e&&o.init&&e.TYPE==o.init.TYPE&&y(o.init)?(e.definitions=e.definitions.concat(o.init.definitions),o.init=null,r[++i]=o,W=!0):r[++i]=o}else if(o instanceof Ee)o.object=u(o.object);else if(o instanceof qe)o.condition=u(o.condition);else if(o instanceof pe){var s;if(s=l(a,o.body)){if(W=!0,!s.length)continue;o.body=M(o.body,s)}r[++i]=o}else o instanceof Ue?o.expression=u(o.expression):o instanceof Ae?o.expression=u(o.expression):r[++i]=o}function u(e){r[++i]=o;var t=l(a,e);if(!t)return e;W=!0;var n=e.tail_node();return t[t.length-1]!==n&&t.push(n.left),M(e,t)}r.length=i+1}}function E(t,e,n){e instanceof De||t.warn("Dropping unreachable code [{file}:{line},{col}]",e.start),e.walk(new Dt(function(e){return e instanceof Ve?(t.warn("Declarations in unreachable code! [{file}:{line},{col}]",e.start),e.remove_initializers(),n.push(e),!0):e instanceof De?(n.push(e),!0):e instanceof xe||void 0}))}function d(e){return e instanceof vt?e.getValue():e instanceof Xe&&"void"==e.operator&&e.expression instanceof vt?void 0:e}function b(e,t){return e.is_undefined||e instanceof At||e instanceof Xe&&"void"==e.operator&&!e.expression.has_side_effects(t)}(n=function(e,t){e.DEFMETHOD("is_truthy",t)})(ue,ie),n(it,Y),n(rt,function(){return"="==this.operator&&this.right.is_truthy()}),n(Ce,Y),n(ot,Y),n(_t,Y),n(Ye,function(){return this.tail_node().is_truthy()}),n(mt,function(){var e=this.fixed_value();return e&&e.is_truthy()}),function(e){function n(e){return/strict/.test(e.option("pure_getters"))}ue.DEFMETHOD("may_throw_on_access",function(e){return!e.option("pure_getters")||this._dot_throw(e)}),e(ue,n),e(wt,Y),e(At,Y),e(vt,ie),e(it,ie),e(ot,function(e){if(!n(e))return!1;for(var t=this.properties.length;0<=--t;)if(this.properties[t].value instanceof Oe)return!0;return!1}),e(Ce,ie),e(et,ie),e(Xe,function(){return"void"==this.operator}),e(tt,function(e){return("&&"==this.operator||"||"==this.operator)&&(this.left._dot_throw(e)||this.right._dot_throw(e))}),e(rt,function(e){return"="==this.operator&&this.right._dot_throw(e)}),e(nt,function(e){return this.consequent._dot_throw(e)||this.alternative._dot_throw(e)}),e(Qe,function(e){if(!n(e))return!1;var t=this.expression;return t instanceof mt&&(t=t.fixed_value()),!(t instanceof Ce&&"prototype"==this.property)}),e(Ye,function(e){return this.tail_node()._dot_throw(e)}),e(mt,function(e){if(this.is_undefined)return!0;if(!n(e))return!1;if(z(this)&&this.is_declared(e))return!1;if(this.is_immutable())return!1;var t=this.fixed_value();return!t||t._dot_throw(e)})}(function(e,t){e.DEFMETHOD("_dot_throw",t)}),function(e){e(ue,ie),e(rt,function(e){return"="==this.operator&&this.right.is_boolean(e)});var t=W("in instanceof == != === !== < <= >= >");e(tt,function(e){return t[this.operator]||te[this.operator]&&this.left.is_boolean(e)&&this.right.is_boolean(e)}),e(Ct,Y);var n=W("every hasOwnProperty isPrototypeOf propertyIsEnumerable some");e(Ke,function(e){if(!e.option("unsafe"))return!1;var t=this.expression;return t instanceof Qe&&(n[t.property]||"test"==t.property&&t.expression instanceof _t)}),e(nt,function(e){return this.consequent.is_boolean(e)&&this.alternative.is_boolean(e)}),e(Ge,ie),e(Ye,function(e){return this.tail_node().is_boolean(e)});var r=W("! delete");e(Xe,function(){return r[this.operator]})}(function(e,t){e.DEFMETHOD("is_boolean",t)}),function(e){e(ue,ie);var t=W("- * / % & | ^ << >> >>>");e(rt,function(e){return t[this.operator.slice(0,-1)]||"="==this.operator&&this.right.is_number(e)}),e(tt,function(e){return t[this.operator]||"+"==this.operator&&this.left.is_number(e)&&this.right.is_number(e)});var n=W(["charCodeAt","getDate","getDay","getFullYear","getHours","getMilliseconds","getMinutes","getMonth","getSeconds","getTime","getTimezoneOffset","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","getYear","indexOf","lastIndexOf","localeCompare","push","search","setDate","setFullYear","setHours","setMilliseconds","setMinutes","setMonth","setSeconds","setTime","setUTCDate","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes","setUTCMonth","setUTCSeconds","setYear","toExponential","toFixed","toPrecision"]);e(Ke,function(e){if(!e.option("unsafe"))return!1;var t=this.expression;return t instanceof Qe&&(n[t.property]||z(t.expression)&&"Math"==t.expression.name)}),e(nt,function(e){return this.consequent.is_number(e)&&this.alternative.is_number(e)}),e(Ge,ie),e(yt,Y),e(Ye,function(e){return this.tail_node().is_number(e)});var r=W("+ - ~ ++ --");e(Je,function(){return r[this.operator]})}(function(e,t){e.DEFMETHOD("is_number",t)}),(r=function(e,t){e.DEFMETHOD("is_string",t)})(ue,ie),r(bt,Y),r(Xe,function(){return"typeof"==this.operator}),r(tt,function(e){return"+"==this.operator&&(this.left.is_string(e)||this.right.is_string(e))}),r(rt,function(e){return("="==this.operator||"+="==this.operator)&&this.right.is_string(e)}),r(Ye,function(e){return this.tail_node().is_string(e)}),r(nt,function(e){return this.consequent.is_string(e)&&this.alternative.is_string(e)});var te=W("&& ||"),s=W("delete ++ --");function ne(e,t){return t instanceof Je&&s[t.operator]?t.expression:t instanceof rt&&t.left===e?e:void 0}function y(e,t){return e.print_to_string().length>t.print_to_string().length?t:e}function V(e,t,n){return(F(e)?function(e,t){return y(J(pe,e,{body:e}),J(pe,t,{body:t})).body}:y)(t,n)}function u(e){for(var t in e)e[t]=W(e[t])}!function(e){function a(e,t){e.warn("global_defs "+t.print_to_string()+" redefined [{file}:{line},{col}]",t.start)}ke.DEFMETHOD("resolve_defines",function(o){return o.option("global_defs")?(this.figure_out_scope({ie8:o.option("ie8")}),this.transform(new Wt(function(e){var t=e._find_defs(o,"");if(t){for(var n,r=0,i=e;(n=this.parent(r++))&&n instanceof We&&n.expression===i;)i=n;if(!ne(i,n))return t;a(o,e)}}))):this}),e(ue,G),e(Qe,function(e,t){return this.expression._find_defs(e,"."+this.property+t)}),e(lt,function(e){this.global()&&se(e.option("global_defs"),this.name)&&a(e,this)}),e(mt,function(e,t){if(this.global()){var n=e.option("global_defs"),r=this.name+t;return se(n,r)?function t(e,n){if(e instanceof ue)return J(e.CTOR,n,e);if(Array.isArray(e))return J(it,n,{elements:e.map(function(e){return t(e,n)})});if(e&&"object"==typeof e){var r=[];for(var i in e)se(e,i)&&r.push(J(st,n,{key:i,value:t(e[i],n)}));return J(ot,n,{properties:r})}return N(e,n)}(n[r],this):void 0}})}(function(e,t){e.DEFMETHOD("_find_defs",t)});var l=["constructor","toString","valueOf"],g={Array:["indexOf","join","lastIndexOf","slice"].concat(l),Boolean:l,Function:l,Number:["toExponential","toFixed","toPrecision"].concat(l),Object:l,RegExp:["test"].concat(l),String:["charAt","charCodeAt","concat","indexOf","italics","lastIndexOf","match","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase","trim"].concat(l)};u(g);var v={Array:["isArray"],Math:["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan","atan2","pow","max","min"],Number:["isFinite","isNaN"],Object:["create","getOwnPropertyDescriptor","getOwnPropertyNames","getPrototypeOf","isExtensible","isFrozen","isSealed","keys"],String:["fromCharCode"]};u(v),function(e){ue.DEFMETHOD("evaluate",function(e){if(!e.option("evaluate"))return this;var t=[],n=this._eval(e,t,1);return t.forEach(function(e){delete e._eval}),!n||n instanceof RegExp?n:"function"==typeof n||"object"==typeof n?this:n});var t=W("! ~ - + void");ue.DEFMETHOD("is_constant",function(){return this instanceof vt?!(this instanceof _t):this instanceof Xe&&this.expression instanceof vt&&t[this.operator]}),e(le,function(){throw new Error(B("Cannot evaluate a statement [{file}:{line},{col}]",this.start))}),e(Ce,D),e(ue,D),e(vt,function(){return this.getValue()}),e(Se,function(e){if(e.option("unsafe")){var t=function(){};return t.node=this,t.toString=function(){return"function(){}"},t}return this}),e(it,function(e,t,n){if(e.option("unsafe")){for(var r=[],i=0,o=this.elements.length;i<o;i++){var a=this.elements[i],s=a._eval(e,t,n);if(a===s)return this;r.push(s)}return r}return this}),e(ot,function(e,t,n){if(e.option("unsafe")){for(var r={},i=0,o=this.properties.length;i<o;i++){var a=this.properties[i],s=a.key;if(s instanceof ut)s=s.name;else if(s instanceof ue&&(s=s._eval(e,t,n))===a.key)return this;if("function"==typeof Object.prototype[s])return this;if(!(a.value instanceof Se)&&(r[s]=a.value._eval(e,t,n),r[s]===a.value))return this}return r}return this});var i=W("! typeof void");e(Xe,function(e,t,n){var r=this.expression;if(e.option("typeofs")&&"typeof"==this.operator&&(r instanceof Ce||r instanceof mt&&r.fixed_value()instanceof Ce))return"function";if(i[this.operator]||n++,(r=r._eval(e,t,n))===this.expression)return this;switch(this.operator){case"!":return!r;case"typeof":return r instanceof RegExp?this:typeof r;case"void":return;case"~":return~r;case"-":return-r;case"+":return+r}return this});var a=W("&& || === !==");e(tt,function(e,t,n){a[this.operator]||n++;var r=this.left._eval(e,t,n);if(r===this.left)return this;var i,o=this.right._eval(e,t,n);if(o===this.right)return this;switch(this.operator){case"&&":i=r&&o;break;case"||":i=r||o;break;case"|":i=r|o;break;case"&":i=r&o;break;case"^":i=r^o;break;case"+":i=r+o;break;case"*":i=r*o;break;case"/":i=r/o;break;case"%":i=r%o;break;case"-":i=r-o;break;case"<<":i=r<<o;break;case">>":i=r>>o;break;case">>>":i=r>>>o;break;case"==":i=r==o;break;case"===":i=r===o;break;case"!=":i=r!=o;break;case"!==":i=r!==o;break;case"<":i=r<o;break;case"<=":i=r<=o;break;case">":i=o<r;break;case">=":i=o<=r;break;default:return this}return isNaN(i)&&e.find_parent(Ae)?this:i}),e(nt,function(e,t,n){var r=this.condition._eval(e,t,n);if(r===this.condition)return this;var i=r?this.consequent:this.alternative,o=i._eval(e,t,n);return o===i?this:o}),e(mt,function(e,t,n){var r,i=this.fixed_value();if(!i)return this;if(0<=t.indexOf(i))r=i._eval();else{if(this._eval=D,r=i._eval(e,t,n),delete this._eval,r===i)return this;i._eval=function(){return r},t.push(i)}if(r&&"object"==typeof r){var o=this.definition().escaped;if(o&&o<n)return this}return r});var d={Array:Array,Math:Math,Number:Number,Object:Object,String:String},s={Math:["E","LN10","LN2","LOG2E","LOG10E","PI","SQRT1_2","SQRT2"],Number:["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"]};u(s),e(We,function(e,t,n){if(e.option("unsafe")){var r=this.property;if(r instanceof ue&&(r=r._eval(e,t,n))===this.property)return this;var i,o=this.expression;if(z(o)){var a=s[o.name];if(!a||!a[r])return this;i=d[o.name]}else{if(!(i=o._eval(e,t,n+1))||i===o||!se(i,r))return this;if("function"==typeof i)switch(r){case"name":return i.node.name?i.node.name.name:"";case"length":return i.node.argnames.length;default:return this}}return i[r]}return this}),e(Ke,function(t,e,n){var r=this.expression;if(t.option("unsafe")&&r instanceof We){var i,o=r.property;if(o instanceof ue&&(o=o._eval(t,e,n))===r.property)return this;var a=r.expression;if(z(a)){var s=v[a.name];if(!s||!s[o])return this;i=d[a.name]}else{if((i=a._eval(t,e,n+1))===a||!i)return this;var u=g[i.constructor.name];if(!u||!u[o])return this}for(var l=[],c=0,f=this.args.length;c<f;c++){var p=this.args[c],h=p._eval(t,e,n);if(p===h)return this;l.push(h)}try{return i[o].apply(i,l)}catch(e){t.warn("Error evaluating {code} [{file}:{line},{col}]",{code:this.print_to_string(),file:this.start.file,line:this.start.line,col:this.start.col})}}return this}),e(Ge,D)}(function(e,t){e.DEFMETHOD("_eval",t)}),function(e){function o(e){return J(Xe,e,{operator:"!",expression:e})}function i(e,t,n){var r=o(e);if(n){var i=J(pe,t,{body:t});return y(r,i)===i?t:r}return y(r,t)}e(ue,function(){return o(this)}),e(le,function(){throw new Error("Cannot negate a statement")}),e(Se,function(){return o(this)}),e(Xe,function(){return"!"==this.operator?this.expression:o(this)}),e(Ye,function(e){var t=this.expressions.slice();return t.push(t.pop().negate(e)),M(this,t)}),e(nt,function(e,t){var n=this.clone();return n.consequent=n.consequent.negate(e),n.alternative=n.alternative.negate(e),i(this,n,t)}),e(tt,function(e,t){var n=this.clone(),r=this.operator;if(e.option("unsafe_comps"))switch(r){case"<=":return n.operator=">",n;case"<":return n.operator=">=",n;case">=":return n.operator="<",n;case">":return n.operator="<=",n}switch(r){case"==":return n.operator="!=",n;case"!=":return n.operator="==",n;case"===":return n.operator="!==",n;case"!==":return n.operator="===",n;case"&&":return n.operator="||",n.left=n.left.negate(e,t),n.right=n.right.negate(e),i(this,n,t);case"||":return n.operator="&&",n.left=n.left.negate(e,t),n.right=n.right.negate(e),i(this,n,t)}return o(this)})}(function(e,n){e.DEFMETHOD("negate",function(e,t){return n.call(this,e,t)})});var c=W("Boolean decodeURI decodeURIComponent Date encodeURI encodeURIComponent Error escape EvalError isFinite isNaN Number Object parseFloat parseInt RangeError ReferenceError String SyntaxError TypeError unescape URIError");function A(e){return e&&e.aborts()}Ke.DEFMETHOD("is_expr_pure",function(e){if(e.option("unsafe")){var t=this.expression;if(z(t)&&c[t.name])return!0;if(t instanceof Qe&&z(t.expression)){var n=v[t.expression.name];return n&&n[t.property]}}return this.pure||!e.pure_funcs(this)}),ue.DEFMETHOD("is_call_pure",ie),Qe.DEFMETHOD("is_call_pure",function(e){if(e.option("unsafe")){var t,n=this.expression;return n instanceof it?t=g.Array:n.is_boolean(e)?t=g.Boolean:n.is_number(e)?t=g.Number:n instanceof _t?t=g.RegExp:n.is_string(e)?t=g.String:this.may_throw_on_access(e)||(t=g.Object),t&&t[this.property]}}),function(e){function t(e,t){for(var n=e.length;0<=--n;)if(e[n].has_side_effects(t))return!0;return!1}e(ue,Y),e(it,function(e){return t(this.elements,e)}),e(rt,Y),e(tt,function(e){return this.left.has_side_effects(e)||this.right.has_side_effects(e)}),e(he,function(e){return t(this.body,e)}),e(Ke,function(e){return!(this.is_expr_pure(e)||this.expression.is_call_pure(e)&&!this.expression.has_side_effects(e))||t(this.args,e)}),e(Pe,function(e){return this.expression.has_side_effects(e)||t(this.body,e)}),e(nt,function(e){return this.condition.has_side_effects(e)||this.consequent.has_side_effects(e)||this.alternative.has_side_effects(e)}),e(vt,ie),e(Ve,function(e){return t(this.definitions,e)}),e(Qe,function(e){return this.expression.may_throw_on_access(e)||this.expression.has_side_effects(e)}),e(me,ie),e(qe,function(e){return this.condition.has_side_effects(e)||this.body&&this.body.has_side_effects(e)||this.alternative&&this.alternative.has_side_effects(e)}),e(ge,function(e){return this.body.has_side_effects(e)}),e(Ce,ie),e(ot,function(e){return t(this.properties,e)}),e(at,function(e){return this.value.has_side_effects(e)}),e(Ze,function(e){return this.expression.may_throw_on_access(e)||this.expression.has_side_effects(e)||this.property.has_side_effects(e)}),e(Ye,function(e){return t(this.expressions,e)}),e(pe,function(e){return this.body.has_side_effects(e)}),e(Ue,function(e){return this.expression.has_side_effects(e)||t(this.body,e)}),e(lt,ie),e(mt,function(e){return!this.is_declared(e)}),e(gt,ie),e(Ie,function(e){return t(this.body,e)||this.bcatch&&this.bcatch.has_side_effects(e)||this.bfinally&&this.bfinally.has_side_effects(e)}),e(Je,function(e){return s[this.operator]||this.expression.has_side_effects(e)}),e($e,function(e){return this.value})}(function(e,t){e.DEFMETHOD("has_side_effects",t)}),function(e){function t(e,t){for(var n=e.length;0<=--n;)if(e[n].may_throw(t))return!0;return!1}e(ue,Y),e(vt,ie),e(me,ie),e(Ce,ie),e(lt,ie),e(gt,ie),e(it,function(e){return t(this.elements,e)}),e(rt,function(e){return!!this.right.may_throw(e)||!(!e.has_directive("use strict")&&"="==this.operator&&this.left instanceof mt)&&this.left.may_throw(e)}),e(tt,function(e){return this.left.may_throw(e)||this.right.may_throw(e)}),e(he,function(e){return t(this.body,e)}),e(Ke,function(e){return!!t(this.args,e)||!this.is_expr_pure(e)&&(!!this.expression.may_throw(e)||(!(this.expression instanceof Ce)||t(this.expression.body,e)))}),e(Pe,function(e){return this.expression.may_throw(e)||t(this.body,e)}),e(nt,function(e){return this.condition.may_throw(e)||this.consequent.may_throw(e)||this.alternative.may_throw(e)}),e(Ve,function(e){return t(this.definitions,e)}),e(Qe,function(e){return this.expression.may_throw_on_access(e)||this.expression.may_throw(e)}),e(qe,function(e){return this.condition.may_throw(e)||this.body&&this.body.may_throw(e)||this.alternative&&this.alternative.may_throw(e)}),e(ge,function(e){return this.body.may_throw(e)}),e(ot,function(e){return t(this.properties,e)}),e(at,function(e){return this.value.may_throw(e)}),e(Be,function(e){return this.value&&this.value.may_throw(e)}),e(Ye,function(e){return t(this.expressions,e)}),e(pe,function(e){return this.body.may_throw(e)}),e(Ze,function(e){return this.expression.may_throw_on_access(e)||this.expression.may_throw(e)||this.property.may_throw(e)}),e(Ue,function(e){return this.expression.may_throw(e)||t(this.body,e)}),e(mt,function(e){return!this.is_declared(e)}),e(Ie,function(e){return this.bcatch?this.bcatch.may_throw(e):t(this.body,e)||this.bfinally&&this.bfinally.may_throw(e)}),e(Je,function(e){return!("typeof"==this.operator&&this.expression instanceof mt)&&this.expression.may_throw(e)}),e($e,function(e){return!!this.value&&this.value.may_throw(e)})}(function(e,t){e.DEFMETHOD("may_throw",t)}),function(e){function t(e){for(var t=e.length;0<=--t;)if(!e[t].is_constant_expression())return!1;return!0}e(ue,ie),e(vt,Y),e(Ce,function(r){var i=this,o=!0;return i.walk(new Dt(function(e){if(!o)return!0;if(e instanceof mt){if(i.inlined)return!(o=!1);var t=e.definition();if(re(t,i.enclosed)&&!i.variables.has(t.name)){if(r){var n=r.find_variable(e);if(t.undeclared?!n:n===t)return o="f",!0}o=!1}return!0}})),o}),e(Je,function(){return this.expression.is_constant_expression()}),e(tt,function(){return this.left.is_constant_expression()&&this.right.is_constant_expression()}),e(it,function(){return t(this.elements)}),e(ot,function(){return t(this.properties)}),e(at,function(){return this.value.is_constant_expression()})}(function(e,t){e.DEFMETHOD("is_constant_expression",t)}),function(e){function t(){var e=this.body.length;return 0<e&&A(this.body[e-1])}e(le,T),e(U,D),e(de,t),e(Me,t),e(qe,function(){return this.alternative&&A(this.body)&&A(this.alternative)&&this})}(function(e,t){e.DEFMETHOD("aborts",t)});var f=W(["use asm","use strict"]);function x(t,e){var n=!1,r=new Dt(function(e){return!!(n||e instanceof xe)||(e instanceof Re&&r.loopcontrol_target(e)===t?n=!0:void 0)});return e instanceof ge&&r.push(e),r.push(t),t.body.walk(r),n}e(fe,function(e,t){return!t.option("directives")||f[e.value]&&t.has_directive(e.value)===e?e:J(me,e)}),e(ce,function(e,t){return t.option("drop_debugger")?J(me,e):e}),e(ge,function(e,t){return e.body instanceof Le&&t.loopcontrol_target(e.body)===e.body?J(me,e):0==e.label.references.length?e.body:e}),e(he,function(e,t){return i(e.body,t),e}),e(de,function(e,t){switch(i(e.body,t),e.body.length){case 1:return e.body[0];case 0:return J(me,e)}return e}),e(Ce,function(e,t){return i(e.body,t),t.option("side_effects")&&1==e.body.length&&e.body[0]===t.has_directive("use strict")&&(e.body.length=0),e}),xe.DEFMETHOD("drop_unused",function(y){if(y.option("unused")&&!y.has_directive("use asm")){var _=this;if(!_.pinned()){var w=!(_ instanceof ke)||y.toplevel.funcs,E=!(_ instanceof ke)||y.toplevel.vars,A=/keep_assign/.test(y.option("unused"))?ie:function(e,t){var n;if(e instanceof rt&&(e.write_only||"="==e.operator)?n=e.left:e instanceof Je&&e.write_only&&(n=e.expression),!/strict/.test(y.option("pure_getters")))return n instanceof mt&&n;for(;n instanceof We&&!n.expression.may_throw_on_access(y);)n instanceof Ze&&t.unshift(n.property),n=n.expression;return n instanceof mt&&ae(n.definition().orig,function(e){return!(e instanceof ht)})&&n},s=[],x=Object.create(null),k=Object.create(null),u=Object.create(null),l=Object.create(null);_ instanceof ke&&y.top_retain&&_.variables.each(function(e){!y.top_retain(e)||e.id in x||(x[e.id]=!0,s.push(e))});var C=new L,r=new L,O=this,c=new Dt(function(e,t){if(e instanceof Ce&&e.uses_arguments&&!c.has_directive("use strict")&&e.argnames.forEach(function(e){var t=e.definition();t.id in x||(x[t.id]=!0,s.push(t))}),e!==_){if(e instanceof De){var n=e.name.definition();return w||O!==_||n.id in x||(x[n.id]=!0,s.push(n)),r.add(n.id,e),!0}return e instanceof ft&&O===_&&C.add(e.definition().id,e),e instanceof Ve&&O===_?(e.definitions.forEach(function(e){var t=e.name.definition();e.name instanceof ct&&C.add(t.id,e),E||t.id in x||(x[t.id]=!0,s.push(t)),e.value&&(r.add(t.id,e.value),e.value.has_side_effects(y)&&e.value.walk(c),t.chained||e.name.fixed_value()!==e.value||(k[t.id]=e))}),!0):i(e,t)}});_.walk(c),c=new Dt(i);for(var e=0;e<s.length;e++){var t=r.get(s[e].id);t&&t.forEach(function(e){e.walk(c)})}var S=y.option("keep_fnames")?ie:y.option("ie8")?function(e){return!y.exposed(e)&&!e.references.length}:function(e){return!(e.id in x)||1<e.orig.length},D=new Wt(function(a,e,t){var n=D.parent();if(E){var r=[];if(c=A(a,r)){var i=(f=c.definition()).id in x,o=null;if(a instanceof rt?(!i||a.left===c&&f.id in k&&k[f.id]!==a)&&(o=a.right):i||(o=J(yt,a,{value:0})),o)return r.push(o),X(y,n,a,M(a,r.map(function(e){return e.transform(D)})))}}if(O===_){if(a instanceof Se&&a.name&&S(a.name.definition())&&(a.name=null),a instanceof Ce&&!(a instanceof Oe))for(var s=!y.option("keep_fargs"),u=a.argnames,l=u.length;0<=--l;){var c;(c=u[l]).definition().id in x?s=!1:(c.__unused=!0,s&&(u.pop(),y[c.unreferenced()?"warn":"info"]("Dropping unused function argument {name} [{file}:{line},{col}]",b(c))))}var f;if(w&&a instanceof De&&a!==_)if(!((f=a.name.definition()).id in x))return y[a.name.unreferenced()?"warn":"info"]("Dropping unused function {name} [{file}:{line},{col}]",b(a.name)),f.eliminated++,J(me,a);if(a instanceof Ve&&!(n instanceof Ee&&n.init===a)){var p=[],h=[],d=[],m=[];switch(a.definitions.forEach(function(e){e.value&&(e.value=e.value.transform(D));var t=e.name.definition();if(!E||t.id in x){if(e.value&&t.id in k&&k[t.id]!==e&&(e.value=e.value.drop_side_effect_free(y)),e.name instanceof ct){var n=C.get(t.id);if(1<n.length&&(!e.value||t.orig.indexOf(e.name)>t.eliminated)){if(y.warn("Dropping duplicated definition of variable {name} [{file}:{line},{col}]",b(e.name)),e.value){var r=J(mt,e.name,e.name);t.references.push(r);var i=J(rt,e,{operator:"=",left:r,right:e.value});k[t.id]===e&&(k[t.id]=i),m.push(i.transform(D))}return R(n,e),void t.eliminated++}}e.value?(0<m.length&&(0<d.length?(m.push(e.value),e.value=M(e.value,m)):p.push(J(pe,a,{body:M(a,m)})),m=[]),d.push(e)):h.push(e)}else if(t.orig[0]instanceof dt){(o=e.value&&e.value.drop_side_effect_free(y))&&m.push(o),e.value=null,h.push(e)}else{var o;(o=e.value&&e.value.drop_side_effect_free(y))?(y.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]",b(e.name)),m.push(o)):y[e.name.unreferenced()?"warn":"info"]("Dropping unused variable {name} [{file}:{line},{col}]",b(e.name)),t.eliminated++}}),(0<h.length||0<d.length)&&(a.definitions=h.concat(d),p.push(a)),0<m.length&&p.push(J(pe,a,{body:M(a,m)})),p.length){case 0:return t?oe.skip:J(me,a);case 1:return p[0];default:return t?oe.splice(p):J(de,a,{body:p})}}if(a instanceof we)return e(a,this),a.init instanceof de&&(g=a.init,a.init=g.body.pop(),g.body.push(a)),a.init instanceof pe?a.init=a.init.body:P(a.init)&&(a.init=null),g?t?oe.splice(g.body):g:a;if(a instanceof ge&&a.body instanceof we){if(e(a,this),a.body instanceof de){var g=a.body;return a.body=g.body.pop(),g.body.push(a),t?oe.splice(g.body):g}return a}if(a instanceof xe){var v=O;return e(O=a,this),O=v,a}}function b(e){return{name:e.name,file:e.start.file,line:e.start.line,col:e.start.col}}});_.transform(D)}}function f(e,t,n){e.id in x||(t&&n?(x[e.id]=!0,s.push(e)):(u[e.id]=t,l[e.id]=n))}function i(e,t){var n,r=[],i=A(e,r);if(i&&_.variables.get(i.name)===(n=i.definition())){if(r.forEach(function(e){e.walk(c)}),e instanceof rt)if(e.right.walk(c),e.left===i)n.chained||i.fixed_value()!==e.right||(k[n.id]=e),e.write_only||f(n,!0,l[n.id]);else{var o=i.fixed_value();o&&o.is_constant()||f(n,u[n.id],!0)}return!0}if(e instanceof mt)return(n=e.definition()).id in x||(x[n.id]=!0,s.push(n)),!0;if(e instanceof xe){var a=O;return O=e,t(),O=a,!0}}}),xe.DEFMETHOD("hoist_declarations",function(i){if(!i.has_directive("use asm")){var o=i.option("hoist_funs"),a=i.option("hoist_vars"),s=this;if(a){var t=0;s.walk(new Dt(function(e){return 1<t||(e instanceof xe&&e!==s||(e instanceof He?(t++,!0):void 0))})),t<=1&&(a=!1)}if(o||a){var u=[],l=[],c=new L,f=0,p=new Wt(function(e){if(e!==s){if(e instanceof fe)return u.push(e),J(me,e);if(o&&e instanceof De&&(p.parent()===s||!i.has_directive("use strict")))return l.push(e),J(me,e);if(a&&e instanceof He){e.definitions.forEach(function(e){c.set(e.name.name,e),++f});var t=e.to_assignments(i),n=p.parent();if(n instanceof Ee&&n.init===e){if(t)return t;var r=e.definitions[0].name;return J(mt,r,r)}return n instanceof we&&n.init===e?t:t?J(pe,e,{body:t}):J(me,e)}return e instanceof xe?e:void 0}});if(s.transform(p),0<f){var n=[];if(c.each(function(e,t){s instanceof Ce&&!ae(s.argnames,function(e){return e.name!=t})?c.del(t):((e=e.clone()).value=null,n.push(e),c.set(t,e))}),0<n.length){for(var e=0;e<s.body.length;){if(s.body[e]instanceof pe){var r,h,d=s.body[e].body;if(d instanceof rt&&"="==d.operator&&(r=d.left)instanceof ut&&c.has(r.name)){if((m=c.get(r.name)).value)break;m.value=d.right,R(n,m),n.push(m),s.body.splice(e,1);continue}if(d instanceof Ye&&(h=d.expressions[0])instanceof rt&&"="==h.operator&&(r=h.left)instanceof ut&&c.has(r.name)){var m;if((m=c.get(r.name)).value)break;m.value=h.right,R(n,m),n.push(m),s.body[e].body=M(d,d.expressions.slice(1));continue}}if(s.body[e]instanceof me)s.body.splice(e,1);else{if(!(s.body[e]instanceof de))break;var g=[e,1].concat(s.body[e].body);s.body.splice.apply(s.body,g)}}n=J(He,s,{definitions:n}),l.push(n)}}s.body=u.concat(l,s.body)}}}),xe.DEFMETHOD("var_names",function(){var n=this._var_names;return n||(this._var_names=n=Object.create(null),this.enclosed.forEach(function(e){n[e.name]=!0}),this.variables.each(function(e,t){n[t]=!0})),n}),xe.DEFMETHOD("make_var_name",function(e){for(var t=this.var_names(),n=e=e.replace(/(?:^[^a-z_$]|[^a-z0-9_$])/gi,"_"),r=0;t[n];r++)n=e+"$"+r;return t[n]=!0,n}),xe.DEFMETHOD("hoist_properties",function(e){if(e.option("hoist_props")&&!e.has_directive("use asm")){var c=this,f=c instanceof ke&&e.top_retain||ie,p=Object.create(null);c.transform(new Wt(function(r,e){if(r instanceof rt&&"="==r.operator&&r.write_only&&u(r.left,r.right,1)){e(r,this);var i=new L,o=[],a=[];return r.right.properties.forEach(function(e){var t=l(r.left,e.key);a.push(J($e,r,{name:t,value:null}));var n=J(mt,r,{name:t.name,scope:c,thedef:t.definition()});n.reference({}),o.push(J(rt,r,{operator:"=",left:n,right:e.value}))}),p[r.left.definition().id]=i,c.body.splice(c.body.indexOf(this.stack[1])+1,0,J(He,r,{definitions:a})),M(r,o)}if(r instanceof $e&&u(r.name,r.value,0)){e(r,this);i=new L;var t=[];return r.value.properties.forEach(function(e){t.push(J($e,r,{name:l(r.name,e.key),value:e.value}))}),p[r.name.definition().id]=i,oe.splice(t)}if(r instanceof We&&r.expression instanceof mt&&(i=p[r.expression.definition().id])){var n=i.get(d(r.property)),s=J(mt,r,{name:n.name,scope:r.expression.scope,thedef:n});return s.reference({}),s}function u(e,t,n){if(e.scope===c){var r=e.definition();if(r.assignments==n&&!r.direct_access&&1!=r.escaped&&r.references.length!=n&&!r.single_use&&!f(r)&&e.fixed_value()===t)return t instanceof ot}}function l(e,t){var n=J(ct,e,{name:c.make_var_name(e.name+"_"+t),scope:c}),r=c.def_variable(n);return i.set(t,r),c.enclosed.push(r),n}}))}}),function(e){function a(e,t,n){var r=e.length;if(!r)return null;for(var i=[],o=!1,a=0;a<r;a++){var s=e[a].drop_side_effect_free(t,n);o|=s!==e[a],s&&(i.push(s),n=!1)}return o?i.length?i:null:e}e(ue,D),e(Oe,T),e(it,function(e,t){var n=a(this.elements,e,t);return n&&M(this,n)}),e(rt,function(e){var t=this.left;return t.has_side_effects(e)||e.has_directive("use strict")&&t instanceof We&&t.expression.is_constant()?this:(this.write_only=!0,ee(t).is_constant_expression(e.find_parent(xe))?this.right.drop_side_effect_free(e):this)}),e(tt,function(e,t){var n=this.right.drop_side_effect_free(e);if(!n)return this.left.drop_side_effect_free(e,t);if(te[this.operator]){if(n===this.right)return this;var r=this.clone();return r.right=n,r}var i=this.left.drop_side_effect_free(e,t);return i?M(this,[i,n]):this.right.drop_side_effect_free(e,t)}),e(Ke,function(t,e){if(!this.is_expr_pure(t)){if(this.expression.is_call_pure(t)){var n=this.args.slice();return n.unshift(this.expression.expression),(n=a(n,t,e))&&M(this,n)}if(!(this.expression instanceof Se)||this.expression.name&&this.expression.name.definition().references.length)return this;var r=this.clone(),i=r.expression;return i.process_expression(!1,t),i.walk(new Dt(function(e){return e instanceof Be&&e.value?(e.value=e.value.drop_side_effect_free(t),!0):e instanceof xe&&e!==i||void 0})),r}this.pure&&t.warn("Dropping __PURE__ call [{file}:{line},{col}]",this.start);var o=a(this.args,t,e);return o&&M(this,o)}),e(nt,function(e){var t=this.consequent.drop_side_effect_free(e),n=this.alternative.drop_side_effect_free(e);if(t===this.consequent&&n===this.alternative)return this;if(!t)return n?J(tt,this,{operator:"||",left:this.condition,right:n}):this.condition.drop_side_effect_free(e);if(!n)return J(tt,this,{operator:"&&",left:this.condition,right:t});var r=this.clone();return r.consequent=t,r.alternative=n,r}),e(vt,T),e(Qe,function(e,t){return this.expression.may_throw_on_access(e)?this:this.expression.drop_side_effect_free(e,t)}),e(Se,function(e){return this.name&&e.option("ie8")?this:null}),e(Je,function(e,t){if(s[this.operator])return this.write_only=!this.expression.has_side_effects(e),this;if("typeof"==this.operator&&this.expression instanceof mt)return null;var n=this.expression.drop_side_effect_free(e,t);return t&&n&&I(n)?n===this.expression&&"!"==this.operator?this:n.negate(e,t):n}),e(ot,function(e,t){var n=a(this.properties,e,t);return n&&M(this,n)}),e(at,function(e,t){return this.value.drop_side_effect_free(e,t)}),e(Ye,function(e){var t=this.tail_node(),n=t.drop_side_effect_free(e);if(n===t)return this;var r=this.expressions.slice(0,-1);return n&&r.push(n),M(this,r)}),e(Ze,function(e,t){if(this.expression.may_throw_on_access(e))return this;var n=this.expression.drop_side_effect_free(e,t);if(!n)return this.property.drop_side_effect_free(e,t);var r=this.property.drop_side_effect_free(e);return r?M(this,[n,r]):n}),e(mt,function(e){return this.is_declared(e)?null:this}),e(gt,T)}(function(e,t){e.DEFMETHOD("drop_side_effect_free",t)}),e(pe,function(e,t){if(t.option("side_effects")){var n=e.body,r=n.drop_side_effect_free(t,!0);if(!r)return t.warn("Dropping side-effect-free statement [{file}:{line},{col}]",e.start),J(me,e);if(r!==n)return J(pe,e,{body:r})}return e}),e(_e,function(e,t){return t.option("loops")?J(we,e,e).optimize(t):e}),e(ye,function(e,t){if(!t.option("loops"))return e;var n=e.condition.is_truthy()||e.condition.tail_node().evaluate(t);if(!(n instanceof ue)){if(n)return J(we,e,{body:J(de,e.body,{body:[e.body,J(pe,e.condition,{body:e.condition})]})}).optimize(t);if(!x(e,t.parent()))return J(de,e.body,{body:[e.body,J(pe,e.condition,{body:e.condition})]}).optimize(t)}return e.body instanceof pe?J(we,e,{condition:M(e.condition,[e.body.body,e.condition]),body:J(me,e)}).optimize(t):e}),e(we,function(e,t){if(!t.option("loops"))return e;if(t.option("side_effects")&&e.init&&(e.init=e.init.drop_side_effect_free(t)),e.condition){var n=e.condition.evaluate(t);if(!(n instanceof ue))if(n)e.condition=null;else if(!t.option("dead_code")){var r=e.condition;e.condition=N(n,e.condition),e.condition=y(e.condition.transform(t),r)}if(n instanceof ue&&(n=e.condition.is_truthy()||e.condition.tail_node().evaluate(t)),n)!e.condition||n instanceof ue||(e.body=J(de,e.body,{body:[J(pe,e.condition,{body:e.condition}),e.body]}),e.condition=null);else if(t.option("dead_code")){var i=[];return E(t,e.body,i),e.init instanceof le?i.push(e.init):e.init&&i.push(J(pe,e.init,{body:e.init})),i.push(J(pe,e.condition,{body:e.condition})),J(de,e,{body:i}).optimize(t)}}return function t(n,r){var e=n.body instanceof de?n.body.body[0]:n.body;if(r.option("dead_code")&&o(e)){var i=[];return n.init instanceof le?i.push(n.init):n.init&&i.push(J(pe,n.init,{body:n.init})),n.condition&&i.push(J(pe,n.condition,{body:n.condition})),E(r,n.body,i),J(de,n,{body:i})}return e instanceof qe&&(o(e.body)?(n.condition?n.condition=J(tt,n.condition,{left:n.condition,operator:"&&",right:e.condition.negate(r)}):n.condition=e.condition.negate(r),a(e.alternative)):o(e.alternative)&&(n.condition?n.condition=J(tt,n.condition,{left:n.condition,operator:"&&",right:e.condition}):n.condition=e.condition,a(e.body))),n;function o(e){return e instanceof Le&&r.loopcontrol_target(e)===r.self()}function a(e){e=_(e),n.body instanceof de?(n.body=n.body.clone(),n.body.body=e.concat(n.body.body.slice(1)),n.body=n.body.transform(r)):n.body=J(de,n.body,{body:e}).transform(r),n=t(n,r)}}(e,t)}),e(qe,function(e,t){if(P(e.alternative)&&(e.alternative=null),!t.option("conditionals"))return e;var n=e.condition.evaluate(t);if(!(t.option("dead_code")||n instanceof ue)){var r=e.condition;e.condition=N(n,r),e.condition=y(e.condition.transform(t),r)}if(t.option("dead_code")){if(n instanceof ue&&(n=e.condition.is_truthy()||e.condition.tail_node().evaluate(t)),!n){t.warn("Condition always false [{file}:{line},{col}]",e.condition.start);var i=[];return E(t,e.body,i),i.push(J(pe,e.condition,{body:e.condition})),e.alternative&&i.push(e.alternative),J(de,e,{body:i}).optimize(t)}if(!(n instanceof ue)){t.warn("Condition always true [{file}:{line},{col}]",e.condition.start);i=[];return e.alternative&&E(t,e.alternative,i),i.push(J(pe,e.condition,{body:e.condition})),i.push(e.body),J(de,e,{body:i}).optimize(t)}}var o=e.condition.negate(t),a=e.condition.print_to_string().length,s=o.print_to_string().length,u=s<a;if(e.alternative&&u){u=!1,e.condition=o;var l=e.body;e.body=e.alternative||J(me,e),e.alternative=l}if(P(e.body)&&P(e.alternative))return J(pe,e.condition,{body:e.condition.clone()}).optimize(t);if(e.body instanceof pe&&e.alternative instanceof pe)return J(pe,e,{body:J(nt,e,{condition:e.condition,consequent:e.body.body,alternative:e.alternative.body})}).optimize(t);if(P(e.alternative)&&e.body instanceof pe)return a===s&&!u&&e.condition instanceof tt&&"||"==e.condition.operator&&(u=!0),u?J(pe,e,{body:J(tt,e,{operator:"||",left:o,right:e.body.body})}).optimize(t):J(pe,e,{body:J(tt,e,{operator:"&&",left:e.condition,right:e.body.body})}).optimize(t);if(e.body instanceof me&&e.alternative instanceof pe)return J(pe,e,{body:J(tt,e,{operator:"||",left:e.condition,right:e.alternative.body})}).optimize(t);if(e.body instanceof Te&&e.alternative instanceof Te&&e.body.TYPE==e.alternative.TYPE)return J(e.body.CTOR,e,{value:J(nt,e,{condition:e.condition,consequent:e.body.value||J(At,e.body),alternative:e.alternative.value||J(At,e.alternative)}).transform(t)}).optimize(t);if(e.body instanceof qe&&!e.body.alternative&&!e.alternative&&(e=J(qe,e,{condition:J(tt,e.condition,{operator:"&&",left:e.condition,right:e.body.condition}),body:e.body.body,alternative:null})),A(e.body)&&e.alternative){var c=e.alternative;return e.alternative=null,J(de,e,{body:[e,c]}).optimize(t)}if(A(e.alternative)){i=e.body;return e.body=e.alternative,e.condition=u?o:e.condition.negate(t),e.alternative=null,J(de,e,{body:[e,i]}).optimize(t)}return e}),e(Ue,function(t,n){if(!n.option("switches"))return t;var e,r=t.expression.evaluate(n);if(!(r instanceof ue)){var i=t.expression;t.expression=N(r,i),t.expression=y(t.expression.transform(n),i)}if(!n.option("dead_code"))return t;r instanceof ue&&(r=t.expression.tail_node().evaluate(n));for(var o,a,s=[],u=[],l=0,c=t.body.length;l<c&&!a;l++){if((e=t.body[l])instanceof Ne)o?b(e,u[u.length-1]):o=e;else if(!(r instanceof ue)){if(!((g=e.expression.evaluate(n))instanceof ue)&&g!==r){b(e,u[u.length-1]);continue}if(g instanceof ue&&(g=e.expression.tail_node().evaluate(n)),g===r&&(a=e,o)){var f=u.indexOf(o);u.splice(f,1),b(o,u[f-1]),o=null}}if(A(e)){var p=u[u.length-1];A(p)&&p.body.length==e.body.length&&J(de,p,p).equivalent_to(J(de,e,e))&&(p.body=[])}u.push(e)}for(;l<c;)b(t.body[l++],u[u.length-1]);for(0<u.length&&(u[0].body=s.concat(u[0].body)),t.body=u;e=u[u.length-1];){var h=e.body[e.body.length-1];if(h instanceof Le&&n.loopcontrol_target(h)===t&&e.body.pop(),e.body.length||e instanceof Pe&&(o||e.expression.has_side_effects(n)))break;u.pop()===o&&(o=null)}if(0==u.length)return J(de,t,{body:s.concat(J(pe,t.expression,{body:t.expression}))}).optimize(n);if(1==u.length&&(u[0]===a||u[0]===o)){var d=!1,m=new Dt(function(e){if(d||e instanceof Ce||e instanceof pe)return!0;e instanceof Le&&m.loopcontrol_target(e)===t&&(d=!0)});if(t.walk(m),!d){var g,v=u[0].body.slice();return(g=u[0].expression)&&v.unshift(J(pe,g,{body:g})),v.unshift(J(pe,t.expression,{body:t.expression})),J(de,t,{body:v}).optimize(n)}}return t;function b(e,t){t&&!A(t)?t.body=t.body.concat(e.body):E(n,e,s)}}),e(Ie,function(e,t){if(i(e.body,t),e.bcatch&&e.bfinally&&ae(e.bfinally.body,P)&&(e.bfinally=null),t.option("dead_code")&&ae(e.body,P)){var n=[];return e.bcatch&&(E(t,e.bcatch,n),n.forEach(function(e){e instanceof Ve&&e.definitions.forEach(function(e){var t=e.name.definition().redefined();t&&(e.name=e.name.clone(),e.name.thedef=t)})})),e.bfinally&&(n=n.concat(e.bfinally.body)),J(de,e,{body:n}).optimize(t)}return e}),Ve.DEFMETHOD("remove_initializers",function(){this.definitions.forEach(function(e){e.value=null})}),Ve.DEFMETHOD("to_assignments",function(e){var r=e.option("reduce_vars"),t=this.definitions.reduce(function(e,t){if(t.value){var n=J(mt,t.name,t.name);e.push(J(rt,t,{operator:"=",left:n,right:t.value})),r&&(n.definition().fixed=!1)}return(t=t.name.definition()).eliminated++,t.replaced--,e},[]);return 0==t.length?null:M(this,t)}),e(Ve,function(e,t){return 0==e.definitions.length?J(me,e):e}),Ke.DEFMETHOD("lift_sequences",function(e){if(!e.option("sequences"))return this;var t=this.expression;if(!(t instanceof Ye))return this;var n=t.tail_node();if(a(e,n)&&!(this instanceof Ge))return this;var r=t.expressions.slice(0,-1),i=this.clone();return i.expression=n,r.push(i),M(this,r).optimize(e)}),e(Ke,function(s,i){var e=s.lift_sequences(i);if(e!==s)return e;var t=s.expression,h=t;i.option("reduce_vars")&&h instanceof mt&&(h=h.fixed_value());var n=h instanceof Ce;if(i.option("unused")&&n&&!h.uses_arguments&&!h.pinned()){for(var r=0,o=0,a=0,u=s.args.length;a<u;a++){var l=a>=h.argnames.length;if(l||h.argnames[a].__unused){if(d=s.args[a].drop_side_effect_free(i))s.args[r++]=d;else if(!l){s.args[r++]=J(yt,s.args[a],{value:0});continue}}else s.args[r++]=s.args[a];o=r}s.args.length=o}if(i.option("unsafe"))if(z(t))switch(t.name){case"Array":if(1!=s.args.length)return J(it,s,{elements:s.args}).optimize(i);break;case"Object":if(0==s.args.length)return J(ot,s,{properties:[]});break;case"String":if(0==s.args.length)return J(bt,s,{value:""});if(s.args.length<=1)return J(tt,s,{left:s.args[0],operator:"+",right:J(bt,s,{value:""})}).optimize(i);break;case"Number":if(0==s.args.length)return J(yt,s,{value:0});if(1==s.args.length)return J(Xe,s,{expression:s.args[0],operator:"+"}).optimize(i);case"Boolean":if(0==s.args.length)return J(Ot,s);if(1==s.args.length)return J(Xe,s,{expression:J(Xe,s,{expression:s.args[0],operator:"!"}),operator:"!"}).optimize(i);break;case"RegExp":var c=[];if(ae(s.args,function(e){var t=e.evaluate(i);return c.unshift(t),e!==t}))try{return V(i,s,J(_t,s,{value:RegExp.apply(RegExp,c)}))}catch(e){i.warn("Error converting {expr} [{file}:{line},{col}]",{expr:s.print_to_string(),file:s.start.file,line:s.start.line,col:s.start.col})}}else if(t instanceof Qe)switch(t.property){case"toString":if(0==s.args.length&&!t.expression.may_throw_on_access(i))return J(tt,s,{left:J(bt,s,{value:""}),operator:"+",right:t.expression}).optimize(i);break;case"join":var f;if(t.expression instanceof it)if(!(0<s.args.length&&(f=s.args[0].evaluate(i))===s.args[0])){var p,d,m=[],g=[];return t.expression.elements.forEach(function(e){var t=e.evaluate(i);t!==e?g.push(t):(0<g.length&&(m.push(J(bt,s,{value:g.join(f)})),g.length=0),m.push(e))}),0<g.length&&m.push(J(bt,s,{value:g.join(f)})),0==m.length?J(bt,s,{value:""}):1==m.length?m[0].is_string(i)?m[0]:J(tt,m[0],{operator:"+",left:J(bt,s,{value:""}),right:m[0]}):""==f?(p=m[0].is_string(i)||m[1].is_string(i)?m.shift():J(bt,s,{value:""}),m.reduce(function(e,t){return J(tt,t,{operator:"+",left:e,right:t})},p).optimize(i)):((d=s.clone()).expression=d.expression.clone(),d.expression.expression=d.expression.expression.clone(),d.expression.expression.elements=m,V(i,s,d))}break;case"charAt":if(t.expression.is_string(i)){var v=s.args[0],b=v?v.evaluate(i):0;if(b!==v)return J(Ze,t,{expression:t.expression,property:N(0|b,v||t)}).optimize(i)}break;case"apply":if(2==s.args.length&&s.args[1]instanceof it)return(O=s.args[1].elements.slice()).unshift(s.args[0]),J(Ke,s,{expression:J(Qe,t,{expression:t.expression,property:"call"}),args:O}).optimize(i);break;case"call":var y=t.expression;if(y instanceof mt&&(y=y.fixed_value()),y instanceof Ce&&!y.contains_this())return(s.args.length?M(this,[s.args[0],J(Ke,s,{expression:t.expression,args:s.args.slice(1)})]):J(Ke,s,{expression:t.expression,args:[]})).optimize(i)}if(i.option("unsafe_Function")&&z(t)&&"Function"==t.name){if(0==s.args.length)return J(Se,s,{argnames:[],body:[]});if(ae(s.args,function(e){return e instanceof bt}))try{var _=Yt(x="n(function("+s.args.slice(0,-1).map(function(e){return e.value}).join(",")+"){"+s.args[s.args.length-1].value+"})"),w={ie8:i.option("ie8")};_.figure_out_scope(w);var E,A=new Xt(i.options);(_=_.transform(A)).figure_out_scope(w),_.compute_char_frequency(w),_.mangle_names(w),_.walk(new Dt(function(e){return!!E||(e instanceof Ce?(E=e,!0):void 0)}));var x=Jt();return de.prototype._codegen.call(E,E,x),s.args=[J(bt,s,{value:E.argnames.map(function(e){return e.print_to_string()}).join(",")}),J(bt,s.args[s.args.length-1],{value:x.get().replace(/^\{|\}$/g,"")})],s}catch(e){if(!(e instanceof Nt))throw e;i.warn("Error parsing code passed to new Function [{file}:{line},{col}]",s.args[s.args.length-1].start),i.warn(e.toString())}}var k=n&&h.body[0],C=i.option("inline")&&!s.is_expr_pure(i);if(C&&k instanceof Be&&(!(D=k.value)||D.is_constant_expression())){D=D?D.clone(!0):J(At,s);var O=s.args.concat(D);return M(s,O).optimize(i)}if(n){var S,D,T,B,R=-1;if(C&&!h.uses_arguments&&!h.pinned()&&!(h.name&&h instanceof Se)&&(D=function(e){var t=h.body.length;if(i.option("inline")<3)return 1==t&&q(e);e=null;for(var n=0;n<t;n++){var r=h.body[n];if(r instanceof He){if(e&&!ae(r.definitions,function(e){return!e.value}))return!1}else{if(r instanceof me)continue;if(e)return!1;e=r}}return q(e)}(k))&&(t===h||i.option("unused")&&1==(S=t.definition()).references.length&&!H(i,S)&&h.is_constant_expression(t.scope))&&!s.pure&&!h.contains_this()&&function(){var e=Object.create(null);do{if((T=i.parent(++R))instanceof ze)e[T.argname.name]=!0;else if(T instanceof ve)B=[];else if(T instanceof mt&&T.fixed_value()instanceof xe)return!1}while(!(T instanceof xe));var t=!(T instanceof ke)||i.toplevel.vars,n=i.option("inline");return!(!function(e,t){for(var n=h.body.length,r=0;r<n;r++){var i=h.body[r];if(i instanceof He){if(!t)return!1;for(var o=i.definitions.length;0<=--o;){var a=i.definitions[o].name;if(e[a.name]||j[a.name]||T.var_names()[a.name])return!1;B&&B.push(a.definition())}}}return!0}(e,3<=n&&t)||!function(e,t){for(var n=0,r=h.argnames.length;n<r;n++){var i=h.argnames[n];if(!i.__unused){if(!t||e[i.name]||j[i.name]||T.var_names()[i.name])return!1;B&&B.push(i.definition())}}return!0}(e,2<=n&&t)||B&&0!=B.length&&$(h,B))}())return h._squeezed=!0,M(s,function(){var e=[],t=[];(function(e,t){for(var n=h.argnames.length,r=s.args.length;--r>=n;)t.push(s.args[r]);for(r=n;0<=--r;){var i=h.argnames[r],o=s.args[r];if(i.__unused||T.var_names()[i.name])o&&t.push(o);else{var a=J(ct,i,i);i.definition().orig.push(a),!o&&B&&(o=J(At,s)),U(e,t,a,o)}}e.reverse(),t.reverse()})(e,t),function(e,t){for(var n=t.length,r=0,i=h.body.length;r<i;r++){var o=h.body[r];if(o instanceof He)for(var a=0,s=o.definitions.length;a<s;a++){var u=o.definitions[a],l=u.name,c=l.definition().redefined();if(c&&((l=l.clone()).thedef=c),U(e,t,l,u.value),B&&ae(h.argnames,function(e){return e.name!=l.name})){var f=h.variables.get(l.name),p=J(mt,l,l);f.references.push(p),t.splice(n++,0,J(rt,u,{operator:"=",left:p,right:J(At,l)}))}}}}(e,t),t.push(D),e.length&&(a=T.body.indexOf(i.parent(R-1))+1,T.body.splice(a,0,J(He,h,{definitions:e})));return t}()).optimize(i);if(i.option("side_effects")&&ae(h.body,P)){O=s.args.concat(J(At,s));return M(s,O).optimize(i)}}if(i.option("drop_console")&&t instanceof We){for(var L=t.expression;L.expression;)L=L.expression;if(z(L)&&"console"==L.name)return J(At,s).optimize(i)}if(i.option("negate_iife")&&i.parent()instanceof pe&&I(s))return s.negate(i,!0);var F=s.evaluate(i);return F!==s?(F=N(F,s).optimize(i),V(i,F,s)):s;function q(e){return e?e instanceof Be?e.value?e.value.clone(!0):J(At,s):e instanceof pe?J(Xe,e,{operator:"void",expression:e.body.clone(!0)}):void 0:J(At,s)}function U(e,t,n,r){var i=n.definition();T.variables.set(n.name,i),T.enclosed.push(i),T.var_names()[n.name]||(T.var_names()[n.name]=!0,e.push(J($e,n,{name:n,value:null})));var o=J(mt,n,n);i.references.push(o),r&&t.push(J(rt,s,{operator:"=",left:o,right:r}))}}),e(Ge,function(e,t){var n=e.lift_sequences(t);if(n!==e)return n;if(t.option("unsafe")){var r=e.expression;if(z(r))switch(r.name){case"Object":case"RegExp":case"Function":case"Error":case"Array":return J(Ke,e,e).transform(t)}}return e}),e(Ye,function(e,n){if(!n.option("side_effects"))return e;var r,i,o=[];r=F(n),i=e.expressions.length-1,e.expressions.forEach(function(e,t){t<i&&(e=e.drop_side_effect_free(n,r)),e&&(h(o,e),r=!1)});var t=o.length-1;return function(){for(;0<t&&b(o[t],n);)t--;t<o.length-1&&(o[t]=J(Xe,e,{operator:"void",expression:o[t]}),o.length=t+1)}(),0==t?(e=X(n,n.parent(),n.self(),o[0]))instanceof Ye||(e=e.optimize(n)):e.expressions=o,e}),Je.DEFMETHOD("lift_sequences",function(e){if(e.option("sequences")&&this.expression instanceof Ye){var t=this.expression.expressions.slice(),n=this.clone();return n.expression=t.pop(),t.push(n),M(this,t).optimize(e)}return this}),e(et,function(e,t){return e.lift_sequences(t)}),e(Xe,function(e,t){var n,r=e.expression;if("delete"==e.operator&&!(r instanceof mt||r instanceof We||((n=r)instanceof kt||n instanceof Et||n instanceof At)))return r instanceof Ye?((r=r.expressions.slice()).push(J(St,e)),M(e,r).optimize(t)):M(e,[r,J(St,e)]).optimize(t);var i=e.lift_sequences(t);if(i!==e)return i;if(t.option("side_effects")&&"void"==e.operator)return(r=r.drop_side_effect_free(t))?(e.expression=r,e):J(At,e).optimize(t);if(t.option("booleans")){if("!"==e.operator&&r.is_truthy())return M(e,[r,J(Ot,e)]).optimize(t);if(t.in_boolean_context())switch(e.operator){case"!":if(r instanceof Xe&&"!"==r.operator)return r.expression;r instanceof tt&&(e=V(t,e,r.negate(t,F(t))));break;case"typeof":return t.warn("Boolean expression always true [{file}:{line},{col}]",e.start),(r instanceof mt?J(St,e):M(e,[r,J(St,e)])).optimize(t)}}if("-"==e.operator&&r instanceof kt&&(r=r.transform(t)),r instanceof tt&&("+"==e.operator||"-"==e.operator)&&("*"==r.operator||"/"==r.operator||"%"==r.operator))return J(tt,e,{operator:r.operator,left:J(Xe,r.left,{operator:e.operator,expression:r.left}),right:r.right});if("-"!=e.operator||!(r instanceof yt||r instanceof kt)){var o=e.evaluate(t);if(o!==e)return V(t,o=N(o,e).optimize(t),e)}return e}),tt.DEFMETHOD("lift_sequences",function(e){if(e.option("sequences")){if(this.left instanceof Ye){var t=this.left.expressions.slice();return(n=this.clone()).left=t.pop(),t.push(n),M(this,t).optimize(e)}if(this.right instanceof Ye&&!this.left.has_side_effects(e)){for(var n,r="="==this.operator&&this.left instanceof mt,i=(t=this.right.expressions).length-1,o=0;o<i&&(r||!t[o].has_side_effects(e));o++);if(o==i)return t=t.slice(),(n=this.clone()).right=t.pop(),t.push(n),M(this,t).optimize(e);if(0<o)return(n=this.clone()).right=M(this.right,t.slice(o)),(t=t.slice(0,o)).push(n),M(this,t).optimize(e)}}return this});var k=W("== === != !== * & | ^");function H(e,t){for(var n,r=0;n=e.parent(r);r++)if(n instanceof Ce){var i=n.name;if(i&&i.definition()===t)break}return n}function p(e,t){return e instanceof mt||e.TYPE===t.TYPE}function $(n,t){var r=!1,i=new Dt(function(e){return!!r||(e instanceof mt&&re(e.definition(),t)?r=!0:void 0)}),o=new Dt(function(e){if(r)return!0;if(e instanceof xe&&e!==n){var t=o.parent();if(t instanceof Ke&&t.expression===e)return;return e.walk(i),!0}});return n.walk(o),r}e(tt,function(n,t){function r(){return n.left.is_constant()||n.right.is_constant()||!n.left.has_side_effects(t)&&!n.right.has_side_effects(t)}function e(e){if(r()){e&&(n.operator=e);var t=n.left;n.left=n.right,n.right=t}}if(k[n.operator]&&n.right.is_constant()&&!n.left.is_constant()&&(n.left instanceof tt&&Kt[n.left.operator]>=Kt[n.operator]||e()),n=n.lift_sequences(t),t.option("comparisons"))switch(n.operator){case"===":case"!==":var i=!0;(n.left.is_string(t)&&n.right.is_string(t)||n.left.is_number(t)&&n.right.is_number(t)||n.left.is_boolean(t)&&n.right.is_boolean(t)||n.left.equivalent_to(n.right))&&(n.operator=n.operator.substr(0,2));case"==":case"!=":if(!i&&b(n.left,t))n.left=J(wt,n.left);else if(t.option("typeofs")&&n.left instanceof bt&&"undefined"==n.left.value&&n.right instanceof Xe&&"typeof"==n.right.operator){var o=n.right.expression;(o instanceof mt?!o.is_declared(t):o instanceof We&&t.option("ie8"))||(n.right=o,n.left=J(At,n.left).optimize(t),2==n.operator.length&&(n.operator+="="))}else if(n.left instanceof mt&&n.right instanceof mt&&n.left.definition()===n.right.definition()&&((u=n.left.fixed_value())instanceof it||u instanceof Ce||u instanceof ot))return J("="==n.operator[0]?St:Ot,n);break;case"&&":case"||":var a=n.left;if(a.operator==n.operator&&(a=a.right),a instanceof tt&&a.operator==("&&"==n.operator?"!==":"===")&&n.right instanceof tt&&a.operator==n.right.operator&&(b(a.left,t)&&n.right.left instanceof wt||a.left instanceof wt&&b(n.right.left,t))&&!a.right.has_side_effects(t)&&a.right.equivalent_to(n.right.right)){var s=J(tt,n,{operator:a.operator.slice(0,-1),left:J(wt,n),right:a.right});return a!==n.left&&(s=J(tt,n,{operator:n.operator,left:n.left.left,right:s})),s}}var u;if(t.option("booleans")&&"+"==n.operator&&t.in_boolean_context()){var l=n.left.evaluate(t),c=n.right.evaluate(t);if(l&&"string"==typeof l)return t.warn("+ in boolean context always true [{file}:{line},{col}]",n.start),M(n,[n.right,J(St,n)]).optimize(t);if(c&&"string"==typeof c)return t.warn("+ in boolean context always true [{file}:{line},{col}]",n.start),M(n,[n.left,J(St,n)]).optimize(t)}if(t.option("comparisons")&&n.is_boolean(t)){if(!(t.parent()instanceof tt)||t.parent()instanceof rt){var f=J(Xe,n,{operator:"!",expression:n.negate(t,F(t))});n=V(t,n,f)}switch(n.operator){case">":e("<");break;case">=":e("<=")}}if("+"==n.operator){if(n.right instanceof bt&&""==n.right.getValue()&&n.left.is_string(t))return n.left;if(n.left instanceof bt&&""==n.left.getValue()&&n.right.is_string(t))return n.right;if(n.left instanceof tt&&"+"==n.left.operator&&n.left.left instanceof bt&&""==n.left.left.getValue()&&n.right.is_string(t))return n.left=n.left.right,n.transform(t)}if(t.option("evaluate")){switch(n.operator){case"&&":if(!(l=v(n.left)))return t.warn("Condition left of && always false [{file}:{line},{col}]",n.start),X(t,t.parent(),t.self(),n.left).optimize(t);if(!(l instanceof ue))return t.warn("Condition left of && always true [{file}:{line},{col}]",n.start),M(n,[n.left,n.right]).optimize(t);if(c=n.right.evaluate(t)){if(!(c instanceof ue)){if("&&"==(p=t.parent()).operator&&p.left===t.self()||t.option("booleans")&&t.in_boolean_context())return t.warn("Dropping side-effect-free && [{file}:{line},{col}]",n.start),n.left.optimize(t)}}else{if(t.option("booleans")&&t.in_boolean_context())return t.warn("Boolean && always false [{file}:{line},{col}]",n.start),M(n,[n.left,J(Ot,n)]).optimize(t);n.falsy=!0}if("||"==n.left.operator)if(!(h=n.left.right.evaluate(t)))return J(nt,n,{condition:n.left.left,consequent:n.right,alternative:n.left.right}).optimize(t);break;case"||":var p,h;if(!(l=v(n.left)))return t.warn("Condition left of || always false [{file}:{line},{col}]",n.start),M(n,[n.left,n.right]).optimize(t);if(!(l instanceof ue))return t.warn("Condition left of || always true [{file}:{line},{col}]",n.start),X(t,t.parent(),t.self(),n.left).optimize(t);if(c=n.right.evaluate(t)){if(!(c instanceof ue)){if(t.option("booleans")&&t.in_boolean_context())return t.warn("Boolean || always true [{file}:{line},{col}]",n.start),M(n,[n.left,J(St,n)]).optimize(t);n.truthy=!0}}else if("||"==(p=t.parent()).operator&&p.left===t.self()||t.option("booleans")&&t.in_boolean_context())return t.warn("Dropping side-effect-free || [{file}:{line},{col}]",n.start),n.left.optimize(t);if("&&"==n.left.operator)if((h=n.left.right.evaluate(t))&&!(h instanceof ue))return J(nt,n,{condition:n.left.left,consequent:n.left.right,alternative:n.right}).optimize(t)}var d=!0;switch(n.operator){case"+":if(n.left instanceof vt&&n.right instanceof tt&&"+"==n.right.operator&&n.right.left instanceof vt&&n.right.is_string(t)&&(n=J(tt,n,{operator:"+",left:J(bt,n.left,{value:""+n.left.getValue()+n.right.left.getValue(),start:n.left.start,end:n.right.left.end}),right:n.right.right})),n.right instanceof vt&&n.left instanceof tt&&"+"==n.left.operator&&n.left.right instanceof vt&&n.left.is_string(t)&&(n=J(tt,n,{operator:"+",left:n.left.left,right:J(bt,n.right,{value:""+n.left.right.getValue()+n.right.getValue(),start:n.left.right.start,end:n.right.end})})),n.left instanceof tt&&"+"==n.left.operator&&n.left.is_string(t)&&n.left.right instanceof vt&&n.right instanceof tt&&"+"==n.right.operator&&n.right.left instanceof vt&&n.right.is_string(t)&&(n=J(tt,n,{operator:"+",left:J(tt,n.left,{operator:"+",left:n.left.left,right:J(bt,n.left.right,{value:""+n.left.right.getValue()+n.right.left.getValue(),start:n.left.right.start,end:n.right.left.end})}),right:n.right.right})),n.right instanceof Xe&&"-"==n.right.operator&&n.left.is_number(t)){n=J(tt,n,{operator:"-",left:n.left,right:n.right.expression});break}if(n.left instanceof Xe&&"-"==n.left.operator&&r()&&n.right.is_number(t)){n=J(tt,n,{operator:"-",left:n.right,right:n.left.expression});break}case"*":d=t.option("unsafe_math");case"&":case"|":case"^":if(n.left.is_number(t)&&n.right.is_number(t)&&r()&&!(n.left instanceof tt&&n.left.operator!=n.operator&&Kt[n.left.operator]>=Kt[n.operator])){var m=J(tt,n,{operator:n.operator,left:n.right,right:n.left});n=n.right instanceof vt&&!(n.left instanceof vt)?V(t,m,n):V(t,n,m)}d&&n.is_number(t)&&(n.right instanceof tt&&n.right.operator==n.operator&&(n=J(tt,n,{operator:n.operator,left:J(tt,n.left,{operator:n.operator,left:n.left,right:n.right.left,start:n.left.start,end:n.right.left.end}),right:n.right.right})),n.right instanceof vt&&n.left instanceof tt&&n.left.operator==n.operator&&(n.left.left instanceof vt?n=J(tt,n,{operator:n.operator,left:J(tt,n.left,{operator:n.operator,left:n.left.left,right:n.right,start:n.left.left.start,end:n.right.end}),right:n.left.right}):n.left.right instanceof vt&&(n=J(tt,n,{operator:n.operator,left:J(tt,n.left,{operator:n.operator,left:n.left.right,right:n.right,start:n.left.right.start,end:n.right.end}),right:n.left.left}))),n.left instanceof tt&&n.left.operator==n.operator&&n.left.right instanceof vt&&n.right instanceof tt&&n.right.operator==n.operator&&n.right.left instanceof vt&&(n=J(tt,n,{operator:n.operator,left:J(tt,n.left,{operator:n.operator,left:J(tt,n.left.left,{operator:n.operator,left:n.left.right,right:n.right.left,start:n.left.right.start,end:n.right.left.end}),right:n.left.left}),right:n.right.right})))}}if(n.right instanceof tt&&n.right.operator==n.operator&&(te[n.operator]||"+"==n.operator&&(n.right.left.is_string(t)||n.left.is_string(t)&&n.right.right.is_string(t))))return n.left=J(tt,n.left,{operator:n.operator,left:n.left,right:n.right.left}),n.right=n.right.right,n.transform(t);var g=n.evaluate(t);return g!==n?(g=N(g,n).optimize(t),V(t,g,n)):n;function v(e){return!!e.truthy||!e.falsy&&(!!e.is_truthy()||e.evaluate(t))}}),e(mt,function(e,t){if(!t.option("ie8")&&z(e)&&(!e.scope.uses_with||!t.find_parent(Ae)))switch(e.name){case"undefined":return J(At,e).optimize(t);case"NaN":return J(Et,e).optimize(t);case"Infinity":return J(kt,e).optimize(t)}var n,r=t.parent();if(t.option("reduce_vars")&&ne(e,r)!==e){var i=e.definition(),o=e.fixed_value(),a=i.single_use&&!(r instanceof Ke&&r.is_expr_pure(t));if(a&&o instanceof Ce)if(i.scope===e.scope||t.option("reduce_funcs")&&1!=i.escaped&&!o.inlined){if(H(t,i))a=!1;else if((i.scope!==e.scope||i.orig[0]instanceof ft)&&"f"==(a=o.is_constant_expression(e.scope)))for(var s=e.scope;(s instanceof De||s instanceof Se)&&(s.inlined=!0),s=s.parent_scope;);}else a=!1;if(a&&o){var u;if(i.single_use=!1,o instanceof De&&(o._squeezed=!0,(o=J(Se,o,o)).name=J(ht,o.name,o.name)),0<i.recursive_refs){var l=(u=o.clone(!0)).name.definition(),c=u.variables.get(u.name.name),f=c&&c.orig[0];f instanceof ht||(((f=J(ht,u.name,u.name)).scope=u).name=f,c=u.def_function(f)),u.walk(new Dt(function(e){if(e instanceof mt){var t=e.definition();t===l?(e.thedef=c).references.push(e):t.single_use=!1}}))}else(u=o.optimize(t))===o&&(u=o.clone(!0));return u}if(o&&void 0===i.should_replace){var p;if(o instanceof gt)i.orig[0]instanceof ft||!ae(i.references,function(e){return i.scope===e.scope})||(p=o);else{var h=o.evaluate(t);h===o||!t.option("unsafe_regexp")&&h instanceof RegExp||(p=N(h,o))}if(p){var d,m=p.optimize(t).print_to_string().length;o.walk(new Dt(function(e){if(e instanceof mt&&(n=!0),n)return!0})),d=n?function(){var e=p.optimize(t);return e===p?e.clone(!0):e}:(m=Math.min(m,o.print_to_string().length),function(){var e=y(p.optimize(t),o);return e===p||e===o?e.clone(!0):e});var g=i.name.length,v=0;t.option("unused")&&!t.exposed(i)&&(v=(g+2+m)/(i.references.length-i.assignments)),i.should_replace=m<=g+v&&d}else i.should_replace=!1}if(i.should_replace)return i.should_replace()}return e}),e(At,function(e,t){if(t.option("unsafe_undefined")){var n=o(t,"undefined");if(n){var r=J(mt,e,{name:"undefined",scope:n.scope,thedef:n});return r.is_undefined=!0,r}}var i=ne(t.self(),t.parent());return i&&p(i,e)?e:J(Xe,e,{operator:"void",expression:J(yt,e,{value:0})})}),e(kt,function(e,t){var n=ne(t.self(),t.parent());return n&&p(n,e)?e:!t.option("keep_infinity")||n&&!p(n,e)||o(t,"Infinity")?J(tt,e,{operator:"/",left:J(yt,e,{value:1}),right:J(yt,e,{value:0})}):e}),e(Et,function(e,t){var n=ne(t.self(),t.parent());return n&&!p(n,e)||o(t,"NaN")?J(tt,e,{operator:"/",left:J(yt,e,{value:0}),right:J(yt,e,{value:0})}):e});var C=W("+ - / * % >> << >>> | ^ &"),O=W("* | ^ &");function S(e,t){return e instanceof mt&&(e=e.fixed_value()),!!e&&(!(e instanceof Ce)||t.parent()instanceof Ge||!e.contains_this())}e(rt,function(a,s){var e;if(s.option("dead_code")&&a.left instanceof mt&&(e=a.left.definition()).scope===s.find_parent(Ce)){var t,n=0,r=a;do{if(t=r,(r=s.parent(n++))instanceof Te){if(i(n,r))break;if($(e.scope,[e]))break;return"="==a.operator?a.right:(e.fixed=!1,J(tt,a,{operator:a.operator.slice(0,-1),left:a.left,right:a.right}).optimize(s))}}while(r instanceof tt&&r.right===t||r instanceof Ye&&r.tail_node()===t)}return"="==(a=a.lift_sequences(s)).operator&&a.left instanceof mt&&a.right instanceof tt&&(a.right.left instanceof mt&&a.right.left.name==a.left.name&&C[a.right.operator]?(a.operator=a.right.operator+"=",a.right=a.right.right):a.right.right instanceof mt&&a.right.right.name==a.left.name&&O[a.right.operator]&&!a.right.left.has_side_effects(s)&&(a.operator=a.right.operator+"=",a.right=a.right.left)),a;function i(e,t){var n=a.right;a.right=J(wt,n);var r=t.may_throw(s);a.right=n;for(var i,o=a.left.definition().scope;(i=s.parent(e++))!==o;)if(i instanceof Ie){if(i.bfinally)return!0;if(r&&i.bcatch)return!0}}}),e(nt,function(e,t){if(!t.option("conditionals"))return e;if(e.condition instanceof Ye){var n=e.condition.expressions.slice();return e.condition=n.pop(),n.push(e),M(e,n)}var r=e.condition.is_truthy()||e.condition.tail_node().evaluate(t);if(!r)return t.warn("Condition always false [{file}:{line},{col}]",e.start),M(e,[e.condition,e.alternative]).optimize(t);if(!(r instanceof ue))return t.warn("Condition always true [{file}:{line},{col}]",e.start),M(e,[e.condition,e.consequent]).optimize(t);var i=r.negate(t,F(t));V(t,r,i)===i&&(e=J(nt,e,{condition:i,consequent:e.alternative,alternative:e.consequent}));var o=e.condition,a=e.consequent,s=e.alternative;if(o instanceof mt&&a instanceof mt&&o.definition()===a.definition())return J(tt,e,{operator:"||",left:o,right:s});var u,l=a.tail_node();if(l instanceof rt){var c="="==l.operator,f=c?s.tail_node():s;if((c||a instanceof rt)&&f instanceof rt&&l.operator==f.operator&&l.left.equivalent_to(f.left)&&(!o.has_side_effects(t)||c&&!l.left.has_side_effects(t)))return J(rt,e,{operator:l.operator,left:l.left,right:J(nt,e,{condition:o,consequent:v(a),alternative:v(s)})})}if(a instanceof Ke&&s.TYPE===a.TYPE&&0<a.args.length&&a.args.length==s.args.length&&a.expression.equivalent_to(s.expression)&&!o.has_side_effects(t)&&!a.expression.has_side_effects(t)&&"number"==typeof(u=function(){for(var e=a.args,t=s.args,n=0,r=e.length;n<r;n++)if(!e[n].equivalent_to(t[n])){for(var i=n+1;i<r;i++)if(!e[i].equivalent_to(t[i]))return;return n}}())){var p=a.clone();return p.args[u]=J(nt,e,{condition:o,consequent:a.args[u],alternative:s.args[u]}),p}if(a instanceof nt&&a.alternative.equivalent_to(s))return J(nt,e,{condition:J(tt,e,{left:o,operator:"&&",right:a.condition}),consequent:a.consequent,alternative:s});if(a.equivalent_to(s))return M(e,[o,a]).optimize(t);if((a instanceof Ye||s instanceof Ye)&&a.tail_node().equivalent_to(s.tail_node()))return M(e,[J(nt,e,{condition:o,consequent:b(a),alternative:b(s)}),a.tail_node()]).optimize(t);if(a instanceof tt&&"||"==a.operator&&a.right.equivalent_to(s))return J(tt,e,{operator:"||",left:J(tt,e,{operator:"&&",left:o,right:a.left}),right:s}).optimize(t);var h=t.option("booleans")&&t.in_boolean_context();return m(e.consequent)?g(e.alternative)?d(o):J(tt,e,{operator:"||",left:d(o),right:e.alternative}):g(e.consequent)?m(e.alternative)?d(o.negate(t)):J(tt,e,{operator:"&&",left:d(o.negate(t)),right:e.alternative}):m(e.alternative)?J(tt,e,{operator:"||",left:d(o.negate(t)),right:e.consequent}):g(e.alternative)?J(tt,e,{operator:"&&",left:d(o),right:e.consequent}):e;function d(e){return e.is_boolean(t)?e:J(Xe,e,{operator:"!",expression:e.negate(t)})}function m(e){return e instanceof St||h&&e instanceof vt&&e.getValue()||e instanceof Xe&&"!"==e.operator&&e.expression instanceof vt&&!e.expression.getValue()}function g(e){return e instanceof Ot||h&&e instanceof vt&&!e.getValue()||e instanceof Xe&&"!"==e.operator&&e.expression instanceof vt&&e.expression.getValue()}function v(e){if(!(e instanceof Ye))return e.right;var t=e.expressions.slice();return t.push(t.pop().right),M(e,t)}function b(e){return e instanceof Ye?M(e,e.expressions.slice(0,-1)):J(yt,e,{value:0})}}),e(Ct,function(e,t){if(!t.option("booleans"))return e;if(t.in_boolean_context())return J(yt,e,{value:+e.value});var n=t.parent();return n instanceof tt&&("=="==n.operator||"!="==n.operator)?(t.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]",{operator:n.operator,value:e.value,file:n.start.file,line:n.start.line,col:n.start.col}),J(yt,e,{value:+e.value})):J(Xe,e,{operator:"!",expression:J(yt,e,{value:1-e.value})})}),e(Ze,function(e,t){var n,r=e.expression,i=e.property;if(t.option("properties")){var o=i.evaluate(t);if(o!==i){if("string"==typeof o)if("undefined"==o)o=void 0;else(v=parseFloat(o)).toString()==o&&(o=v);i=e.property=y(i,N(o,i).transform(t));var a=""+o;if(Mt(a)&&a.length<=i.print_to_string().length+1)return J(Qe,e,{expression:r,property:a}).optimize(t)}}if(t.option("arguments")&&r instanceof mt&&"arguments"==r.name&&1==r.definition().orig.length&&(n=r.scope)instanceof Ce&&i instanceof yt){var s=i.getValue(),u=n.argnames[s];if(u&&t.has_directive("use strict")){var l=u.definition();(!t.option("reduce_vars")||l.assignments||1<l.orig.length)&&(u=null)}else if(!u&&!t.option("keep_fargs")&&s<n.argnames.length+5)for(;s>=n.argnames.length;)u=J(ft,n,{name:n.make_var_name("argument_"+n.argnames.length),scope:n}),n.argnames.push(u),n.enclosed.push(n.def_variable(u));if(u&&K(function(e){return e.name===u.name},n.argnames)===u){var c=J(mt,e,u);return c.reference({}),delete u.__unused,c}}if(ne(e,t.parent()))return e;if(o!==i){var f=e.flatten_object(a,t);f&&(r=e.expression=f.expression,i=e.property=f.property)}if(t.option("properties")&&t.option("side_effects")&&i instanceof yt&&r instanceof it){s=i.getValue();var p=r.elements,h=p[s];if(S(h,t)){for(var d=!0,m=[],g=p.length;--g>s;){(v=p[g].drop_side_effect_free(t))&&(m.unshift(v),d&&v.has_side_effects(t)&&(d=!1))}for(h=h instanceof xt?J(At,h):h,d||m.unshift(h);0<=--g;){var v;(v=p[g].drop_side_effect_free(t))?m.unshift(v):s--}return d?(m.push(h),M(e,m).optimize(t)):J(Ze,e,{expression:J(it,r,{elements:m}),property:J(yt,i,{value:s})})}}var b=e.evaluate(t);return b!==e?V(t,b=N(b,e).optimize(t),e):e}),xe.DEFMETHOD("contains_this",function(){var t,n=this;return n.walk(new Dt(function(e){return!!t||(e instanceof gt?t=!0:e!==n&&e instanceof xe||void 0)})),t}),We.DEFMETHOD("flatten_object",function(e,t){if(t.option("properties")){var n=this.expression;if(n instanceof ot)for(var r=n.properties,i=r.length;0<=--i;){var o=r[i];if(""+o.key==e){if(!ae(r,function(e){return e instanceof st}))break;if(!S(o.value,t))break;return J(Ze,this,{expression:J(it,n,{elements:r.map(function(e){return e.value})}),property:J(yt,this,{value:i})})}}}}),e(Qe,function(e,t){if("arguments"!=e.property&&"caller"!=e.property||t.warn("Function.protoype.{prop} not supported [{file}:{line},{col}]",{prop:e.property,file:e.start.file,line:e.start.line,col:e.start.col}),ne(e,t.parent()))return e;if(t.option("unsafe_proto")&&e.expression instanceof Qe&&"prototype"==e.expression.property){var n=e.expression.expression;if(z(n))switch(n.name){case"Array":e.expression=J(it,e.expression,{elements:[]});break;case"Function":e.expression=J(Se,e.expression,{argnames:[],body:[]});break;case"Number":e.expression=J(yt,e.expression,{value:0});break;case"Object":e.expression=J(ot,e.expression,{properties:[]});break;case"RegExp":e.expression=J(_t,e.expression,{value:/t/});break;case"String":e.expression=J(bt,e.expression,{value:""})}}var r=e.flatten_object(e.property,t);if(r)return r.optimize(t);var i=e.evaluate(t);return i!==e?V(t,i=N(i,e).optimize(t),e):e}),e(Be,function(e,t){return e.value&&b(e.value,t)&&(e.value=null),e})}(function(e,n){e.DEFMETHOD("optimize",function(e){if(this._optimized)return this;if(e.has_directive("use asm"))return this;var t=n(this,e);return t._optimized=!0,t})}),function(){function t(e){for(var t=!0,n=0;n<e.length;n++)t&&e[n]instanceof le&&e[n].body instanceof bt?e[n]=new fe({start:e[n].start,end:e[n].end,value:e[n].body.value}):!t||e[n]instanceof le&&e[n].body instanceof bt||(t=!1);return e}var r={Program:function(e){return new ke({start:s(e),end:u(e),body:t(e.body.map(l))})},FunctionDeclaration:function(e){return new De({start:s(e),end:u(e),name:l(e.id),argnames:e.params.map(l),body:t(l(e.body).body)})},FunctionExpression:function(e){return new Se({start:s(e),end:u(e),name:l(e.id),argnames:e.params.map(l),body:t(l(e.body).body)})},ExpressionStatement:function(e){return new pe({start:s(e),end:u(e),body:l(e.expression)})},TryStatement:function(e){var t=e.handlers||[e.handler];if(1<t.length||e.guardedHandlers&&e.guardedHandlers.length)throw new Error("Multiple catch clauses are not supported.");return new Ie({start:s(e),end:u(e),body:l(e.block).body,bcatch:l(t[0]),bfinally:e.finalizer?new je(l(e.finalizer)):null})},Property:function(e){var t=e.key,n={start:s(t),end:u(e.value),key:"Identifier"==t.type?t.name:t.value,value:l(e.value)};return"init"==e.kind?new st(n):(n.key=new X({name:n.key}),n.value=new Oe(n.value),"get"==e.kind?new J(n):"set"==e.kind?new Z(n):void 0)},ArrayExpression:function(e){return new it({start:s(e),end:u(e),elements:e.elements.map(function(e){return null===e?new xt:l(e)})})},ObjectExpression:function(e){return new ot({start:s(e),end:u(e),properties:e.properties.map(function(e){return e.type="Property",l(e)})})},SequenceExpression:function(e){return new Ye({start:s(e),end:u(e),expressions:e.expressions.map(l)})},MemberExpression:function(e){return new(e.computed?Ze:Qe)({start:s(e),end:u(e),property:e.computed?l(e.property):e.property.name,expression:l(e.object)})},SwitchCase:function(e){return new(e.test?Pe:Ne)({start:s(e),end:u(e),expression:l(e.test),body:e.consequent.map(l)})},VariableDeclaration:function(e){return new He({start:s(e),end:u(e),definitions:e.declarations.map(l)})},Literal:function(e){var t=e.value,n={start:s(e),end:u(e)};if(null===t)return new wt(n);var r=e.regex;if(r&&r.pattern)return n.value=new RegExp(r.pattern,r.flags),n.value.raw_source=r.pattern,new _t(n);if(r)return n.value=e.regex&&e.raw?e.raw:t,new _t(n);switch(typeof t){case"string":return n.value=t,new bt(n);case"number":return n.value=t,new yt(n);case"boolean":return new(t?St:Ot)(n)}},Identifier:function(e){var t=o[o.length-2];return new("LabeledStatement"==t.type?ee:"VariableDeclarator"==t.type&&t.id===e?ct:"FunctionExpression"==t.type?t.id===e?ht:ft:"FunctionDeclaration"==t.type?t.id===e?pt:ft:"CatchClause"==t.type?dt:"BreakStatement"==t.type||"ContinueStatement"==t.type?te:mt)({start:s(e),end:u(e),name:e.name})}};function i(e){if("Literal"==e.type)return null!=e.raw?e.raw:e.value+""}function s(e){var t=e.loc,n=t&&t.start,r=e.range;return new O({file:t&&t.source,line:n&&n.line,col:n&&n.column,pos:r?r[0]:e.start,endline:n&&n.line,endcol:n&&n.column,endpos:r?r[0]:e.start,raw:i(e)})}function u(e){var t=e.loc,n=t&&t.end,r=e.range;return new O({file:t&&t.source,line:n&&n.line,col:n&&n.column,pos:r?r[1]:e.end,endline:n&&n.line,endcol:n&&n.column,endpos:r?r[1]:e.end,raw:i(e)})}function e(e,t,n){var o="function From_Moz_"+e+"(M){\n";o+="return new U2."+t.name+"({\nstart: my_start_token(M),\nend: my_end_token(M)";var a="function To_Moz_"+e+"(M){\n";a+="return {\ntype: "+JSON.stringify(e),n&&n.split(/\s*,\s*/).forEach(function(e){var t=/([a-z0-9$_]+)(=|@|>|%)([a-z0-9$_]+)/i.exec(e);if(!t)throw new Error("Can't understand property map: "+e);var n=t[1],r=t[2],i=t[3];switch(o+=",\n"+i+": ",a+=",\n"+n+": ",r){case"@":o+="M."+n+".map(from_moz)",a+="M."+i+".map(to_moz)";break;case">":o+="from_moz(M."+n+")",a+="to_moz(M."+i+")";break;case"=":o+="M."+n,a+="M."+i;break;case"%":o+="from_moz(M."+n+").body",a+="to_moz_block(M)";break;default:throw new Error("Can't understand operator in propmap: "+e)}}),o+="\n})\n}",a+="\n}\n}",o=new Function("U2","my_start_token","my_end_token","from_moz","return("+o+")")(d,s,u,l),a=new Function("to_moz","to_moz_block","to_moz_scope","return("+a+")")(f,p,h),r[e]=o,c(t,a)}r.UpdateExpression=r.UnaryExpression=function(e){return new(("prefix"in e?e.prefix:"UnaryExpression"==e.type)?Xe:et)({start:s(e),end:u(e),operator:e.operator,expression:l(e.argument)})},e("EmptyStatement",me),e("BlockStatement",de,"body@body"),e("IfStatement",qe,"test>condition, consequent>body, alternate>alternative"),e("LabeledStatement",ge,"label>label, body>body"),e("BreakStatement",Le,"label>label"),e("ContinueStatement",Fe,"label>label"),e("WithStatement",Ae,"object>expression, body>body"),e("SwitchStatement",Ue,"discriminant>expression, cases@body"),e("ReturnStatement",Be,"argument>value"),e("ThrowStatement",Q,"argument>value"),e("WhileStatement",_e,"test>condition, body>body"),e("DoWhileStatement",ye,"test>condition, body>body"),e("ForStatement",we,"init>init, test>condition, update>step, body>body"),e("ForInStatement",Ee,"left>init, right>object, body>body"),e("DebuggerStatement",ce),e("VariableDeclarator",$e,"id>name, init>value"),e("CatchClause",ze,"param>argname, body%body"),e("ThisExpression",gt),e("BinaryExpression",tt,"operator=operator, left>left, right>right"),e("LogicalExpression",tt,"operator=operator, left>left, right>right"),e("AssignmentExpression",rt,"operator=operator, left>left, right>right"),e("ConditionalExpression",nt,"test>condition, consequent>consequent, alternate>alternative"),e("NewExpression",Ge,"callee>expression, arguments@args"),e("CallExpression",Ke,"callee>expression, arguments@args"),c(ke,function(e){return h("Program",e)}),c(De,function(e){return{type:"FunctionDeclaration",id:f(e.name),params:e.argnames.map(f),body:h("BlockStatement",e)}}),c(Se,function(e){return{type:"FunctionExpression",id:f(e.name),params:e.argnames.map(f),body:h("BlockStatement",e)}}),c(fe,function(e){return{type:"ExpressionStatement",expression:{type:"Literal",value:e.value}}}),c(pe,function(e){return{type:"ExpressionStatement",expression:f(e.body)}}),c(Me,function(e){return{type:"SwitchCase",test:f(e.expression),consequent:e.body.map(f)}}),c(Ie,function(e){return{type:"TryStatement",block:p(e),handler:f(e.bcatch),guardedHandlers:[],finalizer:f(e.bfinally)}}),c(ze,function(e){return{type:"CatchClause",param:f(e.argname),guard:null,body:p(e)}}),c(Ve,function(e){return{type:"VariableDeclaration",kind:"var",declarations:e.definitions.map(f)}}),c(Ye,function(e){return{type:"SequenceExpression",expressions:e.expressions.map(f)}}),c(We,function(e){var t=e instanceof Ze;return{type:"MemberExpression",object:f(e.expression),computed:t,property:t?f(e.property):{type:"Identifier",name:e.property}}}),c(Je,function(e){return{type:"++"==e.operator||"--"==e.operator?"UpdateExpression":"UnaryExpression",operator:e.operator,prefix:e instanceof Xe,argument:f(e.expression)}}),c(tt,function(e){return{type:"&&"==e.operator||"||"==e.operator?"LogicalExpression":"BinaryExpression",left:f(e.left),operator:e.operator,right:f(e.right)}}),c(it,function(e){return{type:"ArrayExpression",elements:e.elements.map(f)}}),c(ot,function(e){return{type:"ObjectExpression",properties:e.properties.map(f)}}),c(at,function(e){var t,n={type:"Literal",value:e.key instanceof X?e.key.name:e.key};return e instanceof st?t="init":e instanceof J?t="get":e instanceof Z&&(t="set"),{type:"Property",kind:t,key:n,value:f(e.value)}}),c(ut,function(e){var t=e.definition();return{type:"Identifier",name:t?t.mangled_name||t.name:e.name}}),c(_t,function(e){var t=e.value.toString().match(/[gimuy]*$/)[0],n="/"+e.value.raw_source+"/"+t;return{type:"Literal",value:n,raw:n,regex:{pattern:e.value.raw_source,flags:t}}}),c(vt,function(e){var t=e.value;return"number"==typeof t&&(t<0||0===t&&1/t<0)?{type:"UnaryExpression",operator:"-",prefix:!0,argument:{type:"Literal",value:-t,raw:e.start.raw}}:{type:"Literal",value:t,raw:e.start.raw}}),c(a,function(e){return{type:"Identifier",name:String(e.value)}}),Ct.DEFMETHOD("to_mozilla_ast",vt.prototype.to_mozilla_ast),wt.DEFMETHOD("to_mozilla_ast",vt.prototype.to_mozilla_ast),xt.DEFMETHOD("to_mozilla_ast",function(){return null}),he.DEFMETHOD("to_mozilla_ast",de.prototype.to_mozilla_ast),Ce.DEFMETHOD("to_mozilla_ast",Se.prototype.to_mozilla_ast);var o=null;function l(e){o.push(e);var t=null!=e?r[e.type](e):null;return o.pop(),t}function c(e,i){e.DEFMETHOD("to_mozilla_ast",function(){return t=i(e=this),n=e.start,r=e.end,null!=n.pos&&null!=r.endpos&&(t.range=[n.pos,r.endpos]),n.line&&(t.loc={start:{line:n.line,column:n.col},end:r.endline?{line:r.endline,column:r.endcol}:null},n.file&&(t.loc.source=n.file)),t;var e,t,n,r})}function f(e){return null!=e?e.to_mozilla_ast():null}function p(e){return{type:"BlockStatement",body:e.body.map(f)}}function h(e,t){var n=t.body.map(f);return t.body[0]instanceof pe&&t.body[0].body instanceof bt&&n.unshift(f(new me(t.body[0]))),{type:e,body:n}}ue.from_mozilla_ast=function(e){var t=o;o=[];var n=l(e);return o=t,n.walk(new Dt(function(e){if(e instanceof te){for(var t,n=0;(t=this.parent(n))&&!(t instanceof xe);n++)if(t instanceof ge&&t.label.name==e.name){e.thedef=t.label;break}if(!e.thedef){var r=e.start;Pt("Undefined label "+e.name,r.file,r.line,r.col,r.pos)}}})),n}}();var w="undefined"==typeof atob?function(e){return new u(e,"base64").toString()}:atob,E="undefined"==typeof btoa?function(e){return new u(e).toString("base64")}:btoa;function A(t){try{return JSON.parse(t)}catch(e){throw new Error("invalid input source map: "+t)}}function x(t,n,e){n[t]&&e.forEach(function(e){n[e]&&("object"!=typeof n[e]&&(n[e]={}),t in n[e]||(n[e][t]=n[t]))})}function k(e){e&&("props"in e?e.props instanceof L||(e.props=L.fromObject(e.props)):e.props=new L)}function C(e){return{props:e.props.toObject()}}d.Dictionary=L,d.minify=function(e,t){var n,r,i,o=ue.warn_function;try{var a,s=(t=$(t,{compress:{},enclose:!1,ie8:!1,keep_fnames:!1,mangle:{},nameCache:null,output:{},parse:{},rename:void 0,sourceMap:!1,timings:!1,toplevel:!1,warnings:!1,wrap:!1},!0)).timings&&{start:Date.now()};void 0===t.rename&&(t.rename=t.compress&&t.mangle),x("ie8",t,["compress","mangle","output"]),x("keep_fnames",t,["compress","mangle"]),x("toplevel",t,["compress","mangle"]),x("warnings",t,["compress"]),t.mangle&&(t.mangle=$(t.mangle,{cache:t.nameCache&&(t.nameCache.vars||{}),eval:!1,ie8:!1,keep_fnames:!1,properties:!1,reserved:[],toplevel:!1},!0),t.mangle.properties&&("object"!=typeof t.mangle.properties&&(t.mangle.properties={}),t.mangle.properties.keep_quoted&&(a=t.mangle.properties.reserved,Array.isArray(a)||(a=[]),t.mangle.properties.reserved=a),!t.nameCache||"cache"in t.mangle.properties||(t.mangle.properties.cache=t.nameCache.props||{})),k(t.mangle.cache),k(t.mangle.properties.cache)),t.sourceMap&&(t.sourceMap=$(t.sourceMap,{content:null,filename:null,includeSources:!1,root:null,url:null},!0));var u,l,c=[];if(t.warnings&&!ue.warn_function&&(ue.warn_function=function(e){c.push(e)}),s&&(s.parse=Date.now()),e instanceof ke)l=e;else{"string"==typeof e&&(e=[e]),t.parse=t.parse||{},t.parse.toplevel=null;var f=t.sourceMap&&t.sourceMap.content;for(var p in"string"==typeof f&&"inline"!=f&&(f=A(f)),u=f&&Object.create(null),e)if(se(e,p)&&(t.parse.filename=p,t.parse.toplevel=Yt(e[p],t.parse),u))if("inline"==f){var h=(r=e[n=p],(i=/\n\/\/# sourceMappingURL=data:application\/json(;.*?)?;base64,(.*)/.exec(r))?w(i[2]):(ue.warn("inline source map not found: "+n),null));h&&(u[p]=A(h))}else u[p]=f;l=t.parse.toplevel}a&&function(e,t){function n(e){g(t,e)}e.walk(new Dt(function(e){e instanceof st&&e.quote?n(e.key):e instanceof Ze&&y(e.property,n)}))}(l,a),t.wrap&&(l=l.wrap_commonjs(t.wrap)),t.enclose&&(l=l.wrap_enclose(t.enclose)),s&&(s.rename=Date.now()),t.rename&&(l.figure_out_scope(t.mangle),l.expand_names(t.mangle)),s&&(s.compress=Date.now()),t.compress&&(l=new Xt(t.compress).compress(l)),s&&(s.scope=Date.now()),t.mangle&&l.figure_out_scope(t.mangle),s&&(s.mangle=Date.now()),t.mangle&&(l.compute_char_frequency(t.mangle),l.mangle_names(t.mangle)),s&&(s.properties=Date.now()),t.mangle&&t.mangle.properties&&(l=_(l,t.mangle.properties)),s&&(s.output=Date.now());var d={};if(t.output.ast&&(d.ast=l),!se(t.output,"code")||t.output.code){if(t.sourceMap)if(t.output.source_map=function(u){u=$(u,{file:null,root:null,orig:null,orig_line_diff:0,dest_line_diff:0},!0);var l=new MOZ_SourceMap.SourceMapGenerator({file:u.file,sourceRoot:u.root}),c=u.orig&&Object.create(null);if(c)for(var e in u.orig){var n=new MOZ_SourceMap.SourceMapConsumer(u.orig[e]);Array.isArray(u.orig[e].sources)&&n._sources.toArray().forEach(function(e){var t=n.sourceContentFor(e,!0);t&&l.setSourceContent(e,t)}),c[e]=n}return{add:function(e,t,n,r,i,o){var a=c&&c[e];if(a){var s=a.originalPositionFor({line:r,column:i});if(null===s.source)return;e=s.source,r=s.line,i=s.column,o=s.name||o}l.addMapping({name:o,source:e,generated:{line:t+u.dest_line_diff,column:n},original:{line:r+u.orig_line_diff,column:i}})},get:function(){return l},toString:function(){return JSON.stringify(l.toJSON())}}}({file:t.sourceMap.filename,orig:u,root:t.sourceMap.root}),t.sourceMap.includeSources){if(e instanceof ke)throw new Error("original source content unavailable");for(var p in e)se(e,p)&&t.output.source_map.get().setSourceContent(p,e[p])}else t.output.source_map.get()._sourcesContents=null;delete t.output.ast,delete t.output.code;var m=Jt(t.output);l.print(m),d.code=m.get(),t.sourceMap&&(d.map=t.output.source_map.toString(),"inline"==t.sourceMap.url?d.code+="\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,"+E(d.map):t.sourceMap.url&&(d.code+="\n//# sourceMappingURL="+t.sourceMap.url))}return t.nameCache&&t.mangle&&(t.mangle.cache&&(t.nameCache.vars=C(t.mangle.cache)),t.mangle.properties&&t.mangle.properties.cache&&(t.nameCache.props=C(t.mangle.properties.cache))),s&&(s.end=Date.now(),d.timings={parse:.001*(s.rename-s.parse),rename:.001*(s.compress-s.rename),compress:.001*(s.scope-s.compress),scope:.001*(s.mangle-s.scope),mangle:.001*(s.properties-s.mangle),properties:.001*(s.output-s.properties),output:.001*(s.end-s.output),total:.001*(s.end-s.start)}),c.length&&(d.warnings=c),d}catch(e){return{error:e}}finally{ue.warn_function=o}},d.parse=Yt,d.push_uniq=g,d.TreeTransformer=Wt,d.TreeWalker=Dt}(void 0===n?n={}:n)}).call(this,e("buffer").Buffer)},{buffer:4}]},{},["html-minifier"]);
\ No newline at end of file
+require=function o(a,s,u){function l(t,e){if(!s[t]){if(!a[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(c)return c(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var i=s[t]={exports:{}};a[t][0].call(i.exports,function(e){return l(a[t][1][e]||e)},i,i.exports,o,a,s,u)}return s[t].exports}for(var c="function"==typeof require&&require,e=0;e<u.length;e++)l(u[e]);return l}({1:[function(e,t,n){t.exports=e("./lib/clean")},{"./lib/clean":2}],2:[function(e,E,t){(function(u){var l=e("./optimizer/level-0/optimize"),c=e("./optimizer/level-1/optimize"),f=e("./optimizer/level-2/optimize"),p=e("./optimizer/validator"),t=e("./options/compatibility"),n=e("./options/fetch"),r=e("./options/format").formatFrom,i=e("./options/inline"),o=e("./options/inline-request"),a=e("./options/inline-timeout"),d=e("./options/optimization-level").OptimizationLevel,s=e("./options/optimization-level").optimizationLevelFrom,h=e("./options/rebase"),m=e("./options/rebase-to"),g=e("./reader/input-source-map-tracker"),v=e("./reader/read-sources"),b=e("./writer/simple"),y=e("./writer/source-maps"),_=E.exports=function(e){e=e||{},this.options={compatibility:t(e.compatibility),fetch:n(e.fetch),format:r(e.format),inline:i(e.inline),inlineRequest:o(e.inlineRequest),inlineTimeout:a(e.inlineTimeout),level:s(e.level),rebase:h(e.rebase),rebaseTo:m(e.rebaseTo),returnPromise:!!e.returnPromise,sourceMap:!!e.sourceMap,sourceMapInlineSources:!!e.sourceMapInlineSources}};function w(e,t,n,r,i){var o="function"!=typeof r?r:null,a="function"==typeof i?i:"function"==typeof r?r:null,s={stats:{efficiency:0,minifiedSize:0,originalSize:0,startedAt:Date.now(),timeSpent:0},cache:{specificity:{}},embeddedStart:t,embeddedEnd:-1,errors:[],inlinedStylesheets:[],inputSourceMapTracker:g(),localOnly:!a,options:n,source:null,sourcesContent:{},validator:p(n.compatibility),warnings:[]};return o&&s.inputSourceMapTracker.track(void 0,o),(s.localOnly?function(e){return e()}:u.nextTick)(function(){return v(e,s,function(e){var t,n,r,i=function(e,t){Object.prototype.hasOwnProperty.call(e,"styles")&&(e.stats=(n=e.styles,r=t,i=Date.now()-r.stats.startedAt,delete r.stats.startedAt,r.stats.timeSpent=i,r.stats.efficiency=1-n.length/r.stats.originalSize,r.stats.minifiedSize=n.length,r.stats));var n,r,i;return e.embeddedStart=t.embeddedStart,e.embeddedEnd=t.embeddedEnd,e.errors=t.errors,e.inlinedStylesheets=t.inlinedStylesheets,e.warnings=t.warnings,e}((s.options.sourceMap?y:b)((r=l(t=e,n=s),r=d.One in n.options.level?c(t,n):t,r=d.Two in n.options.level?f(t,n,!0):r),s),s);return a?a(0<s.errors.length?s.errors:null,i):i})})}_.process=function(e,t){var n=t.to;return delete t.to,new _(Object.assign({returnPromise:!0,rebaseTo:n},t)).minify(e).then(function(e){return{css:e.styles}})},_.prototype.minify=function(e,t,n){var i=this.options;return i.returnPromise?new Promise(function(n,r){w(e,-1,i,t,function(e,t){return e?r(e):n(t)})}):w(e,-1,i,t,n)},_.prototype.minifyEmbedded=function(e,t,i,n){var o=this.options;return o.returnPromise?new Promise(function(n,r){w(e,t,o,i,function(e,t){return e?r(e):n(t)})}):w(e,t,o,i,n)}}).call(this,e("_process"))},{"./optimizer/level-0/optimize":4,"./optimizer/level-1/optimize":5,"./optimizer/level-2/optimize":24,"./optimizer/validator":52,"./options/compatibility":54,"./options/fetch":55,"./options/format":56,"./options/inline":59,"./options/inline-request":57,"./options/inline-timeout":58,"./options/optimization-level":60,"./options/rebase":62,"./options/rebase-to":61,"./reader/input-source-map-tracker":66,"./reader/read-sources":72,"./writer/simple":94,"./writer/source-maps":95,_process:124}],3:[function(e,t,n){t.exports={ASTERISK:"asterisk",BANG:"bang",BACKSLASH:"backslash",UNDERSCORE:"underscore"}},{}],4:[function(e,t,n){t.exports=function(e){return e}},{}],5:[function(e,t,n){var r=e("./shorten-hex"),i=e("./shorten-hsl"),o=e("./shorten-rgb"),v=e("./sort-selectors"),b=e("./tidy-rules"),y=e("./tidy-block"),_=e("./tidy-at-rule"),$=e("../hack"),K=e("../remove-unused"),G=e("../restore-from-optimizing"),Y=e("../wrap-for-optimizing").all,W=e("../../options/optimization-level").OptimizationLevel,Q=e("../../tokenizer/token"),Z=e("../../tokenizer/marker"),J=e("../../utils/format-position"),a=e("../../utils/split"),X=e("../../writer/one-time").rules,ee="ignore-property",w="@charset",E=new RegExp("^"+w,"i"),A=e("../../options/rounding-precision").DEFAULT,s=/(?:^|\s|\()(-?\d+)px/,te=/^(\-?[\d\.]+)(m?s)$/,u=/[0-9a-f]/i,ne=/^(?:\-chrome\-|\-[\w\-]+\w|\w[\w\-]+\w|\-\-\S+)$/,x=/^@import/i,re=/^('.*'|".*")$/,ie=/^['"][a-zA-Z][a-zA-Z\d\-_]+['"]$/,oe=/^url\(/i,ae=/^--\S+$/;function se(e){return e&&"-"==e[1][0]&&parseFloat(e[1])<0}function ue(e,t,n){return-1===t.indexOf("#")&&-1==t.indexOf("rgb")&&-1==t.indexOf("hsl")||(t=t.replace(/rgb\((\-?\d+),(\-?\d+),(\-?\d+)\)/g,function(e,t,n,r){return o(t,n,r)}).replace(/hsl\((-?\d+),(-?\d+)%?,(-?\d+)%?\)/g,function(e,t,n,r){return i(t,n,r)}).replace(/(^|[^='"])#([0-9a-f]{6})/gi,function(e,t,n,r,i){var o=i[r+e.length];return o&&u.test(o)?e:n[0]==n[1]&&n[2]==n[3]&&n[4]==n[5]?(t+"#"+n[0]+n[2]+n[4]).toLowerCase():(t+"#"+n).toLowerCase()}).replace(/(^|[^='"])#([0-9a-f]{3})/gi,function(e,t,n){return t+"#"+n.toLowerCase()}).replace(/(rgb|rgba|hsl|hsla)\(([^\)]+)\)/g,function(e,t,n){var r=n.split(",");return"hsl"==t&&3==r.length||"hsla"==t&&4==r.length||"rgb"==t&&3==r.length&&0<n.indexOf("%")||"rgba"==t&&4==r.length&&0<n.indexOf("%")?(-1==r[1].indexOf("%")&&(r[1]+="%"),-1==r[2].indexOf("%")&&(r[2]+="%"),t+"("+r.join(",")+")"):e}),n.colors.opacity&&-1==e.indexOf("background")&&(t=t.replace(/(?:rgba|hsla)\(0,0%?,0%?,0\)/g,function(e){return-1<a(t,",").pop().indexOf("gradient(")?e:"transparent"}))),r(t)}function le(e,t,i){return s.test(t)?t.replace(s,function(e,t){var n,r=parseInt(t);return 0===r?e:(i.properties.shorterLengthUnits&&i.units.pt&&3*r%4==0&&(n=3*r/4+"pt"),i.properties.shorterLengthUnits&&i.units.pc&&r%16==0&&(n=r/16+"pc"),i.properties.shorterLengthUnits&&i.units.in&&r%96==0&&(n=r/96+"in"),n&&(n=e.substring(0,e.indexOf(t))+n),n&&n.length<e.length?n:e)}):t}function ce(e,t,u){return u.enabled&&-1!==t.indexOf(".")?t.replace(u.decimalPointMatcher,"$1$2$3").replace(u.zeroMatcher,function(e,t,n,r){var i=u.units[r].multiplier,o=parseInt(t),a=isNaN(o)?0:o,s=parseFloat(n);return Math.round((a+s)*i)/i+r}):t}function fe(e,t,n){var r,i,o,a,s,u,l,c,f,p,d,h,m,g,v,b,y,_,w,E,A,x,k,C,O,S,D,T,B,R,L,F,q,U,M,N=n.options,P=N.level[W.One],z=Y(t,!0);e:for(var j=0,I=z.length;j<I;j++)if(i=(r=z[j]).name,ne.test(i)||(u=r.all[r.position],n.warnings.push("Invalid property name '"+i+"' at "+J(u[1][2][0])+". Ignoring."),r.unused=!0),0===r.value.length&&(u=r.all[r.position],n.warnings.push("Empty property '"+i+"' at "+J(u[1][2][0])+". Ignoring."),r.unused=!0),r.hack&&((r.hack[0]==$.ASTERISK||r.hack[0]==$.UNDERSCORE)&&!N.compatibility.properties.iePrefixHack||r.hack[0]==$.BACKSLASH&&!N.compatibility.properties.ieSuffixHack||r.hack[0]==$.BANG&&!N.compatibility.properties.ieBangHack)&&(r.unused=!0),P.removeNegativePaddings&&0===i.indexOf("padding")&&(se(r.value[0])||se(r.value[1])||se(r.value[2])||se(r.value[3]))&&(r.unused=!0),!N.compatibility.properties.ieFilters&&de(r)&&(r.unused=!0),!r.unused)if(r.block)fe(e,r.value[0][1],n);else if(!ae.test(i)){for(var V=0,H=r.value.length;V<H;V++){if(o=r.value[V][0],a=r.value[V][1],M=a,s=oe.test(M),o==Q.PROPERTY_BLOCK){r.unused=!0,n.warnings.push("Invalid value token at "+J(a[0][1][2][0])+". Ignoring.");break}if(s&&!n.validator.isUrl(a)){r.unused=!0,n.warnings.push("Broken URL '"+a+"' at "+J(r.value[V][2][0])+". Ignoring.");break}if(s?(a=P.normalizeUrls?a.replace(oe,"url(").replace(/\\?\n|\\?\r\n/g,""):a,a=N.compatibility.properties.urlQuotes?a:!/^url\(['"].+['"]\)$/.test(U=a)||/^url\(['"].*[\*\s\(\)'"].*['"]\)$/.test(U)||/^url\(['"]data:[^;]+;charset/.test(U)?U:U.replace(/["']/g,"")):(q=a,re.test(q)?a=P.removeQuotes?(F=a,"content"==(L=i)||-1<L.indexOf("font-variation-settings")||-1<L.indexOf("font-feature-settings")||-1<L.indexOf("grid-")?F:ie.test(F)?F.substring(1,F.length-1):F):a:(a=le(0,a=ce(0,a=P.removeWhitespace?(R=a,-1<i.indexOf("filter")||-1==R.indexOf(" ")||0===R.indexOf("expression")?R:-1<R.indexOf(Z.SINGLE_QUOTE)||-1<R.indexOf(Z.DOUBLE_QUOTE)?R:(-1<(R=R.replace(/\s+/g," ")).indexOf("calc")&&(R=R.replace(/\) ?\/ ?/g,")/ ")),R.replace(/(\(;?)\s+/g,"$1").replace(/\s+(;?\))/g,"$1").replace(/, /g,","))):a,N.precision),N.compatibility),a=P.replaceTimeUnits?(B=a,te.test(B)?B.replace(te,function(e,t,n){var r;return"ms"==n?r=parseInt(t)/1e3+"s":"s"==n&&(r=1e3*parseFloat(t)+"ms"),r.length<e.length?r:e}):B):a,a=P.replaceZeroUnits?-1==(T=a).indexOf("0")?T:(-1<T.indexOf("-")&&(T=T.replace(/([^\w\d\-]|^)\-0([^\.]|$)/g,"$10$2").replace(/([^\w\d\-]|^)\-0([^\.]|$)/g,"$10$2")),T.replace(/(^|\s)0+([1-9])/g,"$1$2").replace(/(^|\D)\.0+(\D|$)/g,"$10$2").replace(/(^|\D)\.0+(\D|$)/g,"$10$2").replace(/\.([1-9]*)0+(\D|$)/g,function(e,t,n){return(0<t.length?".":"")+t+n}).replace(/(^|\D)0\.(\d)/g,"$1.$2")):a,N.compatibility.properties.zeroUnits&&(a=-1==(D=a).indexOf("0deg")?D:D.replace(/\(0deg\)/g,"(0)"),C=i,O=a,S=N.unitsRegexp,a=/^(?:\-moz\-calc|\-webkit\-calc|calc|rgb|hsl|rgba|hsla)\(/.test(O)?O:"flex"==C||"-ms-flex"==C||"-webkit-flex"==C||"flex-basis"==C||"-webkit-flex-basis"==C?O:0<O.indexOf("%")&&("height"==C||"max-height"==C||"width"==C||"max-width"==C)?O:O.replace(S,"$10$2").replace(S,"$10$2")),N.compatibility.properties.colors&&(a=ue(i,a,N.compatibility)))),w=i,E=a,A=e,x=P.transform,(a=void 0===(k=x(w,E,X(A)))?E:!1===k?ee:k)===ee){r.unused=!0;continue e}r.value[V][1]=a}P.replaceMultipleZeros&&(y=void 0,4==(_=(b=r).value).length&&"0"===_[0][1]&&"0"===_[1][1]&&"0"===_[2][1]&&"0"===_[3][1]&&(y=-1<b.name.indexOf("box-shadow")?2:1),y&&(b.value.splice(y),b.dirty=!0)),"background"==i&&P.optimizeBackground?(v=void 0,1==(v=r.value).length&&"none"==v[0][1]&&(v[0][1]="0 0"),1==v.length&&"transparent"==v[0][1]&&(v[0][1]="0 0")):0===i.indexOf("border")&&0<i.indexOf("radius")&&P.optimizeBorderRadius?(m=void 0,3==(g=(h=r).value).length&&"/"==g[1][1]&&g[0][1]==g[2][1]?m=1:5==g.length&&"/"==g[2][1]&&g[0][1]==g[3][1]&&g[1][1]==g[4][1]?m=2:7==g.length&&"/"==g[3][1]&&g[0][1]==g[4][1]&&g[1][1]==g[5][1]&&g[2][1]==g[6][1]?m=3:9==g.length&&"/"==g[4][1]&&g[0][1]==g[5][1]&&g[1][1]==g[6][1]&&g[2][1]==g[7][1]&&g[3][1]==g[8][1]&&(m=4),m&&(h.value.splice(m),h.dirty=!0)):"filter"==i&&P.optimizeFilter&&N.compatibility.properties.ieFilters?(1==(d=r).value.length&&(d.value[0][1]=d.value[0][1].replace(/progid:DXImageTransform\.Microsoft\.(Alpha|Chroma)(\W)/,function(e,t,n){return t.toLowerCase()+n})),d.value[0][1]=d.value[0][1].replace(/,(\S)/g,", $1").replace(/ ?= ?/g,"=")):"font-weight"==i&&P.optimizeFontWeight?(p=void(f=0),"normal"==(p=(c=r).value[f][1])?p="400":"bold"==p&&(p="700"),c.value[f][1]=p):"outline"==i&&P.optimizeOutline&&(l=void 0,1==(l=r.value).length&&"none"==l[0][1]&&(l[0][1]="0"))}G(z),K(z),function(e,t){var n,r;for(r=0;r<e.length;r++)(n=e[r])[0]==Q.COMMENT&&(pe(n,t),0===n[1].length&&(e.splice(r,1),r--))}(t,N)}function pe(e,t){e[1][2]==Z.EXCLAMATION&&("all"==t.level[W.One].specialComments||t.commentsKept<t.level[W.One].specialComments)?t.commentsKept++:e[1]=[]}function de(e){var t;return("filter"==e.name||"-ms-filter"==e.name)&&(-1<(t=e.value[0][1]).indexOf("progid")||0===t.indexOf("alpha")||0===t.indexOf("chroma"))}t.exports=function e(t,n){var r,i,o,a=n.options,s=a.level[W.One],u=a.compatibility.selectors.ie7Hack,l=a.compatibility.selectors.adjacentSpace,c=a.compatibility.properties.spaceAfterClosingBrace,f=a.format,p=!1,d=!1;a.unitsRegexp=a.unitsRegexp||(r=a,i=["px","em","ex","cm","mm","in","pt","pc","%"],["ch","rem","vh","vm","vmax","vmin","vw"].forEach(function(e){r.compatibility.units[e]&&i.push(e)}),new RegExp("(^|\\s|\\(|,)0(?:"+i.join("|")+")(\\W|$)","g")),a.precision=a.precision||function(e){var t,n,r={matcher:null,units:{}},i=[];for(t in e)(n=e[t])!=A&&(r.units[t]={},r.units[t].value=n,r.units[t].multiplier=Math.pow(10,n),i.push(t));return 0<i.length&&(r.enabled=!0,r.decimalPointMatcher=new RegExp("(\\d)\\.($|"+i.join("|")+")($|W)","g"),r.zeroMatcher=new RegExp("(\\d*)(\\.\\d+)("+i.join("|")+")","g")),r}(s.roundingPrecision),a.commentsKept=a.commentsKept||0;for(var h=0,m=t.length;h<m;h++){var g=t[h];switch(g[0]){case Q.AT_RULE:g[1]=(o=g,x.test(o[1])&&d?"":g[1]),g[1]=s.tidyAtRules?_(g[1]):g[1],p=!0;break;case Q.AT_RULE_BLOCK:fe(g[1],g[2],n),d=!0;break;case Q.NESTED_BLOCK:g[1]=s.tidyBlockScopes?y(g[1],c):g[1],e(g[2],n),d=!0;break;case Q.COMMENT:pe(g,a);break;case Q.RULE:g[1]=s.tidySelectors?b(g[1],!u,l,f,n.warnings):g[1],g[1]=1<g[1].length?v(g[1],s.selectorsSortingMethod):g[1],fe(g[1],g[2],n),d=!0}(g[0]==Q.COMMENT&&0===g[1].length||s.removeEmpty&&(0===g[1].length||g[2]&&0===g[2].length))&&(t.splice(h,1),h--,m--)}return s.cleanupCharsets&&p&&function(e){for(var t=!1,n=0,r=e.length;n<r;n++){var i=e[n];i[0]==Q.AT_RULE&&E.test(i[1])&&(t||-1==i[1].indexOf(w)?(e.splice(n,1),n--,r--):(t=!0,e.splice(n,1),e.unshift([Q.AT_RULE,i[1].replace(E,w)])))}}(t),t}},{"../../options/optimization-level":60,"../../options/rounding-precision":63,"../../tokenizer/marker":78,"../../tokenizer/token":79,"../../utils/format-position":82,"../../utils/split":91,"../../writer/one-time":93,"../hack":3,"../remove-unused":50,"../restore-from-optimizing":51,"../wrap-for-optimizing":53,"./shorten-hex":6,"./shorten-hsl":7,"./shorten-rgb":8,"./sort-selectors":9,"./tidy-at-rule":10,"./tidy-block":11,"./tidy-rules":12}],6:[function(e,t,n){var r={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#0ff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000",blanchedalmond:"#ffebcd",blue:"#00f",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#0ff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#f0f",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#0f0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#f00",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#fff",whitesmoke:"#f5f5f5",yellow:"#ff0",yellowgreen:"#9acd32"},i={},o={};for(var a in r){var s=r[a];a.length<s.length?o[s]=a:i[a]=s}var u=new RegExp("(^| |,|\\))("+Object.keys(i).join("|")+")( |,|\\)|$)","ig"),l=new RegExp("("+Object.keys(o).join("|")+")([^a-f0-9]|$)","ig");function c(e,t,n,r){return t+i[n.toLowerCase()]+r}function f(e,t,n){return o[t.toLowerCase()]+n}t.exports=function(e){var t=-1<e.indexOf("#"),n=e.replace(u,c);return n!=e&&(n=n.replace(u,c)),t?n.replace(l,f):n}},{}],7:[function(e,t,n){function u(e,t,n){return n<0&&(n+=1),1<n&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}t.exports=function(e,t,n){var r=function(e,t,n){var r,i,o;if((e%=360)<0&&(e+=360),e=~~e/360,t<0?t=0:100<t&&(t=100),n<0?n=0:100<n&&(n=100),n=~~n/100,0==(t=~~t/100))r=i=o=n;else{var a=n<.5?n*(1+t):n+t-n*t,s=2*n-a;r=u(s,a,e+1/3),i=u(s,a,e),o=u(s,a,e-1/3)}return[~~(255*r),~~(255*i),~~(255*o)]}(e,t,n),i=r[0].toString(16),o=r[1].toString(16),a=r[2].toString(16);return"#"+(1==i.length?"0":"")+i+(1==o.length?"0":"")+o+(1==a.length?"0":"")+a}},{}],8:[function(e,t,n){t.exports=function(e,t,n){return"#"+("00000"+(Math.max(0,Math.min(parseInt(e),255))<<16|Math.max(0,Math.min(parseInt(t),255))<<8|Math.max(0,Math.min(parseInt(n),255))).toString(16)).slice(-6)}},{}],9:[function(e,t,n){var r=e("../../utils/natural-compare");function i(e,t){return r(e[1],t[1])}function o(e,t){return e[1]>t[1]?1:-1}t.exports=function(e,t){switch(t){case"natural":return e.sort(i);case"standard":return e.sort(o);case"none":case!1:return e}}},{"../../utils/natural-compare":89}],10:[function(e,t,n){t.exports=function(e){return e.replace(/\s+/g," ").replace(/url\(\s+/g,"url(").replace(/\s+\)/g,")").trim()}},{}],11:[function(e,t,n){var i=/^@media\W/;t.exports=function(e,t){var n,r;for(r=e.length-1;0<=r;r--)n=!t&&i.test(e[r][1]),e[r][1]=e[r][1].replace(/\n|\r\n/g," ").replace(/\s+/g," ").replace(/(,|:|\() /g,"$1").replace(/ \)/g,")").replace(/'([a-zA-Z][a-zA-Z\d\-_]+)'/,"$1").replace(/"([a-zA-Z][a-zA-Z\d\-_]+)"/,"$1").replace(n?/\) /g:null,")");return e}},{}],12:[function(e,t,n){var w=e("../../options/format").Spaces,E=e("../../tokenizer/marker"),d=e("../../utils/format-position"),A=/[\s"'][iI]\s*\]/,x=/([\d\w])([iI])\]/g,h=/="([a-zA-Z][a-zA-Z\d\-_]+)"([iI])/g,m=/="([a-zA-Z][a-zA-Z\d\-_]+)"(\s|\])/g,g=/^(?:(?:<!--|-->)\s*)+/,v=/='([a-zA-Z][a-zA-Z\d\-_]+)'([iI])/g,b=/='([a-zA-Z][a-zA-Z\d\-_]+)'(\s|\])/g,k=/[>\+~]/,C=/\s/,s="<";function y(e){var t,n,r,i,o=!1,a=!1;for(r=0,i=e.length;r<i;r++){if(n=e[r],t);else if(n==E.SINGLE_QUOTE||n==E.DOUBLE_QUOTE)a=!a;else{if(!(a||n!=E.CLOSE_CURLY_BRACKET&&n!=E.EXCLAMATION&&n!=s&&n!=E.SEMICOLON)){o=!0;break}if(!a&&0===r&&k.test(n)){o=!0;break}}t=n==E.BACK_SLASH}return o}function _(e,t){var n,r,i,o,a,s,u,l,c,f,p,d,h,m=[],g=0,v=!1,b=!1,y=A.test(e),_=t&&t.spaces[w.AroundSelectorRelation];for(d=0,h=e.length;d<h;d++){if(r=(n=e[d])==E.NEW_LINE_NIX,i=n==E.NEW_LINE_NIX&&e[d-1]==E.CARRIAGE_RETURN,s=u||l,f=!c&&!o&&0===g&&k.test(n),p=C.test(n),a&&s&&i)m.pop(),m.pop();else if(o&&s&&r)m.pop();else if(o)m.push(n);else if(n!=E.OPEN_SQUARE_BRACKET||s)if(n!=E.CLOSE_SQUARE_BRACKET||s)if(n!=E.OPEN_ROUND_BRACKET||s)if(n!=E.CLOSE_ROUND_BRACKET||s)if(n!=E.SINGLE_QUOTE||s)if(n!=E.DOUBLE_QUOTE||s)if(n==E.SINGLE_QUOTE&&s)m.push(n),u=!1;else if(n==E.DOUBLE_QUOTE&&s)m.push(n),l=!1;else{if(p&&v&&!_)continue;!p&&v&&_?(m.push(E.SPACE),m.push(n)):p&&(c||0<g)&&!s||p&&b&&!s||(i||r)&&(c||0<g)&&s||(f&&b&&!_?(m.pop(),m.push(n)):f&&!b&&_?(m.push(E.SPACE),m.push(n)):p?m.push(E.SPACE):m.push(n))}else m.push(n),l=!0;else m.push(n),u=!0;else m.push(n),g--;else m.push(n),g++;else m.push(n),c=!1;else m.push(n),c=!0;a=o,o=n==E.BACK_SLASH,v=f,b=p}return y?m.join("").replace(x,"$1 $2]"):m.join("")}t.exports=function(e,t,n,r,i){var o,a=[],s=[];function u(e,t){return i.push("HTML comment '"+t+"' at "+d(e[2][0])+". Removing."),""}for(var l=0,c=e.length;l<c;l++){var f=e[l],p=f[1];y(p=p.replace(g,u.bind(null,f)))?i.push("Invalid selector '"+f[1]+"' at "+d(f[2][0])+". Ignoring."):(p=_(p,r),p=-1==(o=p).indexOf("'")&&-1==o.indexOf('"')?o:o.replace(v,"=$1 $2").replace(b,"=$1$2").replace(h,"=$1 $2").replace(m,"=$1$2"),n&&0<p.indexOf("nav")&&(p=p.replace(/\+nav(\S|$)/,"+ nav$1")),t&&-1<p.indexOf("*+html ")||t&&-1<p.indexOf("*:first-child+html ")||(-1<p.indexOf("*")&&(p=p.replace(/\*([:#\.\[])/g,"$1").replace(/^(\:first\-child)?\+html/,"*$1+html")),-1<s.indexOf(p)||(f[1]=p,s.push(p),a.push(f))))}return 1==a.length&&0===a[0][1].length&&(i.push("Empty selector '"+a[0][1]+"' at "+d(a[0][2][0])+". Ignoring."),a=[]),a}},{"../../options/format":56,"../../tokenizer/marker":78,"../../utils/format-position":82}],13:[function(e,t,n){var x=e("./invalid-property-error"),s=e("../wrap-for-optimizing").single,m=e("../../tokenizer/token"),A=e("../../tokenizer/marker"),k=e("../../utils/format-position");function C(e){var t,n;for(t=0,n=e.length;t<n;t++)if("inherit"==e[t][1])return!0;return!1}function O(e,t,n){var r=n[e];return r.doubleValues&&2==r.defaultValue.length?s([m.PROPERTY,[m.PROPERTY_NAME,e],[m.PROPERTY_VALUE,r.defaultValue[0]],[m.PROPERTY_VALUE,r.defaultValue[1]]]):r.doubleValues&&1==r.defaultValue.length?s([m.PROPERTY,[m.PROPERTY_NAME,e],[m.PROPERTY_VALUE,r.defaultValue[0]]]):s([m.PROPERTY,[m.PROPERTY_NAME,e],[m.PROPERTY_VALUE,r.defaultValue]])}function l(e,t){var n=t[e.name].components,r=[],i=e.value;if(i.length<1)return[];i.length<2&&(i[1]=i[0].slice(0)),i.length<3&&(i[2]=i[0].slice(0)),i.length<4&&(i[3]=i[1].slice(0));for(var o=n.length-1;0<=o;o--){var a=s([m.PROPERTY,[m.PROPERTY_NAME,n[o]]]);a.value=[i[o]],r.unshift(a)}return r}function r(e,t,n){for(var r,i,o,a=t[e.name],s=[O(a.components[0],0,t),O(a.components[1],0,t),O(a.components[2],0,t)],u=0;u<3;u++){var l=s[u];0<l.name.indexOf("color")?r=l:0<l.name.indexOf("style")?i=l:o=l}if(1==e.value.length&&"inherit"==e.value[0][1]||3==e.value.length&&"inherit"==e.value[0][1]&&"inherit"==e.value[1][1]&&"inherit"==e.value[2][1])return r.value=i.value=o.value=[e.value[0]],s;var c,f,p,d,h,m=e.value.slice(0);return 0<m.length&&(c=1<(f=m.filter((p=n,function(e){return"inherit"!=e[1]&&(p.isWidth(e[1])||p.isUnit(e[1])&&!p.isDynamicUnit(e[1]))&&!p.isStyleKeyword(e[1])&&!p.isColorFunction(e[1])}))).length&&("none"==f[0][1]||"auto"==f[0][1])?f[1]:f[0])&&(o.value=[c],m.splice(m.indexOf(c),1)),0<m.length&&(c=m.filter((d=n,function(e){return"inherit"!=e[1]&&d.isStyleKeyword(e[1])&&!d.isColorFunction(e[1])}))[0])&&(i.value=[c],m.splice(m.indexOf(c),1)),0<m.length&&(c=m.filter((h=n,function(e){return"invert"==e[1]||h.isColor(e[1])||h.isPrefixed(e[1])}))[0])&&(r.value=[c],m.splice(m.indexOf(c),1)),s}t.exports={animation:function(e,t,n){var r,i,o,a=O(e.name+"-duration",0,t),s=O(e.name+"-timing-function",0,t),u=O(e.name+"-delay",0,t),l=O(e.name+"-iteration-count",0,t),c=O(e.name+"-direction",0,t),f=O(e.name+"-fill-mode",0,t),p=O(e.name+"-play-state",0,t),d=O(e.name+"-name",0,t),h=[a,s,u,l,c,f,p,d],m=e.value,g=!1,v=!1,b=!1,y=!1,_=!1,w=!1,E=!1,A=!1;if(1==e.value.length&&"inherit"==e.value[0][1])return a.value=s.value=u.value=l.value=c.value=f.value=p.value=d.value=e.value,h;if(1<m.length&&C(m))throw new x("Invalid animation values at "+k(m[0][2][0])+". Ignoring.");for(i=0,o=m.length;i<o;i++)if(r=m[i],n.isTime(r[1])&&!g)a.value=[r],g=!0;else if(n.isTime(r[1])&&!b)u.value=[r],b=!0;else if(!n.isGlobal(r[1])&&!n.isTimingFunction(r[1])||v)if(!n.isAnimationIterationCountKeyword(r[1])&&!n.isPositiveNumber(r[1])||y)if(n.isAnimationDirectionKeyword(r[1])&&!_)c.value=[r],_=!0;else if(n.isAnimationFillModeKeyword(r[1])&&!w)f.value=[r],w=!0;else if(n.isAnimationPlayStateKeyword(r[1])&&!E)p.value=[r],E=!0;else{if(!n.isAnimationNameKeyword(r[1])&&!n.isIdentifier(r[1])||A)throw new x("Invalid animation value at "+k(r[2][0])+". Ignoring.");d.value=[r],A=!0}else l.value=[r],y=!0;else s.value=[r],v=!0;return h},background:function(e,t,n){var r=O("background-image",0,t),i=O("background-position",0,t),o=O("background-size",0,t),a=O("background-repeat",0,t),s=O("background-attachment",0,t),u=O("background-origin",0,t),l=O("background-clip",0,t),c=O("background-color",0,t),f=[r,i,o,a,s,u,l,c],p=e.value,d=!1,h=!1,m=!1,g=!1,v=!1;if(1==e.value.length&&"inherit"==e.value[0][1])return c.value=r.value=a.value=i.value=o.value=u.value=l.value=e.value,f;if(1==e.value.length&&"0 0"==e.value[0][1])return f;for(var b=p.length-1;0<=b;b--){var y=p[b];if(n.isBackgroundAttachmentKeyword(y[1]))s.value=[y],v=!0;else if(n.isBackgroundClipKeyword(y[1])||n.isBackgroundOriginKeyword(y[1]))h?(u.value=[y],m=!0):(l.value=[y],h=!0),v=!0;else if(n.isBackgroundRepeatKeyword(y[1]))g?a.value.unshift(y):(a.value=[y],g=!0),v=!0;else if(n.isBackgroundPositionKeyword(y[1])||n.isBackgroundSizeKeyword(y[1])||n.isUnit(y[1])||n.isDynamicUnit(y[1])){if(0<b){var _=p[b-1];_[1]==A.FORWARD_SLASH?o.value=[y]:1<b&&p[b-2][1]==A.FORWARD_SLASH?(o.value=[_,y],b-=2):(d||(i.value=[]),i.value.unshift(y),d=!0)}else d||(i.value=[]),i.value.unshift(y),d=!0;v=!0}else c.value[0][1]!=t[c.name].defaultValue&&"none"!=c.value[0][1]||!n.isColor(y[1])&&!n.isPrefixed(y[1])?(n.isUrl(y[1])||n.isFunction(y[1]))&&(r.value=[y],v=!0):(c.value=[y],v=!0)}if(h&&!m&&(u.value=l.value.slice(0)),!v)throw new x("Invalid background value at "+k(p[0][2][0])+". Ignoring.");return f},border:r,borderRadius:function(e,t){for(var n=e.value,r=-1,i=0,o=n.length;i<o;i++)if(n[i][1]==A.FORWARD_SLASH){r=i;break}if(0===r||r===n.length-1)throw new x("Invalid border-radius value at "+k(n[0][2][0])+". Ignoring.");var a=O(e.name,0,t);a.value=-1<r?n.slice(0,r):n.slice(0),a.components=l(a,t);var s=O(e.name,0,t);s.value=-1<r?n.slice(r+1):n.slice(0),s.components=l(s,t);for(var u=0;u<4;u++)a.components[u].multiplex=!0,a.components[u].value=a.components[u].value.concat(s.components[u].value);return a.components},font:function(e,t,n){var r,i,o,a,s=O("font-style",0,t),u=O("font-variant",0,t),l=O("font-weight",0,t),c=O("font-stretch",0,t),f=O("font-size",0,t),p=O("line-height",0,t),d=O("font-family",0,t),h=[s,u,l,c,f,p,d],m=e.value,g=0,v=!1,b=!1,y=!1,_=!1,w=!1,E=!1;if(!m[g])throw new x("Missing font values at "+k(e.all[e.position][1][2][0])+". Ignoring.");if(1==m.length&&"inherit"==m[0][1])return s.value=u.value=l.value=c.value=f.value=p.value=d.value=m,h;if(1==m.length&&(n.isFontKeyword(m[0][1])||n.isGlobal(m[0][1])||n.isPrefixed(m[0][1])))return m[0][1]=A.INTERNAL+m[0][1],s.value=u.value=l.value=c.value=f.value=p.value=d.value=m,h;if(m.length<2||!function(e,t){var n,r,i;for(r=0,i=e.length;r<i;r++)if(n=e[r],t.isFontSizeKeyword(n[1])||t.isUnit(n[1])&&!t.isDynamicUnit(n[1])||t.isFunction(n[1]))return!0;return!1}(m,n)||!function(e,t){var n,r,i;for(r=0,i=e.length;r<i;r++)if(n=e[r],t.isIdentifier(n[1]))return!0;return!1}(m,n))throw new x("Invalid font values at "+k(e.all[e.position][1][2][0])+". Ignoring.");if(1<m.length&&C(m))throw new x("Invalid font values at "+k(m[0][2][0])+". Ignoring.");for(;g<4;){if(r=n.isFontStretchKeyword(m[g][1])||n.isGlobal(m[g][1]),i=n.isFontStyleKeyword(m[g][1])||n.isGlobal(m[g][1]),o=n.isFontVariantKeyword(m[g][1])||n.isGlobal(m[g][1]),a=n.isFontWeightKeyword(m[g][1])||n.isGlobal(m[g][1]),i&&!b)s.value=[m[g]],b=!0;else if(o&&!y)u.value=[m[g]],y=!0;else if(a&&!_)l.value=[m[g]],_=!0;else{if(!r||v){if(i&&b||o&&y||a&&_||r&&v)throw new x("Invalid font style / variant / weight / stretch value at "+k(m[0][2][0])+". Ignoring.");break}c.value=[m[g]],v=!0}g++}if(!(n.isFontSizeKeyword(m[g][1])||n.isUnit(m[g][1])&&!n.isDynamicUnit(m[g][1])))throw new x("Missing font size at "+k(m[0][2][0])+". Ignoring.");if(f.value=[m[g]],w=!0,!m[++g])throw new x("Missing font family at "+k(m[0][2][0])+". Ignoring.");for(w&&m[g]&&m[g][1]==A.FORWARD_SLASH&&m[g+1]&&(n.isLineHeightKeyword(m[g+1][1])||n.isUnit(m[g+1][1])||n.isNumber(m[g+1][1]))&&(p.value=[m[g+1]],g++,g++),d.value=[];m[g];)E=m[g][1]!=A.COMMA&&(E?d.value[d.value.length-1][1]+=A.SPACE+m[g][1]:d.value.push(m[g]),!0),g++;if(0===d.value.length)throw new x("Missing font family at "+k(m[0][2][0])+". Ignoring.");return h},fourValues:l,listStyle:function(e,t,n){var r=O("list-style-type",0,t),i=O("list-style-position",0,t),o=O("list-style-image",0,t),a=[r,i,o];if(1==e.value.length&&"inherit"==e.value[0][1])return r.value=i.value=o.value=[e.value[0]],a;var s=e.value.slice(0),u=s.length,l=0;for(l=0,u=s.length;l<u;l++)if(n.isUrl(s[l][1])||"0"==s[l][1]){o.value=[s[l]],s.splice(l,1);break}for(l=0,u=s.length;l<u;l++)if(n.isListStylePositionKeyword(s[l][1])){i.value=[s[l]],s.splice(l,1);break}return 0<s.length&&(n.isListStyleTypeKeyword(s[0][1])||n.isIdentifier(s[0][1]))&&(r.value=[s[0]]),a},multiplex:function(h){return function(e,t,n){var r,i,o,a,s=[],u=e.value;for(r=0,o=u.length;r<o;r++)","==u[r][1]&&s.push(r);if(0===s.length)return h(e,t,n);var l=[];for(r=0,o=s.length;r<=o;r++){var c=0===r?0:s[r-1]+1,f=r<o?s[r]:u.length,p=O(e.name,0,t);p.value=u.slice(c,f),l.push(h(p,t,n))}var d=l[0];for(r=0,o=d.length;r<o;r++)for(d[r].multiplex=!0,i=1,a=l.length;i<a;i++)d[r].value.push([m.PROPERTY_VALUE,A.COMMA]),Array.prototype.push.apply(d[r].value,l[i][r].value);return d}},outline:r,transition:function(e,t,n){var r,i,o,a=O(e.name+"-property",0,t),s=O(e.name+"-duration",0,t),u=O(e.name+"-timing-function",0,t),l=O(e.name+"-delay",0,t),c=[a,s,u,l],f=e.value,p=!1,d=!1,h=!1,m=!1;if(1==e.value.length&&"inherit"==e.value[0][1])return a.value=s.value=u.value=l.value=e.value,c;if(1<f.length&&C(f))throw new x("Invalid animation values at "+k(f[0][2][0])+". Ignoring.");for(i=0,o=f.length;i<o;i++)if(r=f[i],n.isTime(r[1])&&!p)s.value=[r],p=!0;else if(n.isTime(r[1])&&!d)l.value=[r],d=!0;else if(!n.isGlobal(r[1])&&!n.isTimingFunction(r[1])||m){if(!n.isIdentifier(r[1])||h)throw new x("Invalid animation value at "+k(r[2][0])+". Ignoring.");a.value=[r],h=!0}else u.value=[r],m=!0;return c}}},{"../../tokenizer/marker":78,"../../tokenizer/token":79,"../../utils/format-position":82,"../wrap-for-optimizing":53,"./invalid-property-error":18}],14:[function(e,t,n){var i=e("./properties/understandable");function r(r){return function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isKeyword(r)(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isKeyword(r)(n))}}function o(r){return function(e,t,n){return!!(i(e,t,n,0,!0)||e.isKeyword(r)(n)||e.isGlobal(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||(e.isKeyword(r)(n)||e.isGlobal(n)))}}function a(e,t,n){return i=t,o=n,!(!(r=e).isFunction(i)||!r.isFunction(o)||i.substring(0,i.indexOf("("))!==o.substring(0,o.indexOf("(")))||t===n;var r,i,o}function s(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isUnit(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!(e.isUnit(t)&&!e.isUnit(n))&&(!!e.isUnit(n)||!e.isUnit(t)&&(!(!e.isFunction(t)||e.isPrefixed(t)||!e.isFunction(n)||e.isPrefixed(n))||a(e,t,n))))}function u(e){var r=o(e);return function(e,t,n){return s(e,t,n)||r(e,t,n)}}t.exports={generic:{color:function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isColor(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!(!e.colorOpacity&&(e.isRgbColor(t)||e.isHslColor(t)))&&!(!e.colorOpacity&&(e.isRgbColor(n)||e.isHslColor(n)))&&(!(!e.isColor(t)||!e.isColor(n))||a(e,t,n)))},components:function(i){return function(e,t,n,r){return i[r](e,t,n)}},image:function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isImage(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!!e.isImage(n)||!e.isImage(t)&&a(e,t,n))},propertyName:function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isIdentifier(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isIdentifier(n))},time:function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isTime(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!(e.isTime(t)&&!e.isTime(n))&&(!!e.isTime(n)||!e.isTime(t)&&(!(!e.isFunction(t)||e.isPrefixed(t)||!e.isFunction(n)||e.isPrefixed(n))||a(e,t,n))))},timingFunction:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isTimingFunction(n)||e.isGlobal(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isTimingFunction(n)||e.isGlobal(n))},unit:s,unitOrNumber:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isUnit(n)||e.isNumber(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!((e.isUnit(t)||e.isNumber(t))&&!e.isUnit(n)&&!e.isNumber(n))&&(!(!e.isUnit(n)&&!e.isNumber(n))||!e.isUnit(t)&&!e.isNumber(t)&&(!(!e.isFunction(t)||e.isPrefixed(t)||!e.isFunction(n)||e.isPrefixed(n))||a(e,t,n))))}},property:{animationDirection:o("animation-direction"),animationFillMode:r("animation-fill-mode"),animationIterationCount:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isAnimationIterationCountKeyword(n)||e.isPositiveNumber(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isAnimationIterationCountKeyword(n)||e.isPositiveNumber(n))},animationName:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isAnimationNameKeyword(n)||e.isIdentifier(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isAnimationNameKeyword(n)||e.isIdentifier(n))},animationPlayState:o("animation-play-state"),backgroundAttachment:r("background-attachment"),backgroundClip:o("background-clip"),backgroundOrigin:r("background-origin"),backgroundPosition:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isBackgroundPositionKeyword(n)||e.isGlobal(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!(!e.isBackgroundPositionKeyword(n)&&!e.isGlobal(n))||s(e,t,n))},backgroundRepeat:r("background-repeat"),backgroundSize:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isBackgroundSizeKeyword(n)||e.isGlobal(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||!(!e.isBackgroundSizeKeyword(n)&&!e.isGlobal(n))||s(e,t,n))},bottom:u("bottom"),borderCollapse:r("border-collapse"),borderStyle:o("*-style"),clear:o("clear"),cursor:o("cursor"),display:o("display"),float:o("float"),left:u("left"),fontFamily:function(e,t,n){return i(e,t,n,0,!0)},fontStretch:o("font-stretch"),fontStyle:o("font-style"),fontVariant:o("font-variant"),fontWeight:o("font-weight"),listStyleType:o("list-style-type"),listStylePosition:o("list-style-position"),outlineStyle:o("*-style"),overflow:o("overflow"),position:o("position"),right:u("right"),textAlign:o("text-align"),textDecoration:o("text-decoration"),textOverflow:o("text-overflow"),textShadow:function(e,t,n){return!!(i(e,t,n,0,!0)||e.isUnit(n)||e.isColor(n)||e.isGlobal(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isUnit(n)||e.isColor(n)||e.isGlobal(n))},top:u("top"),transform:a,verticalAlign:u("vertical-align"),visibility:o("visibility"),whiteSpace:o("white-space"),zIndex:function(e,t,n){return!(!i(e,t,n,0,!0)&&!e.isZIndex(n))&&(!(!e.isVariable(t)||!e.isVariable(n))||e.isZIndex(n))}}}},{"./properties/understandable":35}],15:[function(e,t,n){var r=e("../wrap-for-optimizing").single,i=e("../../tokenizer/token");function o(e){var t=r([i.PROPERTY,[i.PROPERTY_NAME,e.name]]);return t.important=e.important,t.hack=e.hack,t.unused=!1,t}t.exports={deep:function(e){for(var t=o(e),n=e.components.length-1;0<=n;n--){var r=o(e.components[n]);r.value=e.components[n].value.slice(0),t.components.unshift(r)}return t.dirty=!0,t.value=e.value.slice(0),t},shallow:o}},{"../../tokenizer/token":79,"../wrap-for-optimizing":53}],16:[function(e,t,n){var r=e("./break-up"),i=e("./can-override"),o=e("./restore"),a=e("../../utils/override"),s={animation:{canOverride:i.generic.components([i.generic.time,i.generic.timingFunction,i.generic.time,i.property.animationIterationCount,i.property.animationDirection,i.property.animationFillMode,i.property.animationPlayState,i.property.animationName]),components:["animation-duration","animation-timing-function","animation-delay","animation-iteration-count","animation-direction","animation-fill-mode","animation-play-state","animation-name"],breakUp:r.multiplex(r.animation),defaultValue:"none",restore:o.multiplex(o.withoutDefaults),shorthand:!0,vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-delay":{canOverride:i.generic.time,componentOf:["animation"],defaultValue:"0s",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-direction":{canOverride:i.property.animationDirection,componentOf:["animation"],defaultValue:"normal",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-duration":{canOverride:i.generic.time,componentOf:["animation"],defaultValue:"0s",intoMultiplexMode:"real",keepUnlessDefault:"animation-delay",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-fill-mode":{canOverride:i.property.animationFillMode,componentOf:["animation"],defaultValue:"none",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-iteration-count":{canOverride:i.property.animationIterationCount,componentOf:["animation"],defaultValue:"1",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-name":{canOverride:i.property.animationName,componentOf:["animation"],defaultValue:"none",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-play-state":{canOverride:i.property.animationPlayState,componentOf:["animation"],defaultValue:"running",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"animation-timing-function":{canOverride:i.generic.timingFunction,componentOf:["animation"],defaultValue:"ease",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},background:{canOverride:i.generic.components([i.generic.image,i.property.backgroundPosition,i.property.backgroundSize,i.property.backgroundRepeat,i.property.backgroundAttachment,i.property.backgroundOrigin,i.property.backgroundClip,i.generic.color]),components:["background-image","background-position","background-size","background-repeat","background-attachment","background-origin","background-clip","background-color"],breakUp:r.multiplex(r.background),defaultValue:"0 0",restore:o.multiplex(o.background),shortestValue:"0",shorthand:!0},"background-attachment":{canOverride:i.property.backgroundAttachment,componentOf:["background"],defaultValue:"scroll",intoMultiplexMode:"real"},"background-clip":{canOverride:i.property.backgroundClip,componentOf:["background"],defaultValue:"border-box",intoMultiplexMode:"real",shortestValue:"border-box"},"background-color":{canOverride:i.generic.color,componentOf:["background"],defaultValue:"transparent",intoMultiplexMode:"real",multiplexLastOnly:!0,nonMergeableValue:"none",shortestValue:"red"},"background-image":{canOverride:i.generic.image,componentOf:["background"],defaultValue:"none",intoMultiplexMode:"default"},"background-origin":{canOverride:i.property.backgroundOrigin,componentOf:["background"],defaultValue:"padding-box",intoMultiplexMode:"real",shortestValue:"border-box"},"background-position":{canOverride:i.property.backgroundPosition,componentOf:["background"],defaultValue:["0","0"],doubleValues:!0,intoMultiplexMode:"real",shortestValue:"0"},"background-repeat":{canOverride:i.property.backgroundRepeat,componentOf:["background"],defaultValue:["repeat"],doubleValues:!0,intoMultiplexMode:"real"},"background-size":{canOverride:i.property.backgroundSize,componentOf:["background"],defaultValue:["auto"],doubleValues:!0,intoMultiplexMode:"real",shortestValue:"0 0"},bottom:{canOverride:i.property.bottom,defaultValue:"auto"},border:{breakUp:r.border,canOverride:i.generic.components([i.generic.unit,i.property.borderStyle,i.generic.color]),components:["border-width","border-style","border-color"],defaultValue:"none",overridesShorthands:["border-bottom","border-left","border-right","border-top"],restore:o.withoutDefaults,shorthand:!0,shorthandComponents:!0},"border-bottom":{breakUp:r.border,canOverride:i.generic.components([i.generic.unit,i.property.borderStyle,i.generic.color]),components:["border-bottom-width","border-bottom-style","border-bottom-color"],defaultValue:"none",restore:o.withoutDefaults,shorthand:!0},"border-bottom-color":{canOverride:i.generic.color,componentOf:["border-bottom","border-color"],defaultValue:"none"},"border-bottom-left-radius":{canOverride:i.generic.unit,componentOf:["border-radius"],defaultValue:"0",vendorPrefixes:["-moz-","-o-"]},"border-bottom-right-radius":{canOverride:i.generic.unit,componentOf:["border-radius"],defaultValue:"0",vendorPrefixes:["-moz-","-o-"]},"border-bottom-style":{canOverride:i.property.borderStyle,componentOf:["border-bottom","border-style"],defaultValue:"none"},"border-bottom-width":{canOverride:i.generic.unit,componentOf:["border-bottom","border-width"],defaultValue:"medium",oppositeTo:"border-top-width",shortestValue:"0"},"border-collapse":{canOverride:i.property.borderCollapse,defaultValue:"separate"},"border-color":{breakUp:r.fourValues,canOverride:i.generic.components([i.generic.color,i.generic.color,i.generic.color,i.generic.color]),componentOf:["border"],components:["border-top-color","border-right-color","border-bottom-color","border-left-color"],defaultValue:"none",restore:o.fourValues,shortestValue:"red",shorthand:!0},"border-left":{breakUp:r.border,canOverride:i.generic.components([i.generic.unit,i.property.borderStyle,i.generic.color]),components:["border-left-width","border-left-style","border-left-color"],defaultValue:"none",restore:o.withoutDefaults,shorthand:!0},"border-left-color":{canOverride:i.generic.color,componentOf:["border-color","border-left"],defaultValue:"none"},"border-left-style":{canOverride:i.property.borderStyle,componentOf:["border-left","border-style"],defaultValue:"none"},"border-left-width":{canOverride:i.generic.unit,componentOf:["border-left","border-width"],defaultValue:"medium",oppositeTo:"border-right-width",shortestValue:"0"},"border-radius":{breakUp:r.borderRadius,canOverride:i.generic.components([i.generic.unit,i.generic.unit,i.generic.unit,i.generic.unit]),components:["border-top-left-radius","border-top-right-radius","border-bottom-right-radius","border-bottom-left-radius"],defaultValue:"0",restore:o.borderRadius,shorthand:!0,vendorPrefixes:["-moz-","-o-"]},"border-right":{breakUp:r.border,canOverride:i.generic.components([i.generic.unit,i.property.borderStyle,i.generic.color]),components:["border-right-width","border-right-style","border-right-color"],defaultValue:"none",restore:o.withoutDefaults,shorthand:!0},"border-right-color":{canOverride:i.generic.color,componentOf:["border-color","border-right"],defaultValue:"none"},"border-right-style":{canOverride:i.property.borderStyle,componentOf:["border-right","border-style"],defaultValue:"none"},"border-right-width":{canOverride:i.generic.unit,componentOf:["border-right","border-width"],defaultValue:"medium",oppositeTo:"border-left-width",shortestValue:"0"},"border-style":{breakUp:r.fourValues,canOverride:i.generic.components([i.property.borderStyle,i.property.borderStyle,i.property.borderStyle,i.property.borderStyle]),componentOf:["border"],components:["border-top-style","border-right-style","border-bottom-style","border-left-style"],defaultValue:"none",restore:o.fourValues,shorthand:!0},"border-top":{breakUp:r.border,canOverride:i.generic.components([i.generic.unit,i.property.borderStyle,i.generic.color]),components:["border-top-width","border-top-style","border-top-color"],defaultValue:"none",restore:o.withoutDefaults,shorthand:!0},"border-top-color":{canOverride:i.generic.color,componentOf:["border-color","border-top"],defaultValue:"none"},"border-top-left-radius":{canOverride:i.generic.unit,componentOf:["border-radius"],defaultValue:"0",vendorPrefixes:["-moz-","-o-"]},"border-top-right-radius":{canOverride:i.generic.unit,componentOf:["border-radius"],defaultValue:"0",vendorPrefixes:["-moz-","-o-"]},"border-top-style":{canOverride:i.property.borderStyle,componentOf:["border-style","border-top"],defaultValue:"none"},"border-top-width":{canOverride:i.generic.unit,componentOf:["border-top","border-width"],defaultValue:"medium",oppositeTo:"border-bottom-width",shortestValue:"0"},"border-width":{breakUp:r.fourValues,canOverride:i.generic.components([i.generic.unit,i.generic.unit,i.generic.unit,i.generic.unit]),componentOf:["border"],components:["border-top-width","border-right-width","border-bottom-width","border-left-width"],defaultValue:"medium",restore:o.fourValues,shortestValue:"0",shorthand:!0},clear:{canOverride:i.property.clear,defaultValue:"none"},color:{canOverride:i.generic.color,defaultValue:"transparent",shortestValue:"red"},cursor:{canOverride:i.property.cursor,defaultValue:"auto"},display:{canOverride:i.property.display},float:{canOverride:i.property.float,defaultValue:"none"},font:{breakUp:r.font,canOverride:i.generic.components([i.property.fontStyle,i.property.fontVariant,i.property.fontWeight,i.property.fontStretch,i.generic.unit,i.generic.unit,i.property.fontFamily]),components:["font-style","font-variant","font-weight","font-stretch","font-size","line-height","font-family"],restore:o.font,shorthand:!0},"font-family":{canOverride:i.property.fontFamily,defaultValue:"user|agent|specific"},"font-size":{canOverride:i.generic.unit,defaultValue:"medium",shortestValue:"0"},"font-stretch":{canOverride:i.property.fontStretch,defaultValue:"normal"},"font-style":{canOverride:i.property.fontStyle,defaultValue:"normal"},"font-variant":{canOverride:i.property.fontVariant,defaultValue:"normal"},"font-weight":{canOverride:i.property.fontWeight,defaultValue:"normal",shortestValue:"400"},height:{canOverride:i.generic.unit,defaultValue:"auto",shortestValue:"0"},left:{canOverride:i.property.left,defaultValue:"auto"},"line-height":{canOverride:i.generic.unitOrNumber,defaultValue:"normal",shortestValue:"0"},"list-style":{canOverride:i.generic.components([i.property.listStyleType,i.property.listStylePosition,i.property.listStyleImage]),components:["list-style-type","list-style-position","list-style-image"],breakUp:r.listStyle,restore:o.withoutDefaults,defaultValue:"outside",shortestValue:"none",shorthand:!0},"list-style-image":{canOverride:i.generic.image,componentOf:["list-style"],defaultValue:"none"},"list-style-position":{canOverride:i.property.listStylePosition,componentOf:["list-style"],defaultValue:"outside",shortestValue:"inside"},"list-style-type":{canOverride:i.property.listStyleType,componentOf:["list-style"],defaultValue:"decimal|disc",shortestValue:"none"},margin:{breakUp:r.fourValues,canOverride:i.generic.components([i.generic.unit,i.generic.unit,i.generic.unit,i.generic.unit]),components:["margin-top","margin-right","margin-bottom","margin-left"],defaultValue:"0",restore:o.fourValues,shorthand:!0},"margin-bottom":{canOverride:i.generic.unit,componentOf:["margin"],defaultValue:"0",oppositeTo:"margin-top"},"margin-left":{canOverride:i.generic.unit,componentOf:["margin"],defaultValue:"0",oppositeTo:"margin-right"},"margin-right":{canOverride:i.generic.unit,componentOf:["margin"],defaultValue:"0",oppositeTo:"margin-left"},"margin-top":{canOverride:i.generic.unit,componentOf:["margin"],defaultValue:"0",oppositeTo:"margin-bottom"},outline:{canOverride:i.generic.components([i.generic.color,i.property.outlineStyle,i.generic.unit]),components:["outline-color","outline-style","outline-width"],breakUp:r.outline,restore:o.withoutDefaults,defaultValue:"0",shorthand:!0},"outline-color":{canOverride:i.generic.color,componentOf:["outline"],defaultValue:"invert",shortestValue:"red"},"outline-style":{canOverride:i.property.outlineStyle,componentOf:["outline"],defaultValue:"none"},"outline-width":{canOverride:i.generic.unit,componentOf:["outline"],defaultValue:"medium",shortestValue:"0"},overflow:{canOverride:i.property.overflow,defaultValue:"visible"},"overflow-x":{canOverride:i.property.overflow,defaultValue:"visible"},"overflow-y":{canOverride:i.property.overflow,defaultValue:"visible"},padding:{breakUp:r.fourValues,canOverride:i.generic.components([i.generic.unit,i.generic.unit,i.generic.unit,i.generic.unit]),components:["padding-top","padding-right","padding-bottom","padding-left"],defaultValue:"0",restore:o.fourValues,shorthand:!0},"padding-bottom":{canOverride:i.generic.unit,componentOf:["padding"],defaultValue:"0",oppositeTo:"padding-top"},"padding-left":{canOverride:i.generic.unit,componentOf:["padding"],defaultValue:"0",oppositeTo:"padding-right"},"padding-right":{canOverride:i.generic.unit,componentOf:["padding"],defaultValue:"0",oppositeTo:"padding-left"},"padding-top":{canOverride:i.generic.unit,componentOf:["padding"],defaultValue:"0",oppositeTo:"padding-bottom"},position:{canOverride:i.property.position,defaultValue:"static"},right:{canOverride:i.property.right,defaultValue:"auto"},"text-align":{canOverride:i.property.textAlign,defaultValue:"left|right"},"text-decoration":{canOverride:i.property.textDecoration,defaultValue:"none"},"text-overflow":{canOverride:i.property.textOverflow,defaultValue:"none"},"text-shadow":{canOverride:i.property.textShadow,defaultValue:"none"},top:{canOverride:i.property.top,defaultValue:"auto"},transform:{canOverride:i.property.transform,vendorPrefixes:["-moz-","-ms-","-webkit-"]},transition:{breakUp:r.multiplex(r.transition),canOverride:i.generic.components([i.property.transitionProperty,i.generic.time,i.generic.timingFunction,i.generic.time]),components:["transition-property","transition-duration","transition-timing-function","transition-delay"],defaultValue:"none",restore:o.multiplex(o.withoutDefaults),shorthand:!0,vendorPrefixes:["-moz-","-o-","-webkit-"]},"transition-delay":{canOverride:i.generic.time,componentOf:["transition"],defaultValue:"0s",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"transition-duration":{canOverride:i.generic.time,componentOf:["transition"],defaultValue:"0s",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"transition-property":{canOverride:i.generic.propertyName,componentOf:["transition"],defaultValue:"all",intoMultiplexMode:"placeholder",placeholderValue:"_",vendorPrefixes:["-moz-","-o-","-webkit-"]},"transition-timing-function":{canOverride:i.generic.timingFunction,componentOf:["transition"],defaultValue:"ease",intoMultiplexMode:"real",vendorPrefixes:["-moz-","-o-","-webkit-"]},"vertical-align":{canOverride:i.property.verticalAlign,defaultValue:"baseline"},visibility:{canOverride:i.property.visibility,defaultValue:"visible"},"white-space":{canOverride:i.property.whiteSpace,defaultValue:"normal"},width:{canOverride:i.generic.unit,defaultValue:"auto",shortestValue:"0"},"z-index":{canOverride:i.property.zIndex,defaultValue:"auto"}};function u(e,t){var n=a(s[e],{});return"componentOf"in n&&(n.componentOf=n.componentOf.map(function(e){return t+e})),"components"in n&&(n.components=n.components.map(function(e){return t+e})),"keepUnlessDefault"in n&&(n.keepUnlessDefault=t+n.keepUnlessDefault),n}var l={};for(var c in s){var f=s[c];if("vendorPrefixes"in f){for(var p=0;p<f.vendorPrefixes.length;p++){var d=f.vendorPrefixes[p],h=u(c,d);delete h.vendorPrefixes,l[d+c]=h}delete f.vendorPrefixes}}t.exports=a(s,l)},{"../../utils/override":90,"./break-up":13,"./can-override":14,"./restore":44}],17:[function(e,t,n){var c=e("../../tokenizer/token"),f=e("../../writer/one-time").rules,p=e("../../writer/one-time").value;t.exports=function e(t){var n,r,i,o,a,s,u=[];if(t[0]==c.RULE)for(n=!/[\.\+>~]/.test(f(t[1])),a=0,s=t[2].length;a<s;a++)(r=t[2][a])[0]==c.PROPERTY&&0!==(i=r[1][1]).length&&0!==i.indexOf("--")&&(o=p(r,a),u.push([i,o,(l=i,"list-style"==l?l:0<l.indexOf("-radius")?"border-radius":"border-collapse"==l||"border-spacing"==l||"border-image"==l?l:0===l.indexOf("border-")&&/^border\-\w+\-\w+$/.test(l)?l.match(/border\-\w+/)[0]:0===l.indexOf("border-")&&/^border\-\w+$/.test(l)?"border":0===l.indexOf("text-")?l:"-chrome-"==l?l:l.replace(/^\-\w+\-/,"").match(/([a-zA-Z]+)/)[0].toLowerCase()),t[2][a],i+":"+o,t[1],n]));else if(t[0]==c.NESTED_BLOCK)for(a=0,s=t[2].length;a<s;a++)u=u.concat(e(t[2][a]));var l;return u}},{"../../tokenizer/token":79,"../../writer/one-time":93}],18:[function(e,t,n){function r(e){this.name="InvalidPropertyError",this.message=e,this.stack=(new Error).stack}(r.prototype=Object.create(Error.prototype)).constructor=r,t.exports=r},{}],19:[function(e,t,n){var d=e("../../tokenizer/marker"),p=e("../../utils/split"),h=/\/deep\//,m=/^::/,g=":not",v=[":dir",":lang",":not",":nth-child",":nth-last-child",":nth-last-of-type",":nth-of-type"],b=/[>\+~]/,y=[":after",":before",":first-letter",":first-line",":lang"],_=["::after","::before","::first-letter","::first-line"],w={DOUBLE_QUOTE:"double-quote",SINGLE_QUOTE:"single-quote",ROOT:"root"};function E(e){var t,n,r,i,o,a,s=[],u=[],l=w.ROOT,c=0,f=!1,p=!1;for(o=0,a=e.length;o<a;o++)t=e[o],i=!r&&b.test(t),n=l==w.DOUBLE_QUOTE||l==w.SINGLE_QUOTE,r?u.push(t):t==d.DOUBLE_QUOTE&&l==w.ROOT?(u.push(t),l=w.DOUBLE_QUOTE):t==d.DOUBLE_QUOTE&&l==w.DOUBLE_QUOTE?(u.push(t),l=w.ROOT):t==d.SINGLE_QUOTE&&l==w.ROOT?(u.push(t),l=w.SINGLE_QUOTE):t==d.SINGLE_QUOTE&&l==w.SINGLE_QUOTE?(u.push(t),l=w.ROOT):n?u.push(t):t==d.OPEN_ROUND_BRACKET?(u.push(t),c++):t==d.CLOSE_ROUND_BRACKET&&1==c&&f?(u.push(t),s.push(u.join("")),c--,f=!(u=[])):t==d.CLOSE_ROUND_BRACKET?(u.push(t),c--):t==d.COLON&&0===c&&f&&!p?(s.push(u.join("")),(u=[]).push(t)):t!=d.COLON||0!==c||p?t==d.SPACE&&0===c&&f?(s.push(u.join("")),f=!(u=[])):i&&0===c&&f?(s.push(u.join("")),f=!(u=[])):u.push(t):((u=[]).push(t),f=!0),r=t==d.BACK_SLASH,p=t==d.COLON;return 0<u.length&&f&&s.push(u.join("")),s}t.exports=function(e,t,n,r){var i,o,a,s,u,l,c,f=p(e,d.COMMA);for(o=0,a=f.length;o<a;o++)if(0===(i=f[o]).length||(c=i,h.test(c))||-1<i.indexOf(d.COLON)&&(u=E(s=i),l=r,!(function(e,t,n){var r,i,o,a;for(o=0,a=e.length;o<a;o++)if(r=e[o],i=-1<r.indexOf(d.OPEN_ROUND_BRACKET)?r.substring(0,r.indexOf(d.OPEN_ROUND_BRACKET)):r,-1===t.indexOf(i)&&-1===n.indexOf(i))return!1;return!0}(u,t,n)&&function(e){var t,n,r,i,o,a;for(o=0,a=e.length;o<a;o++){if(t=e[o],r=t.indexOf(d.OPEN_ROUND_BRACKET),n=(i=-1<r)?t.substring(0,r):t,i&&-1==v.indexOf(n))return!1;if(!i&&-1<v.indexOf(n))return!1}return!0}(u)&&(u.length<2||!function(e,t){var n,r,i,o,a,s,u,l,c=0;for(u=0,l=t.length;u<l&&(n=t[u],i=t[u+1]);u++)if(r=e.indexOf(n,c),o=e.indexOf(n,r+1),c=o,r+n.length==o&&(a=-1<n.indexOf(d.OPEN_ROUND_BRACKET)?n.substring(0,n.indexOf(d.OPEN_ROUND_BRACKET)):n,s=-1<i.indexOf(d.OPEN_ROUND_BRACKET)?i.substring(0,i.indexOf(d.OPEN_ROUND_BRACKET)):i,a!=g||s!=g))return!0;return!1}(s,u))&&(u.length<2||l&&function(e){var t,n,r,i,o=0;for(n=0,r=e.length;n<r;n++)if(t=e[n],i=t,m.test(i)?o+=-1<_.indexOf(t)?1:0:o+=-1<y.indexOf(t)?1:0,1<o)return!1;return!0}(u)))))return!1;return!0}},{"../../tokenizer/marker":78,"../../utils/split":91}],20:[function(e,t,n){var d=e("./is-mergeable"),h=e("./properties/optimize"),m=e("../level-1/sort-selectors"),g=e("../level-1/tidy-rules"),v=e("../../options/optimization-level").OptimizationLevel,b=e("../../writer/one-time").body,y=e("../../writer/one-time").rules,_=e("../../tokenizer/token");t.exports=function(e,t){for(var n=[null,[],[]],r=t.options,i=r.compatibility.selectors.adjacentSpace,o=r.level[v.One].selectorsSortingMethod,a=r.compatibility.selectors.mergeablePseudoClasses,s=r.compatibility.selectors.mergeablePseudoElements,u=r.compatibility.selectors.mergeLimit,l=r.compatibility.selectors.multiplePseudoMerging,c=0,f=e.length;c<f;c++){var p=e[c];p[0]==_.RULE?n[0]==_.RULE&&y(p[1])==y(n[1])?(Array.prototype.push.apply(n[2],p[2]),h(n[2],!0,!0,t),p[2]=[]):n[0]==_.RULE&&b(p[2])==b(n[2])&&d(y(p[1]),a,s,l)&&d(y(n[1]),a,s,l)&&n[1].length<u?(n[1]=g(n[1].concat(p[1]),!1,i,!1,t.warnings),n[1]=1<n.length?m(n[1],o):n[1],p[2]=[]):n=p:n=[null,[],[]]}}},{"../../options/optimization-level":60,"../../tokenizer/token":79,"../../writer/one-time":93,"../level-1/sort-selectors":9,"../level-1/tidy-rules":12,"./is-mergeable":19,"./properties/optimize":31}],21:[function(e,t,n){var C=e("./reorderable").canReorder,f=e("./reorderable").canReorderSingle,O=e("./extract-properties"),p=e("./rules-overlap"),S=e("../../writer/one-time").rules,D=e("../../options/optimization-level").OptimizationLevel,T=e("../../tokenizer/token");function B(e,t,n){var r,i,o,a,s,u,l,c;for(s=0,u=e.length;s<u;s++)for(i=(r=e[s])[5],l=0,c=t.length;l<c;l++)if(a=(o=t[l])[5],p(i,a,!0)&&!f(r,o,n))return!1;return!0}t.exports=function(e,t){for(var n=t.options.level[D.Two].mergeSemantically,r=t.cache.specificity,i={},o=[],a=e.length-1;0<=a;a--){var s=e[a];if(s[0]==T.NESTED_BLOCK){var u=S(s[1]),l=i[u];l||(l=[],i[u]=l),l.push(a)}}for(var c in i){var f=i[c];e:for(var p=f.length-1;0<p;p--){var d=f[p],h=e[d],m=f[p-1],g=e[m];t:for(var v=1;-1<=v;v-=2){for(var b=1==v,y=b?d+1:m-1,_=b?m:d,w=b?1:-1,E=b?h:g,A=b?g:h,x=O(E);y!=_;){var k=O(e[y]);if(y+=w,!(n&&B(x,k,r)||C(x,k,r)))continue t}A[2]=b?E[2].concat(A[2]):A[2].concat(E[2]),E[2]=[],o.push(A);continue e}}}return o}},{"../../options/optimization-level":60,"../../tokenizer/token":79,"../../writer/one-time":93,"./extract-properties":17,"./reorderable":42,"./rules-overlap":46}],22:[function(e,t,n){var g=e("./is-mergeable"),v=e("../level-1/sort-selectors"),b=e("../level-1/tidy-rules"),y=e("../../options/optimization-level").OptimizationLevel,_=e("../../writer/one-time").body,w=e("../../writer/one-time").rules,E=e("../../tokenizer/token");function a(e){return e.replace(/--[^ ,>\+~:]+/g,"")}function A(e,t){var n=a(w(e[1]));for(var r in t){var i=t[r],o=a(w(i[1]));(-1<o.indexOf(n)||-1<n.indexOf(o))&&delete t[r]}}t.exports=function(e,t){for(var n,r,i=t.options,o=i.level[y.Two].mergeSemantically,a=i.compatibility.selectors.adjacentSpace,s=i.level[y.One].selectorsSortingMethod,u=i.compatibility.selectors.mergeablePseudoClasses,l=i.compatibility.selectors.mergeablePseudoElements,c=i.compatibility.selectors.multiplePseudoMerging,f={},p=e.length-1;0<=p;p--){var d=e[p];if(d[0]==E.RULE){0<d[2].length&&!o&&(r=w(d[1]),/\.|\*| :/.test(r))&&(f={}),0<d[2].length&&o&&(n=void 0,-1<(n=w(d[1])).indexOf("__")||-1<n.indexOf("--"))&&A(d,f);var h=_(d[2]),m=f[h];m&&g(w(d[1]),u,l,c)&&g(w(m[1]),u,l,c)&&(0<d[2].length?(d[1]=b(m[1].concat(d[1]),!1,a,!1,t.warnings),d[1]=1<d[1].length?v(d[1],s):d[1]):d[1]=m[1].concat(d[1]),m[2]=[],f[h]=null),f[_(d[2])]=d}}}},{"../../options/optimization-level":60,"../../tokenizer/token":79,"../../writer/one-time":93,"../level-1/sort-selectors":9,"../level-1/tidy-rules":12,"./is-mergeable":19}],23:[function(e,t,n){var A=e("./reorderable").canReorder,x=e("./extract-properties"),k=e("./properties/optimize"),C=e("../../writer/one-time").rules,O=e("../../tokenizer/token");t.exports=function(e,t){var n,r=t.cache.specificity,i={},o=[];for(n=e.length-1;0<=n;n--)if(e[n][0]==O.RULE&&0!==e[n][2].length){var a=C(e[n][1]);i[a]=[n].concat(i[a]||[]),2==i[a].length&&o.push(a)}for(n=o.length-1;0<=n;n--){var s=i[o[n]];e:for(var u=s.length-1;0<u;u--){var l=s[u-1],c=e[l],f=s[u],p=e[f];t:for(var d=1;-1<=d;d-=2){for(var h=1==d,m=h?l+1:f-1,g=h?f:l,v=h?1:-1,b=h?c:p,y=h?p:c,_=x(b);m!=g;){var w=x(e[m]);m+=v;var E=h?A(_,w,r):A(w,_,r);if(!E&&!h)continue e;if(!E&&h)continue t}h?(Array.prototype.push.apply(b[2],y[2]),y[2]=b[2]):Array.prototype.push.apply(y[2],b[2]),k(y[2],!0,!0,t),b[2]=[]}}}}},{"../../tokenizer/token":79,"../../writer/one-time":93,"./extract-properties":17,"./properties/optimize":31,"./reorderable":42}],24:[function(e,t,n){var a=e("./merge-adjacent"),s=e("./merge-media-queries"),u=e("./merge-non-adjacent-by-body"),l=e("./merge-non-adjacent-by-selector"),c=e("./reduce-non-adjacent"),f=e("./remove-duplicate-font-at-rules"),p=e("./remove-duplicate-media-queries"),d=e("./remove-duplicates"),h=e("./remove-unused-at-rules"),m=e("./restructure"),g=e("./properties/optimize"),v=e("../../options/optimization-level").OptimizationLevel,b=e("../../tokenizer/token");function y(e,t,n){var r,i,o=t.options.level[v.Two];if(function(e,t){for(var n=0,r=e.length;n<r;n++){var i=e[n];if(i[0]==b.NESTED_BLOCK){var o=/@(-moz-|-o-|-webkit-)?keyframes/.test(i[1][0][1]);y(i[2],t,!o)}}}(e,t),function e(t,n){for(var r=0,i=t.length;r<i;r++){var o=t[r];switch(o[0]){case b.RULE:g(o[2],!0,!0,n);break;case b.NESTED_BLOCK:e(o[2],n)}}}(e,t),o.removeDuplicateRules&&d(e,t),o.mergeAdjacentRules&&a(e,t),o.reduceNonAdjacentRules&&c(e,t),o.mergeNonAdjacentRules&&"body"!=o.mergeNonAdjacentRules&&l(e,t),o.mergeNonAdjacentRules&&"selector"!=o.mergeNonAdjacentRules&&u(e,t),o.restructureRules&&o.mergeAdjacentRules&&n&&(m(e,t),a(e,t)),o.restructureRules&&!o.mergeAdjacentRules&&n&&m(e,t),o.removeDuplicateFontRules&&f(e,t),o.removeDuplicateMediaBlocks&&p(e,t),o.removeUnusedAtRules&&h(e,t),o.mergeMedia)for(i=(r=s(e,t)).length-1;0<=i;i--)y(r[i][2],t,!1);return o.removeEmpty&&function e(t){for(var n=0,r=t.length;n<r;n++){var i=t[n],o=!1;switch(i[0]){case b.RULE:o=0===i[1].length||0===i[2].length;break;case b.NESTED_BLOCK:e(i[2]),o=0===i[2].length;break;case b.AT_RULE:o=0===i[1].length;break;case b.AT_RULE_BLOCK:o=0===i[2].length}o&&(t.splice(n,1),n--,r--)}}(e),e}t.exports=y},{"../../options/optimization-level":60,"../../tokenizer/token":79,"./merge-adjacent":20,"./merge-media-queries":21,"./merge-non-adjacent-by-body":22,"./merge-non-adjacent-by-selector":23,"./properties/optimize":31,"./reduce-non-adjacent":37,"./remove-duplicate-font-at-rules":38,"./remove-duplicate-media-queries":39,"./remove-duplicates":40,"./remove-unused-at-rules":41,"./restructure":45}],25:[function(e,t,n){var c=e("../../../tokenizer/marker");t.exports=function(e,t,n){var r,i,o,a=t.value.length,s=n.value.length,u=Math.max(a,s),l=Math.min(a,s)-1;for(o=0;o<u;o++)if(r=t.value[o]&&t.value[o][1]||r,i=n.value[o]&&n.value[o][1]||i,r!=c.COMMA&&i!=c.COMMA&&!e(r,i,o,o<=l))return!1;return!0}},{"../../../tokenizer/marker":78}],26:[function(e,t,n){var a=e("../compactable");function s(e,t){return e.components.filter(t)[0]}t.exports=function(e,t){var n,r=(n=t,function(e){return n.name===e.name});return s(e,r)||function(e,t){var n,r,i,o;if(a[e.name].shorthandComponents)for(i=0,o=e.components.length;i<o;i++)if(n=e.components[i],r=s(n,t))return r}(e,r)}},{"../compactable":16}],27:[function(e,t,n){t.exports=function(e){for(var t=e.value.length-1;0<=t;t--)if("inherit"==e.value[t][1])return!0;return!1}},{}],28:[function(e,t,n){var i=e("../compactable");function o(e,t){var n=i[e.name];return"components"in n&&-1<n.components.indexOf(t.name)}t.exports=function(e,t,n){return o(e,t)||!n&&!!i[e.name].shorthandComponents&&(r=t,e.components.some(function(e){return o(e,r)}));var r}},{"../compactable":16}],29:[function(e,t,n){var r=e("../../../tokenizer/marker");t.exports=function(e){return"font"!=e.name||-1==e.value[0][1].indexOf(r.INTERNAL)}},{"../../../tokenizer/marker":78}],30:[function(e,t,n){var c=e("./every-values-pair"),v=e("./has-inherit"),b=e("./populate-components"),y=e("../compactable"),_=e("../clone").deep,w=e("../restore-with-components"),E=e("../../restore-from-optimizing"),A=e("../../wrap-for-optimizing").single,x=e("../../../writer/one-time").body,k=e("../../../tokenizer/token");function f(e,t,n,r){var i,o,a,s=e[t];for(i in n)void 0!==s&&i==s.name||(o=y[i],a=n[i],s&&u(n,i,s)?delete n[i]:o.components.length>Object.keys(a).length||l(a)||p(a,i,r)&&d(a)&&(h(a)?m(e,a,i,r):g(e,a,i,r)))}function u(e,t,n){var r,i=y[t],o=y[n.name];if("overridesShorthands"in i&&-1<i.overridesShorthands.indexOf(n.name))return!0;if(o&&"componentOf"in o)for(r in e[t])if(-1<o.componentOf.indexOf(r))return!0;return!1}function l(e){var t,n;for(n in e){if(void 0!==t&&e[n].important!=t)return!0;t=e[n].important}return!1}function p(e,t,n){var r,i,o,a,s=y[t],u=[k.PROPERTY,[k.PROPERTY_NAME,t],[k.PROPERTY_VALUE,s.defaultValue]],l=A(u);for(b([l],n,[]),o=0,a=s.components.length;o<a;o++)if(r=e[s.components[o]],i=y[r.name].canOverride,!c(i.bind(null,n),l.components[o],r))return!1;return!0}function d(e){var t,n,r,i,o=null;for(n in e)if(r=e[n],"restore"in(i=y[n])){if(E([r.all[r.position]],w),t=i.restore(r,y).length,null!==o&&t!==o)return!1;o=t}return!0}function h(e){var t,n,r=null;for(t in e){if(n=v(e[t]),null!==r&&r!==n)return!0;r=n}return!1}function m(e,t,n,r){var i,o,a,s,u=function(e,t,n){var r,i,o,a,s,u,l=[],c={},f={},p=y[t],d=[k.PROPERTY,[k.PROPERTY_NAME,t],[k.PROPERTY_VALUE,p.defaultValue]],h=A(d);for(b([h],n,[]),s=0,u=p.components.length;s<u;s++)r=e[p.components[s]],v(r)?(i=r.all[r.position].slice(0,2),Array.prototype.push.apply(i,r.value),l.push(i),(o=_(r)).value=C(e,o.name),h.components[s]=o,c[r.name]=_(r)):((o=_(r)).all=r.all,h.components[s]=o,f[r.name]=r);return a=O(f,1),d[1].push(a),E([h],w),d=d.slice(0,2),Array.prototype.push.apply(d,h.value),l.unshift(d),[l,h,c]}(t,n,r),l=function(e,t,n){var r,i,o,a,s,u,l=[],c={},f={},p=y[t],d=[k.PROPERTY,[k.PROPERTY_NAME,t],[k.PROPERTY_VALUE,"inherit"]],h=A(d);for(b([h],n,[]),s=0,u=p.components.length;s<u;s++)r=e[p.components[s]],v(r)?c[r.name]=r:(i=r.all[r.position].slice(0,2),Array.prototype.push.apply(i,r.value),l.push(i),f[r.name]=_(r));return o=O(c,1),d[1].push(o),a=O(c,2),d[2].push(a),l.unshift(d),[l,h,f]}(t,n,r),c=u[0],f=l[0],p=x(c).length<x(f).length,d=p?c:f,h=p?u[1]:l[1],m=p?u[2]:l[2],g=t[Object.keys(t)[0]].all;for(i in h.position=g.length,h.shorthand=!0,h.dirty=!0,h.all=g,h.all.push(d[0]),e.push(h),t)(o=t[i]).unused=!0,o.name in m&&(a=m[o.name],s=S(d,i),a.position=g.length,a.all=g,a.all.push(s),e.push(a))}function C(e,t){var n=y[t];return"oppositeTo"in n?e[n.oppositeTo].value:[[k.PROPERTY_VALUE,n.defaultValue]]}function O(e,t){var n,r,i,o,a=[];for(o in e)i=(r=(n=e[o]).all[n.position])[t][r[t].length-1],Array.prototype.push.apply(a,i);return a.sort(s)}function s(e,t){var n=e[0],r=t[0],i=e[1],o=t[1];return n<r?-1:n===r&&i<o?-1:1}function S(e,t){var n,r;for(n=0,r=e.length;n<r;n++)if(e[n][1][1]==t)return e[n]}function g(e,t,n,r){var i,o,a,s=y[n],u=[k.PROPERTY,[k.PROPERTY_NAME,n],[k.PROPERTY_VALUE,s.defaultValue]],l=A(u);l.shorthand=!0,l.dirty=!0,b([l],r,[]);for(var c=0,f=s.components.length;c<f;c++){var p=t[s.components[c]];l.components[c]=_(p),l.important=p.important,a=p.all}for(var d in t)t[d].unused=!0;i=O(t,1),u[1].push(i),o=O(t,2),u[2].push(o),l.position=a.length,l.all=a,l.all.push(u),e.push(l)}t.exports=function(e,t){var n,r,i,o,a,s,u,l={};if(!(e.length<3)){for(o=0,a=e.length;o<a;o++)if(i=e[o],n=y[i.name],!i.unused&&!i.hack&&!i.block&&(f(e,o,l,t),n&&n.componentOf))for(s=0,u=n.componentOf.length;s<u;s++)l[r=n.componentOf[s]]=l[r]||{},l[r][i.name]=i;f(e,o,l,t)}}},{"../../../tokenizer/token":79,"../../../writer/one-time":93,"../../restore-from-optimizing":51,"../../wrap-for-optimizing":53,"../clone":15,"../compactable":16,"../restore-with-components":43,"./every-values-pair":25,"./has-inherit":27,"./populate-components":34}],31:[function(e,t,n){var c=e("./merge-into-shorthands"),f=e("./override-properties"),p=e("./populate-components"),d=e("../restore-with-components"),h=e("../../wrap-for-optimizing").all,m=e("../../remove-unused"),g=e("../../restore-from-optimizing"),v=e("../../../options/optimization-level").OptimizationLevel;t.exports=function e(t,n,r,i){var o,a,s,u=i.options.level[v.Two],l=h(t,!1,u.skipProperties);for(p(l,i.validator,i.warnings),a=0,s=l.length;a<s;a++)(o=l[a]).block&&e(o.value[0][1],n,r,i);r&&u.mergeIntoShorthands&&c(l,i.validator),n&&u.overrideProperties&&f(l,r,i.options.compatibility,i.validator),g(l,d),m(l)}},{"../../../options/optimization-level":60,"../../remove-unused":50,"../../restore-from-optimizing":51,"../../wrap-for-optimizing":53,"../restore-with-components":43,"./merge-into-shorthands":30,"./override-properties":32,"./populate-components":34}],32:[function(e,t,n){var y=e("./has-inherit"),_=e("./every-values-pair"),w=e("./find-component-in"),E=e("./is-component-of"),A=e("./is-mergeable-shorthand"),x=e("./overrides-non-component-shorthand"),k=e("./vendor-prefixes").same,C=e("../compactable"),u=e("../clone").deep,l=e("../restore-with-components"),s=e("../clone").shallow,c=e("../../restore-from-optimizing"),f=e("../../../tokenizer/token"),p=e("../../../tokenizer/marker"),r=e("../../../writer/one-time").property;function O(e,t){for(var n=0;n<e.components.length;n++){var r=e.components[n],i=C[r.name],o=i&&i.canOverride||o.sameValue,a=s(r);if(a.value=[[f.PROPERTY_VALUE,i.defaultValue]],!_(o.bind(null,t),a,r))return!0}return!1}function d(e,t){t.unused=!0,T(t,B(e)),e.value=t.value}function h(e,t){t.unused=!0,e.multiplex=!0,e.value=t.value}function S(e,t){var n,r;t.multiplex?h(e,t):e.multiplex?d(e,t):(n=e,(r=t).unused=!0,n.value=r.value)}function D(e,t){t.unused=!0;for(var n=0,r=e.components.length;n<r;n++)S(e.components[n],t.components[n],e.multiplex)}function T(e,t){e.multiplex=!0,C[e.name].shorthand?function(e,t){var n,r,i;for(r=0,i=e.components.length;r<i;r++)(n=e.components[r]).multiplex||o(n,t)}(e,t):o(e,t)}function o(e,t){for(var n,r=C[e.name],i="real"==r.intoMultiplexMode,o="real"==r.intoMultiplexMode?e.value.slice(0):"placeholder"==r.intoMultiplexMode?r.placeholderValue:r.defaultValue,a=B(e),s=o.length;a<t;a++)if(e.value.push([f.PROPERTY_VALUE,p.COMMA]),Array.isArray(o))for(n=0;n<s;n++)e.value.push(i?o[n]:[f.PROPERTY_VALUE,o[n]]);else e.value.push(i?o:[f.PROPERTY_VALUE,o])}function B(e){for(var t=0,n=0,r=e.value.length;n<r;n++)e.value[n][1]==p.COMMA&&t++;return t+1}function m(e){var t=[f.PROPERTY,[f.PROPERTY_NAME,e.name]].concat(e.value);return r([t],0).length}function R(e,t,n){for(var r=0,i=t;0<=i&&(e[i].name!=n||e[i].unused||r++,!(1<r));i--);return 1<r}function L(e,t){for(var n=0,r=e.components.length;n<r;n++)if(!F(t.isUrl,e.components[n])&&F(t.isFunction,e.components[n]))return!0;return!1}function F(e,t){for(var n=0,r=t.value.length;n<r;n++)if(t.value[n][1]!=p.COMMA&&e(t.value[n][1]))return!0;return!1}function q(e,t){if(!e.multiplex&&!t.multiplex||e.multiplex&&t.multiplex)return!1;var n,r=e.multiplex?e:t,i=e.multiplex?t:e,o=u(r);c([o],l);var a=u(i);c([a],l);var s=m(o)+1+m(a);return e.multiplex?d(n=w(o,a),a):(n=w(a,o),T(a,B(o)),h(n,o)),c([a],l),s<=m(a)}function U(e){return e.name in C}function M(e,t){return!e.multiplex&&("background"==e.name||"background-image"==e.name)&&t.multiplex&&("background"==t.name||"background-image"==t.name)&&function(e){for(var t=function(e){for(var t=[],n=0,r=[],i=e.length;n<i;n++){var o=e[n];o[1]==p.COMMA?(t.push(r),r=[]):r.push(o)}return t.push(r),t}(e),n=0,r=t.length;n<r;n++)if(1==t[n].length&&"none"==t[n][0][1])return!0;return!1}(t.value)}t.exports=function(e,t,n,r){var i,o,a,s,u,l,c,f,p,d,h;e:for(p=e.length-1;0<=p;p--)if(U(o=e[p])&&!o.block){i=C[o.name].canOverride;t:for(d=p-1;0<=d;d--)if(U(a=e[d])&&!a.block&&!a.unused&&!o.unused&&(!a.hack||o.hack||o.important)&&(a.hack||a.important||!o.hack)&&(a.important!=o.important||a.hack[0]==o.hack[0])&&!(a.important==o.important&&(a.hack[0]!=o.hack[0]||a.hack[1]&&a.hack[1]!=o.hack[1])||y(o)||M(a,o)))if(o.shorthand&&E(o,a)){if(!o.important&&a.important)continue;if(!k([a],o.components))continue;if(!F(r.isFunction,a)&&L(o,r))continue;if(!A(o)){a.unused=!0;continue}s=w(o,a),i=C[a.name].canOverride,_(i.bind(null,r),a,s)&&(a.unused=!0)}else if(o.shorthand&&x(o,a)){if(!o.important&&a.important)continue;if(!k([a],o.components))continue;if(!F(r.isFunction,a)&&L(o,r))continue;for(h=(u=a.shorthand?a.components:[a]).length-1;0<=h;h--)if(l=u[h],c=w(o,l),i=C[l.name].canOverride,!_(i.bind(null,r),a,c))continue t;a.unused=!0}else if(t&&a.shorthand&&!o.shorthand&&E(a,o,!0)){if(o.important&&!a.important)continue;if(!o.important&&a.important){o.unused=!0;continue}if(R(e,p-1,a.name))continue;if(L(a,r))continue;if(!A(a))continue;if(s=w(a,o),_(i.bind(null,r),s,o)){var m=!n.properties.backgroundClipMerging&&-1<s.name.indexOf("background-clip")||!n.properties.backgroundOriginMerging&&-1<s.name.indexOf("background-origin")||!n.properties.backgroundSizeMerging&&-1<s.name.indexOf("background-size"),g=C[o.name].nonMergeableValue===o.value[0][1];if(m||g)continue;if(!n.properties.merging&&O(a,r))continue;if(s.value[0][1]!=o.value[0][1]&&(y(a)||y(o)))continue;if(q(a,o))continue;!a.multiplex&&o.multiplex&&T(a,B(o)),S(s,o),a.dirty=!0}}else if(t&&a.shorthand&&o.shorthand&&a.name==o.name){if(!a.multiplex&&o.multiplex)continue;if(!o.important&&a.important){o.unused=!0;continue e}if(o.important&&!a.important){a.unused=!0;continue}if(!A(o)){a.unused=!0;continue}for(h=a.components.length-1;0<=h;h--){var v=a.components[h],b=o.components[h];if(i=C[v.name].canOverride,!_(i.bind(null,r),v,b))continue e}D(a,o),a.dirty=!0}else if(t&&a.shorthand&&o.shorthand&&E(a,o)){if(!a.important&&o.important)continue;if(s=w(a,o),i=C[o.name].canOverride,!_(i.bind(null,r),s,o))continue;if(a.important&&!o.important){o.unused=!0;continue}if(1<C[o.name].restore(o,C).length)continue;S(s=w(a,o),o),o.dirty=!0}else if(a.name==o.name){if(f=!0,o.shorthand)for(h=o.components.length-1;0<=h&&f;h--)l=a.components[h],c=o.components[h],i=C[c.name].canOverride,f=f&&_(i.bind(null,r),l,c);else i=C[o.name].canOverride,f=_(i.bind(null,r),a,o);if(a.important&&!o.important&&f){o.unused=!0;continue}if(!a.important&&o.important&&f){a.unused=!0;continue}if(!f)continue;a.unused=!0}}}},{"../../../tokenizer/marker":78,"../../../tokenizer/token":79,"../../../writer/one-time":93,"../../restore-from-optimizing":51,"../clone":15,"../compactable":16,"../restore-with-components":43,"./every-values-pair":25,"./find-component-in":26,"./has-inherit":27,"./is-component-of":28,"./is-mergeable-shorthand":29,"./overrides-non-component-shorthand":33,"./vendor-prefixes":36}],33:[function(e,t,n){var r=e("../compactable");t.exports=function(e,t){return e.name in r&&"overridesShorthands"in r[e.name]&&-1<r[e.name].overridesShorthands.indexOf(t.name)}},{"../compactable":16}],34:[function(e,t,n){var l=e("../compactable"),c=e("../invalid-property-error");t.exports=function(e,t,n){for(var r,i,o,a=e.length-1;0<=a;a--){var s=e[a],u=l[s.name];if(u&&u.shorthand){s.shorthand=!0,s.dirty=!0;try{if(s.components=u.breakUp(s,l,t),u.shorthandComponents)for(i=0,o=s.components.length;i<o;i++)(r=s.components[i]).components=l[r.name].breakUp(r,l,t)}catch(e){if(!(e instanceof c))throw e;s.components=[],n.push(e.message)}0<s.components.length?s.multiplex=s.components[0].multiplex:s.unused=!0}}}},{"../compactable":16,"../invalid-property-error":18}],35:[function(e,t,n){var o=e("./vendor-prefixes").same;t.exports=function(e,t,n,r,i){return!(!o(t,n)||i&&e.isVariable(t)!==e.isVariable(n))}},{"./vendor-prefixes":36}],36:[function(e,t,n){var r=/(?:^|\W)(\-\w+\-)/g;function i(e){for(var t,n=[];null!==(t=r.exec(e));)-1==n.indexOf(t[0])&&n.push(t[0]);return n}t.exports={unique:i,same:function(e,t){return i(e).sort().join(",")==i(t).sort().join(",")}}},{}],37:[function(e,t,n){var _=e("./is-mergeable"),g=e("./properties/optimize"),v=e("../../utils/clone-array"),b=e("../../tokenizer/token"),w=e("../../writer/one-time").body,y=e("../../writer/one-time").rules;function E(e){for(var t=[],n=0;n<e.length;n++)t.push([e[n][1]]);return t}function A(e,t,n,r,i){for(var o=[],a=[],s=[],u=t.length-1;0<=u;u--)if(!n.filterOut(u,o)){var l=t[u].where,c=e[l],f=v(c[2]);o=o.concat(f),a.push(f),s.push(l)}g(o,!0,!1,i);for(var p=s.length,d=o.length-1,h=p-1;0<=h;)if((0===h||o[d]&&-1<a[h].indexOf(o[d]))&&-1<d)d--;else{var m=o.splice(d+1);n.callback(e[s[h]],m,p,h),h--}}t.exports=function(e,t){for(var n=t.options,r=n.compatibility.selectors.mergeablePseudoClasses,i=n.compatibility.selectors.mergeablePseudoElements,o=n.compatibility.selectors.multiplePseudoMerging,a={},s=[],u=e.length-1;0<=u;u--){var l=e[u];if(l[0]==b.RULE&&0!==l[2].length)for(var c=y(l[1]),f=1<l[1].length&&_(c,r,i,o),p=E(l[1]),d=f?[c].concat(p):[c],h=0,m=d.length;h<m;h++){var g=d[h];a[g]?s.push(g):a[g]=[],a[g].push({where:u,list:p,isPartial:f&&0<h,isComplex:f&&0===h})}}!function(e,t,n,r,i){function o(e,t){return c[e].isPartial&&0===t.length}function a(e,t,n,r){c[n-r-1].isPartial||(e[2]=t)}for(var s=0,u=t.length;s<u;s++){var l=t[s],c=n[l];A(e,c,{filterOut:o,callback:a},0,i)}}(e,s,a,0,t),function(e,t,n,r){var i=n.compatibility.selectors.mergeablePseudoClasses,o=n.compatibility.selectors.mergeablePseudoElements,a=n.compatibility.selectors.multiplePseudoMerging,s={};function u(e){return s.data[e].where<s.intoPosition}function l(e,t,n,r){0===r&&s.reducedBodies.push(t)}e:for(var c in t){var f=t[c];if(f[0].isComplex){var p=f[f.length-1].where,d=e[p],h=[],m=_(c,i,o,a)?f[0].list:[c];s.intoPosition=p,s.reducedBodies=h;for(var g=0,v=m.length;g<v;g++){var b=m[g],y=t[b];if(y.length<2)continue e;if(s.data=y,A(e,y,{filterOut:u,callback:l},0,r),w(h[h.length-1])!=w(h[0]))continue e}d[2]=h[0]}}}(e,a,n,t)}},{"../../tokenizer/token":79,"../../utils/clone-array":81,"../../writer/one-time":93,"./is-mergeable":19,"./properties/optimize":31}],38:[function(e,t,n){var a=e("../../tokenizer/token"),s=e("../../writer/one-time").all;t.exports=function(e){var t,n,r,i,o=[];for(r=0,i=e.length;r<i;r++)(t=e[r])[0]!=a.AT_RULE_BLOCK&&"@font-face"!=t[1][0][1]||(n=s([t]),-1<o.indexOf(n)?t[2]=[]:o.push(n))}},{"../../tokenizer/token":79,"../../writer/one-time":93}],39:[function(e,t,n){var s=e("../../tokenizer/token"),u=e("../../writer/one-time").all,l=e("../../writer/one-time").rules;t.exports=function(e){var t,n,r,i,o,a={};for(i=0,o=e.length;i<o;i++)(n=e[i])[0]==s.NESTED_BLOCK&&((t=a[r=l(n[1])+"%"+u(n[2])])&&(t[2]=[]),a[r]=n)}},{"../../tokenizer/token":79,"../../writer/one-time":93}],40:[function(e,t,n){var c=e("../../tokenizer/token"),f=e("../../writer/one-time").body,p=e("../../writer/one-time").rules;t.exports=function(e){for(var t,n,r,i,o={},a=[],s=0,u=e.length;s<u;s++)(n=e[s])[0]==c.RULE&&(o[t=p(n[1])]&&1==o[t].length?a.push(t):o[t]=o[t]||[],o[t].push(s));for(s=0,u=a.length;s<u;s++){i=[];for(var l=o[t=a[s]].length-1;0<=l;l--)n=e[o[t][l]],r=f(n[2]),-1<i.indexOf(r)?n[2]=[]:i.push(r)}}},{"../../tokenizer/token":79,"../../writer/one-time":93}],41:[function(e,t,n){var f=e("./properties/populate-components"),p=e("../wrap-for-optimizing").single,d=e("../restore-from-optimizing"),c=e("../../tokenizer/token"),h=/^(\-moz\-|\-o\-|\-webkit\-)?animation-name$/,m=/^(\-moz\-|\-o\-|\-webkit\-)?animation$/,r=/^@(\-moz\-|\-o\-|\-webkit\-)?keyframes /,i=/\s{0,31}!important$/,o=/^(['"]?)(.*)\1$/;function g(e){return e.replace(o,"$2").replace(i,"")}function a(e,t,n,r){var i,o,a,s,u,l={};for(s=0,u=e.length;s<u;s++)t(e[s],l);if(0!==Object.keys(l).length)for(i in function e(t,n,r,i){var o=n(r);var a,s;for(a=0,s=t.length;a<s;a++)switch(t[a][0]){case c.RULE:o(t[a],i);break;case c.NESTED_BLOCK:e(t[a][2],n,r,i)}}(e,n,l,r),l)for(s=0,u=(o=l[i]).length;s<u;s++)(a=o[s])[a[0]==c.AT_RULE?1:2]=[]}function s(e,t){var n;e[0]==c.AT_RULE_BLOCK&&0===e[1][0][1].indexOf("@counter-style")&&(t[n=e[1][0][1].split(" ")[1]]=t[n]||[],t[n].push(e))}function u(a){return function(e,t){var n,r,i,o;for(i=0,o=e[2].length;i<o;i++)"list-style"==(n=e[2][i])[1][1]&&(r=p(n),f([r],t.validator,t.warnings),r.components[0].value[0][1]in a&&delete a[n[2][1]],d([r])),"list-style-type"==n[1][1]&&n[2][1]in a&&delete a[n[2][1]]}}function l(e,t){var n,r,i,o;if(e[0]==c.AT_RULE_BLOCK&&"@font-face"==e[1][0][1])for(i=0,o=e[2].length;i<o;i++)if("font-family"==(n=e[2][i])[1][1]){t[r=g(n[2][1].toLowerCase())]=t[r]||[],t[r].push(e);break}}function v(c){return function(e,t){var n,r,i,o,a,s,u,l;for(a=0,s=e[2].length;a<s;a++){if("font"==(n=e[2][a])[1][1]){for(r=p(n),f([r],t.validator,t.warnings),u=0,l=(i=r.components[6]).value.length;u<l;u++)(o=g(i.value[u][1].toLowerCase()))in c&&delete c[o];d([r])}if("font-family"==n[1][1])for(u=2,l=n.length;u<l;u++)(o=g(n[u][1].toLowerCase()))in c&&delete c[o]}}}function b(e,t){var n;e[0]==c.NESTED_BLOCK&&r.test(e[1][0][1])&&(t[n=e[1][0][1].split(" ")[1]]=t[n]||[],t[n].push(e))}function y(l){return function(e,t){var n,r,i,o,a,s,u;for(o=0,a=e[2].length;o<a;o++){if(n=e[2][o],m.test(n[1][1])){for(r=p(n),f([r],t.validator,t.warnings),s=0,u=(i=r.components[7]).value.length;s<u;s++)i.value[s][1]in l&&delete l[i.value[s][1]];d([r])}if(h.test(n[1][1]))for(s=2,u=n.length;s<u;s++)n[s][1]in l&&delete l[n[s][1]]}}}function _(e,t){var n;e[0]==c.AT_RULE&&0===e[1].indexOf("@namespace")&&(t[n=e[1].split(" ")[1]]=t[n]||[],t[n].push(e))}function w(s){var u=new RegExp(Object.keys(s).join("\\||")+"\\|","g");return function(e){var t,n,r,i,o,a;for(r=0,i=e[1].length;r<i;r++)for(o=0,a=(t=e[1][r][1].match(u)).length;o<a;o++)(n=t[o].substring(0,t[o].length-1))in s&&delete s[n]}}t.exports=function(e,t){a(e,s,u,t),a(e,l,v,t),a(e,b,y,t),a(e,_,w,t)}},{"../../tokenizer/token":79,"../restore-from-optimizing":51,"../wrap-for-optimizing":53,"./properties/populate-components":34}],42:[function(e,t,n){var m=e("./rules-overlap"),g=e("./specificities-overlap"),v=/align\-items|box\-align|box\-pack|flex|justify/,b=/^border\-(top|right|bottom|left|color|style|width|radius)/;function o(e,t,n){var r,i,o=e[0],a=e[1],s=e[2],u=e[5],l=e[6],c=t[0],f=t[1],p=t[2],d=t[5],h=t[6];return!("font"==o&&"line-height"==c||"font"==c&&"line-height"==o)&&((!v.test(o)||!v.test(c))&&(!(s==p&&_(o)==_(c)&&y(o)^y(c))&&(("border"!=s||!b.test(p)||!("border"==o||o==p||a!=f&&w(o,c)))&&(("border"!=p||!b.test(s)||!("border"==c||c==s||a!=f&&w(o,c)))&&(("border"!=s||"border"!=p||o==c||!(E(o)&&A(c)||A(o)&&E(c)))&&(s!=p||(!(o!=c||s!=p||a!=f&&(i=f,!y(r=a)||!y(i)||r.split("-")[1]==i.split("-")[2]))||(o!=c&&s==p&&o!=s&&c!=p||(o!=c&&s==p&&a==f||(!(!h||!l||x(s)||x(p)||m(d,u,!1))||!g(u,d,n)))))))))))}function y(e){return/^\-(?:moz|webkit|ms|o)\-/.test(e)}function _(e){return e.replace(/^\-(?:moz|webkit|ms|o)\-/,"")}function w(e,t){return e.split("-").pop()==t.split("-").pop()}function E(e){return"border-top"==e||"border-right"==e||"border-bottom"==e||"border-left"==e}function A(e){return"border-color"==e||"border-style"==e||"border-width"==e}function x(e){return"font"==e||"line-height"==e||"list-style"==e}t.exports={canReorder:function(e,t,n){for(var r=t.length-1;0<=r;r--)for(var i=e.length-1;0<=i;i--)if(!o(e[i],t[r],n))return!1;return!0},canReorderSingle:o}},{"./rules-overlap":46,"./specificities-overlap":47}],43:[function(e,t,n){var r=e("./compactable");t.exports=function(e){var t=r[e.name];return t&&t.shorthand?t.restore(e,r):e.value}},{"./compactable":16}],44:[function(e,t,n){var g=e("./clone").shallow,v=e("../../tokenizer/token"),b=e("../../tokenizer/marker");function y(e){for(var t=0,n=e.length;t<n;t++){var r=e[t][1];if("inherit"!=r&&r!=b.COMMA&&r!=b.FORWARD_SLASH)return!1}return!0}function c(e){var t=e.components,n=t[0].value[0],r=t[1].value[0],i=t[2].value[0],o=t[3].value[0];return n[1]==r[1]&&n[1]==i[1]&&n[1]==o[1]?[n]:n[1]==i[1]&&r[1]==o[1]?[n,r]:r[1]==o[1]?[n,r,i]:[n,r,i,o]}function s(e,t,n){var r,i,o;for(i=0,o=e.length;i<o;i++)if((r=e[i]).name==n&&r.value[0][1]==t[n].defaultValue)return!0;return!1}t.exports={background:function(e,n,t){var r,i,o=e.components,a=[];function s(e){Array.prototype.unshift.apply(a,e.value)}function u(e){var t=n[e.name];return t.doubleValues&&1==t.defaultValue.length?e.value[0][1]==t.defaultValue[0]&&(!e.value[1]||e.value[1][1]==t.defaultValue[0]):t.doubleValues&&1!=t.defaultValue.length?e.value[0][1]==t.defaultValue[0]&&(e.value[1]?e.value[1][1]:e.value[0][1])==t.defaultValue[1]:e.value[0][1]==t.defaultValue}for(var l=o.length-1;0<=l;l--){var c=o[l],f=u(c);if("background-clip"==c.name){var p=o[l-1],d=u(p);i=!(r=c.value[0][1]==p.value[0][1])&&(d&&!f||!d&&!f||!d&&f&&c.value[0][1]!=p.value[0][1]),r?s(p):i&&(s(c),s(p)),l--}else if("background-size"==c.name){var h=o[l-1],m=u(h);i=!(r=!m&&f)&&(m&&!f||!m&&!f),r?s(h):i?(s(c),a.unshift([v.PROPERTY_VALUE,b.FORWARD_SLASH]),s(h)):1==h.value.length&&s(h),l--}else{if(f||n[c.name].multiplexLastOnly&&!t)continue;s(c)}}return 0===a.length&&1==e.value.length&&"0"==e.value[0][1]&&a.push(e.value[0]),0===a.length&&a.push([v.PROPERTY_VALUE,n[e.name].defaultValue]),y(a)?[a[0]]:a},borderRadius:function(e,t){if(e.multiplex){for(var n=g(e),r=g(e),i=0;i<4;i++){var o=e.components[i],a=g(e);a.value=[o.value[0]],n.components.push(a);var s=g(e);s.value=[o.value[1]||o.value[0]],r.components.push(s)}var u=c(n),l=c(r);return u.length!=l.length||u[0][1]!=l[0][1]||1<u.length&&u[1][1]!=l[1][1]||2<u.length&&u[2][1]!=l[2][1]||3<u.length&&u[3][1]!=l[3][1]?u.concat([[v.PROPERTY_VALUE,b.FORWARD_SLASH]]).concat(l):u}return c(e)},font:function(e,t){var n,r=e.components,i=[],o=0,a=0;if(0===e.value[0][1].indexOf(b.INTERNAL))return e.value[0][1]=e.value[0][1].substring(b.INTERNAL.length),e.value;for(;o<4;)(n=r[o]).value[0][1]!=t[n.name].defaultValue&&Array.prototype.push.apply(i,n.value),o++;for(Array.prototype.push.apply(i,r[o].value),r[++o].value[0][1]!=t[r[o].name].defaultValue&&(Array.prototype.push.apply(i,[[v.PROPERTY_VALUE,b.FORWARD_SLASH]]),Array.prototype.push.apply(i,r[o].value)),o++;r[o].value[a];)i.push(r[o].value[a]),r[o].value[a+1]&&i.push([v.PROPERTY_VALUE,b.COMMA]),a++;return y(i)?[i[0]]:i},fourValues:c,multiplex:function(m){return function(e,t){if(!e.multiplex)return m(e,t,!0);var n,r,i=0,o=[],a={};for(n=0,r=e.components[0].value.length;n<r;n++)e.components[0].value[n][1]==b.COMMA&&i++;for(n=0;n<=i;n++){for(var s=g(e),u=0,l=e.components.length;u<l;u++){var c=e.components[u],f=g(c);s.components.push(f);for(var p=a[f.name]||0,d=c.value.length;p<d;p++){if(c.value[p][1]==b.COMMA){a[f.name]=p+1;break}f.value.push(c.value[p])}}var h=m(s,t,n==i);Array.prototype.push.apply(o,h),n<i&&o.push([v.PROPERTY_VALUE,b.COMMA])}return o}},withoutDefaults:function(e,t){for(var n=e.components,r=[],i=n.length-1;0<=i;i--){var o=n[i],a=t[o.name];(o.value[0][1]!=a.defaultValue||"keepUnlessDefault"in a&&!s(n,t,a.keepUnlessDefault))&&r.unshift(o.value[0])}return 0===r.length&&r.push([v.PROPERTY_VALUE,t[e.name].defaultValue]),y(r)?[r[0]]:r}}},{"../../tokenizer/marker":78,"../../tokenizer/token":79,"./clone":15}],45:[function(e,t,n){var K=e("./reorderable").canReorderSingle,G=e("./extract-properties"),Y=e("./is-mergeable"),W=e("./tidy-rule-duplicates"),Q=e("../../tokenizer/token"),Z=e("../../utils/clone-array"),J=e("../../writer/one-time").body,X=e("../../writer/one-time").rules;function ee(e,t){return t<e?1:-1}t.exports=function(g,e){var t,n,r,i=e.options,o=i.compatibility.selectors.mergeablePseudoClasses,a=i.compatibility.selectors.mergeablePseudoElements,s=i.compatibility.selectors.mergeLimit,u=i.compatibility.selectors.multiplePseudoMerging,l=e.cache.specificity,p={},c=[],d={},f=[],h=2,m="%";function v(e,t){var n=function(e){for(var t=[],n=0,r=e.length;n<r;n++)t.push(X(e[n][1]));return t.join(m)}(t);return d[n]=d[n]||[],d[n].push([e,t]),n}function b(e){var t,n=e.split(m),r=[];for(var i in d){var o=i.split(m);for(t=o.length-1;0<=t;t--)if(-1<n.indexOf(o[t])){r.push(i);break}}for(t=r.length-1;0<=t;t--)delete d[r[t]]}function y(e){for(var t=[],n=[],r=e.length-1;0<=r;r--)Y(X(e[r][1]),o,a,u)&&(n.unshift(e[r]),0<e[r][2].length&&-1==t.indexOf(e[r])&&t.push(e[r]));return 1<t.length?n:[]}function _(e,t){var n=t[0],r=t[1],i=t[4],o=n.length+r.length+1,a=[],s=[],u=y(p[i]);if(!(u.length<2)){var l=E(u,o,1),c=l[0];if(0<c[1])return function(e,t,n){for(var r=n.length-1;0<=r;r--){var i=v(t,n[r][0]);if(1<d[i].length&&C(e,d[i])){b(i);break}}}(e,t,l);for(var f=c[0].length-1;0<=f;f--)a=c[0][f][1].concat(a),s.unshift(c[0][f]);x(e,[t],a=W(a),s)}}function w(e,t){return e[1]>t[1]?1:e[1]==t[1]?0:-1}function E(e,t,n){return function e(t,n,r,i){var o=[[t,A(t,n,r)]];if(2<t.length&&0<i)for(var a=t.length-1;0<=a;a--){var s=Array.prototype.slice.call(t,0);s.splice(a,1),o=o.concat(e(s,n,r,i-1))}return o}(e,t,n,h-1).sort(w)}function A(e,t,n){for(var r=0,i=e.length-1;0<=i;i--)r+=e[i][2].length>n?X(e[i][1]).length:-1;return r-(e.length-1)*t+1}function x(e,t,n,r){var i,o,a,s,u=[];for(i=r.length-1;0<=i;i--){var l=r[i];for(o=l[2].length-1;0<=o;o--){var c=l[2][o];for(a=0,s=t.length;a<s;a++){var f=t[a],p=c[1][1],d=f[0],h=f[4];if(p==d&&J([c])==h){l[2].splice(o,1);break}}}}for(i=t.length-1;0<=i;i--)u.unshift(t[i][3]);var m=[Q.RULE,n,u];g.splice(e,0,m)}function k(e,t){var n=t[4],r=p[n];r&&1<r.length&&(function(e,t){var n,r,i=[],o=[],a=t[4],s=y(p[a]);if(!(s.length<2)){e:for(var u in p){var l=p[u];for(n=s.length-1;0<=n;n--)if(-1==l.indexOf(s[n]))continue e;i.push(u)}if(i.length<2)return!1;for(n=i.length-1;0<=n;n--)for(r=c.length-1;0<=r;r--)if(c[r][4]==i[n]){o.unshift([c[r],s]);break}return C(e,o)}}(e,t)||_(e,t))}function C(e,t){for(var n,r=0,i=[],o=t.length-1;0<=o;o--)r+=(n=t[o][0])[4].length+(0<o?1:0),i.push(n);var a=E(t[0][1],r,i.length)[0];if(0<a[1])return!1;var s=[],u=[];for(o=a[0].length-1;0<=o;o--)s=a[0][o][1].concat(s),u.unshift(a[0][o]);for(x(e,i,s=W(s),u),o=i.length-1;0<=o;o--){n=i[o];var l=c.indexOf(n);delete p[n[4]],-1<l&&-1==f.indexOf(l)&&f.push(l)}return!0}function O(e,t,n){if(e[0]!=t[0])return!1;var r=t[4],i=p[r];return i&&-1<i.indexOf(n)}for(var S=g.length-1;0<=S;S--){var D,T,B,R,L,F=g[S];if(F[0]==Q.RULE)D=!0;else{if(F[0]!=Q.NESTED_BLOCK)continue;D=!1}var q=c.length,U=G(F);f=[];var M=[];for(T=U.length-1;0<=T;T--)for(B=T-1;0<=B;B--)if(!K(U[T],U[B],l)){M.push(T);break}for(T=U.length-1;0<=T;T--){var N=U[T],P=!1;for(B=0;B<q;B++){var z=c[B];-1==f.indexOf(B)&&(!K(N,z,l)&&!O(N,z,F)||p[z[4]]&&p[z[4]].length===s)&&(k(S+1,z),-1==f.indexOf(B)&&(f.push(B),delete p[z[4]])),P||(P=N[0]==z[0]&&N[1]==z[1])&&(L=B)}if(D&&!(-1<M.indexOf(T))){var j=N[4];P&&c[L][5].length+N[5].length>s?(k(S+1,c[L]),c.splice(L,1),p[j]=[F],P=!1):(p[j]=p[j]||[],p[j].push(F)),P?c[L]=(t=c[L],n=N,r=void 0,(r=Z(t))[5]=r[5].concat(n[5]),r):c.push(N)}}for(T=0,R=(f=f.sort(ee)).length;T<R;T++){var I=f[T]-T;c.splice(I,1)}}for(var V=g[0]&&g[0][0]==Q.AT_RULE&&0===g[0][1].indexOf("@charset")?1:0;V<g.length-1;V++){var H=g[V][0]===Q.AT_RULE&&0===g[V][1].indexOf("@import"),$=g[V][0]===Q.COMMENT;if(!H&&!$)break}for(S=0;S<c.length;S++)k(V,c[S])}},{"../../tokenizer/token":79,"../../utils/clone-array":81,"../../writer/one-time":93,"./extract-properties":17,"./is-mergeable":19,"./reorderable":42,"./tidy-rule-duplicates":49}],46:[function(e,t,n){var r=/\-\-.+$/;function l(e){return e.replace(r,"")}t.exports=function(e,t,n){var r,i,o,a,s,u;for(o=0,a=e.length;o<a;o++)for(r=e[o][1],s=0,u=t.length;s<u;s++){if(r==(i=t[s][1]))return!0;if(n&&l(r)==l(i))return!0}return!1}},{}],47:[function(e,t,n){var r=e("./specificity");function l(e,t){var n;return e in t||(t[e]=n=r(e)),n||t[e]}t.exports=function(e,t,n){var r,i,o,a,s,u;for(o=0,a=e.length;o<a;o++)for(r=l(e[o][1],n),s=0,u=t.length;s<u;s++)if(i=l(t[s][1],n),r[0]===i[0]&&r[1]===i[1]&&r[2]===i[2])return!0;return!1}},{"./specificity":48}],48:[function(e,t,n){var d=e("../../tokenizer/marker"),h=".",m="#",g=":",v=/[a-zA-Z]/,b=":not(",y=/[\s,\(>~\+]/;t.exports=function(e){var t,n,r,i,o,a,s,u,l=[0,0,0],c=0,f=!1,p=!1;for(a=0,s=e.length;a<s;a++){if(t=e[a],n);else if(t!=d.SINGLE_QUOTE||i||r)if(t==d.SINGLE_QUOTE&&!i&&r)r=!1;else if(t!=d.DOUBLE_QUOTE||i||r)if(t==d.DOUBLE_QUOTE&&i&&!r)i=!1;else{if(r||i)continue;0<c&&!f||(t==d.OPEN_ROUND_BRACKET?c++:t==d.CLOSE_ROUND_BRACKET&&1==c?(c--,f=!1):t==d.CLOSE_ROUND_BRACKET?c--:t==m?l[0]++:t==h||t==d.OPEN_SQUARE_BRACKET?l[1]++:t!=g||p||(u=a,e.indexOf(b,u)===u)?t==g?f=!0:(0===a||o)&&v.test(t)&&l[2]++:(l[1]++,f=!1))}else i=!0;else r=!0;n=t==d.BACK_SLASH,p=t==g,o=!n&&y.test(t)}return l}},{"../../tokenizer/marker":78}],49:[function(e,t,n){function a(e,t){return e[1]>t[1]?1:-1}t.exports=function(e){for(var t=[],n=[],r=0,i=e.length;r<i;r++){var o=e[r];-1==n.indexOf(o[1])&&(n.push(o[1]),t.push(o))}return t.sort(a)}},{}],50:[function(e,t,n){t.exports=function(e){for(var t=e.length-1;0<=t;t--){var n=e[t];n.unused&&n.all.splice(n.position,1)}}},{}],51:[function(e,t,n){var u=e("./hack"),l=e("../tokenizer/marker"),c="*",f="\\",p="!important",d="_",h="!ie";t.exports=function(e,t){var n,r,i,o,a;for(o=e.length-1;0<=o;o--)(n=e[o]).unused||(n.dirty||n.important||n.hack)&&(t?(r=t(n),n.value=r):r=n.value,n.important&&((a=n).value[a.value.length-1][1]+=p),n.hack&&(s=n,s.hack[0]==u.UNDERSCORE?s.name=d+s.name:s.hack[0]==u.ASTERISK?s.name=c+s.name:s.hack[0]==u.BACKSLASH?s.value[s.value.length-1][1]+=f+s.hack[1]:s.hack[0]==u.BANG&&(s.value[s.value.length-1][1]+=l.SPACE+h)),"all"in n&&((i=n.all[n.position])[1][1]=n.name,i.splice(2,i.length-1),Array.prototype.push.apply(i,r)));var s}},{"../tokenizer/marker":78,"./hack":3}],52:[function(e,t,n){var r="var\\(\\-\\-[^\\)]+\\)",i=new RegExp("^(\\-moz\\-|\\-webkit\\-)?calc\\([^\\)]+\\)$","i"),a=/[0-9]/,o=new RegExp("^(var\\(\\-\\-[^\\)]+\\)|[A-Z]+(\\-|[A-Z]|[0-9])+\\(.*?\\)|\\-(\\-|[A-Z]|[0-9])+\\(.*?\\))$","i"),s=/^hsl\(\s{0,31}[\-\.]?\d+\s{0,31},\s{0,31}\.?\d+%\s{0,31},\s{0,31}\.?\d+%\s{0,31}\)|hsla\(\s{0,31}[\-\.]?\d+\s{0,31},\s{0,31}\.?\d+%\s{0,31},\s{0,31}\.?\d+%\s{0,31},\s{0,31}\.?\d+\s{0,31}\)$/,u=/^(\-[a-z0-9_][a-z0-9\-_]*|[a-z][a-z0-9\-_]*)$/i,l=/^[a-z]+$/i,c=/^-([a-z0-9]|-)*$/i,f=/^rgb\(\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31}\)|rgba\(\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\.\d]+\s{0,31}\)$/,p=/^(cubic\-bezier|steps)\([^\)]+\)$/,d=["ms","s"],h=/^url\([\s\S]+\)$/i,m=new RegExp("^"+r+"$","i"),g=/^#[0-9a-f]{8}$/i,v=/^#[0-9a-f]{4}$/i,b=/^#[0-9a-f]{6}$/i,y=/^#[0-9a-f]{3}$/i,_=".",w="-",E="+",A={"^":["inherit","initial","unset"],"*-style":["auto","dashed","dotted","double","groove","hidden","inset","none","outset","ridge","solid"],"*-timing-function":["ease","ease-in","ease-in-out","ease-out","linear","step-end","step-start"],"animation-direction":["alternate","alternate-reverse","normal","reverse"],"animation-fill-mode":["backwards","both","forwards","none"],"animation-iteration-count":["infinite"],"animation-name":["none"],"animation-play-state":["paused","running"],"background-attachment":["fixed","inherit","local","scroll"],"background-clip":["border-box","content-box","inherit","padding-box","text"],"background-origin":["border-box","content-box","inherit","padding-box"],"background-position":["bottom","center","left","right","top"],"background-repeat":["no-repeat","inherit","repeat","repeat-x","repeat-y","round","space"],"background-size":["auto","cover","contain"],"border-collapse":["collapse","inherit","separate"],bottom:["auto"],clear:["both","left","none","right"],color:["transparent"],cursor:["all-scroll","auto","col-resize","crosshair","default","e-resize","help","move","n-resize","ne-resize","no-drop","not-allowed","nw-resize","pointer","progress","row-resize","s-resize","se-resize","sw-resize","text","vertical-text","w-resize","wait"],display:["block","inline","inline-block","inline-table","list-item","none","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group"],float:["left","none","right"],left:["auto"],font:["caption","icon","menu","message-box","small-caption","status-bar","unset"],"font-size":["large","larger","medium","small","smaller","x-large","x-small","xx-large","xx-small"],"font-stretch":["condensed","expanded","extra-condensed","extra-expanded","normal","semi-condensed","semi-expanded","ultra-condensed","ultra-expanded"],"font-style":["italic","normal","oblique"],"font-variant":["normal","small-caps"],"font-weight":["100","200","300","400","500","600","700","800","900","bold","bolder","lighter","normal"],"line-height":["normal"],"list-style-position":["inside","outside"],"list-style-type":["armenian","circle","decimal","decimal-leading-zero","disc","decimal|disc","georgian","lower-alpha","lower-greek","lower-latin","lower-roman","none","square","upper-alpha","upper-latin","upper-roman"],overflow:["auto","hidden","scroll","visible"],position:["absolute","fixed","relative","static"],right:["auto"],"text-align":["center","justify","left","left|right","right"],"text-decoration":["line-through","none","overline","underline"],"text-overflow":["clip","ellipsis"],top:["auto"],"vertical-align":["baseline","bottom","middle","sub","super","text-bottom","text-top","top"],visibility:["collapse","hidden","visible"],"white-space":["normal","nowrap","pre"],width:["inherit","initial","medium","thick","thin"]},x=["%","ch","cm","em","ex","in","mm","pc","pt","px","rem","vh","vm","vmax","vmin","vw"];function k(e){return"auto"!=e&&(R("color")(e)||(n=e,y.test(n)||v.test(n)||b.test(n)||g.test(n))||C(e)||(t=e,l.test(t)));var t,n}function C(e){return F(e)||D(e)}function O(e){return i.test(e)}function S(e){return o.test(e)}function D(e){return s.test(e)}function T(e){return u.test(e)}function B(e){return"none"==e||"inherit"==e||P(e)}function R(t){return function(e){return-1<A[t].indexOf(e)}}function L(e){return j(e)==e.length}function F(e){return f.test(e)}function q(e){return c.test(e)}function U(e){return L(e)&&0<=parseFloat(e)}function M(e){return m.test(e)}function N(e){var t=j(e);return t==e.length&&0===parseInt(e)||-1<t&&-1<d.indexOf(e.slice(t+1))}function P(e){return h.test(e)}function z(e){return"auto"==e||L(e)||R("^")(e)}function j(e){var t,n,r,i=!1,o=!1;for(n=0,r=e.length;n<r;n++)if(t=e[n],0!==n||t!=E&&t!=w){if(0<n&&o&&(t==E||t==w))return n-1;if(t!=_||i){if(t==_&&i)return n-1;if(a.test(t))continue;return n-1}i=!0}else o=!0;return n}t.exports=function(t){var n,e=x.slice(0).filter(function(e){return!(e in t.units)||!0===t.units[e]});return{colorOpacity:t.colors.opacity,isAnimationDirectionKeyword:R("animation-direction"),isAnimationFillModeKeyword:R("animation-fill-mode"),isAnimationIterationCountKeyword:R("animation-iteration-count"),isAnimationNameKeyword:R("animation-name"),isAnimationPlayStateKeyword:R("animation-play-state"),isTimingFunction:(n=R("*-timing-function"),function(e){return n(e)||p.test(e)}),isBackgroundAttachmentKeyword:R("background-attachment"),isBackgroundClipKeyword:R("background-clip"),isBackgroundOriginKeyword:R("background-origin"),isBackgroundPositionKeyword:R("background-position"),isBackgroundRepeatKeyword:R("background-repeat"),isBackgroundSizeKeyword:R("background-size"),isColor:k,isColorFunction:C,isDynamicUnit:O,isFontKeyword:R("font"),isFontSizeKeyword:R("font-size"),isFontStretchKeyword:R("font-stretch"),isFontStyleKeyword:R("font-style"),isFontVariantKeyword:R("font-variant"),isFontWeightKeyword:R("font-weight"),isFunction:S,isGlobal:R("^"),isHslColor:D,isIdentifier:T,isImage:B,isKeyword:R,isLineHeightKeyword:R("line-height"),isListStylePositionKeyword:R("list-style-position"),isListStyleTypeKeyword:R("list-style-type"),isNumber:L,isPrefixed:q,isPositiveNumber:U,isRgbColor:F,isStyleKeyword:R("*-style"),isTime:N,isUnit:function(e,t){var n=j(t);return n==t.length&&0===parseInt(t)||-1<n&&-1<e.indexOf(t.slice(n+1))||"auto"==t||"inherit"==t}.bind(null,e),isUrl:P,isVariable:M,isWidth:R("width"),isZIndex:z}}},{}],53:[function(e,t,n){var h=e("./hack"),m=e("../tokenizer/marker"),g=e("../tokenizer/token"),v={ASTERISK:"*",BACKSLASH:"\\",BANG:"!",BANG_SUFFIX_PATTERN:/!\w+$/,IMPORTANT_TOKEN:"!important",IMPORTANT_TOKEN_PATTERN:new RegExp("!important$","i"),IMPORTANT_WORD:"important",IMPORTANT_WORD_PATTERN:new RegExp("important$","i"),SUFFIX_BANG_PATTERN:/!$/,UNDERSCORE:"_",VARIABLE_REFERENCE_PATTERN:/var\(--.+\)$/};function s(e){var t,n,r,i;for(t=2,n=e.length;t<n;t++)if((r=e[t])[0]==g.PROPERTY_VALUE&&(i=r[1],v.VARIABLE_REFERENCE_PATTERN.test(i)))return!0;return!1}function u(e){var t,n,r,i=function(e){if(e.length<3)return!1;var t=e[e.length-1];return!!v.IMPORTANT_TOKEN_PATTERN.test(t[1])||!(!v.IMPORTANT_WORD_PATTERN.test(t[1])||!v.SUFFIX_BANG_PATTERN.test(e[e.length-2][1]))}(e);i&&(n=(t=e)[t.length-1],r=t[t.length-2],v.IMPORTANT_TOKEN_PATTERN.test(n[1])?n[1]=n[1].replace(v.IMPORTANT_TOKEN_PATTERN,""):(n[1]=n[1].replace(v.IMPORTANT_WORD_PATTERN,""),r[1]=r[1].replace(v.SUFFIX_BANG_PATTERN,"")),0===n[1].length&&t.pop(),0===r[1].length&&t.pop());var o,a,s,u,l,c,f,p,d=(a=!1,s=(o=e)[1][1],u=o[o.length-1],s[0]==v.UNDERSCORE?a=[h.UNDERSCORE]:s[0]==v.ASTERISK?a=[h.ASTERISK]:u[1][0]!=v.BANG||u[1].match(v.IMPORTANT_WORD_PATTERN)?0<u[1].indexOf(v.BANG)&&!u[1].match(v.IMPORTANT_WORD_PATTERN)&&v.BANG_SUFFIX_PATTERN.test(u[1])?a=[h.BANG]:0<u[1].indexOf(v.BACKSLASH)&&u[1].indexOf(v.BACKSLASH)==u[1].length-v.BACKSLASH.length-1?a=[h.BACKSLASH,u[1].substring(u[1].indexOf(v.BACKSLASH)+1)]:0===u[1].indexOf(v.BACKSLASH)&&2==u[1].length&&(a=[h.BACKSLASH,u[1].substring(1)]):a=[h.BANG],a);return d[0]==h.ASTERISK||d[0]==h.UNDERSCORE?(p=e)[1][1]=p[1][1].substring(1):d[0]!=h.BACKSLASH&&d[0]!=h.BANG||(c=d,(f=(l=e)[l.length-1])[1]=f[1].substring(0,f[1].indexOf(c[0]==h.BACKSLASH?v.BACKSLASH:v.BANG)).trim(),0===f[1].length&&l.pop()),{block:e[2]&&e[2][0]==g.PROPERTY_BLOCK,components:[],dirty:!1,hack:d,important:i,name:e[1][1],multiplex:3<e.length&&function(e){var t,n,r;for(n=3,r=e.length;n<r;n++)if((t=e[n])[0]==g.PROPERTY_VALUE&&(t[1]==m.COMMA||t[1]==m.FORWARD_SLASH))return!0;return!1}(e),position:0,shorthand:!1,unused:!1,value:e.slice(2)}}t.exports={all:function(e,t,n){var r,i,o,a=[];for(o=e.length-1;0<=o;o--)(i=e[o])[0]==g.PROPERTY&&(!t&&s(i)||n&&-1<n.indexOf(i[1][1])||((r=u(i)).all=e,r.position=o,a.unshift(r)));return a},single:u}},{"../tokenizer/marker":78,"../tokenizer/token":79,"./hack":3}],54:[function(e,t,n){var r={"*":{colors:{opacity:!0},properties:{backgroundClipMerging:!0,backgroundOriginMerging:!0,backgroundSizeMerging:!0,colors:!0,ieBangHack:!1,ieFilters:!1,iePrefixHack:!1,ieSuffixHack:!1,merging:!0,shorterLengthUnits:!1,spaceAfterClosingBrace:!0,urlQuotes:!1,zeroUnits:!0},selectors:{adjacentSpace:!1,ie7Hack:!1,mergeablePseudoClasses:[":active",":after",":before",":empty",":checked",":disabled",":empty",":enabled",":first-child",":first-letter",":first-line",":first-of-type",":focus",":hover",":lang",":last-child",":last-of-type",":link",":not",":nth-child",":nth-last-child",":nth-last-of-type",":nth-of-type",":only-child",":only-of-type",":root",":target",":visited"],mergeablePseudoElements:["::after","::before","::first-letter","::first-line"],mergeLimit:8191,multiplePseudoMerging:!0},units:{ch:!0,in:!0,pc:!0,pt:!0,rem:!0,vh:!0,vm:!0,vmax:!0,vmin:!0,vw:!0}}};function i(e,t){for(var n in e){var r=e[n];"object"!=typeof r||Array.isArray(r)?t[n]=n in t?t[n]:r:t[n]=i(r,t[n]||{})}return t}r.ie11=r["*"],r.ie10=r["*"],r.ie9=i(r["*"],{properties:{ieFilters:!0,ieSuffixHack:!0}}),r.ie8=i(r.ie9,{colors:{opacity:!1},properties:{backgroundClipMerging:!1,backgroundOriginMerging:!1,backgroundSizeMerging:!1,iePrefixHack:!0,merging:!1},selectors:{mergeablePseudoClasses:[":after",":before",":first-child",":first-letter",":focus",":hover",":visited"],mergeablePseudoElements:[]},units:{ch:!1,rem:!1,vh:!1,vm:!1,vmax:!1,vmin:!1,vw:!1}}),r.ie7=i(r.ie8,{properties:{ieBangHack:!0},selectors:{ie7Hack:!0,mergeablePseudoClasses:[":first-child",":first-letter",":hover",":visited"]}}),t.exports=function(e){return i(r["*"],function(o){if("object"==typeof o)return o;if(!/[,\+\-]/.test(o))return r[o]||r["*"];var e=o.split(","),t=e[0]in r?r[e.shift()]:r["*"];return o={},e.forEach(function(e){var t="+"==e[0],n=e.substring(1).split("."),r=n[0],i=n[1];o[r]=o[r]||{},o[r][i]=t}),i(t,o)}(e))}},{}],55:[function(e,t,n){var r=e("../reader/load-remote-resource");t.exports=function(e){return e||r}},{"../reader/load-remote-resource":69}],56:[function(e,t,n){var r=e("os").EOL,i=e("../utils/override"),o={AfterAtRule:"afterAtRule",AfterBlockBegins:"afterBlockBegins",AfterBlockEnds:"afterBlockEnds",AfterComment:"afterComment",AfterProperty:"afterProperty",AfterRuleBegins:"afterRuleBegins",AfterRuleEnds:"afterRuleEnds",BeforeBlockEnds:"beforeBlockEnds",BetweenSelectors:"betweenSelectors"},a={CarriageReturnLineFeed:"\r\n",LineFeed:"\n",System:r},s={Space:" ",Tab:"\t"},u={AroundSelectorRelation:"aroundSelectorRelation",BeforeBlockBegins:"beforeBlockBegins",BeforeValue:"beforeValue"},l={breaks:b(!1),breakWith:a.System,indentBy:0,indentWith:s.Space,spaces:y(!1),wrapAt:!1,semicolonAfterLastProperty:!1},c=";",f=":",p=",",d="=",h="false",m="off",g="true",v="on";function b(e){var t={};return t[o.AfterAtRule]=e,t[o.AfterBlockBegins]=e,t[o.AfterBlockEnds]=e,t[o.AfterComment]=e,t[o.AfterProperty]=e,t[o.AfterRuleBegins]=e,t[o.AfterRuleEnds]=e,t[o.BeforeBlockEnds]=e,t[o.BetweenSelectors]=e,t}function y(e){var t={};return t[u.AroundSelectorRelation]=e,t[u.BeforeBlockBegins]=e,t[u.BeforeValue]=e,t}function _(e){switch(e){case"windows":case"crlf":case a.CarriageReturnLineFeed:return a.CarriageReturnLineFeed;case"unix":case"lf":case a.LineFeed:return a.LineFeed;default:return r}}function w(e){switch(e){case"space":return s.Space;case"tab":return s.Tab;default:return e}}t.exports={Breaks:o,Spaces:u,formatFrom:function(e){return void 0!==e&&!1!==e&&("object"==typeof e&&"breakWith"in e&&(e=i(e,{breakWith:_(e.breakWith)})),"object"==typeof e&&"indentBy"in e&&(e=i(e,{indentBy:parseInt(e.indentBy)})),"object"==typeof e&&"indentWith"in e&&(e=i(e,{indentWith:w(e.indentWith)})),"object"==typeof e?i(l,e):"object"==typeof e?i(l,e):"string"==typeof e&&"beautify"==e?i(l,{breaks:b(!0),indentBy:2,spaces:y(!0)}):"string"==typeof e&&"keep-breaks"==e?i(l,{breaks:{afterAtRule:!0,afterBlockBegins:!0,afterBlockEnds:!0,afterComment:!0,afterRuleEnds:!0,beforeBlockEnds:!0}}):"string"==typeof e?i(l,e.split(c).reduce(function(e,t){var n=t.split(f),r=n[0],i=n[1];return"breaks"==r||"spaces"==r?e[r]=i.split(p).reduce(function(e,t){var n=t.split(d),r=n[0],i=n[1];return e[r]=function(e){switch(e){case h:case m:return!1;case g:case v:return!0;default:return e}}(i),e},{}):"indentBy"==r||"wrapAt"==r?e[r]=parseInt(i):"indentWith"==r?e[r]=w(i):"breakWith"==r&&(e[r]=_(i)),e},{})):l)}}},{"../utils/override":90,os:121}],57:[function(e,t,n){(function(n){var r=e("url"),i=e("../utils/override");t.exports=function(e){return i((t=n.env.HTTP_PROXY||n.env.http_proxy)?{hostname:r.parse(t).hostname,port:parseInt(r.parse(t).port)}:{},e||{});var t}}).call(this,e("_process"))},{"../utils/override":90,_process:124,url:175}],58:[function(e,t,n){t.exports=function(e){return e||5e3}},{}],59:[function(e,t,n){t.exports=function(e){return Array.isArray(e)?e:!1===e?["none"]:void 0===e?["local"]:e.split(",")}},{}],60:[function(e,t,n){var o=e("./rounding-precision").roundingPrecisionFrom,a=e("../utils/override"),s={Zero:"0",One:"1",Two:"2"},u={};u[s.Zero]={},u[s.One]={cleanupCharsets:!0,normalizeUrls:!0,optimizeBackground:!0,optimizeBorderRadius:!0,optimizeFilter:!0,optimizeFontWeight:!0,optimizeOutline:!0,removeEmpty:!0,removeNegativePaddings:!0,removeQuotes:!0,removeWhitespace:!0,replaceMultipleZeros:!0,replaceTimeUnits:!0,replaceZeroUnits:!0,roundingPrecision:o(void 0),selectorsSortingMethod:"standard",specialComments:"all",tidyAtRules:!0,tidyBlockScopes:!0,tidySelectors:!0,transform:function(){}},u[s.Two]={mergeAdjacentRules:!0,mergeIntoShorthands:!0,mergeMedia:!0,mergeNonAdjacentRules:!0,mergeSemantically:!1,overrideProperties:!0,removeEmpty:!0,reduceNonAdjacentRules:!0,removeDuplicateFontRules:!0,removeDuplicateMediaBlocks:!0,removeDuplicateRules:!0,removeUnusedAtRules:!1,restructureRules:!1,skipProperties:[]};var l="*",c="all",r="false",i="off",f="true",p="on",d=";",h=":";function m(e,t){var n,r=a(u[e],{});for(n in r)"boolean"==typeof r[n]&&(r[n]=t);return r}function g(e){switch(e){case r:case i:return!1;case f:case p:return!0;default:return e}}function v(e,o){return e.split(d).reduce(function(e,t){var n=t.split(h),r=n[0],i=g(n[1]);return l==r||c==r?e=a(e,m(o,i)):e[r]=i,e},{})}t.exports={OptimizationLevel:s,optimizationLevelFrom:function(e){var t=a(u,{}),n=s.Zero,r=s.One,i=s.Two;return void 0===e?delete t[i]:("string"==typeof e&&(e=parseInt(e)),"number"==typeof e&&e===parseInt(i)||("number"==typeof e&&e===parseInt(r)?delete t[i]:"number"==typeof e&&e===parseInt(n)?(delete t[i],delete t[r]):("object"==typeof e&&(e=function(e){var t,n,r=a(e,{});for(n=0;n<=2;n++)(t=""+n)in r&&(void 0===r[t]||!1===r[t])&&delete r[t],t in r&&!0===r[t]&&(r[t]={}),t in r&&"string"==typeof r[t]&&(r[t]=v(r[t],t));return r}(e)),r in e&&"roundingPrecision"in e[r]&&(e[r].roundingPrecision=o(e[r].roundingPrecision)),i in e&&"skipProperties"in e[i]&&"string"==typeof e[i].skipProperties&&(e[i].skipProperties=e[i].skipProperties.split(",")),(n in e||r in e||i in e)&&(t[n]=a(t[n],e[n])),r in e&&l in e[r]&&(t[r]=a(t[r],m(r,g(e[r][l]))),delete e[r][l]),r in e&&c in e[r]&&(t[r]=a(t[r],m(r,g(e[r][c]))),delete e[r][c]),r in e||i in e?t[r]=a(t[r],e[r]):delete t[r],i in e&&l in e[i]&&(t[i]=a(t[i],m(i,g(e[i][l]))),delete e[i][l]),i in e&&c in e[i]&&(t[i]=a(t[i],m(i,g(e[i][c]))),delete e[i][c]),i in e?t[i]=a(t[i],e[i]):delete t[i]))),t}}},{"../utils/override":90,"./rounding-precision":63}],61:[function(e,r,t){(function(t){var n=e("path");r.exports=function(e){return e?n.resolve(e):t.cwd()}}).call(this,e("_process"))},{_process:124,path:122}],62:[function(e,t,n){t.exports=function(e){return void 0===e||!!e}},{}],63:[function(e,t,n){var o=e("../utils/override"),r=/^\d+$/,a=["*","all"],s="off",i=",",u="=";function l(e){return{ch:e,cm:e,em:e,ex:e,in:e,mm:e,pc:e,pt:e,px:e,q:e,rem:e,vh:e,vmax:e,vmin:e,vw:e,"%":e}}t.exports={DEFAULT:s,roundingPrecisionFrom:function(e){return o(l(s),(t=e,null==t?{}:"boolean"==typeof t?{}:"number"==typeof t&&-1==t?l(s):"number"==typeof t?l(t):"string"==typeof t&&r.test(t)?l(parseInt(t)):"string"!=typeof t||t!=s?"object"!=typeof t?t.split(i).reduce(function(e,t){var n=t.split(u),r=n[0],i=parseInt(n[1]);return(isNaN(i)||-1==i)&&(i=s),-1<a.indexOf(r)?e=o(e,l(i)):e[r]=i,e},{}):t:l(s)));var t}}},{"../utils/override":90}],64:[function(e,t,n){(function(k,C){var O=e("fs"),S=e("path"),D=e("./is-allowed-resource"),T=e("./match-data-uri"),B=e("./rebase-local-map"),R=e("./rebase-remote-map"),L=e("../tokenizer/token"),F=e("../utils/has-protocol"),q=e("../utils/is-data-uri-resource"),U=e("../utils/is-remote-resource"),M=/^\/\*# sourceMappingURL=(\S+) \*\/$/;function N(e){var t,n,r,i=[],o=a(e.sourceTokens[0]);for(r=e.sourceTokens.length;e.index<r;e.index++)if((t=a(n=e.sourceTokens[e.index]))!=o&&(i=[],o=t),i.push(n),e.processedTokens.push(n),n[0]==L.COMMENT&&M.test(n[1]))return s(n[1],t,i,e);return e.callback(e.processedTokens)}function a(e){return(e[0]==L.AT_RULE||e[0]==L.COMMENT?e[2][0]:e[1][0][2][0])[2]}function s(e,t,n,r){return d=e,h=r,m=function(e){return e&&(r.inputSourceMapTracker.track(t,e),function e(t,n){var r;var i,o;for(i=0,o=t.length;i<o;i++)switch((r=t[i])[0]){case L.AT_RULE:P(r,n);break;case L.AT_RULE_BLOCK:e(r[1],n),e(r[2],n);break;case L.AT_RULE_BLOCK_SCOPE:P(r,n);break;case L.NESTED_BLOCK:e(r[1],n),e(r[2],n);break;case L.NESTED_BLOCK_SCOPE:case L.COMMENT:P(r,n);break;case L.PROPERTY:e(r,n);break;case L.PROPERTY_BLOCK:e(r[1],n);break;case L.PROPERTY_NAME:case L.PROPERTY_VALUE:P(r,n);break;case L.RULE:e(r[1],n),e(r[2],n);break;case L.RULE_SCOPE:P(r,n)}return t}(n,r.inputSourceMapTracker)),r.index++,N(r)},y=M.exec(d)[1],q(y)?(_=T(y),w=_[2]?_[2].split(/[=;]/)[2]:"us-ascii",E=_[3]?_[3].split(";")[1]:"utf8",A="utf8"==E?k.unescape(_[4]):_[4],(x=new C(A,E)).charset=w,v=JSON.parse(x.toString()),m(v)):U(y)?(c=function(e){var t;e?(t=JSON.parse(e),b=R(t,y),m(b)):m(null)},f=D(u=y,!0,(l=h).inline),p=!F(u),l.localOnly?(l.warnings.push('Cannot fetch remote resource from "'+u+'" as no callback given.'),c(null)):p?(l.warnings.push('Cannot fetch "'+u+'" as no protocol given.'),c(null)):f?void l.fetch(u,l.inlineRequest,l.inlineTimeout,function(e,t){if(e)return l.warnings.push('Missing source map at "'+u+'" - '+e),c(null);c(t)}):(l.warnings.push('Cannot fetch "'+u+'" as resource is not allowed.'),c(null))):(g=S.resolve(h.rebaseTo,y),s=D(i=g,!1,(o=h).inline),(v=O.existsSync(i)&&O.statSync(i).isFile()?s?(a=O.readFileSync(i,"utf-8"),JSON.parse(a)):(o.warnings.push('Cannot fetch "'+i+'" as resource is not allowed.'),null):(o.warnings.push('Ignoring local source map at "'+i+'" as resource is missing.'),null))?(b=B(v,g,h.rebaseTo),m(b)):m(null));var i,o,a,s,u,l,c,f,p,d,h,m,g,v,b,y,_,w,E,A,x}function P(e,t){var n,r,i=e[1],o=e[2],a=[];for(n=0,r=o.length;n<r;n++)a.push(t.originalPositionFor(o[n],i.length));e[2]=a}t.exports=function(e,t,n){var r={callback:n,fetch:t.options.fetch,index:0,inline:t.options.inline,inlineRequest:t.options.inlineRequest,inlineTimeout:t.options.inlineTimeout,inputSourceMapTracker:t.inputSourceMapTracker,localOnly:t.localOnly,processedTokens:[],rebaseTo:t.options.rebaseTo,sourceTokens:e,warnings:t.warnings};return t.options.sourceMap&&0<e.length?N(r):n(e)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer)},{"../tokenizer/token":79,"../utils/has-protocol":83,"../utils/is-data-uri-resource":84,"../utils/is-remote-resource":88,"./is-allowed-resource":67,"./match-data-uri":70,"./rebase-local-map":73,"./rebase-remote-map":74,buffer:111,fs:110,path:122}],65:[function(e,t,n){var r=e("../utils/split"),i=/^\(/,o=/\)$/,a=/^@import/i,s=/['"]\s*/,u=/\s*['"]/,l=/^url\(\s*/i,c=/\s*\)/i;t.exports=function(e){var t,n;return t=e.replace(a,"").trim().replace(l,"(").replace(c,")").replace(s,"").replace(u,""),[(n=r(t," "))[0].replace(i,"").replace(o,""),n.slice(1).join(" ")]}},{"../utils/split":91}],66:[function(e,t,n){var r=e("source-map").SourceMapConsumer;t.exports=function(){var e={};return{all:function(e){return e}.bind(null,e),isTracking:function(e,t){return t in e}.bind(null,e),originalPositionFor:function e(t,n,r,i){for(var o,a,s=n[0],u=n[1],l=n[2],c={line:s,column:u+r};!o&&c.column>u;)c.column--,o=t[l].originalPositionFor(c);return!o||o.column<0?n:null===o.line&&1<s&&0<i?e(t,[s-1,u,l],r,i-1):null!==o.line?[(a=o).line,a.column,a.source]:n}.bind(null,e),track:function(e,t,n){e[t]=new r(n)}.bind(null,e)}}},{"source-map":106}],67:[function(e,t,n){var f=e("path"),p=e("url"),r=e("../utils/is-remote-resource"),d=e("../utils/has-protocol"),h="http:";function m(e){return r(e)||p.parse(h+"//"+e).host==e}t.exports=function e(t,n,r){var i,o,a,s,u,l,c=!n;if(0===r.length)return!1;for(n&&!d(t)&&(t=h+t),i=n?p.parse(t).host:t,o=n?t:f.resolve(t),l=0;l<r.length;l++)s="!"==(a=r[l])[0],u=a.substring(1),c=s&&n&&m(u)?c&&!e(t,!0,[u]):!s||n||m(u)?s?c&&!0:"all"==a||(n&&"local"==a?c||!1:!(!n||"remote"!=a)||!(!n&&"remote"==a)&&(!n&&"local"==a||a===i||a===t||!(!n||0!==o.indexOf(a))||!n&&0===o.indexOf(f.resolve(a))||n!=m(u)&&c&&!0)):c&&!e(t,!1,[u]);return c}},{"../utils/has-protocol":83,"../utils/is-remote-resource":88,path:122,url:175}],68:[function(e,t,n){var i=e("fs"),o=e("path"),a=e("./is-allowed-resource"),s=e("../utils/has-protocol"),r=e("../utils/is-remote-resource");function u(e){var t,n,r,i=Object.keys(e.uriToSource);for(r=i.length;e.index<r;e.index++){if(t=i[e.index],!(n=e.uriToSource[t]))return l(t,e);e.sourcesContent[t]=n}return e.callback()}function l(t,n){var e;return r(t)?function(n,r,i){var e=a(n,!0,r.inline),t=!s(n);{if(r.localOnly)return r.warnings.push('Cannot fetch remote resource from "'+n+'" as no callback given.'),i(null);if(t)return r.warnings.push('Cannot fetch "'+n+'" as no protocol given.'),i(null);if(!e)return r.warnings.push('Cannot fetch "'+n+'" as resource is not allowed.'),i(null)}r.fetch(n,r.inlineRequest,r.inlineTimeout,function(e,t){e&&r.warnings.push('Missing original source at "'+n+'" - '+e),i(t)})}(t,n,function(e){return n.index++,n.sourcesContent[t]=e,u(n)}):(e=function(e,t){var n=a(e,!1,t.inline),r=o.resolve(t.rebaseTo,e);{if(!i.existsSync(r)||!i.statSync(r).isFile())return t.warnings.push('Ignoring local source map at "'+r+'" as resource is missing.'),null;if(!n)return t.warnings.push('Cannot fetch "'+r+'" as resource is not allowed.'),null}return i.readFileSync(r,"utf8")}(t,n),n.index++,n.sourcesContent[t]=e,u(n))}t.exports=function(e,t){var n={callback:t,fetch:e.options.fetch,index:0,inline:e.options.inline,inlineRequest:e.options.inlineRequest,inlineTimeout:e.options.inlineTimeout,localOnly:e.localOnly,rebaseTo:e.options.rebaseTo,sourcesContent:e.sourcesContent,uriToSource:function(e){var t,n,r,i,o,a={};for(r in e)for(t=e[r],i=0,o=t.sources.length;i<o;i++)n=t.sources[i],r=t.sourceContentFor(n,!0),a[n]=r;return a}(e.inputSourceMapTracker.all()),warnings:e.warnings};return e.options.sourceMap&&e.options.sourceMapInlineSources?u(n):t()}},{"../utils/has-protocol":83,"../utils/is-remote-resource":88,"./is-allowed-resource":67,fs:110,path:122}],69:[function(e,t,n){var u=e("http"),l=e("https"),c=e("url"),f=e("../utils/is-http-resource"),p=e("../utils/is-https-resource"),d=e("../utils/override"),h="http:";t.exports=function n(r,i,o,a){var e,t=i.protocol||i.hostname,s=!1;e=d(c.parse(r),i||{}),void 0!==i.hostname&&(e.protocol=i.protocol||h,e.path=e.href),(t&&!p(t)||f(r)?u.get:l.get)(e,function(e){var t=[];if(!s){if(e.statusCode<200||399<e.statusCode)return a(e.statusCode,null);if(299<e.statusCode)return n(c.resolve(r,e.headers.location),i,o,a);e.on("data",function(e){t.push(e.toString())}),e.on("end",function(){var e=t.join("");a(null,e)})}}).on("error",function(e){s||(s=!0,a(e.message,null))}).on("timeout",function(){s||(s=!0,a("timeout",null))}).setTimeout(o)}},{"../utils/is-http-resource":85,"../utils/is-https-resource":86,"../utils/override":90,http:156,https:116,url:175}],70:[function(e,t,n){var r=/^data:(\S*?)?(;charset=[^;]+)?(;[^,]+?)?,(.+)/;t.exports=function(e){return r.exec(e)}},{}],71:[function(e,t,n){var r=/\\/g;t.exports=function(e){return e.replace(r,"/")}},{}],72:[function(e,r,t){(function(c,f){var p=e("fs"),d=e("path"),h=e("./apply-source-maps"),m=e("./extract-import-url-and-media"),g=e("./is-allowed-resource"),v=e("./load-original-sources"),b=e("./normalize-path"),y=e("./rebase"),_=e("./rebase-local-map"),w=e("./rebase-remote-map"),t=e("./restore-import"),E=e("../tokenizer/tokenize"),A=e("../tokenizer/token"),n=e("../tokenizer/marker"),x=e("../utils/has-protocol"),k=e("../utils/is-import"),C=e("../utils/is-remote-resource"),O="uri:unknown";function S(e,t,n){return t.source=void 0,t.sourcesContent[void 0]=e,t.stats.originalSize+=e.length,R(e,t,{inline:t.options.inline},n)}function D(e,t,n){var r,i,o,a,s,u,l,c;for(r in e)o=e[r],i=T(r),n.push(B(i)),t.sourcesContent[i]=o.styles,o.sourceMap&&(a=o.sourceMap,s=i,u=t,void 0,l="string"==typeof a?JSON.parse(a):a,c=C(s)?w(l,s):_(l,s||O,u.options.rebaseTo),u.inputSourceMapTracker.track(s,c));return n}function T(e){var t,n,r=d.resolve("");return C(e)?e:(t=d.isAbsolute(e)?e:d.resolve(e),n=d.relative(r,t),b(n))}function B(e){return t("url("+e+")","")+n.SEMICOLON}function R(e,t,n,r){var i,o,a,s,u,l={};return t.source?C(t.source)?(l.fromBase=t.source,l.toBase=t.source):(d.isAbsolute(t.source)?l.fromBase=d.dirname(t.source):l.fromBase=d.dirname(d.resolve(t.source)),l.toBase=t.options.rebaseTo):(l.fromBase=d.resolve(""),l.toBase=t.options.rebaseTo),i=E(e,t),i=y(i,t.options.rebase,t.validator,l),1!=(u=n.inline).length||"none"!=u[0]?(o=i,s=n,L({afterContent:!1,callback:r,errors:(a=t).errors,externalContext:a,fetch:a.options.fetch,inlinedStylesheets:s.inlinedStylesheets||a.inlinedStylesheets,inline:s.inline,inlineRequest:a.options.inlineRequest,inlineTimeout:a.options.inlineTimeout,isRemote:s.isRemote||!1,localOnly:a.localOnly,outputTokens:[],rebaseTo:a.options.rebaseTo,sourceTokens:o,warnings:a.warnings})):r(i)}function L(e){var t,n,r,i,o,a,s,u,l;for(n=0,r=e.sourceTokens.length;n<r;n++){if((t=e.sourceTokens[n])[0]==A.AT_RULE&&k(t[1]))return e.sourceTokens.splice(0,n),o=e,void 0,a=m((i=t)[1]),s=a[0],u=a[1],l=i[2],C(s)?function(n,r,i,o){var e=g(n,!0,o.inline),a=n,t=n in o.externalContext.sourcesContent,s=!x(n);{if(-1<o.inlinedStylesheets.indexOf(n))return o.warnings.push('Ignoring remote @import of "'+n+'" as it has already been imported.'),o.sourceTokens=o.sourceTokens.slice(1),L(o);if(o.localOnly&&o.afterContent)return o.warnings.push('Ignoring remote @import of "'+n+'" as no callback given and after other content.'),o.sourceTokens=o.sourceTokens.slice(1),L(o);if(s)return o.warnings.push('Skipping remote @import of "'+n+'" as no protocol given.'),o.outputTokens=o.outputTokens.concat(o.sourceTokens.slice(0,1)),o.sourceTokens=o.sourceTokens.slice(1),L(o);if(o.localOnly&&!t)return o.warnings.push('Skipping remote @import of "'+n+'" as no callback given.'),o.outputTokens=o.outputTokens.concat(o.sourceTokens.slice(0,1)),o.sourceTokens=o.sourceTokens.slice(1),L(o);if(!e&&o.afterContent)return o.warnings.push('Ignoring remote @import of "'+n+'" as resource is not allowed and after other content.'),o.sourceTokens=o.sourceTokens.slice(1),L(o);if(!e)return o.warnings.push('Skipping remote @import of "'+n+'" as resource is not allowed.'),o.outputTokens=o.outputTokens.concat(o.sourceTokens.slice(0,1)),o.sourceTokens=o.sourceTokens.slice(1),L(o)}function u(e,t){return e?(o.errors.push('Broken @import declaration of "'+n+'" - '+e),f.nextTick(function(){o.outputTokens=o.outputTokens.concat(o.sourceTokens.slice(0,1)),o.sourceTokens=o.sourceTokens.slice(1),L(o)})):(o.inline=o.externalContext.options.inline,o.isRemote=!0,o.externalContext.source=a,o.externalContext.sourcesContent[n]=t,o.externalContext.stats.originalSize+=t.length,R(t,o.externalContext,o,function(e){return e=F(e,r,i),o.outputTokens=o.outputTokens.concat(e),o.sourceTokens=o.sourceTokens.slice(1),L(o)}))}return o.inlinedStylesheets.push(n),t?u(null,o.externalContext.sourcesContent[n]):o.fetch(n,o.inlineRequest,o.inlineTimeout,u)}(s,u,l,o):function(e,t,n,r){var i,o=d.resolve(""),a=d.isAbsolute(e)?d.resolve(o,"/"==e[0]?e.substring(1):e):d.resolve(r.rebaseTo,e),s=d.relative(o,a),u=g(e,!1,r.inline),l=b(s),c=l in r.externalContext.sourcesContent;if(-1<r.inlinedStylesheets.indexOf(a))r.warnings.push('Ignoring local @import of "'+e+'" as it has already been imported.');else if(c||p.existsSync(a)&&p.statSync(a).isFile())if(!u&&r.afterContent)r.warnings.push('Ignoring local @import of "'+e+'" as resource is not allowed and after other content.');else if(r.afterContent)r.warnings.push('Ignoring local @import of "'+e+'" as after other content.');else{if(u)return i=c?r.externalContext.sourcesContent[l]:p.readFileSync(a,"utf-8"),r.inlinedStylesheets.push(a),r.inline=r.externalContext.options.inline,r.externalContext.source=l,r.externalContext.sourcesContent[l]=i,r.externalContext.stats.originalSize+=i.length,R(i,r.externalContext,r,function(e){return e=F(e,t,n),r.outputTokens=r.outputTokens.concat(e),r.sourceTokens=r.sourceTokens.slice(1),L(r)});r.warnings.push('Skipping local @import of "'+e+'" as resource is not allowed.'),r.outputTokens=r.outputTokens.concat(r.sourceTokens.slice(0,1))}else r.errors.push('Ignoring local @import of "'+e+'" as resource is missing.');return r.sourceTokens=r.sourceTokens.slice(1),L(r)}(s,u,l,o);t[0]==A.AT_RULE||t[0]==A.COMMENT?e.outputTokens.push(t):(e.outputTokens.push(t),e.afterContent=!0)}return e.sourceTokens=[],e.callback(e.outputTokens)}function F(e,t,n){return t?[[A.NESTED_BLOCK,[[A.NESTED_BLOCK_SCOPE,"@media "+t,n]],e]]:e}r.exports=function(e,t,n){return r=e,i=t,o=function(e){return h(e,t,function(){return v(t,function(){return n(e)})})},"string"==typeof r?S(r,i,o):c.isBuffer(r)?S(r.toString(),i,o):Array.isArray(r)?(u=i,l=o,R(r.reduce(function(e,t){return"string"==typeof t?(n=t,(r=e).push(B(T(n))),r):D(t,u,e);var n,r},[]).join(""),u,{inline:["all"]},l)):"object"==typeof r?(s=o,R(D(r,a=i,[]).join(""),a,{inline:["all"]},s)):void 0;var r,i,o,a,s,u,l}}).call(this,{isBuffer:e("../../../../is-buffer/index.js")},e("_process"))},{"../../../../is-buffer/index.js":119,"../tokenizer/marker":78,"../tokenizer/token":79,"../tokenizer/tokenize":80,"../utils/has-protocol":83,"../utils/is-import":87,"../utils/is-remote-resource":88,"./apply-source-maps":64,"./extract-import-url-and-media":65,"./is-allowed-resource":67,"./load-original-sources":68,"./normalize-path":71,"./rebase":75,"./rebase-local-map":73,"./rebase-remote-map":74,"./restore-import":76,_process:124,fs:110,path:122}],73:[function(e,t,n){var a=e("path");t.exports=function(e,t,n){var r=a.resolve(""),i=a.resolve(r,t),o=a.dirname(i);return e.sources=e.sources.map(function(e){return a.relative(n,a.resolve(o,e))}),e}},{path:122}],74:[function(e,t,n){var r=e("path"),i=e("url");t.exports=function(e,t){var n=r.dirname(t);return e.sources=e.sources.map(function(e){return i.resolve(n,e)}),e}},{path:122,url:175}],75:[function(e,t,n){var a=e("./extract-import-url-and-media"),s=e("./restore-import"),c=e("./rewrite-url"),f=e("../tokenizer/token"),u=e("../utils/is-import"),p=/^\/\*# sourceMappingURL=(\S+) \*\/$/;function d(e,t,n){if(u(e[1])){var r=a(e[1]),i=c(r[0],n),o=r[1];e[1]=s(i,o)}}function h(e,t,n){var r,i,o,a,s,u;for(o=0,a=e.length;o<a;o++)for(s=2,u=(r=e[o]).length;s<u;s++)i=r[s][1],t.isUrl(i)&&(r[s][1]=c(i,n))}t.exports=function(e,t,n,r){return t?function e(t,n,r){var i,o,a,s,u,l;for(o=0,a=t.length;o<a;o++)switch((i=t[o])[0]){case f.AT_RULE:d(i,0,r);break;case f.AT_RULE_BLOCK:h(i[2],n,r);break;case f.COMMENT:s=i,u=r,l=void 0,(l=p.exec(s[1]))&&-1===l[1].indexOf("data:")&&(s[1]=s[1].replace(l[1],c(l[1],u,!0)));break;case f.NESTED_BLOCK:e(i[2],n,r);break;case f.RULE:h(i[2],n,r)}return t}(e,n,r):function(e,t,n){var r,i,o;for(i=0,o=e.length;i<o;i++)switch((r=e[i])[0]){case f.AT_RULE:d(r,0,n)}return e}(e,0,r)}},{"../tokenizer/token":79,"../utils/is-import":87,"./extract-import-url-and-media":65,"./restore-import":76,"./rewrite-url":77}],76:[function(e,t,n){t.exports=function(e,t){return("@import "+e+" "+t).trim()}},{}],77:[function(n,o,e){(function(e){var s=n("path"),u=n("url"),a='"',l="'",c=/^["']/,f=/["']$/,r=/[\(\)]/,p=/^url\(/i,d=/\)$/,i=/\s/,t="win32"==e.platform;function h(e,t){return t?(n=e,s.isAbsolute(n)&&!m(t.toBase)?e:m(e)||"#"==e[0]||/^\w+:\w+/.test(e)?e:0===e.indexOf("data:")?"'"+e+"'":m(t.toBase)?u.resolve(t.toBase,e):t.absolute?g((o=e,a=t,s.resolve(s.join(a.fromBase||"",o)).replace(a.toBase,""))):g((r=e,i=t,s.relative(i.toBase,s.join(i.fromBase||"",r))))):e;var n,r,i,o,a}function m(e){return/^[^:]+?:\/\//.test(e)||0===e.indexOf("//")}function g(e){return t?e.replace(/\\/g,"/"):e}function v(e){return-1<e.indexOf(l)?a:-1<e.indexOf(a)?l:(n=e,i.test(n)||(t=e,r.test(t))?l:"");var t,n}o.exports=function(e,t,n){var r=e.replace(p,"").replace(d,"").trim(),i=r.replace(c,"").replace(f,"").trim(),o=r[0]==l||r[0]==a?r[0]:v(i);return n?h(i,t):"url("+o+h(i,t)+o+")"}}).call(this,n("_process"))},{_process:124,path:122,url:175}],78:[function(e,t,n){t.exports={ASTERISK:"*",AT:"@",BACK_SLASH:"\\",CARRIAGE_RETURN:"\r",CLOSE_CURLY_BRACKET:"}",CLOSE_ROUND_BRACKET:")",CLOSE_SQUARE_BRACKET:"]",COLON:":",COMMA:",",DOUBLE_QUOTE:'"',EXCLAMATION:"!",FORWARD_SLASH:"/",INTERNAL:"-clean-css-",NEW_LINE_NIX:"\n",OPEN_CURLY_BRACKET:"{",OPEN_ROUND_BRACKET:"(",OPEN_SQUARE_BRACKET:"[",SEMICOLON:";",SINGLE_QUOTE:"'",SPACE:" ",TAB:"\t",UNDERSCORE:"_"}},{}],79:[function(e,t,n){t.exports={AT_RULE:"at-rule",AT_RULE_BLOCK:"at-rule-block",AT_RULE_BLOCK_SCOPE:"at-rule-block-scope",COMMENT:"comment",NESTED_BLOCK:"nested-block",NESTED_BLOCK_SCOPE:"nested-block-scope",PROPERTY:"property",PROPERTY_BLOCK:"property-block",PROPERTY_NAME:"property-name",PROPERTY_VALUE:"property-value",RAW:"raw",RULE:"rule",RULE_SCOPE:"rule-scope"}},{}],80:[function(e,t,n){var j=e("assert"),I=e("./marker"),V=e("./token"),H=e("../utils/format-position"),$={BLOCK:"block",COMMENT:"comment",DOUBLE_QUOTE:"double-quote",RULE:"rule",SINGLE_QUOTE:"single-quote"},r=["@charset","@import"],i=["@-moz-document","@document","@-moz-keyframes","@-ms-keyframes","@-o-keyframes","@-webkit-keyframes","@keyframes","@media","@supports"],K=/\/\* clean\-css ignore:end \*\/$/,G=/^\/\* clean\-css ignore:start \*\//,Y=["@bottom-center","@bottom-left","@bottom-left-corner","@bottom-right","@bottom-right-corner","@left-bottom","@left-middle","@left-top","@right-bottom","@right-middle","@right-top","@top-center","@top-left","@top-left-corner","@top-right","@top-right-corner"],W=["@footnote","@footnotes","@left","@page-float-bottom","@page-float-top","@right"],Q=/^\[\s{0,31}\d+\s{0,31}\]$/,o=/[\s\(]/,Z=/[\s|\}]*$/;function J(e,t,n,r){var i=e[2];return n.inputSourceMapTracker.isTracking(i)?n.inputSourceMapTracker.originalPositionFor(e,t.length,r):e}function X(e){var t=e[0]==I.AT||e[0]==I.UNDERSCORE,n=e.join("").split(o)[0];return t&&-1<i.indexOf(n)?V.NESTED_BLOCK:t&&-1<r.indexOf(n)?V.AT_RULE:t?V.AT_RULE_BLOCK:V.RULE}function ee(e){return e==V.RULE?V.RULE_SCOPE:e==V.NESTED_BLOCK?V.NESTED_BLOCK_SCOPE:e==V.AT_RULE_BLOCK?V.AT_RULE_BLOCK_SCOPE:void 0}t.exports=function(e,t){return function e(t,n,r,i){for(var o,a,s,u,l,c,f,p,d,h,m,g,v,b,y,_,w,E,A,x,k=[],C=k,O=[],S=[],D=r.level,T=[],B=[],R=[],L=0,F=!1,q=!1,U=!1,M=!1,N=!1,P=r.position;P.index<t.length;P.index++){var z=t[P.index];if(f=D==$.SINGLE_QUOTE||D==$.DOUBLE_QUOTE,p=z==I.SPACE||z==I.TAB,d=z==I.NEW_LINE_NIX,h=z==I.NEW_LINE_NIX&&t[P.index-1]==I.CARRIAGE_RETURN,m=z==I.CARRIAGE_RETURN&&t[P.index+1]&&t[P.index+1]!=I.NEW_LINE_NIX,g=!q&&D!=$.COMMENT&&!f&&z==I.ASTERISK&&t[P.index-1]==I.FORWARD_SLASH,b=!F&&!f&&z==I.FORWARD_SLASH&&t[P.index-1]==I.ASTERISK,v=D==$.COMMENT&&b,L=Math.max(L,0),u=0===B.length?[P.line,P.column,P.source]:u,y)B.push(z);else if(v||D!=$.COMMENT)if(g||v||!U)if(g&&(D==$.BLOCK||D==$.RULE)&&1<B.length)S.push(u),B.push(z),R.push(B.slice(0,B.length-2)),B=B.slice(B.length-2),u=[P.line,P.column-1,P.source],T.push(D),D=$.COMMENT;else if(g)T.push(D),D=$.COMMENT,B.push(z);else if(v&&(x=B,G.test(x.join("")+I.FORWARD_SLASH)))l=B.join("").trim()+z,o=[V.COMMENT,l,[J(u,l,n)]],C.push(o),U=!0,u=S.pop()||null,B=R.pop()||[];else if(v&&(A=B,K.test(A.join("")+I.FORWARD_SLASH)))l=B.join("")+z,_=l.lastIndexOf(I.FORWARD_SLASH+I.ASTERISK),c=l.substring(0,_),o=[V.RAW,c,[J(u,c,n)]],C.push(o),c=l.substring(_),u=[P.line,P.column-c.length+1,P.source],o=[V.COMMENT,c,[J(u,c,n)]],C.push(o),U=!1,D=T.pop(),u=S.pop()||null,B=R.pop()||[];else if(v)l=B.join("").trim()+z,o=[V.COMMENT,l,[J(u,l,n)]],C.push(o),D=T.pop(),u=S.pop()||null,B=R.pop()||[];else if(b&&t[P.index+1]!=I.ASTERISK)n.warnings.push("Unexpected '*/' at "+H([P.line,P.column,P.source])+"."),B=[];else if(z!=I.SINGLE_QUOTE||f)if(z==I.SINGLE_QUOTE&&D==$.SINGLE_QUOTE)D=T.pop(),B.push(z);else if(z!=I.DOUBLE_QUOTE||f)if(z==I.DOUBLE_QUOTE&&D==$.DOUBLE_QUOTE)D=T.pop(),B.push(z);else if(!g&&!v&&z!=I.CLOSE_ROUND_BRACKET&&z!=I.OPEN_ROUND_BRACKET&&D!=$.COMMENT&&!f&&0<L)B.push(z);else if(z!=I.OPEN_ROUND_BRACKET||f||D==$.COMMENT||M)if(z!=I.CLOSE_ROUND_BRACKET||f||D==$.COMMENT||M)if(z==I.SEMICOLON&&D==$.BLOCK&&B[0]==I.AT)l=B.join("").trim(),k.push([V.AT_RULE,l,[J(u,l,n)]]),B=[];else if(z==I.COMMA&&D==$.BLOCK&&a)l=B.join("").trim(),a[1].push([ee(a[0]),l,[J(u,l,n,a[1].length)]]),B=[];else if(z==I.COMMA&&D==$.BLOCK&&X(B)==V.AT_RULE)B.push(z);else if(z==I.COMMA&&D==$.BLOCK)a=[X(B),[],[]],l=B.join("").trim(),a[1].push([ee(a[0]),l,[J(u,l,n,0)]]),B=[];else if(z==I.OPEN_CURLY_BRACKET&&D==$.BLOCK&&a&&a[0]==V.NESTED_BLOCK)l=B.join("").trim(),a[1].push([V.NESTED_BLOCK_SCOPE,l,[J(u,l,n)]]),k.push(a),T.push(D),P.column++,P.index++,B=[],a[2]=e(t,n,r,!0),a=null;else if(z==I.OPEN_CURLY_BRACKET&&D==$.BLOCK&&X(B)==V.NESTED_BLOCK)l=B.join("").trim(),(a=a||[V.NESTED_BLOCK,[],[]])[1].push([V.NESTED_BLOCK_SCOPE,l,[J(u,l,n)]]),k.push(a),T.push(D),P.column++,P.index++,B=[],a[2]=e(t,n,r,!0),a=null;else if(z==I.OPEN_CURLY_BRACKET&&D==$.BLOCK)l=B.join("").trim(),(a=a||[X(B),[],[]])[1].push([ee(a[0]),l,[J(u,l,n,a[1].length)]]),C=a[2],k.push(a),T.push(D),D=$.RULE,B=[];else if(z==I.OPEN_CURLY_BRACKET&&D==$.RULE&&M)O.push(a),a=[V.PROPERTY_BLOCK,[]],s.push(a),C=a[1],T.push(D),D=$.RULE,M=!1;else if(z==I.OPEN_CURLY_BRACKET&&D==$.RULE&&(E=B.join("").trim(),-1<Y.indexOf(E)||-1<W.indexOf(E)))l=B.join("").trim(),O.push(a),(a=[V.AT_RULE_BLOCK,[],[]])[1].push([V.AT_RULE_BLOCK_SCOPE,l,[J(u,l,n)]]),C.push(a),C=a[2],T.push(D),D=$.RULE,B=[];else if(z!=I.COLON||D!=$.RULE||M)if(z==I.SEMICOLON&&D==$.RULE&&s&&0<O.length&&0<B.length&&B[0]==I.AT)l=B.join("").trim(),a[1].push([V.AT_RULE,l,[J(u,l,n)]]),B=[];else if(z==I.SEMICOLON&&D==$.RULE&&s&&0<B.length)l=B.join("").trim(),s.push([V.PROPERTY_VALUE,l,[J(u,l,n)]]),s=null,M=!1,B=[];else if(z==I.SEMICOLON&&D==$.RULE&&s&&0===B.length)s=null,M=!1;else if(z==I.SEMICOLON&&D==$.RULE&&0<B.length&&B[0]==I.AT)l=B.join(""),C.push([V.AT_RULE,l,[J(u,l,n)]]),M=!1,B=[];else if(z==I.SEMICOLON&&D==$.RULE&&N)N=!1,B=[];else if(z==I.SEMICOLON&&D==$.RULE&&0===B.length);else if(z==I.CLOSE_CURLY_BRACKET&&D==$.RULE&&s&&M&&0<B.length&&0<O.length)l=B.join(""),s.push([V.PROPERTY_VALUE,l,[J(u,l,n)]]),s=null,a=O.pop(),C=a[2],D=T.pop(),M=!1,B=[];else if(z==I.CLOSE_CURLY_BRACKET&&D==$.RULE&&s&&0<B.length&&B[0]==I.AT&&0<O.length)l=B.join(""),a[1].push([V.AT_RULE,l,[J(u,l,n)]]),s=null,a=O.pop(),C=a[2],D=T.pop(),M=!1,B=[];else if(z==I.CLOSE_CURLY_BRACKET&&D==$.RULE&&s&&0<O.length)s=null,a=O.pop(),C=a[2],D=T.pop(),M=!1;else if(z==I.CLOSE_CURLY_BRACKET&&D==$.RULE&&s&&0<B.length)l=B.join(""),s.push([V.PROPERTY_VALUE,l,[J(u,l,n)]]),s=null,a=O.pop(),C=k,D=T.pop(),M=!1,B=[];else if(z==I.CLOSE_CURLY_BRACKET&&D==$.RULE&&0<B.length&&B[0]==I.AT)a=s=null,l=B.join("").trim(),C.push([V.AT_RULE,l,[J(u,l,n)]]),C=k,D=T.pop(),M=!1,B=[];else if(z==I.CLOSE_CURLY_BRACKET&&D==$.RULE&&T[T.length-1]==$.RULE)s=null,a=O.pop(),C=a[2],D=T.pop(),N=!(M=!1),B=[];else if(z==I.CLOSE_CURLY_BRACKET&&D==$.RULE)a=s=null,C=k,D=T.pop(),M=!1;else if(z!=I.CLOSE_CURLY_BRACKET||D!=$.BLOCK||i){if(z==I.CLOSE_CURLY_BRACKET&&D==$.BLOCK)break;z==I.OPEN_ROUND_BRACKET&&D==$.RULE&&M?(B.push(z),L++):z==I.CLOSE_ROUND_BRACKET&&D==$.RULE&&M&&1==L?(B.push(z),l=B.join("").trim(),s.push([V.PROPERTY_VALUE,l,[J(u,l,n)]]),L--,B=[]):z==I.CLOSE_ROUND_BRACKET&&D==$.RULE&&M?(B.push(z),L--):z==I.FORWARD_SLASH&&t[P.index+1]!=I.ASTERISK&&D==$.RULE&&M&&0<B.length?(l=B.join("").trim(),s.push([V.PROPERTY_VALUE,l,[J(u,l,n)]]),s.push([V.PROPERTY_VALUE,z,[[P.line,P.column,P.source]]]),B=[]):z==I.FORWARD_SLASH&&t[P.index+1]!=I.ASTERISK&&D==$.RULE&&M?(s.push([V.PROPERTY_VALUE,z,[[P.line,P.column,P.source]]]),B=[]):z==I.COMMA&&D==$.RULE&&M&&0<B.length?(l=B.join("").trim(),s.push([V.PROPERTY_VALUE,l,[J(u,l,n)]]),s.push([V.PROPERTY_VALUE,z,[[P.line,P.column,P.source]]]),B=[]):z==I.COMMA&&D==$.RULE&&M?(s.push([V.PROPERTY_VALUE,z,[[P.line,P.column,P.source]]]),B=[]):z==I.CLOSE_SQUARE_BRACKET&&s&&1<s.length&&0<B.length&&(w=B,Q.test(w.join("")+I.CLOSE_SQUARE_BRACKET))?(B.push(z),l=B.join("").trim(),s[s.length-1][1]+=l,B=[]):(p||d&&!h)&&D==$.RULE&&M&&s&&0<B.length?(l=B.join("").trim(),s.push([V.PROPERTY_VALUE,l,[J(u,l,n)]]),B=[]):h&&D==$.RULE&&M&&s&&1<B.length?(l=B.join("").trim(),s.push([V.PROPERTY_VALUE,l,[J(u,l,n)]]),B=[]):h&&D==$.RULE&&M?B=[]:1==B.length&&h?B.pop():(0<B.length||!p&&!d&&!h&&!m)&&B.push(z)}else{if(j(P.index<=t.length-1),-1!=n.embeddedStart){n.embeddedEnd=P.index;break}n.warnings.push("Unexpected '}' at "+H([P.line,P.column,P.source])+"."),B.push(z)}else l=B.join("").trim(),s=[V.PROPERTY,[V.PROPERTY_NAME,l,[J(u,l,n)]]],C.push(s),M=!0,B=[];else B.push(z),L--;else B.push(z),L++;else T.push(D),D=$.DOUBLE_QUOTE,B.push(z);else T.push(D),D=$.SINGLE_QUOTE,B.push(z);else B.push(z);else B.push(z);y=!y&&z==I.BACK_SLASH,F=g,q=v,P.line=h||d||m?P.line+1:P.line,P.column=h||d||m?0:P.column+1}return M&&n.warnings.push("Missing '}' at "+H([P.line,P.column,P.source])+"."),M&&0<B.length&&(l=B.join("").replace(Z,""),s.push([V.PROPERTY_VALUE,l,[J(u,l,n)]]),B=[]),0<B.length&&n.warnings.push("Invalid character(s) '"+B.join("")+"' at "+H(u)+". Ignoring."),k}(e,t,{level:$.BLOCK,position:{source:t.source||void 0,line:1,column:0,index:-1==t.embeddedStart?0:t.embeddedStart}},!1)}},{"../utils/format-position":82,"./marker":78,"./token":79,assert:107}],81:[function(e,t,n){t.exports=function e(t){for(var n=t.slice(0),r=0,i=n.length;r<i;r++)Array.isArray(n[r])&&(n[r]=e(n[r]));return n}},{}],82:[function(e,t,n){t.exports=function(e){var t=e[0],n=e[1],r=e[2];return r?r+":"+t+":"+n:t+":"+n}},{}],83:[function(e,t,n){var r=/^\/\//;t.exports=function(e){return!r.test(e)}},{}],84:[function(e,t,n){var r=/^data:(\S*?)?(;charset=[^;]+)?(;[^,]+?)?,(.+)/;t.exports=function(e){return r.test(e)}},{}],85:[function(e,t,n){var r=/^http:\/\//;t.exports=function(e){return r.test(e)}},{}],86:[function(e,t,n){var r=/^https:\/\//;t.exports=function(e){return r.test(e)}},{}],87:[function(e,t,n){var r=/^@import/i;t.exports=function(e){return r.test(e)}},{}],88:[function(e,t,n){var r=/^(\w+:\/\/|\/\/)/;t.exports=function(e){return r.test(e)}},{}],89:[function(e,t,n){var u=/([0-9]+)/;function l(e){return""+parseInt(e)==e?parseInt(e):e}t.exports=function(e,t){var n,r,i,o,a=(""+e).split(u).map(l),s=(""+t).split(u).map(l);for(i=0,o=Math.min(a.length,s.length);i<o;i++)if((n=a[i])!=(r=s[i]))return r<n?1:-1;return a.length>s.length?1:a.length==s.length?0:-1}},{}],90:[function(e,t,n){t.exports=function e(t,n){var r,i,o,a={};for(r in t)o=t[r],Array.isArray(o)?a[r]=o.slice(0):a[r]="object"==typeof o&&null!==o?e(o,{}):o;for(i in n)o=n[i],i in a&&Array.isArray(o)?a[i]=o.slice(0):a[i]=i in a&&"object"==typeof o&&null!==o?e(a[i],o):o;return a}},{}],91:[function(e,t,n){var c=e("../tokenizer/marker");t.exports=function(e,t){var n,r=c.OPEN_ROUND_BRACKET,i=c.CLOSE_ROUND_BRACKET,o=0,a=0,s=0,u=e.length,l=[];if(-1==e.indexOf(t))return[e];if(-1==e.indexOf(r))return e.split(t);for(;a<u;)e[a]==r?o++:e[a]==i&&o--,0===o&&0<a&&a+1<u&&e[a]==t&&(l.push(e.substring(s,a)),s=a+1),a++;return s<a+1&&((n=e.substring(s))[n.length-1]==t&&(n=n.substring(0,n.length-1)),l.push(n)),l}},{"../tokenizer/marker":78}],92:[function(e,t,n){var c="",f=e("../options/format").Breaks,p=e("../options/format").Spaces,d=e("../tokenizer/marker"),h=e("../tokenizer/token");function a(e,t,n){return!e.spaceAfterClosingBrace&&("background"==(l=t)[1][1]||"transform"==l[1][1]||"src"==l[1][1])&&(s=t)[u=n][1][s[u][1].length-1]==d.CLOSE_ROUND_BRACKET||(o=t)[(a=n)+1]&&o[a+1][1]==d.FORWARD_SLASH||t[n][1]==d.FORWARD_SLASH||(r=t)[(i=n)+1]&&r[i+1][1]==d.COMMA||t[n][1]==d.COMMA;var r,i,o,a,s,u,l}function m(e,t){for(var n,r=e.store,i=0,o=t.length;i<o;i++)r(e,t[i]),i<o-1&&r(e,(n=e).format?d.COMMA+(u(n,f.BetweenSelectors)?n.format.breakWith:c)+n.indentWith:d.COMMA)}function g(e,t){for(var n=function(e){for(var t=e.length-1;0<=t&&e[t][0]==h.COMMENT;t--);return t}(t),r=0,i=t.length;r<i;r++)o(e,t,r,n)}function o(e,t,n,r){var i,o=e.store,a=t[n],s=a[2][0]==h.PROPERTY_BLOCK;i=e.format?!(!e.format.semicolonAfterLastProperty&&!s)||n<r:n<r||s;var u,l=n===r;switch(a[0]){case h.AT_RULE:o(e,a),o(e,w(e,f.AfterProperty,!1));break;case h.AT_RULE_BLOCK:m(e,a[1]),o(e,y(e,f.AfterRuleBegins,!0)),g(e,a[2]),o(e,_(e,f.AfterRuleEnds,!1,l));break;case h.COMMENT:o(e,a);break;case h.PROPERTY:o(e,a[1]),o(e,(u=e).format?d.COLON+(b(u,p.BeforeValue)?d.SPACE:c):d.COLON),v(e,a),o(e,i?w(e,f.AfterProperty,l):c);break;case h.RAW:o(e,a)}}function v(e,t){var n,r,i,o=e.store;if(t[2][0]==h.PROPERTY_BLOCK)o(e,y(e,f.AfterBlockBegins,!1)),g(e,t[2][1]),o(e,_(e,f.AfterBlockEnds,!1,!0));else for(n=2,r=t.length;n<r;n++)o(e,t[n]),n<r-1&&("filter"==(i=t)[1][1]||"-ms-filter"==i[1][1]||!a(e,t,n))&&o(e,d.SPACE)}function u(e,t){return e.format&&e.format.breaks[t]}function b(e,t){return e.format&&e.format.spaces[t]}function y(e,t,n){return e.format?(e.indentBy+=e.format.indentBy,e.indentWith=e.format.indentWith.repeat(e.indentBy),(n&&b(e,p.BeforeBlockBegins)?d.SPACE:c)+d.OPEN_CURLY_BRACKET+(u(e,t)?e.format.breakWith:c)+e.indentWith):d.OPEN_CURLY_BRACKET}function _(e,t,n,r){return e.format?(e.indentBy-=e.format.indentBy,e.indentWith=e.format.indentWith.repeat(e.indentBy),(u(e,f.AfterProperty)||n&&u(e,f.BeforeBlockEnds)?e.format.breakWith:c)+e.indentWith+d.CLOSE_CURLY_BRACKET+(r?c:(u(e,t)?e.format.breakWith:c)+e.indentWith)):d.CLOSE_CURLY_BRACKET}function w(e,t,n){return e.format?d.SEMICOLON+(n||!u(e,t)?c:e.format.breakWith+e.indentWith):d.SEMICOLON}t.exports={all:function e(t,n){var r,i,o,a,s=t.store;for(o=0,a=n.length;o<a;o++)switch(i=o==a-1,(r=n[o])[0]){case h.AT_RULE:s(t,r),s(t,w(t,f.AfterAtRule,i));break;case h.AT_RULE_BLOCK:m(t,r[1]),s(t,y(t,f.AfterRuleBegins,!0)),g(t,r[2]),s(t,_(t,f.AfterRuleEnds,!1,i));break;case h.NESTED_BLOCK:m(t,r[1]),s(t,y(t,f.AfterBlockBegins,!0)),e(t,r[2]),s(t,_(t,f.AfterBlockEnds,!0,i));break;case h.COMMENT:s(t,r),s(t,u(t,f.AfterComment)?t.format.breakWith:c);break;case h.RAW:s(t,r);break;case h.RULE:m(t,r[1]),s(t,y(t,f.AfterRuleBegins,!0)),g(t,r[2]),s(t,_(t,f.AfterRuleEnds,!1,i))}},body:g,property:o,rules:m,value:v}},{"../options/format":56,"../tokenizer/marker":78,"../tokenizer/token":79}],93:[function(e,t,n){var r=e("./helpers");function i(e,t){e.output.push("string"==typeof t?t:t[1])}function o(){return{output:[],store:i}}t.exports={all:function(e){var t=o();return r.all(t,e),t.output.join("")},body:function(e){var t=o();return r.body(t,e),t.output.join("")},property:function(e,t){var n=o();return r.property(n,e,t,!0),n.output.join("")},rules:function(e){var t=o();return r.rules(t,e),t.output.join("")},value:function(e){var t=o();return r.value(t,e),t.output.join("")}}},{"./helpers":92}],94:[function(e,t,n){var r=e("./helpers").all;function i(e,t){var n="string"==typeof t?t:t[1];(0,e.wrap)(e,n),a(e,n),e.output.push(n)}function o(e,t){e.column+t.length>e.format.wrapAt&&(a(e,e.format.breakWith),e.output.push(e.format.breakWith))}function a(e,t){var n=t.split("\n");e.line+=n.length-1,e.column=1<n.length?0:e.column+n.pop().length}t.exports=function(e,t){var n={column:0,format:t.options.format,indentBy:0,indentWith:"",line:1,output:[],spaceAfterClosingBrace:t.options.compatibility.properties.spaceAfterClosingBrace,store:i,wrap:t.options.format.wrapAt?o:function(){}};return r(n,e),{styles:n.output.join("")}}},{"./helpers":92}],95:[function(t,n,e){(function(e){var r=t("source-map").SourceMapGenerator,i=t("./helpers").all,s=t("../utils/is-remote-resource"),u="win32"==e.platform,l=/\//g,c="$stdin",f="\\";function o(e,t){var n="string"==typeof t,r=n?t:t[1],i=n?null:t[2];(0,e.wrap)(e,r),p(e,r,i),e.output.push(r)}function a(e,t){e.column+t.length>e.format.wrapAt&&(p(e,e.format.breakWith,!1),e.output.push(e.format.breakWith))}function p(e,t,n){var r=t.split("\n");n&&function(e,t){for(var n=0,r=t.length;n<r;n++)d(e,t[n])}(e,n),e.line+=r.length-1,e.column=1<r.length?0:e.column+r.pop().length}function d(e,t){var n=t[0],r=t[1],i=t[2],o=i,a=o||c;u&&o&&!s(o)&&(a=o.replace(l,f)),e.outputMap.addMapping({generated:{line:e.line,column:e.column},source:a,original:{line:n,column:r}}),e.inlineSources&&i in e.sourcesContent&&e.outputMap.setSourceContent(a,e.sourcesContent[i])}n.exports=function(e,t){var n={column:0,format:t.options.format,indentBy:0,indentWith:"",inlineSources:t.options.sourceMapInlineSources,line:1,output:[],outputMap:new r,sourcesContent:t.sourcesContent,spaceAfterClosingBrace:t.options.compatibility.properties.spaceAfterClosingBrace,store:o,wrap:t.options.format.wrapAt?a:function(){}};return i(n,e),{sourceMap:n.outputMap,styles:n.output.join("")}}}).call(this,t("_process"))},{"../utils/is-remote-resource":88,"./helpers":92,_process:124,"source-map":106}],96:[function(e,t,n){var o=e("./util"),a=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;function u(){this._array=[],this._set=s?new Map:Object.create(null)}u.fromArray=function(e,t){for(var n=new u,r=0,i=e.length;r<i;r++)n.add(e[r],t);return n},u.prototype.size=function(){return s?this._set.size:Object.getOwnPropertyNames(this._set).length},u.prototype.add=function(e,t){var n=s?e:o.toSetString(e),r=s?this.has(e):a.call(this._set,n),i=this._array.length;r&&!t||this._array.push(e),r||(s?this._set.set(e,i):this._set[n]=i)},u.prototype.has=function(e){if(s)return this._set.has(e);var t=o.toSetString(e);return a.call(this._set,t)},u.prototype.indexOf=function(e){if(s){var t=this._set.get(e);if(0<=t)return t}else{var n=o.toSetString(e);if(a.call(this._set,n))return this._set[n]}throw new Error('"'+e+'" is not in the set.')},u.prototype.at=function(e){if(0<=e&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},u.prototype.toArray=function(){return this._array.slice()},n.ArraySet=u},{"./util":105}],97:[function(e,t,n){var c=e("./base64");n.encode=function(e){for(var t,n,r="",i=(n=e)<0?1+(-n<<1):0+(n<<1);t=31&i,0<(i>>>=5)&&(t|=32),r+=c.encode(t),0<i;);return r},n.decode=function(e,t,n){var r,i,o,a,s=e.length,u=0,l=0;do{if(s<=t)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=c.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));r=!!(32&i),u+=(i&=31)<<l,l+=5}while(r);n.value=(a=(o=u)>>1,1==(1&o)?-a:a),n.rest=t}},{"./base64":98}],98:[function(e,t,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");n.encode=function(e){if(0<=e&&e<r.length)return r[e];throw new TypeError("Must be between 0 and 63: "+e)},n.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1}},{}],99:[function(e,t,l){l.GREATEST_LOWER_BOUND=1,l.LEAST_UPPER_BOUND=2,l.search=function(e,t,n,r){if(0===t.length)return-1;var i=function e(t,n,r,i,o,a){var s=Math.floor((n-t)/2)+t,u=o(r,i[s],!0);return 0===u?s:0<u?1<n-s?e(s,n,r,i,o,a):a==l.LEAST_UPPER_BOUND?n<i.length?n:-1:s:1<s-t?e(t,s,r,i,o,a):a==l.LEAST_UPPER_BOUND?s:t<0?-1:t}(-1,t.length,e,t,n,r||l.GREATEST_LOWER_BOUND);if(i<0)return-1;for(;0<=i-1&&0===n(t[i],t[i-1],!0);)--i;return i}},{}],100:[function(e,t,n){var s=e("./util");function r(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}r.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},r.prototype.add=function(e){var t,n,r,i,o,a;t=this._last,n=e,r=t.generatedLine,i=n.generatedLine,o=t.generatedColumn,a=n.generatedColumn,r<i||i==r&&o<=a||s.compareByGeneratedPositionsInflated(t,n)<=0?this._last=e:this._sorted=!1,this._array.push(e)},r.prototype.toArray=function(){return this._sorted||(this._array.sort(s.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=r},{"./util":105}],101:[function(e,t,n){function c(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function f(e,t,n,r){if(n<r){var i=n-1;c(e,(u=n,l=r,Math.round(u+Math.random()*(l-u))),r);for(var o=e[r],a=n;a<r;a++)t(e[a],o)<=0&&c(e,i+=1,a);c(e,i+1,a);var s=i+1;f(e,t,n,s-1),f(e,t,s+1,r)}var u,l}n.quickSort=function(e,t){f(e,t,0,e.length-1)}},{}],102:[function(e,t,n){var y=e("./util"),u=e("./binary-search"),p=e("./array-set").ArraySet,_=e("./base64-vlq"),w=e("./quick-sort").quickSort;function a(e,t){var n=e;return"string"==typeof e&&(n=y.parseSourceMapInput(e)),null!=n.sections?new r(n,t):new d(n,t)}function d(e,t){var n=e;"string"==typeof e&&(n=y.parseSourceMapInput(e));var r=y.getArg(n,"version"),i=y.getArg(n,"sources"),o=y.getArg(n,"names",[]),a=y.getArg(n,"sourceRoot",null),s=y.getArg(n,"sourcesContent",null),u=y.getArg(n,"mappings"),l=y.getArg(n,"file",null);if(r!=this._version)throw new Error("Unsupported version: "+r);a&&(a=y.normalize(a)),i=i.map(String).map(y.normalize).map(function(e){return a&&y.isAbsolute(a)&&y.isAbsolute(e)?y.relative(a,e):e}),this._names=p.fromArray(o.map(String),!0),this._sources=p.fromArray(i,!0),this._absoluteSources=this._sources.toArray().map(function(e){return y.computeSourceURL(a,e,t)}),this.sourceRoot=a,this.sourcesContent=s,this._mappings=u,this._sourceMapURL=t,this.file=l}function E(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function r(e,i){var t=e;"string"==typeof e&&(t=y.parseSourceMapInput(e));var n=y.getArg(t,"version"),r=y.getArg(t,"sections");if(n!=this._version)throw new Error("Unsupported version: "+n);this._sources=new p,this._names=new p;var o={line:-1,column:0};this._sections=r.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var t=y.getArg(e,"offset"),n=y.getArg(t,"line"),r=y.getArg(t,"column");if(n<o.line||n===o.line&&r<o.column)throw new Error("Section offsets must be ordered and non-overlapping.");return o=t,{generatedOffset:{generatedLine:n+1,generatedColumn:r+1},consumer:new a(y.getArg(e,"map"),i)}})}a.fromSourceMap=function(e,t){return d.fromSourceMap(e,t)},a.prototype._version=3,a.prototype.__generatedMappings=null,Object.defineProperty(a.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),a.prototype.__originalMappings=null,Object.defineProperty(a.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),a.prototype._charIsMappingSeparator=function(e,t){var n=e.charAt(t);return";"===n||","===n},a.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")},a.GENERATED_ORDER=1,a.ORIGINAL_ORDER=2,a.GREATEST_LOWER_BOUND=1,a.LEAST_UPPER_BOUND=2,a.prototype.eachMapping=function(e,t,n){var r,i=t||null;switch(n||a.GENERATED_ORDER){case a.GENERATED_ORDER:r=this._generatedMappings;break;case a.ORIGINAL_ORDER:r=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var o=this.sourceRoot;r.map(function(e){var t=null===e.source?null:this._sources.at(e.source);return{source:t=y.computeSourceURL(o,t,this._sourceMapURL),generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}},this).forEach(e,i)},a.prototype.allGeneratedPositionsFor=function(e){var t=y.getArg(e,"line"),n={source:y.getArg(e,"source"),originalLine:t,originalColumn:y.getArg(e,"column",0)};if(n.source=this._findSourceIndex(n.source),n.source<0)return[];var r=[],i=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",y.compareByOriginalPositions,u.LEAST_UPPER_BOUND);if(0<=i){var o=this._originalMappings[i];if(void 0===e.column)for(var a=o.originalLine;o&&o.originalLine===a;)r.push({line:y.getArg(o,"generatedLine",null),column:y.getArg(o,"generatedColumn",null),lastColumn:y.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++i];else for(var s=o.originalColumn;o&&o.originalLine===t&&o.originalColumn==s;)r.push({line:y.getArg(o,"generatedLine",null),column:y.getArg(o,"generatedColumn",null),lastColumn:y.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++i]}return r},n.SourceMapConsumer=a,(d.prototype=Object.create(a.prototype)).consumer=a,d.prototype._findSourceIndex=function(e){var t,n=e;if(null!=this.sourceRoot&&(n=y.relative(this.sourceRoot,n)),this._sources.has(n))return this._sources.indexOf(n);for(t=0;t<this._absoluteSources.length;++t)if(this._absoluteSources[t]==e)return t;return-1},d.fromSourceMap=function(e,t){var n=Object.create(d.prototype),r=n._names=p.fromArray(e._names.toArray(),!0),i=n._sources=p.fromArray(e._sources.toArray(),!0);n.sourceRoot=e._sourceRoot,n.sourcesContent=e._generateSourcesContent(n._sources.toArray(),n.sourceRoot),n.file=e._file,n._sourceMapURL=t,n._absoluteSources=n._sources.toArray().map(function(e){return y.computeSourceURL(n.sourceRoot,e,t)});for(var o=e._mappings.toArray().slice(),a=n.__generatedMappings=[],s=n.__originalMappings=[],u=0,l=o.length;u<l;u++){var c=o[u],f=new E;f.generatedLine=c.generatedLine,f.generatedColumn=c.generatedColumn,c.source&&(f.source=i.indexOf(c.source),f.originalLine=c.originalLine,f.originalColumn=c.originalColumn,c.name&&(f.name=r.indexOf(c.name)),s.push(f)),a.push(f)}return w(n.__originalMappings,y.compareByOriginalPositions),n},d.prototype._version=3,Object.defineProperty(d.prototype,"sources",{get:function(){return this._absoluteSources.slice()}}),d.prototype._parseMappings=function(e,t){for(var n,r,i,o,a,s=1,u=0,l=0,c=0,f=0,p=0,d=e.length,h=0,m={},g={},v=[],b=[];h<d;)if(";"===e.charAt(h))s++,h++,u=0;else if(","===e.charAt(h))h++;else{for((n=new E).generatedLine=s,o=h;o<d&&!this._charIsMappingSeparator(e,o);o++);if(i=m[r=e.slice(h,o)])h+=r.length;else{for(i=[];h<o;)_.decode(e,h,g),a=g.value,h=g.rest,i.push(a);if(2===i.length)throw new Error("Found a source, but no line and column");if(3===i.length)throw new Error("Found a source and line, but no column");m[r]=i}n.generatedColumn=u+i[0],u=n.generatedColumn,1<i.length&&(n.source=f+i[1],f+=i[1],n.originalLine=l+i[2],l=n.originalLine,n.originalLine+=1,n.originalColumn=c+i[3],c=n.originalColumn,4<i.length&&(n.name=p+i[4],p+=i[4])),b.push(n),"number"==typeof n.originalLine&&v.push(n)}w(b,y.compareByGeneratedPositionsDeflated),this.__generatedMappings=b,w(v,y.compareByOriginalPositions),this.__originalMappings=v},d.prototype._findMapping=function(e,t,n,r,i,o){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return u.search(e,t,i,o)},d.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var n=this._generatedMappings[e+1];if(t.generatedLine===n.generatedLine){t.lastGeneratedColumn=n.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},d.prototype.originalPositionFor=function(e){var t={generatedLine:y.getArg(e,"line"),generatedColumn:y.getArg(e,"column")},n=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",y.compareByGeneratedPositionsDeflated,y.getArg(e,"bias",a.GREATEST_LOWER_BOUND));if(0<=n){var r=this._generatedMappings[n];if(r.generatedLine===t.generatedLine){var i=y.getArg(r,"source",null);null!==i&&(i=this._sources.at(i),i=y.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var o=y.getArg(r,"name",null);return null!==o&&(o=this._names.at(o)),{source:i,line:y.getArg(r,"originalLine",null),column:y.getArg(r,"originalColumn",null),name:o}}}return{source:null,line:null,column:null,name:null}},d.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},d.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var n=this._findSourceIndex(e);if(0<=n)return this.sourcesContent[n];var r,i=e;if(null!=this.sourceRoot&&(i=y.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(r=y.urlParse(this.sourceRoot))){var o=i.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(o))return this.sourcesContent[this._sources.indexOf(o)];if((!r.path||"/"==r.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(t)return null;throw new Error('"'+i+'" is not in the SourceMap.')},d.prototype.generatedPositionFor=function(e){var t=y.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var n={source:t,originalLine:y.getArg(e,"line"),originalColumn:y.getArg(e,"column")},r=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",y.compareByOriginalPositions,y.getArg(e,"bias",a.GREATEST_LOWER_BOUND));if(0<=r){var i=this._originalMappings[r];if(i.source===n.source)return{line:y.getArg(i,"generatedLine",null),column:y.getArg(i,"generatedColumn",null),lastColumn:y.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=d,(r.prototype=Object.create(a.prototype)).constructor=a,r.prototype._version=3,Object.defineProperty(r.prototype,"sources",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var n=0;n<this._sections[t].consumer.sources.length;n++)e.push(this._sections[t].consumer.sources[n]);return e}}),r.prototype.originalPositionFor=function(e){var t={generatedLine:y.getArg(e,"line"),generatedColumn:y.getArg(e,"column")},n=u.search(t,this._sections,function(e,t){var n=e.generatedLine-t.generatedOffset.generatedLine;return n||e.generatedColumn-t.generatedOffset.generatedColumn}),r=this._sections[n];return r?r.consumer.originalPositionFor({line:t.generatedLine-(r.generatedOffset.generatedLine-1),column:t.generatedColumn-(r.generatedOffset.generatedLine===t.generatedLine?r.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},r.prototype.hasContentsOfAllSources=function(){return this._sections.every(function(e){return e.consumer.hasContentsOfAllSources()})},r.prototype.sourceContentFor=function(e,t){for(var n=0;n<this._sections.length;n++){var r=this._sections[n].consumer.sourceContentFor(e,!0);if(r)return r}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},r.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var n=this._sections[t];if(-1!==n.consumer._findSourceIndex(y.getArg(e,"source"))){var r=n.consumer.generatedPositionFor(e);if(r)return{line:r.line+(n.generatedOffset.generatedLine-1),column:r.column+(n.generatedOffset.generatedLine===r.line?n.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},r.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var n=0;n<this._sections.length;n++)for(var r=this._sections[n],i=r.consumer._generatedMappings,o=0;o<i.length;o++){var a=i[o],s=r.consumer._sources.at(a.source);s=y.computeSourceURL(r.consumer.sourceRoot,s,this._sourceMapURL),this._sources.add(s),s=this._sources.indexOf(s);var u=null;a.name&&(u=r.consumer._names.at(a.name),this._names.add(u),u=this._names.indexOf(u));var l={source:s,generatedLine:a.generatedLine+(r.generatedOffset.generatedLine-1),generatedColumn:a.generatedColumn+(r.generatedOffset.generatedLine===a.generatedLine?r.generatedOffset.generatedColumn-1:0),originalLine:a.originalLine,originalColumn:a.originalColumn,name:u};this.__generatedMappings.push(l),"number"==typeof l.originalLine&&this.__originalMappings.push(l)}w(this.__generatedMappings,y.compareByGeneratedPositionsDeflated),w(this.__originalMappings,y.compareByOriginalPositions)},n.IndexedSourceMapConsumer=r},{"./array-set":96,"./base64-vlq":97,"./binary-search":99,"./quick-sort":101,"./util":105}],103:[function(e,t,n){var h=e("./base64-vlq"),m=e("./util"),r=e("./array-set").ArraySet,i=e("./mapping-list").MappingList;function a(e){e||(e={}),this._file=m.getArg(e,"file",null),this._sourceRoot=m.getArg(e,"sourceRoot",null),this._skipValidation=m.getArg(e,"skipValidation",!1),this._sources=new r,this._names=new r,this._mappings=new i,this._sourcesContents=null}a.prototype._version=3,a.fromSourceMap=function(r){var i=r.sourceRoot,o=new a({file:r.file,sourceRoot:i});return r.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(t.source=e.source,null!=i&&(t.source=m.relative(i,t.source)),t.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(t.name=e.name)),o.addMapping(t)}),r.sources.forEach(function(e){var t=e;null!==i&&(t=m.relative(i,e)),o._sources.has(t)||o._sources.add(t);var n=r.sourceContentFor(e);null!=n&&o.setSourceContent(e,n)}),o},a.prototype.addMapping=function(e){var t=m.getArg(e,"generated"),n=m.getArg(e,"original",null),r=m.getArg(e,"source",null),i=m.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,n,r,i),null!=r&&(r=String(r),this._sources.has(r)||this._sources.add(r)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=n&&n.line,originalColumn:null!=n&&n.column,source:r,name:i})},a.prototype.setSourceContent=function(e,t){var n=e;null!=this._sourceRoot&&(n=m.relative(this._sourceRoot,n)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[m.toSetString(n)]=t):this._sourcesContents&&(delete this._sourcesContents[m.toSetString(n)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},a.prototype.applySourceMap=function(i,e,o){var a=e;if(null==e){if(null==i.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');a=i.file}var s=this._sourceRoot;null!=s&&(a=m.relative(s,a));var u=new r,l=new r;this._mappings.unsortedForEach(function(e){if(e.source===a&&null!=e.originalLine){var t=i.originalPositionFor({line:e.originalLine,column:e.originalColumn});null!=t.source&&(e.source=t.source,null!=o&&(e.source=m.join(o,e.source)),null!=s&&(e.source=m.relative(s,e.source)),e.originalLine=t.line,e.originalColumn=t.column,null!=t.name&&(e.name=t.name))}var n=e.source;null==n||u.has(n)||u.add(n);var r=e.name;null==r||l.has(r)||l.add(r)},this),this._sources=u,this._names=l,i.sources.forEach(function(e){var t=i.sourceContentFor(e);null!=t&&(null!=o&&(e=m.join(o,e)),null!=s&&(e=m.relative(s,e)),this.setSourceContent(e,t))},this)},a.prototype._validateMapping=function(e,t,n,r){if(t&&"number"!=typeof t.line&&"number"!=typeof t.column)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((!(e&&"line"in e&&"column"in e&&0<e.line&&0<=e.column)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&0<e.line&&0<=e.column&&0<t.line&&0<=t.column&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},a.prototype._serializeMappings=function(){for(var e,t,n,r,i=0,o=1,a=0,s=0,u=0,l=0,c="",f=this._mappings.toArray(),p=0,d=f.length;p<d;p++){if(e="",(t=f[p]).generatedLine!==o)for(i=0;t.generatedLine!==o;)e+=";",o++;else if(0<p){if(!m.compareByGeneratedPositionsInflated(t,f[p-1]))continue;e+=","}e+=h.encode(t.generatedColumn-i),i=t.generatedColumn,null!=t.source&&(r=this._sources.indexOf(t.source),e+=h.encode(r-l),l=r,e+=h.encode(t.originalLine-1-s),s=t.originalLine-1,e+=h.encode(t.originalColumn-a),a=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=h.encode(n-u),u=n)),c+=e}return c},a.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=m.relative(n,e));var t=m.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,t)?this._sourcesContents[t]:null},this)},a.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},a.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=a},{"./array-set":96,"./base64-vlq":97,"./mapping-list":100,"./util":105}],104:[function(e,t,n){var r=e("./source-map-generator").SourceMapGenerator,p=e("./util"),d=/(\r?\n)/,o="$$$isSourceNode$$$";function h(e,t,n,r,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==i?null:i,this[o]=!0,null!=r&&this.add(r)}h.fromStringWithSourceMap=function(e,n,r){var i=new h,o=e.split(d),a=0,s=function(){return e()+(e()||"");function e(){return a<o.length?o[a++]:void 0}},u=1,l=0,c=null;return n.eachMapping(function(e){if(null!==c){if(!(u<e.generatedLine)){var t=(n=o[a]||"").substr(0,e.generatedColumn-l);return o[a]=n.substr(e.generatedColumn-l),l=e.generatedColumn,f(c,t),void(c=e)}f(c,s()),u++,l=0}for(;u<e.generatedLine;)i.add(s()),u++;if(l<e.generatedColumn){var n=o[a]||"";i.add(n.substr(0,e.generatedColumn)),o[a]=n.substr(e.generatedColumn),l=e.generatedColumn}c=e},this),a<o.length&&(c&&f(c,s()),i.add(o.splice(a).join(""))),n.sources.forEach(function(e){var t=n.sourceContentFor(e);null!=t&&(null!=r&&(e=p.join(r,e)),i.setSourceContent(e,t))}),i;function f(e,t){if(null===e||void 0===e.source)i.add(t);else{var n=r?p.join(r,e.source):e.source;i.add(new h(e.originalLine,e.originalColumn,n,t,e.name))}}},h.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[o]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},h.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;0<=t;t--)this.prepend(e[t]);else{if(!e[o]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},h.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n<r;n++)(t=this.children[n])[o]?t.walk(e):""!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},h.prototype.join=function(e){var t,n,r=this.children.length;if(0<r){for(t=[],n=0;n<r-1;n++)t.push(this.children[n]),t.push(e);t.push(this.children[n]),this.children=t}return this},h.prototype.replaceRight=function(e,t){var n=this.children[this.children.length-1];return n[o]?n.replaceRight(e,t):"string"==typeof n?this.children[this.children.length-1]=n.replace(e,t):this.children.push("".replace(e,t)),this},h.prototype.setSourceContent=function(e,t){this.sourceContents[p.toSetString(e)]=t},h.prototype.walkSourceContents=function(e){for(var t=0,n=this.children.length;t<n;t++)this.children[t][o]&&this.children[t].walkSourceContents(e);var r=Object.keys(this.sourceContents);for(t=0,n=r.length;t<n;t++)e(p.fromSetString(r[t]),this.sourceContents[r[t]])},h.prototype.toString=function(){var t="";return this.walk(function(e){t+=e}),t},h.prototype.toStringWithSourceMap=function(e){var i={code:"",line:1,column:0},o=new r(e),a=!1,s=null,u=null,l=null,c=null;return this.walk(function(e,t){i.code+=e,null!==t.source&&null!==t.line&&null!==t.column?(s===t.source&&u===t.line&&l===t.column&&c===t.name||o.addMapping({source:t.source,original:{line:t.line,column:t.column},generated:{line:i.line,column:i.column},name:t.name}),s=t.source,u=t.line,l=t.column,c=t.name,a=!0):a&&(o.addMapping({generated:{line:i.line,column:i.column}}),s=null,a=!1);for(var n=0,r=e.length;n<r;n++)10===e.charCodeAt(n)?(i.line++,i.column=0,n+1===r?(s=null,a=!1):a&&o.addMapping({source:t.source,original:{line:t.line,column:t.column},generated:{line:i.line,column:i.column},name:t.name})):i.column++}),this.walkSourceContents(function(e,t){o.setSourceContent(e,t)}),{code:i.code,map:o}},n.SourceNode=h},{"./source-map-generator":103,"./util":105}],105:[function(e,t,u){u.getArg=function(e,t,n){if(t in e)return e[t];if(3===arguments.length)return n;throw new Error('"'+t+'" is a required argument.')};var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,o=/^data:.+\,.+$/;function l(e){var t=e.match(n);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function c(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function a(e){var t=e,n=l(e);if(n){if(!n.path)return e;t=n.path}for(var r,i=u.isAbsolute(t),o=t.split(/\/+/),a=0,s=o.length-1;0<=s;s--)"."===(r=o[s])?o.splice(s,1):".."===r?a++:0<a&&(""===r?(o.splice(s+1,a),a=0):(o.splice(s,2),a--));return""===(t=o.join("/"))&&(t=i?"/":"."),n?(n.path=t,c(n)):t}function s(e,t){""===e&&(e="."),""===t&&(t=".");var n=l(t),r=l(e);if(r&&(e=r.path||"/"),n&&!n.scheme)return r&&(n.scheme=r.scheme),c(n);if(n||t.match(o))return t;if(r&&!r.host&&!r.path)return r.host=t,c(r);var i="/"===t.charAt(0)?t:a(e.replace(/\/+$/,"")+"/"+t);return r?(r.path=i,c(r)):i}u.urlParse=l,u.urlGenerate=c,u.normalize=a,u.join=s,u.isAbsolute=function(e){return"/"===e.charAt(0)||n.test(e)},u.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)};var r=!("__proto__"in Object.create(null));function i(e){return e}function f(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;0<=n;n--)if(36!==e.charCodeAt(n))return!1;return!0}function p(e,t){return e===t?0:null===e?1:null===t?-1:t<e?1:-1}u.toSetString=r?i:function(e){return f(e)?"$"+e:e},u.fromSetString=r?i:function(e){return f(e)?e.slice(1):e},u.compareByOriginalPositions=function(e,t,n){var r=p(e.source,t.source);return 0!==r?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)||n?r:0!=(r=e.generatedColumn-t.generatedColumn)?r:0!=(r=e.generatedLine-t.generatedLine)?r:p(e.name,t.name)},u.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!=(r=e.generatedColumn-t.generatedColumn)||n?r:0!==(r=p(e.source,t.source))?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)?r:p(e.name,t.name)},u.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!=(n=e.generatedColumn-t.generatedColumn)?n:0!==(n=p(e.source,t.source))?n:0!=(n=e.originalLine-t.originalLine)?n:0!=(n=e.originalColumn-t.originalColumn)?n:p(e.name,t.name)},u.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},u.computeSourceURL=function(e,t,n){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),n){var r=l(n);if(!r)throw new Error("sourceMapURL could not be parsed");if(r.path){var i=r.path.lastIndexOf("/");0<=i&&(r.path=r.path.substring(0,i+1))}t=s(c(r),t)}return a(t)}},{}],106:[function(e,t,n){n.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,n.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,n.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":102,"./lib/source-map-generator":103,"./lib/source-node":104}],107:[function(w,E,e){(function(t){"use strict";function o(e,t){if(e===t)return 0;for(var n=e.length,r=t.length,i=0,o=Math.min(n,r);i<o;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return n<r?-1:r<n?1:0}function a(e){return t.Buffer&&"function"==typeof t.Buffer.isBuffer?t.Buffer.isBuffer(e):!(null==e||!e._isBuffer)}var c=w("util/"),r=Object.prototype.hasOwnProperty,f=Array.prototype.slice,n="foo"===function(){}.name;function s(e){return Object.prototype.toString.call(e)}function u(e){return!a(e)&&("function"==typeof t.ArrayBuffer&&("function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):!!e&&(e instanceof DataView||!!(e.buffer&&e.buffer instanceof ArrayBuffer))))}var l=E.exports=e,i=/\s*function\s+([^\(\s]*)\s*/;function p(e){if(c.isFunction(e)){if(n)return e.name;var t=e.toString().match(i);return t&&t[1]}}function d(e,t){return"string"==typeof e?e.length<t?e:e.slice(0,t):e}function h(e){if(n||!c.isFunction(e))return c.inspect(e);var t=p(e);return"[Function"+(t?": "+t:"")+"]"}function m(e,t,n,r,i){throw new l.AssertionError({message:n,actual:e,expected:t,operator:r,stackStartFunction:i})}function e(e,t){e||m(e,!0,t,"==",l.ok)}function g(e,t,n,r){if(e===t)return!0;if(a(e)&&a(t))return 0===o(e,t);if(c.isDate(e)&&c.isDate(t))return e.getTime()===t.getTime();if(c.isRegExp(e)&&c.isRegExp(t))return e.source===t.source&&e.global===t.global&&e.multiline===t.multiline&&e.lastIndex===t.lastIndex&&e.ignoreCase===t.ignoreCase;if(null!==e&&"object"==typeof e||null!==t&&"object"==typeof t){if(u(e)&&u(t)&&s(e)===s(t)&&!(e instanceof Float32Array||e instanceof Float64Array))return 0===o(new Uint8Array(e.buffer),new Uint8Array(t.buffer));if(a(e)!==a(t))return!1;var i=(r=r||{actual:[],expected:[]}).actual.indexOf(e);return-1!==i&&i===r.expected.indexOf(t)||(r.actual.push(e),r.expected.push(t),function(e,t,n,r){if(null==e||null==t)return!1;if(c.isPrimitive(e)||c.isPrimitive(t))return e===t;if(n&&Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;var i=v(e),o=v(t);if(i&&!o||!i&&o)return!1;if(i)return e=f.call(e),t=f.call(t),g(e,t,n);var a,s,u=_(e),l=_(t);if(u.length!==l.length)return!1;for(u.sort(),l.sort(),s=u.length-1;0<=s;s--)if(u[s]!==l[s])return!1;for(s=u.length-1;0<=s;s--)if(a=u[s],!g(e[a],t[a],n,r))return!1;return!0}(e,t,n,r))}return n?e===t:e==t}function v(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function b(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function y(e,t,n,r){var i;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(r=n,n=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!i&&m(i,n,"Missing expected exception"+r);var o="string"==typeof r,a=!e&&i&&!n;if((!e&&c.isError(i)&&o&&b(i,n)||a)&&m(i,n,"Got unwanted exception"+r),e&&i&&n&&!b(i,n)||!e&&i)throw i}l.AssertionError=function(e){var t;this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=d(h((t=this).actual),128)+" "+t.operator+" "+d(h(t.expected),128),this.generatedMessage=!0);var n=e.stackStartFunction||m;if(Error.captureStackTrace)Error.captureStackTrace(this,n);else{var r=new Error;if(r.stack){var i=r.stack,o=p(n),a=i.indexOf("\n"+o);if(0<=a){var s=i.indexOf("\n",a+1);i=i.substring(s+1)}this.stack=i}}},c.inherits(l.AssertionError,Error),l.fail=m,l.ok=e,l.equal=function(e,t,n){e!=t&&m(e,t,n,"==",l.equal)},l.notEqual=function(e,t,n){e==t&&m(e,t,n,"!=",l.notEqual)},l.deepEqual=function(e,t,n){g(e,t,!1)||m(e,t,n,"deepEqual",l.deepEqual)},l.deepStrictEqual=function(e,t,n){g(e,t,!0)||m(e,t,n,"deepStrictEqual",l.deepStrictEqual)},l.notDeepEqual=function(e,t,n){g(e,t,!1)&&m(e,t,n,"notDeepEqual",l.notDeepEqual)},l.notDeepStrictEqual=function e(t,n,r){g(t,n,!0)&&m(t,n,r,"notDeepStrictEqual",e)},l.strictEqual=function(e,t,n){e!==t&&m(e,t,n,"===",l.strictEqual)},l.notStrictEqual=function(e,t,n){e===t&&m(e,t,n,"!==",l.notStrictEqual)},l.throws=function(e,t,n){y(!0,e,t,n)},l.doesNotThrow=function(e,t,n){y(!1,e,t,n)},l.ifError=function(e){if(e)throw e};var _=Object.keys||function(e){var t=[];for(var n in e)r.call(e,n)&&t.push(n);return t}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"util/":180}],108:[function(e,t,n){"use strict";n.byteLength=function(e){var t=d(e),n=t[0],r=t[1];return 3*(n+r)/4-r},n.toByteArray=function(e){for(var t,n=d(e),r=n[0],i=n[1],o=new p((l=r,c=i,3*(l+c)/4-c)),a=0,s=0<i?r-4:r,u=0;u<s;u+=4)t=f[e.charCodeAt(u)]<<18|f[e.charCodeAt(u+1)]<<12|f[e.charCodeAt(u+2)]<<6|f[e.charCodeAt(u+3)],o[a++]=t>>16&255,o[a++]=t>>8&255,o[a++]=255&t;var l,c;2===i&&(t=f[e.charCodeAt(u)]<<2|f[e.charCodeAt(u+1)]>>4,o[a++]=255&t);1===i&&(t=f[e.charCodeAt(u)]<<10|f[e.charCodeAt(u+1)]<<4|f[e.charCodeAt(u+2)]>>2,o[a++]=t>>8&255,o[a++]=255&t);return o},n.fromByteArray=function(e){for(var t,n=e.length,r=n%3,i=[],o=0,a=n-r;o<a;o+=16383)i.push(u(e,o,a<o+16383?a:o+16383));1===r?(t=e[n-1],i.push(s[t>>2]+s[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],i.push(s[t>>10]+s[t>>4&63]+s[t<<2&63]+"="));return i.join("")};for(var s=[],f=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,o=r.length;i<o;++i)s[i]=r[i],f[r.charCodeAt(i)]=i;function d(e){var t=e.length;if(0<t%4)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function u(e,t,n){for(var r,i,o=[],a=t;a<n;a+=3)r=(e[a]<<16&16711680)+(e[a+1]<<8&65280)+(255&e[a+2]),o.push(s[(i=r)>>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return o.join("")}f["-".charCodeAt(0)]=62,f["_".charCodeAt(0)]=63},{}],109:[function(e,t,n){},{}],110:[function(e,t,n){arguments[4][109][0].apply(n,arguments)},{dup:109}],111:[function(e,t,n){"use strict";var r=e("base64-js"),o=e("ieee754");n.Buffer=f,n.SlowBuffer=function(e){+e!=e&&(e=0);return f.alloc(+e)},n.INSPECT_MAX_BYTES=50;var i=2147483647;function a(e){if(i<e)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=f.prototype,t}function f(e,t,n){if("number"!=typeof e)return s(e,t,n);if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return l(e)}function s(e,t,n){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!f.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var n=0|d(e,t),r=a(n),i=r.write(e,t);i!==n&&(r=r.slice(0,i));return r}(e,t);if(ArrayBuffer.isView(e))return c(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(U(e,ArrayBuffer)||e&&U(e.buffer,ArrayBuffer))return function(e,t,n){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(n||0))throw new RangeError('"length" is outside of buffer bounds');var r;r=void 0===t&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,t):new Uint8Array(e,t,n);return r.__proto__=f.prototype,r}(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return f.from(r,t,n);var i=function(e){if(f.isBuffer(e)){var t=0|p(e.length),n=a(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!=typeof e.length||M(e.length)?a(0):c(e);if("Buffer"===e.type&&Array.isArray(e.data))return c(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return f.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function l(e){return u(e),a(e<0?0:0|p(e))}function c(e){for(var t=e.length<0?0:0|p(e.length),n=a(t),r=0;r<t;r+=1)n[r]=255&e[r];return n}function p(e){if(i<=e)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function d(e,t){if(f.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||U(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var n=e.length,r=2<arguments.length&&!0===arguments[2];if(!r&&0===n)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return L(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return F(e).length;default:if(i)return r?-1:L(e).length;t=(""+t).toLowerCase(),i=!0}}function h(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function m(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):2147483647<n?n=2147483647:n<-2147483648&&(n=-2147483648),M(n=+n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=f.from(t,r)),f.isBuffer(t))return 0===t.length?-1:g(e,t,n,r,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):g(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function g(e,t,n,r,i){var o,a=1,s=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s/=a=2,u/=2,n/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var c=-1;for(o=n;o<s;o++)if(l(e,o)===l(t,-1===c?0:o-c)){if(-1===c&&(c=o),o-c+1===u)return c*a}else-1!==c&&(o-=o-c),c=-1}else for(s<n+u&&(n=s-u),o=n;0<=o;o--){for(var f=!0,p=0;p<u;p++)if(l(e,o+p)!==l(t,p)){f=!1;break}if(f)return o}return-1}function v(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?i<(r=Number(r))&&(r=i):r=i;var o=t.length;o/2<r&&(r=o/2);for(var a=0;a<r;++a){var s=parseInt(t.substr(2*a,2),16);if(M(s))return a;e[n+a]=s}return a}function b(e,t,n,r){return q(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function y(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function _(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i<n;){var o,a,s,u,l=e[i],c=null,f=239<l?4:223<l?3:191<l?2:1;if(i+f<=n)switch(f){case 1:l<128&&(c=l);break;case 2:128==(192&(o=e[i+1]))&&127<(u=(31&l)<<6|63&o)&&(c=u);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&2047<(u=(15&l)<<12|(63&o)<<6|63&a)&&(u<55296||57343<u)&&(c=u);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&65535<(u=(15&l)<<18|(63&o)<<12|(63&a)<<6|63&s)&&u<1114112&&(c=u)}null===c?(c=65533,f=1):65535<c&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),i+=f}return function(e){var t=e.length;if(t<=w)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=w));return n}(r)}n.kMaxLength=i,(f.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}())||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(f.prototype,"parent",{enumerable:!0,get:function(){if(f.isBuffer(this))return this.buffer}}),Object.defineProperty(f.prototype,"offset",{enumerable:!0,get:function(){if(f.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),f.poolSize=8192,f.from=function(e,t,n){return s(e,t,n)},f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array,f.alloc=function(e,t,n){return i=t,o=n,u(r=e),r<=0?a(r):void 0!==i?"string"==typeof o?a(r).fill(i,o):a(r).fill(i):a(r);var r,i,o},f.allocUnsafe=function(e){return l(e)},f.allocUnsafeSlow=function(e){return l(e)},f.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==f.prototype},f.compare=function(e,t){if(U(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),U(t,Uint8Array)&&(t=f.from(t,t.offset,t.byteLength)),!f.isBuffer(e)||!f.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var n=e.length,r=t.length,i=0,o=Math.min(n,r);i<o;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return n<r?-1:r<n?1:0},f.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},f.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return f.alloc(0);var n;if(void 0===t)for(n=t=0;n<e.length;++n)t+=e[n].length;var r=f.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var o=e[n];if(U(o,Uint8Array)&&(o=f.from(o)),!f.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(r,i),i+=o.length}return r},f.byteLength=d,f.prototype._isBuffer=!0,f.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)h(this,t,t+1);return this},f.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)h(this,t,t+3),h(this,t+1,t+2);return this},f.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)h(this,t,t+7),h(this,t+1,t+6),h(this,t+2,t+5),h(this,t+3,t+4);return this},f.prototype.toLocaleString=f.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?_(this,0,e):function(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return x(this,t,n);case"utf8":case"utf-8":return _(this,t,n);case"ascii":return E(this,t,n);case"latin1":case"binary":return A(this,t,n);case"base64":return y(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},f.prototype.equals=function(e){if(!f.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===f.compare(this,e)},f.prototype.inspect=function(){var e="",t=n.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},f.prototype.compare=function(e,t,n,r,i){if(U(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),!f.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(i<=r&&n<=t)return 0;if(i<=r)return-1;if(n<=t)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(o,a),u=this.slice(r,i),l=e.slice(t,n),c=0;c<s;++c)if(u[c]!==l[c]){o=u[c],a=l[c];break}return o<a?-1:a<o?1:0},f.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},f.prototype.indexOf=function(e,t,n){return m(this,e,t,n,!0)},f.prototype.lastIndexOf=function(e,t,n){return m(this,e,t,n,!1)},f.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||i<n)&&(n=i),0<e.length&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o,a,s,u,l,c,f,p,d,h=!1;;)switch(r){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return p=t,d=n,q(L(e,(f=this).length-p),f,p,d);case"ascii":return b(this,e,t,n);case"latin1":case"binary":return b(this,e,t,n);case"base64":return u=this,l=t,c=n,q(F(e),u,l,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return a=t,s=n,q(function(e,t){for(var n,r,i,o=[],a=0;a<e.length&&!((t-=2)<0);++a)n=e.charCodeAt(a),r=n>>8,i=n%256,o.push(i),o.push(r);return o}(e,(o=this).length-a),o,a,s);default:if(h)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),h=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function E(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(127&e[i]);return r}function A(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(e[i]);return r}function x(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||r<n)&&(n=r);for(var i="",o=t;o<n;++o)i+=R(e[o]);return i}function k(e,t,n){for(var r=e.slice(t,n),i="",o=0;o<r.length;o+=2)i+=String.fromCharCode(r[o]+256*r[o+1]);return i}function C(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(n<e+t)throw new RangeError("Trying to access beyond buffer length")}function O(e,t,n,r,i,o){if(!f.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(i<t||t<o)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function S(e,t,n,r,i,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function D(e,t,n,r,i){return t=+t,n>>>=0,i||S(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function T(e,t,n,r,i){return t=+t,n>>>=0,i||S(e,0,n,8),o.write(e,t,n,r,52,8),n+8}f.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):n<e&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):n<t&&(t=n),t<e&&(t=e);var r=this.subarray(e,t);return r.__proto__=f.prototype,r},f.prototype.readUIntLE=function(e,t,n){e>>>=0,t>>>=0,n||C(e,t,this.length);for(var r=this[e],i=1,o=0;++o<t&&(i*=256);)r+=this[e+o]*i;return r},f.prototype.readUIntBE=function(e,t,n){e>>>=0,t>>>=0,n||C(e,t,this.length);for(var r=this[e+--t],i=1;0<t&&(i*=256);)r+=this[e+--t]*i;return r},f.prototype.readUInt8=function(e,t){return e>>>=0,t||C(e,1,this.length),this[e]},f.prototype.readUInt16LE=function(e,t){return e>>>=0,t||C(e,2,this.length),this[e]|this[e+1]<<8},f.prototype.readUInt16BE=function(e,t){return e>>>=0,t||C(e,2,this.length),this[e]<<8|this[e+1]},f.prototype.readUInt32LE=function(e,t){return e>>>=0,t||C(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},f.prototype.readUInt32BE=function(e,t){return e>>>=0,t||C(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},f.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||C(e,t,this.length);for(var r=this[e],i=1,o=0;++o<t&&(i*=256);)r+=this[e+o]*i;return(i*=128)<=r&&(r-=Math.pow(2,8*t)),r},f.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||C(e,t,this.length);for(var r=t,i=1,o=this[e+--r];0<r&&(i*=256);)o+=this[e+--r]*i;return(i*=128)<=o&&(o-=Math.pow(2,8*t)),o},f.prototype.readInt8=function(e,t){return e>>>=0,t||C(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){e>>>=0,t||C(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},f.prototype.readInt16BE=function(e,t){e>>>=0,t||C(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},f.prototype.readInt32LE=function(e,t){return e>>>=0,t||C(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},f.prototype.readInt32BE=function(e,t){return e>>>=0,t||C(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},f.prototype.readFloatLE=function(e,t){return e>>>=0,t||C(e,4,this.length),o.read(this,e,!0,23,4)},f.prototype.readFloatBE=function(e,t){return e>>>=0,t||C(e,4,this.length),o.read(this,e,!1,23,4)},f.prototype.readDoubleLE=function(e,t){return e>>>=0,t||C(e,8,this.length),o.read(this,e,!0,52,8)},f.prototype.readDoubleBE=function(e,t){return e>>>=0,t||C(e,8,this.length),o.read(this,e,!1,52,8)},f.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t>>>=0,n>>>=0,r)||O(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,o=0;for(this[t]=255&e;++o<n&&(i*=256);)this[t+o]=e/i&255;return t+n},f.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t>>>=0,n>>>=0,r)||O(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,o=1;for(this[t+i]=255&e;0<=--i&&(o*=256);)this[t+i]=e/o&255;return t+n},f.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,255,0),this[t]=255&e,t+1},f.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},f.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o<n&&(a*=256);)e<0&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},f.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}var o=n-1,a=1,s=0;for(this[t+o]=255&e;0<=--o&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},f.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},f.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},f.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeFloatLE=function(e,t,n){return D(this,e,t,!0,n)},f.prototype.writeFloatBE=function(e,t,n){return D(this,e,t,!1,n)},f.prototype.writeDoubleLE=function(e,t,n){return T(this,e,t,!0,n)},f.prototype.writeDoubleBE=function(e,t,n){return T(this,e,t,!1,n)},f.prototype.copy=function(e,t,n,r){if(!f.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),0<r&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var i=r-n;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,n,r);else if(this===e&&n<t&&t<r)for(var o=i-1;0<=o;--o)e[o+t]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,r),t);return i},f.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!f.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===e.length){var i=e.charCodeAt(0);("utf8"===r&&i<128||"latin1"===r)&&(e=i)}}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var o;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o<n;++o)this[o]=e;else{var a=f.isBuffer(e)?e:f.from(e,r),s=a.length;if(0===s)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(o=0;o<n-t;++o)this[o+t]=a[o%s]}return this};var B=/[^+/0-9A-Za-z-_]/g;function R(e){return e<16?"0"+e.toString(16):e.toString(16)}function L(e,t){var n;t=t||1/0;for(var r=e.length,i=null,o=[],a=0;a<r;++a){if(55295<(n=e.charCodeAt(a))&&n<57344){if(!i){if(56319<n){-1<(t-=3)&&o.push(239,191,189);continue}if(a+1===r){-1<(t-=3)&&o.push(239,191,189);continue}i=n;continue}if(n<56320){-1<(t-=3)&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&-1<(t-=3)&&o.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function F(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,n,r){for(var i=0;i<r&&!(i+n>=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function U(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function M(e){return e!=e}},{"base64-js":108,ieee754:117}],112:[function(e,t,n){t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},{}],113:[function(e,t,n){(function(e){function t(e){return Object.prototype.toString.call(e)}n.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===t(e)},n.isBoolean=function(e){return"boolean"==typeof e},n.isNull=function(e){return null===e},n.isNullOrUndefined=function(e){return null==e},n.isNumber=function(e){return"number"==typeof e},n.isString=function(e){return"string"==typeof e},n.isSymbol=function(e){return"symbol"==typeof e},n.isUndefined=function(e){return void 0===e},n.isRegExp=function(e){return"[object RegExp]"===t(e)},n.isObject=function(e){return"object"==typeof e&&null!==e},n.isDate=function(e){return"[object Date]"===t(e)},n.isError=function(e){return"[object Error]"===t(e)||e instanceof Error},n.isFunction=function(e){return"function"==typeof e},n.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},n.isBuffer=e.isBuffer}).call(this,{isBuffer:e("../../is-buffer/index.js")})},{"../../is-buffer/index.js":119}],114:[function(e,t,n){var u=Object.create||function(e){var t=function(){};return t.prototype=e,new t},a=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return n},o=Function.prototype.bind||function(e){var t=this;return function(){return t.apply(e,arguments)}};function r(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=u(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}((t.exports=r).EventEmitter=r).prototype._events=void 0,r.prototype._maxListeners=void 0;var i,s=10;try{var l={};Object.defineProperty&&Object.defineProperty(l,"x",{value:0}),i=0===l.x}catch(e){i=!1}function c(e){return void 0===e._maxListeners?r.defaultMaxListeners:e._maxListeners}function f(e,t,n,r){var i,o,a;if("function"!=typeof n)throw new TypeError('"listener" argument must be a function');if((o=e._events)?(o.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),o=e._events),a=o[t]):(o=e._events=u(null),e._eventsCount=0),a){if("function"==typeof a?a=o[t]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),!a.warned&&(i=c(e))&&0<i&&a.length>i){a.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+a.length+' "'+String(t)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=a.length,"object"==typeof console&&console.warn&&console.warn("%s: %s",s.name,s.message)}}else a=o[t]=n,++e._eventsCount;return e}function p(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t<e.length;++t)e[t]=arguments[t];this.listener.apply(this.target,e)}}function d(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=o.call(p,r);return i.listener=n,r.wrapFn=i}function h(e,t,n){var r=e._events;if(!r)return[];var i=r[t];return i?"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(i):g(i,i.length):[]}function m(e){var t=this._events;if(t){var n=t[e];if("function"==typeof n)return 1;if(n)return n.length}return 0}function g(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}i?Object.defineProperty(r,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e||e<0||e!=e)throw new TypeError('"defaultMaxListeners" must be a positive number');s=e}}):r.defaultMaxListeners=s,r.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},r.prototype.getMaxListeners=function(){return c(this)},r.prototype.emit=function(e){var t,n,r,i,o,a,s="error"===e;if(a=this._events)s=s&&null==a.error;else if(!s)return!1;if(s){if(1<arguments.length&&(t=arguments[1]),t instanceof Error)throw t;var u=new Error('Unhandled "error" event. ('+t+")");throw u.context=t,u}if(!(n=a[e]))return!1;var l="function"==typeof n;switch(r=arguments.length){case 1:!function(e,t,n){if(t)e.call(n);else for(var r=e.length,i=g(e,r),o=0;o<r;++o)i[o].call(n)}(n,l,this);break;case 2:!function(e,t,n,r){if(t)e.call(n,r);else for(var i=e.length,o=g(e,i),a=0;a<i;++a)o[a].call(n,r)}(n,l,this,arguments[1]);break;case 3:!function(e,t,n,r,i){if(t)e.call(n,r,i);else for(var o=e.length,a=g(e,o),s=0;s<o;++s)a[s].call(n,r,i)}(n,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,n,r,i,o){if(t)e.call(n,r,i,o);else for(var a=e.length,s=g(e,a),u=0;u<a;++u)s[u].call(n,r,i,o)}(n,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(r-1),o=1;o<r;o++)i[o-1]=arguments[o];!function(e,t,n,r){if(t)e.apply(n,r);else for(var i=e.length,o=g(e,i),a=0;a<i;++a)o[a].apply(n,r)}(n,l,this,i)}return!0},r.prototype.on=r.prototype.addListener=function(e,t){return f(this,e,t,!1)},r.prototype.prependListener=function(e,t){return f(this,e,t,!0)},r.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,d(this,e,t)),this},r.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,d(this,e,t)),this},r.prototype.removeListener=function(e,t){var n,r,i,o,a;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(r=this._events))return this;if(!(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=u(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(i=-1,o=n.length-1;0<=o;o--)if(n[o]===t||n[o].listener===t){a=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():function(e,t){for(var n=t,r=n+1,i=e.length;r<i;n+=1,r+=1)e[n]=e[r];e.pop()}(n,i),1===n.length&&(r[e]=n[0]),r.removeListener&&this.emit("removeListener",e,a||t)}return this},r.prototype.removeAllListeners=function(e){var t,n,r;if(!(n=this._events))return this;if(!n.removeListener)return 0===arguments.length?(this._events=u(null),this._eventsCount=0):n[e]&&(0==--this._eventsCount?this._events=u(null):delete n[e]),this;if(0===arguments.length){var i,o=a(n);for(r=0;r<o.length;++r)"removeListener"!==(i=o[r])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=u(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(t)for(r=t.length-1;0<=r;r--)this.removeListener(e,t[r]);return this},r.prototype.listeners=function(e){return h(this,e,!0)},r.prototype.rawListeners=function(e){return h(this,e,!1)},r.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):m.call(e,t)},r.prototype.listenerCount=m,r.prototype.eventNames=function(){return 0<this._eventsCount?Reflect.ownKeys(this._events):[]}},{}],115:[function(e,B,R){(function(T){!function(e){var t="object"==typeof R&&R,n="object"==typeof B&&B&&B.exports==t&&B,r="object"==typeof T&&T;r.global!==r&&r.window!==r||(e=r);var s=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=/[\x01-\x7F]/g,l=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,c=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,f={"­":"shy","‌":"zwnj","‍":"zwj","‎":"lrm","⁣":"ic","⁢":"it","⁡":"af","‏":"rlm","​":"ZeroWidthSpace","⁠":"NoBreak","̑":"DownBreve","⃛":"tdot","⃜":"DotDot","\t":"Tab","\n":"NewLine"," ":"puncsp"," ":"MediumSpace"," ":"thinsp"," ":"hairsp"," ":"emsp13"," ":"ensp"," ":"emsp14"," ":"emsp"," ":"numsp"," ":"nbsp","  ":"ThickSpace","‾":"oline",_:"lowbar","‐":"dash","–":"ndash","—":"mdash","―":"horbar",",":"comma",";":"semi","⁏":"bsemi",":":"colon","⩴":"Colone","!":"excl","¡":"iexcl","?":"quest","¿":"iquest",".":"period","‥":"nldr","…":"mldr","·":"middot","'":"apos","‘":"lsquo","’":"rsquo","‚":"sbquo","‹":"lsaquo","›":"rsaquo",'"':"quot","“":"ldquo","”":"rdquo","„":"bdquo","«":"laquo","»":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","⌈":"lceil","⌉":"rceil","⌊":"lfloor","⌋":"rfloor","⦅":"lopar","⦆":"ropar","⦋":"lbrke","⦌":"rbrke","⦍":"lbrkslu","⦎":"rbrksld","⦏":"lbrksld","⦐":"rbrkslu","⦑":"langd","⦒":"rangd","⦓":"lparlt","⦔":"rpargt","⦕":"gtlPar","⦖":"ltrPar","⟦":"lobrk","⟧":"robrk","⟨":"lang","⟩":"rang","⟪":"Lang","⟫":"Rang","⟬":"loang","⟭":"roang","❲":"lbbrk","❳":"rbbrk","‖":"Vert","§":"sect","¶":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","‰":"permil","‱":"pertenk","†":"dagger","‡":"Dagger","•":"bull","⁃":"hybull","′":"prime","″":"Prime","‴":"tprime","⁗":"qprime","‵":"bprime","⁁":"caret","`":"grave","´":"acute","˜":"tilde","^":"Hat","¯":"macr","˘":"breve","˙":"dot","¨":"die","˚":"ring","˝":"dblac","¸":"cedil","˛":"ogon","ˆ":"circ","ˇ":"caron","°":"deg","©":"copy","®":"reg","℗":"copysr","℘":"wp","℞":"rx","℧":"mho","℩":"iiota","←":"larr","↚":"nlarr","→":"rarr","↛":"nrarr","↑":"uarr","↓":"darr","↔":"harr","↮":"nharr","↕":"varr","↖":"nwarr","↗":"nearr","↘":"searr","↙":"swarr","↝":"rarrw","↝̸":"nrarrw","↞":"Larr","↟":"Uarr","↠":"Rarr","↡":"Darr","↢":"larrtl","↣":"rarrtl","↤":"mapstoleft","↥":"mapstoup","↦":"map","↧":"mapstodown","↩":"larrhk","↪":"rarrhk","↫":"larrlp","↬":"rarrlp","↭":"harrw","↰":"lsh","↱":"rsh","↲":"ldsh","↳":"rdsh","↵":"crarr","↶":"cularr","↷":"curarr","↺":"olarr","↻":"orarr","↼":"lharu","↽":"lhard","↾":"uharr","↿":"uharl","⇀":"rharu","⇁":"rhard","⇂":"dharr","⇃":"dharl","⇄":"rlarr","⇅":"udarr","⇆":"lrarr","⇇":"llarr","⇈":"uuarr","⇉":"rrarr","⇊":"ddarr","⇋":"lrhar","⇌":"rlhar","⇐":"lArr","⇍":"nlArr","⇑":"uArr","⇒":"rArr","⇏":"nrArr","⇓":"dArr","⇔":"iff","⇎":"nhArr","⇕":"vArr","⇖":"nwArr","⇗":"neArr","⇘":"seArr","⇙":"swArr","⇚":"lAarr","⇛":"rAarr","⇝":"zigrarr","⇤":"larrb","⇥":"rarrb","⇵":"duarr","⇽":"loarr","⇾":"roarr","⇿":"hoarr","∀":"forall","∁":"comp","∂":"part","∂̸":"npart","∃":"exist","∄":"nexist","∅":"empty","∇":"Del","∈":"in","∉":"notin","∋":"ni","∌":"notni","϶":"bepsi","∏":"prod","∐":"coprod","∑":"sum","+":"plus","±":"pm","÷":"div","×":"times","<":"lt","≮":"nlt","<⃒":"nvlt","=":"equals","≠":"ne","=⃥":"bne","⩵":"Equal",">":"gt","≯":"ngt",">⃒":"nvgt","¬":"not","|":"vert","¦":"brvbar","−":"minus","∓":"mp","∔":"plusdo","⁄":"frasl","∖":"setmn","∗":"lowast","∘":"compfn","√":"Sqrt","∝":"prop","∞":"infin","∟":"angrt","∠":"ang","∠⃒":"nang","∡":"angmsd","∢":"angsph","∣":"mid","∤":"nmid","∥":"par","∦":"npar","∧":"and","∨":"or","∩":"cap","∩︀":"caps","∪":"cup","∪︀":"cups","∫":"int","∬":"Int","∭":"tint","⨌":"qint","∮":"oint","∯":"Conint","∰":"Cconint","∱":"cwint","∲":"cwconint","∳":"awconint","∴":"there4","∵":"becaus","∶":"ratio","∷":"Colon","∸":"minusd","∺":"mDDot","∻":"homtht","∼":"sim","≁":"nsim","∼⃒":"nvsim","∽":"bsim","∽̱":"race","∾":"ac","∾̳":"acE","∿":"acd","≀":"wr","≂":"esim","≂̸":"nesim","≃":"sime","≄":"nsime","≅":"cong","≇":"ncong","≆":"simne","≈":"ap","≉":"nap","≊":"ape","≋":"apid","≋̸":"napid","≌":"bcong","≍":"CupCap","≭":"NotCupCap","≍⃒":"nvap","≎":"bump","≎̸":"nbump","≏":"bumpe","≏̸":"nbumpe","≐":"doteq","≐̸":"nedot","≑":"eDot","≒":"efDot","≓":"erDot","≔":"colone","≕":"ecolon","≖":"ecir","≗":"cire","≙":"wedgeq","≚":"veeeq","≜":"trie","≟":"equest","≡":"equiv","≢":"nequiv","≡⃥":"bnequiv","≤":"le","≰":"nle","≤⃒":"nvle","≥":"ge","≱":"nge","≥⃒":"nvge","≦":"lE","≦̸":"nlE","≧":"gE","≧̸":"ngE","≨︀":"lvnE","≨":"lnE","≩":"gnE","≩︀":"gvnE","≪":"ll","≪̸":"nLtv","≪⃒":"nLt","≫":"gg","≫̸":"nGtv","≫⃒":"nGt","≬":"twixt","≲":"lsim","≴":"nlsim","≳":"gsim","≵":"ngsim","≶":"lg","≸":"ntlg","≷":"gl","≹":"ntgl","≺":"pr","⊀":"npr","≻":"sc","⊁":"nsc","≼":"prcue","⋠":"nprcue","≽":"sccue","⋡":"nsccue","≾":"prsim","≿":"scsim","≿̸":"NotSucceedsTilde","⊂":"sub","⊄":"nsub","⊂⃒":"vnsub","⊃":"sup","⊅":"nsup","⊃⃒":"vnsup","⊆":"sube","⊈":"nsube","⊇":"supe","⊉":"nsupe","⊊︀":"vsubne","⊊":"subne","⊋︀":"vsupne","⊋":"supne","⊍":"cupdot","⊎":"uplus","⊏":"sqsub","⊏̸":"NotSquareSubset","⊐":"sqsup","⊐̸":"NotSquareSuperset","⊑":"sqsube","⋢":"nsqsube","⊒":"sqsupe","⋣":"nsqsupe","⊓":"sqcap","⊓︀":"sqcaps","⊔":"sqcup","⊔︀":"sqcups","⊕":"oplus","⊖":"ominus","⊗":"otimes","⊘":"osol","⊙":"odot","⊚":"ocir","⊛":"oast","⊝":"odash","⊞":"plusb","⊟":"minusb","⊠":"timesb","⊡":"sdotb","⊢":"vdash","⊬":"nvdash","⊣":"dashv","⊤":"top","⊥":"bot","⊧":"models","⊨":"vDash","⊭":"nvDash","⊩":"Vdash","⊮":"nVdash","⊪":"Vvdash","⊫":"VDash","⊯":"nVDash","⊰":"prurel","⊲":"vltri","⋪":"nltri","⊳":"vrtri","⋫":"nrtri","⊴":"ltrie","⋬":"nltrie","⊴⃒":"nvltrie","⊵":"rtrie","⋭":"nrtrie","⊵⃒":"nvrtrie","⊶":"origof","⊷":"imof","⊸":"mumap","⊹":"hercon","⊺":"intcal","⊻":"veebar","⊽":"barvee","⊾":"angrtvb","⊿":"lrtri","⋀":"Wedge","⋁":"Vee","⋂":"xcap","⋃":"xcup","⋄":"diam","⋅":"sdot","⋆":"Star","⋇":"divonx","⋈":"bowtie","⋉":"ltimes","⋊":"rtimes","⋋":"lthree","⋌":"rthree","⋍":"bsime","⋎":"cuvee","⋏":"cuwed","⋐":"Sub","⋑":"Sup","⋒":"Cap","⋓":"Cup","⋔":"fork","⋕":"epar","⋖":"ltdot","⋗":"gtdot","⋘":"Ll","⋘̸":"nLl","⋙":"Gg","⋙̸":"nGg","⋚︀":"lesg","⋚":"leg","⋛":"gel","⋛︀":"gesl","⋞":"cuepr","⋟":"cuesc","⋦":"lnsim","⋧":"gnsim","⋨":"prnsim","⋩":"scnsim","⋮":"vellip","⋯":"ctdot","⋰":"utdot","⋱":"dtdot","⋲":"disin","⋳":"isinsv","⋴":"isins","⋵":"isindot","⋵̸":"notindot","⋶":"notinvc","⋷":"notinvb","⋹":"isinE","⋹̸":"notinE","⋺":"nisd","⋻":"xnis","⋼":"nis","⋽":"notnivc","⋾":"notnivb","⌅":"barwed","⌆":"Barwed","⌌":"drcrop","⌍":"dlcrop","⌎":"urcrop","⌏":"ulcrop","⌐":"bnot","⌒":"profline","⌓":"profsurf","⌕":"telrec","⌖":"target","⌜":"ulcorn","⌝":"urcorn","⌞":"dlcorn","⌟":"drcorn","⌢":"frown","⌣":"smile","⌭":"cylcty","⌮":"profalar","⌶":"topbot","⌽":"ovbar","⌿":"solbar","⍼":"angzarr","⎰":"lmoust","⎱":"rmoust","⎴":"tbrk","⎵":"bbrk","⎶":"bbrktbrk","⏜":"OverParenthesis","⏝":"UnderParenthesis","⏞":"OverBrace","⏟":"UnderBrace","⏢":"trpezium","⏧":"elinters","␣":"blank","─":"boxh","│":"boxv","┌":"boxdr","┐":"boxdl","└":"boxur","┘":"boxul","├":"boxvr","┤":"boxvl","┬":"boxhd","┴":"boxhu","┼":"boxvh","═":"boxH","║":"boxV","╒":"boxdR","╓":"boxDr","╔":"boxDR","╕":"boxdL","╖":"boxDl","╗":"boxDL","╘":"boxuR","╙":"boxUr","╚":"boxUR","╛":"boxuL","╜":"boxUl","╝":"boxUL","╞":"boxvR","╟":"boxVr","╠":"boxVR","╡":"boxvL","╢":"boxVl","╣":"boxVL","╤":"boxHd","╥":"boxhD","╦":"boxHD","╧":"boxHu","╨":"boxhU","╩":"boxHU","╪":"boxvH","╫":"boxVh","╬":"boxVH","▀":"uhblk","▄":"lhblk","█":"block","░":"blk14","▒":"blk12","▓":"blk34","□":"squ","▪":"squf","▫":"EmptyVerySmallSquare","▭":"rect","▮":"marker","▱":"fltns","△":"xutri","▴":"utrif","▵":"utri","▸":"rtrif","▹":"rtri","▽":"xdtri","▾":"dtrif","▿":"dtri","◂":"ltrif","◃":"ltri","◊":"loz","○":"cir","◬":"tridot","◯":"xcirc","◸":"ultri","◹":"urtri","◺":"lltri","◻":"EmptySmallSquare","◼":"FilledSmallSquare","★":"starf","☆":"star","☎":"phone","♀":"female","♂":"male","♠":"spades","♣":"clubs","♥":"hearts","♦":"diams","♪":"sung","✓":"check","✗":"cross","✠":"malt","✶":"sext","❘":"VerticalSeparator","⟈":"bsolhsub","⟉":"suphsol","⟵":"xlarr","⟶":"xrarr","⟷":"xharr","⟸":"xlArr","⟹":"xrArr","⟺":"xhArr","⟼":"xmap","⟿":"dzigrarr","⤂":"nvlArr","⤃":"nvrArr","⤄":"nvHarr","⤅":"Map","⤌":"lbarr","⤍":"rbarr","⤎":"lBarr","⤏":"rBarr","⤐":"RBarr","⤑":"DDotrahd","⤒":"UpArrowBar","⤓":"DownArrowBar","⤖":"Rarrtl","⤙":"latail","⤚":"ratail","⤛":"lAtail","⤜":"rAtail","⤝":"larrfs","⤞":"rarrfs","⤟":"larrbfs","⤠":"rarrbfs","⤣":"nwarhk","⤤":"nearhk","⤥":"searhk","⤦":"swarhk","⤧":"nwnear","⤨":"toea","⤩":"tosa","⤪":"swnwar","⤳":"rarrc","⤳̸":"nrarrc","⤵":"cudarrr","⤶":"ldca","⤷":"rdca","⤸":"cudarrl","⤹":"larrpl","⤼":"curarrm","⤽":"cularrp","⥅":"rarrpl","⥈":"harrcir","⥉":"Uarrocir","⥊":"lurdshar","⥋":"ldrushar","⥎":"LeftRightVector","⥏":"RightUpDownVector","⥐":"DownLeftRightVector","⥑":"LeftUpDownVector","⥒":"LeftVectorBar","⥓":"RightVectorBar","⥔":"RightUpVectorBar","⥕":"RightDownVectorBar","⥖":"DownLeftVectorBar","⥗":"DownRightVectorBar","⥘":"LeftUpVectorBar","⥙":"LeftDownVectorBar","⥚":"LeftTeeVector","⥛":"RightTeeVector","⥜":"RightUpTeeVector","⥝":"RightDownTeeVector","⥞":"DownLeftTeeVector","⥟":"DownRightTeeVector","⥠":"LeftUpTeeVector","⥡":"LeftDownTeeVector","⥢":"lHar","⥣":"uHar","⥤":"rHar","⥥":"dHar","⥦":"luruhar","⥧":"ldrdhar","⥨":"ruluhar","⥩":"rdldhar","⥪":"lharul","⥫":"llhard","⥬":"rharul","⥭":"lrhard","⥮":"udhar","⥯":"duhar","⥰":"RoundImplies","⥱":"erarr","⥲":"simrarr","⥳":"larrsim","⥴":"rarrsim","⥵":"rarrap","⥶":"ltlarr","⥸":"gtrarr","⥹":"subrarr","⥻":"suplarr","⥼":"lfisht","⥽":"rfisht","⥾":"ufisht","⥿":"dfisht","⦚":"vzigzag","⦜":"vangrt","⦝":"angrtvbd","⦤":"ange","⦥":"range","⦦":"dwangle","⦧":"uwangle","⦨":"angmsdaa","⦩":"angmsdab","⦪":"angmsdac","⦫":"angmsdad","⦬":"angmsdae","⦭":"angmsdaf","⦮":"angmsdag","⦯":"angmsdah","⦰":"bemptyv","⦱":"demptyv","⦲":"cemptyv","⦳":"raemptyv","⦴":"laemptyv","⦵":"ohbar","⦶":"omid","⦷":"opar","⦹":"operp","⦻":"olcross","⦼":"odsold","⦾":"olcir","⦿":"ofcir","⧀":"olt","⧁":"ogt","⧂":"cirscir","⧃":"cirE","⧄":"solb","⧅":"bsolb","⧉":"boxbox","⧍":"trisb","⧎":"rtriltri","⧏":"LeftTriangleBar","⧏̸":"NotLeftTriangleBar","⧐":"RightTriangleBar","⧐̸":"NotRightTriangleBar","⧜":"iinfin","⧝":"infintie","⧞":"nvinfin","⧣":"eparsl","⧤":"smeparsl","⧥":"eqvparsl","⧫":"lozf","⧴":"RuleDelayed","⧶":"dsol","⨀":"xodot","⨁":"xoplus","⨂":"xotime","⨄":"xuplus","⨆":"xsqcup","⨍":"fpartint","⨐":"cirfnint","⨑":"awint","⨒":"rppolint","⨓":"scpolint","⨔":"npolint","⨕":"pointint","⨖":"quatint","⨗":"intlarhk","⨢":"pluscir","⨣":"plusacir","⨤":"simplus","⨥":"plusdu","⨦":"plussim","⨧":"plustwo","⨩":"mcomma","⨪":"minusdu","⨭":"loplus","⨮":"roplus","⨯":"Cross","⨰":"timesd","⨱":"timesbar","⨳":"smashp","⨴":"lotimes","⨵":"rotimes","⨶":"otimesas","⨷":"Otimes","⨸":"odiv","⨹":"triplus","⨺":"triminus","⨻":"tritime","⨼":"iprod","⨿":"amalg","⩀":"capdot","⩂":"ncup","⩃":"ncap","⩄":"capand","⩅":"cupor","⩆":"cupcap","⩇":"capcup","⩈":"cupbrcap","⩉":"capbrcup","⩊":"cupcup","⩋":"capcap","⩌":"ccups","⩍":"ccaps","⩐":"ccupssm","⩓":"And","⩔":"Or","⩕":"andand","⩖":"oror","⩗":"orslope","⩘":"andslope","⩚":"andv","⩛":"orv","⩜":"andd","⩝":"ord","⩟":"wedbar","⩦":"sdote","⩪":"simdot","⩭":"congdot","⩭̸":"ncongdot","⩮":"easter","⩯":"apacir","⩰":"apE","⩰̸":"napE","⩱":"eplus","⩲":"pluse","⩳":"Esim","⩷":"eDDot","⩸":"equivDD","⩹":"ltcir","⩺":"gtcir","⩻":"ltquest","⩼":"gtquest","⩽":"les","⩽̸":"nles","⩾":"ges","⩾̸":"nges","⩿":"lesdot","⪀":"gesdot","⪁":"lesdoto","⪂":"gesdoto","⪃":"lesdotor","⪄":"gesdotol","⪅":"lap","⪆":"gap","⪇":"lne","⪈":"gne","⪉":"lnap","⪊":"gnap","⪋":"lEg","⪌":"gEl","⪍":"lsime","⪎":"gsime","⪏":"lsimg","⪐":"gsiml","⪑":"lgE","⪒":"glE","⪓":"lesges","⪔":"gesles","⪕":"els","⪖":"egs","⪗":"elsdot","⪘":"egsdot","⪙":"el","⪚":"eg","⪝":"siml","⪞":"simg","⪟":"simlE","⪠":"simgE","⪡":"LessLess","⪡̸":"NotNestedLessLess","⪢":"GreaterGreater","⪢̸":"NotNestedGreaterGreater","⪤":"glj","⪥":"gla","⪦":"ltcc","⪧":"gtcc","⪨":"lescc","⪩":"gescc","⪪":"smt","⪫":"lat","⪬":"smte","⪬︀":"smtes","⪭":"late","⪭︀":"lates","⪮":"bumpE","⪯":"pre","⪯̸":"npre","⪰":"sce","⪰̸":"nsce","⪳":"prE","⪴":"scE","⪵":"prnE","⪶":"scnE","⪷":"prap","⪸":"scap","⪹":"prnap","⪺":"scnap","⪻":"Pr","⪼":"Sc","⪽":"subdot","⪾":"supdot","⪿":"subplus","⫀":"supplus","⫁":"submult","⫂":"supmult","⫃":"subedot","⫄":"supedot","⫅":"subE","⫅̸":"nsubE","⫆":"supE","⫆̸":"nsupE","⫇":"subsim","⫈":"supsim","⫋︀":"vsubnE","⫋":"subnE","⫌︀":"vsupnE","⫌":"supnE","⫏":"csub","⫐":"csup","⫑":"csube","⫒":"csupe","⫓":"subsup","⫔":"supsub","⫕":"subsub","⫖":"supsup","⫗":"suphsub","⫘":"supdsub","⫙":"forkv","⫚":"topfork","⫛":"mlcp","⫤":"Dashv","⫦":"Vdashl","⫧":"Barv","⫨":"vBar","⫩":"vBarv","⫫":"Vbar","⫬":"Not","⫭":"bNot","⫮":"rnmid","⫯":"cirmid","⫰":"midcir","⫱":"topcir","⫲":"nhpar","⫳":"parsim","⫽":"parsl","⫽⃥":"nparsl","♭":"flat","♮":"natur","♯":"sharp","¤":"curren","¢":"cent",$:"dollar","£":"pound","¥":"yen","€":"euro","¹":"sup1","½":"half","⅓":"frac13","¼":"frac14","⅕":"frac15","⅙":"frac16","⅛":"frac18","²":"sup2","⅔":"frac23","⅖":"frac25","³":"sup3","¾":"frac34","⅗":"frac35","⅜":"frac38","⅘":"frac45","⅚":"frac56","⅝":"frac58","⅞":"frac78","𝒶":"ascr","𝕒":"aopf","𝔞":"afr","𝔸":"Aopf","𝔄":"Afr","𝒜":"Ascr","ª":"ordf","á":"aacute","Á":"Aacute","à":"agrave","À":"Agrave","ă":"abreve","Ă":"Abreve","â":"acirc","Â":"Acirc","å":"aring","Å":"angst","ä":"auml","Ä":"Auml","ã":"atilde","Ã":"Atilde","ą":"aogon","Ą":"Aogon","ā":"amacr","Ā":"Amacr","æ":"aelig","Æ":"AElig","𝒷":"bscr","𝕓":"bopf","𝔟":"bfr","𝔹":"Bopf","ℬ":"Bscr","𝔅":"Bfr","𝔠":"cfr","𝒸":"cscr","𝕔":"copf","ℭ":"Cfr","𝒞":"Cscr","ℂ":"Copf","ć":"cacute","Ć":"Cacute","ĉ":"ccirc","Ĉ":"Ccirc","č":"ccaron","Č":"Ccaron","ċ":"cdot","Ċ":"Cdot","ç":"ccedil","Ç":"Ccedil","℅":"incare","𝔡":"dfr","ⅆ":"dd","𝕕":"dopf","𝒹":"dscr","𝒟":"Dscr","𝔇":"Dfr","ⅅ":"DD","𝔻":"Dopf","ď":"dcaron","Ď":"Dcaron","đ":"dstrok","Đ":"Dstrok","ð":"eth","Ð":"ETH","ⅇ":"ee","ℯ":"escr","𝔢":"efr","𝕖":"eopf","ℰ":"Escr","𝔈":"Efr","𝔼":"Eopf","é":"eacute","É":"Eacute","è":"egrave","È":"Egrave","ê":"ecirc","Ê":"Ecirc","ě":"ecaron","Ě":"Ecaron","ë":"euml","Ë":"Euml","ė":"edot","Ė":"Edot","ę":"eogon","Ę":"Eogon","ē":"emacr","Ē":"Emacr","𝔣":"ffr","𝕗":"fopf","𝒻":"fscr","𝔉":"Ffr","𝔽":"Fopf","ℱ":"Fscr","ff":"fflig","ffi":"ffilig","ffl":"ffllig","fi":"filig",fj:"fjlig","fl":"fllig","ƒ":"fnof","ℊ":"gscr","𝕘":"gopf","𝔤":"gfr","𝒢":"Gscr","𝔾":"Gopf","𝔊":"Gfr","ǵ":"gacute","ğ":"gbreve","Ğ":"Gbreve","ĝ":"gcirc","Ĝ":"Gcirc","ġ":"gdot","Ġ":"Gdot","Ģ":"Gcedil","𝔥":"hfr","ℎ":"planckh","𝒽":"hscr","𝕙":"hopf","ℋ":"Hscr","ℌ":"Hfr","ℍ":"Hopf","ĥ":"hcirc","Ĥ":"Hcirc","ℏ":"hbar","ħ":"hstrok","Ħ":"Hstrok","𝕚":"iopf","𝔦":"ifr","𝒾":"iscr","ⅈ":"ii","𝕀":"Iopf","ℐ":"Iscr","ℑ":"Im","í":"iacute","Í":"Iacute","ì":"igrave","Ì":"Igrave","î":"icirc","Î":"Icirc","ï":"iuml","Ï":"Iuml","ĩ":"itilde","Ĩ":"Itilde","İ":"Idot","į":"iogon","Į":"Iogon","ī":"imacr","Ī":"Imacr","ij":"ijlig","IJ":"IJlig","ı":"imath","𝒿":"jscr","𝕛":"jopf","𝔧":"jfr","𝒥":"Jscr","𝔍":"Jfr","𝕁":"Jopf","ĵ":"jcirc","Ĵ":"Jcirc","ȷ":"jmath","𝕜":"kopf","𝓀":"kscr","𝔨":"kfr","𝒦":"Kscr","𝕂":"Kopf","𝔎":"Kfr","ķ":"kcedil","Ķ":"Kcedil","𝔩":"lfr","𝓁":"lscr","ℓ":"ell","𝕝":"lopf","ℒ":"Lscr","𝔏":"Lfr","𝕃":"Lopf","ĺ":"lacute","Ĺ":"Lacute","ľ":"lcaron","Ľ":"Lcaron","ļ":"lcedil","Ļ":"Lcedil","ł":"lstrok","Ł":"Lstrok","ŀ":"lmidot","Ŀ":"Lmidot","𝔪":"mfr","𝕞":"mopf","𝓂":"mscr","𝔐":"Mfr","𝕄":"Mopf","ℳ":"Mscr","𝔫":"nfr","𝕟":"nopf","𝓃":"nscr","ℕ":"Nopf","𝒩":"Nscr","𝔑":"Nfr","ń":"nacute","Ń":"Nacute","ň":"ncaron","Ň":"Ncaron","ñ":"ntilde","Ñ":"Ntilde","ņ":"ncedil","Ņ":"Ncedil","№":"numero","ŋ":"eng","Ŋ":"ENG","𝕠":"oopf","𝔬":"ofr","ℴ":"oscr","𝒪":"Oscr","𝔒":"Ofr","𝕆":"Oopf","º":"ordm","ó":"oacute","Ó":"Oacute","ò":"ograve","Ò":"Ograve","ô":"ocirc","Ô":"Ocirc","ö":"ouml","Ö":"Ouml","ő":"odblac","Ő":"Odblac","õ":"otilde","Õ":"Otilde","ø":"oslash","Ø":"Oslash","ō":"omacr","Ō":"Omacr","œ":"oelig","Œ":"OElig","𝔭":"pfr","𝓅":"pscr","𝕡":"popf","ℙ":"Popf","𝔓":"Pfr","𝒫":"Pscr","𝕢":"qopf","𝔮":"qfr","𝓆":"qscr","𝒬":"Qscr","𝔔":"Qfr","ℚ":"Qopf","ĸ":"kgreen","𝔯":"rfr","𝕣":"ropf","𝓇":"rscr","ℛ":"Rscr","ℜ":"Re","ℝ":"Ropf","ŕ":"racute","Ŕ":"Racute","ř":"rcaron","Ř":"Rcaron","ŗ":"rcedil","Ŗ":"Rcedil","𝕤":"sopf","𝓈":"sscr","𝔰":"sfr","𝕊":"Sopf","𝔖":"Sfr","𝒮":"Sscr","Ⓢ":"oS","ś":"sacute","Ś":"Sacute","ŝ":"scirc","Ŝ":"Scirc","š":"scaron","Š":"Scaron","ş":"scedil","Ş":"Scedil","ß":"szlig","𝔱":"tfr","𝓉":"tscr","𝕥":"topf","𝒯":"Tscr","𝔗":"Tfr","𝕋":"Topf","ť":"tcaron","Ť":"Tcaron","ţ":"tcedil","Ţ":"Tcedil","™":"trade","ŧ":"tstrok","Ŧ":"Tstrok","𝓊":"uscr","𝕦":"uopf","𝔲":"ufr","𝕌":"Uopf","𝔘":"Ufr","𝒰":"Uscr","ú":"uacute","Ú":"Uacute","ù":"ugrave","Ù":"Ugrave","ŭ":"ubreve","Ŭ":"Ubreve","û":"ucirc","Û":"Ucirc","ů":"uring","Ů":"Uring","ü":"uuml","Ü":"Uuml","ű":"udblac","Ű":"Udblac","ũ":"utilde","Ũ":"Utilde","ų":"uogon","Ų":"Uogon","ū":"umacr","Ū":"Umacr","𝔳":"vfr","𝕧":"vopf","𝓋":"vscr","𝔙":"Vfr","𝕍":"Vopf","𝒱":"Vscr","𝕨":"wopf","𝓌":"wscr","𝔴":"wfr","𝒲":"Wscr","𝕎":"Wopf","𝔚":"Wfr","ŵ":"wcirc","Ŵ":"Wcirc","𝔵":"xfr","𝓍":"xscr","𝕩":"xopf","𝕏":"Xopf","𝔛":"Xfr","𝒳":"Xscr","𝔶":"yfr","𝓎":"yscr","𝕪":"yopf","𝒴":"Yscr","𝔜":"Yfr","𝕐":"Yopf","ý":"yacute","Ý":"Yacute","ŷ":"ycirc","Ŷ":"Ycirc","ÿ":"yuml","Ÿ":"Yuml","𝓏":"zscr","𝔷":"zfr","𝕫":"zopf","ℨ":"Zfr","ℤ":"Zopf","𝒵":"Zscr","ź":"zacute","Ź":"Zacute","ž":"zcaron","Ž":"Zcaron","ż":"zdot","Ż":"Zdot","Ƶ":"imped","þ":"thorn","Þ":"THORN","ʼn":"napos","α":"alpha","Α":"Alpha","β":"beta","Β":"Beta","γ":"gamma","Γ":"Gamma","δ":"delta","Δ":"Delta","ε":"epsi","ϵ":"epsiv","Ε":"Epsilon","ϝ":"gammad","Ϝ":"Gammad","ζ":"zeta","Ζ":"Zeta","η":"eta","Η":"Eta","θ":"theta","ϑ":"thetav","Θ":"Theta","ι":"iota","Ι":"Iota","κ":"kappa","ϰ":"kappav","Κ":"Kappa","λ":"lambda","Λ":"Lambda","μ":"mu","µ":"micro","Μ":"Mu","ν":"nu","Ν":"Nu","ξ":"xi","Ξ":"Xi","ο":"omicron","Ο":"Omicron","π":"pi","ϖ":"piv","Π":"Pi","ρ":"rho","ϱ":"rhov","Ρ":"Rho","σ":"sigma","Σ":"Sigma","ς":"sigmaf","τ":"tau","Τ":"Tau","υ":"upsi","Υ":"Upsilon","ϒ":"Upsi","φ":"phi","ϕ":"phiv","Φ":"Phi","χ":"chi","Χ":"Chi","ψ":"psi","Ψ":"Psi","ω":"omega","Ω":"ohm","а":"acy","А":"Acy","б":"bcy","Б":"Bcy","в":"vcy","В":"Vcy","г":"gcy","Г":"Gcy","ѓ":"gjcy","Ѓ":"GJcy","д":"dcy","Д":"Dcy","ђ":"djcy","Ђ":"DJcy","е":"iecy","Е":"IEcy","ё":"iocy","Ё":"IOcy","є":"jukcy","Є":"Jukcy","ж":"zhcy","Ж":"ZHcy","з":"zcy","З":"Zcy","ѕ":"dscy","Ѕ":"DScy","и":"icy","И":"Icy","і":"iukcy","І":"Iukcy","ї":"yicy","Ї":"YIcy","й":"jcy","Й":"Jcy","ј":"jsercy","Ј":"Jsercy","к":"kcy","К":"Kcy","ќ":"kjcy","Ќ":"KJcy","л":"lcy","Л":"Lcy","љ":"ljcy","Љ":"LJcy","м":"mcy","М":"Mcy","н":"ncy","Н":"Ncy","њ":"njcy","Њ":"NJcy","о":"ocy","О":"Ocy","п":"pcy","П":"Pcy","р":"rcy","Р":"Rcy","с":"scy","С":"Scy","т":"tcy","Т":"Tcy","ћ":"tshcy","Ћ":"TSHcy","у":"ucy","У":"Ucy","ў":"ubrcy","Ў":"Ubrcy","ф":"fcy","Ф":"Fcy","х":"khcy","Х":"KHcy","ц":"tscy","Ц":"TScy","ч":"chcy","Ч":"CHcy","џ":"dzcy","Џ":"DZcy","ш":"shcy","Ш":"SHcy","щ":"shchcy","Щ":"SHCHcy","ъ":"hardcy","Ъ":"HARDcy","ы":"ycy","Ы":"Ycy","ь":"softcy","Ь":"SOFTcy","э":"ecy","Э":"Ecy","ю":"yucy","Ю":"YUcy","я":"yacy","Я":"YAcy","ℵ":"aleph","ℶ":"beth","ℷ":"gimel","ℸ":"daleth"},p=/["&'<>`]/g,i={'"':"&quot;","&":"&amp;","'":"&#x27;","<":"&lt;",">":"&gt;","`":"&#x60;"},o=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,d=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,a=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,v={aacute:"á",Aacute:"Á",abreve:"ă",Abreve:"Ă",ac:"∾",acd:"∿",acE:"∾̳",acirc:"â",Acirc:"Â",acute:"´",acy:"а",Acy:"А",aelig:"æ",AElig:"Æ",af:"⁡",afr:"𝔞",Afr:"𝔄",agrave:"à",Agrave:"À",alefsym:"ℵ",aleph:"ℵ",alpha:"α",Alpha:"Α",amacr:"ā",Amacr:"Ā",amalg:"⨿",amp:"&",AMP:"&",and:"∧",And:"⩓",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",Aogon:"Ą",aopf:"𝕒",Aopf:"𝔸",ap:"≈",apacir:"⩯",ape:"≊",apE:"⩰",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",aring:"å",Aring:"Å",ascr:"𝒶",Ascr:"𝒜",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",Bcy:"Б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",beta:"β",Beta:"Β",beth:"ℶ",between:"≬",bfr:"𝔟",Bfr:"𝔅",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bNot:"⫭",bopf:"𝕓",Bopf:"𝔹",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxhD:"╥",boxHd:"╤",boxHD:"╦",boxhu:"┴",boxhU:"╨",boxHu:"╧",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpe:"≏",bumpE:"⪮",bumpeq:"≏",Bumpeq:"≎",cacute:"ć",Cacute:"Ć",cap:"∩",Cap:"⋒",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",ccaron:"č",Ccaron:"Č",ccedil:"ç",Ccedil:"Ç",ccirc:"ĉ",Ccirc:"Ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",Cdot:"Ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",chcy:"ч",CHcy:"Ч",check:"✓",checkmark:"✓",chi:"χ",Chi:"Χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cire:"≗",cirE:"⧃",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",colone:"≔",Colone:"⩴",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",cscr:"𝒸",Cscr:"𝒞",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",Cup:"⋓",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",dArr:"⇓",Darr:"↡",dash:"‐",dashv:"⊣",Dashv:"⫤",dbkarow:"⤏",dblac:"˝",dcaron:"ď",Dcaron:"Ď",dcy:"д",Dcy:"Д",dd:"ⅆ",DD:"ⅅ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",delta:"δ",Delta:"Δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",Dfr:"𝔇",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",DJcy:"Ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",Dopf:"𝔻",dot:"˙",Dot:"¨",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",downarrow:"↓",Downarrow:"⇓",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",Dscr:"𝒟",dscy:"ѕ",DScy:"Ѕ",dsol:"⧶",dstrok:"đ",Dstrok:"Đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",DZcy:"Џ",dzigrarr:"⟿",eacute:"é",Eacute:"É",easter:"⩮",ecaron:"ě",Ecaron:"Ě",ecir:"≖",ecirc:"ê",Ecirc:"Ê",ecolon:"≕",ecy:"э",Ecy:"Э",eDDot:"⩷",edot:"ė",eDot:"≑",Edot:"Ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",Efr:"𝔈",eg:"⪚",egrave:"è",Egrave:"È",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",Emacr:"Ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",eng:"ŋ",ENG:"Ŋ",ensp:" ",eogon:"ę",Eogon:"Ę",eopf:"𝕖",Eopf:"𝔼",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",Epsilon:"Ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",esim:"≂",Esim:"⩳",eta:"η",Eta:"Η",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",fcy:"ф",Fcy:"Ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",Ffr:"𝔉",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",Fopf:"𝔽",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",gamma:"γ",Gamma:"Γ",gammad:"ϝ",Gammad:"Ϝ",gap:"⪆",gbreve:"ğ",Gbreve:"Ğ",Gcedil:"Ģ",gcirc:"ĝ",Gcirc:"Ĝ",gcy:"г",Gcy:"Г",gdot:"ġ",Gdot:"Ġ",ge:"≥",gE:"≧",gel:"⋛",gEl:"⪌",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",Gfr:"𝔊",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",GJcy:"Ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",Gopf:"𝔾",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",gscr:"ℊ",Gscr:"𝒢",gsim:"≳",gsime:"⪎",gsiml:"⪐",gt:">",Gt:"≫",GT:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",HARDcy:"Ъ",harr:"↔",hArr:"⇔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",hcirc:"ĥ",Hcirc:"Ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",hstrok:"ħ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",iacute:"í",Iacute:"Í",ic:"⁣",icirc:"î",Icirc:"Î",icy:"и",Icy:"И",Idot:"İ",iecy:"е",IEcy:"Е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",igrave:"ì",Igrave:"Ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",IJlig:"IJ",Im:"ℑ",imacr:"ī",Imacr:"Ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",Int:"∬",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",iocy:"ё",IOcy:"Ё",iogon:"į",Iogon:"Į",iopf:"𝕚",Iopf:"𝕀",iota:"ι",Iota:"Ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",Itilde:"Ĩ",iukcy:"і",Iukcy:"І",iuml:"ï",Iuml:"Ï",jcirc:"ĵ",Jcirc:"Ĵ",jcy:"й",Jcy:"Й",jfr:"𝔧",Jfr:"𝔍",jmath:"ȷ",jopf:"𝕛",Jopf:"𝕁",jscr:"𝒿",Jscr:"𝒥",jsercy:"ј",Jsercy:"Ј",jukcy:"є",Jukcy:"Є",kappa:"κ",Kappa:"Κ",kappav:"ϰ",kcedil:"ķ",Kcedil:"Ķ",kcy:"к",Kcy:"К",kfr:"𝔨",Kfr:"𝔎",kgreen:"ĸ",khcy:"х",KHcy:"Х",kjcy:"ќ",KJcy:"Ќ",kopf:"𝕜",Kopf:"𝕂",kscr:"𝓀",Kscr:"𝒦",lAarr:"⇚",lacute:"ĺ",Lacute:"Ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",Lambda:"Λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larr:"←",lArr:"⇐",Larr:"↞",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",lAtail:"⤛",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",Lcaron:"Ľ",lcedil:"ļ",Lcedil:"Ļ",lceil:"⌈",lcub:"{",lcy:"л",Lcy:"Л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",leftarrow:"←",Leftarrow:"⇐",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",Leftrightarrow:"⇔",LeftRightArrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",leg:"⋚",lEg:"⪋",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",Lfr:"𝔏",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",LJcy:"Љ",ll:"≪",Ll:"⋘",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",lmidot:"ŀ",Lmidot:"Ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",Longleftarrow:"⟸",LongLeftArrow:"⟵",longleftrightarrow:"⟷",Longleftrightarrow:"⟺",LongLeftRightArrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",Longrightarrow:"⟹",LongRightArrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",Lopf:"𝕃",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",Lstrok:"Ł",lt:"<",Lt:"≪",LT:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",Map:"⤅",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",Mcy:"М",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",mfr:"𝔪",Mfr:"𝔐",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",Mopf:"𝕄",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",mu:"μ",Mu:"Μ",multimap:"⊸",mumap:"⊸",nabla:"∇",nacute:"ń",Nacute:"Ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",Ncaron:"Ň",ncedil:"ņ",Ncedil:"Ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",Ncy:"Н",ndash:"–",ne:"≠",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",nfr:"𝔫",Nfr:"𝔑",nge:"≱",ngE:"≧̸",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",ngt:"≯",nGt:"≫⃒",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",NJcy:"Њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nle:"≰",nlE:"≦̸",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nlt:"≮",nLt:"≪⃒",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",not:"¬",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrarr:"↛",nrArr:"⇏",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",Nscr:"𝒩",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsube:"⊈",nsubE:"⫅̸",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupe:"⊉",nsupE:"⫆̸",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntilde:"ñ",Ntilde:"Ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",Nu:"Ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",oacute:"ó",Oacute:"Ó",oast:"⊛",ocir:"⊚",ocirc:"ô",Ocirc:"Ô",ocy:"о",Ocy:"О",odash:"⊝",odblac:"ő",Odblac:"Ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",OElig:"Œ",ofcir:"⦿",ofr:"𝔬",Ofr:"𝔒",ogon:"˛",ograve:"ò",Ograve:"Ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",Omacr:"Ō",omega:"ω",Omega:"Ω",omicron:"ο",Omicron:"Ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",Oopf:"𝕆",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",or:"∨",Or:"⩔",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",oscr:"ℴ",Oscr:"𝒪",oslash:"ø",Oslash:"Ø",osol:"⊘",otilde:"õ",Otilde:"Õ",otimes:"⊗",Otimes:"⨷",otimesas:"⨶",ouml:"ö",Ouml:"Ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",pcy:"п",Pcy:"П",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",Pfr:"𝔓",phi:"φ",Phi:"Φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",Pi:"Π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",pr:"≺",Pr:"⪻",prap:"⪷",prcue:"≼",pre:"⪯",prE:"⪳",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",Pscr:"𝒫",psi:"ψ",Psi:"Ψ",puncsp:" ",qfr:"𝔮",Qfr:"𝔔",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",qscr:"𝓆",Qscr:"𝒬",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",racute:"ŕ",Racute:"Ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarr:"→",rArr:"⇒",Rarr:"↠",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",Rarrtl:"⤖",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",Rcaron:"Ř",rcedil:"ŗ",Rcedil:"Ŗ",rceil:"⌉",rcub:"}",rcy:"р",Rcy:"Р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",Rho:"Ρ",rhov:"ϱ",RightAngleBracket:"⟩",rightarrow:"→",Rightarrow:"⇒",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",sacute:"ś",Sacute:"Ś",sbquo:"‚",sc:"≻",Sc:"⪼",scap:"⪸",scaron:"š",Scaron:"Š",sccue:"≽",sce:"⪰",scE:"⪴",scedil:"ş",Scedil:"Ş",scirc:"ŝ",Scirc:"Ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",Scy:"С",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",Sfr:"𝔖",sfrown:"⌢",sharp:"♯",shchcy:"щ",SHCHcy:"Щ",shcy:"ш",SHcy:"Ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",sigma:"σ",Sigma:"Σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",SOFTcy:"Ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",Sopf:"𝕊",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",Sscr:"𝒮",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",Star:"⋆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",sube:"⊆",subE:"⫅",subedot:"⫃",submult:"⫁",subne:"⊊",subnE:"⫋",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup:"⊃",Sup:"⋑",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supe:"⊇",supE:"⫆",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supne:"⊋",supnE:"⫌",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",tau:"τ",Tau:"Τ",tbrk:"⎴",tcaron:"ť",Tcaron:"Ť",tcedil:"ţ",Tcedil:"Ţ",tcy:"т",Tcy:"Т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",Tfr:"𝔗",there4:"∴",therefore:"∴",Therefore:"∴",theta:"θ",Theta:"Θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",thorn:"þ",THORN:"Þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",Topf:"𝕋",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",Tscr:"𝒯",tscy:"ц",TScy:"Ц",tshcy:"ћ",TSHcy:"Ћ",tstrok:"ŧ",Tstrok:"Ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uacute:"ú",Uacute:"Ú",uarr:"↑",uArr:"⇑",Uarr:"↟",Uarrocir:"⥉",ubrcy:"ў",Ubrcy:"Ў",ubreve:"ŭ",Ubreve:"Ŭ",ucirc:"û",Ucirc:"Û",ucy:"у",Ucy:"У",udarr:"⇅",udblac:"ű",Udblac:"Ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",Ufr:"𝔘",ugrave:"ù",Ugrave:"Ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",Umacr:"Ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",uogon:"ų",Uogon:"Ų",uopf:"𝕦",Uopf:"𝕌",uparrow:"↑",Uparrow:"⇑",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",updownarrow:"↕",Updownarrow:"⇕",UpDownArrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",upsilon:"υ",Upsilon:"Υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",Uring:"Ů",urtri:"◹",uscr:"𝓊",Uscr:"𝒰",utdot:"⋰",utilde:"ũ",Utilde:"Ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uuml:"ü",Uuml:"Ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",vcy:"в",Vcy:"В",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",vee:"∨",Vee:"⋁",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",vfr:"𝔳",Vfr:"𝔙",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",Vopf:"𝕍",vprop:"∝",vrtri:"⊳",vscr:"𝓋",Vscr:"𝒱",vsubne:"⊊︀",vsubnE:"⫋︀",vsupne:"⊋︀",vsupnE:"⫌︀",Vvdash:"⊪",vzigzag:"⦚",wcirc:"ŵ",Wcirc:"Ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",wfr:"𝔴",Wfr:"𝔚",wopf:"𝕨",Wopf:"𝕎",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",Wscr:"𝒲",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",Xfr:"𝔛",xharr:"⟷",xhArr:"⟺",xi:"ξ",Xi:"Ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",Xopf:"𝕏",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",xscr:"𝓍",Xscr:"𝒳",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacute:"ý",Yacute:"Ý",yacy:"я",YAcy:"Я",ycirc:"ŷ",Ycirc:"Ŷ",ycy:"ы",Ycy:"Ы",yen:"¥",yfr:"𝔶",Yfr:"𝔜",yicy:"ї",YIcy:"Ї",yopf:"𝕪",Yopf:"𝕐",yscr:"𝓎",Yscr:"𝒴",yucy:"ю",YUcy:"Ю",yuml:"ÿ",Yuml:"Ÿ",zacute:"ź",Zacute:"Ź",zcaron:"ž",Zcaron:"Ž",zcy:"з",Zcy:"З",zdot:"ż",Zdot:"Ż",zeetrf:"ℨ",ZeroWidthSpace:"​",zeta:"ζ",Zeta:"Ζ",zfr:"𝔷",Zfr:"ℨ",zhcy:"ж",ZHcy:"Ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",zscr:"𝓏",Zscr:"𝒵",zwj:"‍",zwnj:"‌"},b={aacute:"á",Aacute:"Á",acirc:"â",Acirc:"Â",acute:"´",aelig:"æ",AElig:"Æ",agrave:"à",Agrave:"À",amp:"&",AMP:"&",aring:"å",Aring:"Å",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",brvbar:"¦",ccedil:"ç",Ccedil:"Ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",Eacute:"É",ecirc:"ê",Ecirc:"Ê",egrave:"è",Egrave:"È",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",iacute:"í",Iacute:"Í",icirc:"î",Icirc:"Î",iexcl:"¡",igrave:"ì",Igrave:"Ì",iquest:"¿",iuml:"ï",Iuml:"Ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",Ntilde:"Ñ",oacute:"ó",Oacute:"Ó",ocirc:"ô",Ocirc:"Ô",ograve:"ò",Ograve:"Ò",ordf:"ª",ordm:"º",oslash:"ø",Oslash:"Ø",otilde:"õ",Otilde:"Õ",ouml:"ö",Ouml:"Ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",THORN:"Þ",times:"×",uacute:"ú",Uacute:"Ú",ucirc:"û",Ucirc:"Û",ugrave:"ù",Ugrave:"Ù",uml:"¨",uuml:"ü",Uuml:"Ü",yacute:"ý",Yacute:"Ý",yen:"¥",yuml:"ÿ"},h={0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},m=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,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,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],g=String.fromCharCode,y={}.hasOwnProperty,_=function(e,t){return y.call(e,t)},w=function(e,t){if(!e)return t;var n,r={};for(n in t)r[n]=_(e,n)?e[n]:t[n];return r},E=function(e,t){var n="";return 55296<=e&&e<=57343||1114111<e?(t&&k("character reference outside the permissible Unicode range"),"�"):_(h,e)?(t&&k("disallowed character reference"),h[e]):(t&&function(e,t){for(var n=-1,r=e.length;++n<r;)if(e[n]==t)return!0;return!1}(m,e)&&k("disallowed character reference"),65535<e&&(n+=g((e-=65536)>>>10&1023|55296),e=56320|1023&e),n+=g(e))},A=function(e){return"&#x"+e.toString(16).toUpperCase()+";"},x=function(e){return"&#"+e+";"},k=function(e){throw Error("Parse error: "+e)},C=function(e,t){(t=w(t,C.options)).strict&&d.test(e)&&k("forbidden code point");var n=t.encodeEverything,r=t.useNamedReferences,i=t.allowUnsafeSymbols,o=t.decimal?x:A,a=function(e){return o(e.charCodeAt(0))};return n?(e=e.replace(u,function(e){return r&&_(f,e)?"&"+f[e]+";":a(e)}),r&&(e=e.replace(/&gt;\u20D2/g,"&nvgt;").replace(/&lt;\u20D2/g,"&nvlt;").replace(/&#x66;&#x6A;/g,"&fjlig;")),r&&(e=e.replace(c,function(e){return"&"+f[e]+";"}))):r?(i||(e=e.replace(p,function(e){return"&"+f[e]+";"})),e=(e=e.replace(/&gt;\u20D2/g,"&nvgt;").replace(/&lt;\u20D2/g,"&nvlt;")).replace(c,function(e){return"&"+f[e]+";"})):i||(e=e.replace(p,a)),e.replace(s,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return o(1024*(t-55296)+n-56320+65536)}).replace(l,a)};C.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var O=function(e,m){var g=(m=w(m,O.options)).strict;return g&&o.test(e)&&k("malformed character reference"),e.replace(a,function(e,t,n,r,i,o,a,s,u){var l,c,f,p,d,h;return t?v[d=t]:n?(d=n,(h=r)&&m.isAttributeValue?(g&&"="==h&&k("`&` did not start a character reference"),e):(g&&k("named character reference was not terminated by a semicolon"),b[d]+(h||""))):i?(f=i,c=o,g&&!c&&k("character reference was not terminated by a semicolon"),l=parseInt(f,10),E(l,g)):a?(p=a,c=s,g&&!c&&k("character reference was not terminated by a semicolon"),l=parseInt(p,16),E(l,g)):(g&&k("named character reference was not terminated by a semicolon"),e)})};O.options={isAttributeValue:!1,strict:!1};var S={version:"1.2.0",encode:C,decode:O,escape:function(e){return e.replace(p,function(e){return i[e]})},unescape:O};if("function"==typeof define&&"object"==typeof define.amd&&define.amd)define(function(){return S});else if(t&&!t.nodeType)if(n)n.exports=S;else for(var D in S)_(S,D)&&(t[D]=S[D]);else e.he=S}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],116:[function(e,t,n){var r=e("http"),i=e("url"),o=t.exports;for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);function s(e){if("string"==typeof e&&(e=i.parse(e)),e.protocol||(e.protocol="https:"),"https:"!==e.protocol)throw new Error('Protocol "'+e.protocol+'" not supported. Expected "https:"');return e}o.request=function(e,t){return e=s(e),r.request.call(this,e,t)},o.get=function(e,t){return e=s(e),r.get.call(this,e,t)}},{http:156,url:175}],117:[function(e,t,n){n.read=function(e,t,n,r,i){var o,a,s=8*i-r-1,u=(1<<s)-1,l=u>>1,c=-7,f=n?i-1:0,p=n?-1:1,d=e[t+f];for(f+=p,o=d&(1<<-c)-1,d>>=-c,c+=s;0<c;o=256*o+e[t+f],f+=p,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=r;0<c;a=256*a+e[t+f],f+=p,c-=8);if(0===o)o=1-l;else{if(o===u)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,r),o-=l}return(d?-1:1)*a*Math.pow(2,o-r)},n.write=function(e,t,n,r,i,o){var a,s,u,l=8*o-i-1,c=(1<<l)-1,f=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,h=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),2<=(t+=1<=a+f?p/u:p*Math.pow(2,1-f))*u&&(a++,u/=2),c<=a+f?(s=0,a=c):1<=a+f?(s=(t*u-1)*Math.pow(2,i),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));8<=i;e[n+d]=255&s,d+=h,s/=256,i-=8);for(a=a<<i|s,l+=i;0<l;e[n+d]=255&a,d+=h,a/=256,l-=8);e[n+d-h]|=128*m}},{}],118:[function(e,t,n){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},{}],119:[function(e,t,n){function r(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}t.exports=function(e){return null!=e&&(r(e)||"function"==typeof(t=e).readFloatLE&&"function"==typeof t.slice&&r(t.slice(0,0))||!!e._isBuffer);var t}},{}],120:[function(e,t,n){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],121:[function(e,t,n){n.endianness=function(){return"LE"},n.hostname=function(){return"undefined"!=typeof location?location.hostname:""},n.loadavg=function(){return[]},n.uptime=function(){return 0},n.freemem=function(){return Number.MAX_VALUE},n.totalmem=function(){return Number.MAX_VALUE},n.cpus=function(){return[]},n.type=function(){return"Browser"},n.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},n.networkInterfaces=n.getNetworkInterfaces=function(){return{}},n.arch=function(){return"javascript"},n.platform=function(){return"browser"},n.tmpdir=n.tmpDir=function(){return"/tmp"},n.EOL="\n",n.homedir=function(){return"/"}},{}],122:[function(e,t,l){(function(i){function o(e,t){for(var n=0,r=e.length-1;0<=r;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function a(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}l.resolve=function(){for(var e="",t=!1,n=arguments.length-1;-1<=n&&!t;n--){var r=0<=n?arguments[n]:i.cwd();if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return(t?"/":"")+(e=o(a(e.split("/"),function(e){return!!e}),!t).join("/"))||"."},l.normalize=function(e){var t=l.isAbsolute(e),n="/"===r(e,-1);return(e=o(a(e.split("/"),function(e){return!!e}),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e},l.isAbsolute=function(e){return"/"===e.charAt(0)},l.join=function(){var e=Array.prototype.slice.call(arguments,0);return l.normalize(a(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},l.relative=function(e,t){function n(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;0<=n&&""===e[n];n--);return n<t?[]:e.slice(t,n-t+1)}e=l.resolve(e).substr(1),t=l.resolve(t).substr(1);for(var r=n(e.split("/")),i=n(t.split("/")),o=Math.min(r.length,i.length),a=o,s=0;s<o;s++)if(r[s]!==i[s]){a=s;break}var u=[];for(s=a;s<r.length;s++)u.push("..");return(u=u.concat(i.slice(a))).join("/")},l.sep="/",l.delimiter=":",l.dirname=function(e){if("string"!=typeof e&&(e+=""),0===e.length)return".";for(var t=e.charCodeAt(0),n=47===t,r=-1,i=!0,o=e.length-1;1<=o;--o)if(47===(t=e.charCodeAt(o))){if(!i){r=o;break}}else i=!1;return-1===r?n?"/":".":n&&1===r?"/":e.slice(0,r)},l.basename=function(e,t){var n=function(e){"string"!=typeof e&&(e+="");var t,n=0,r=-1,i=!0;for(t=e.length-1;0<=t;--t)if(47===e.charCodeAt(t)){if(!i){n=t+1;break}}else-1===r&&(i=!1,r=t+1);return-1===r?"":e.slice(n,r)}(e);return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},l.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,n=0,r=-1,i=!0,o=0,a=e.length-1;0<=a;--a){var s=e.charCodeAt(a);if(47===s){if(i)continue;n=a+1;break}-1===r&&(i=!1,r=a+1),46===s?-1===t?t=a:1!==o&&(o=1):-1!==t&&(o=-1)}return-1===t||-1===r||0===o||1===o&&t===r-1&&t===n+1?"":e.slice(t,r)};var r="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,e("_process"))},{_process:124}],123:[function(e,t,n){(function(s){"use strict";!s.version||0===s.version.indexOf("v0.")||0===s.version.indexOf("v1.")&&0!==s.version.indexOf("v1.8.")?t.exports={nextTick:function(e,t,n,r){if("function"!=typeof e)throw new TypeError('"callback" argument must be a function');var i,o,a=arguments.length;switch(a){case 0:case 1:return s.nextTick(e);case 2:return s.nextTick(function(){e.call(null,t)});case 3:return s.nextTick(function(){e.call(null,t,n)});case 4:return s.nextTick(function(){e.call(null,t,n,r)});default:for(i=new Array(a-1),o=0;o<i.length;)i[o++]=arguments[o];return s.nextTick(function(){e.apply(null,i)})}}}:t.exports=s}).call(this,e("_process"))},{_process:124}],124:[function(e,t,n){var r,i,o=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function u(t){if(r===setTimeout)return setTimeout(t,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{i="function"==typeof clearTimeout?clearTimeout:s}catch(e){i=s}}();var l,c=[],f=!1,p=-1;function d(){f&&l&&(f=!1,l.length?c=l.concat(c):p=-1,c.length&&h())}function h(){if(!f){var e=u(d);f=!0;for(var t=c.length;t;){for(l=c,c=[];++p<t;)l&&l[p].run();p=-1,t=c.length}l=null,f=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===s||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(e)}}function m(e,t){this.fun=e,this.array=t}function g(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new m(e,t)),1!==c.length||f||u(h)},m.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=g,o.addListener=g,o.once=g,o.off=g,o.removeListener=g,o.removeAllListeners=g,o.emit=g,o.prependListener=g,o.prependOnceListener=g,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}],125:[function(e,R,L){(function(B){!function(e){var t="object"==typeof L&&L&&!L.nodeType&&L,n="object"==typeof R&&R&&!R.nodeType&&R,r="object"==typeof B&&B;r.global!==r&&r.window!==r&&r.self!==r||(e=r);var i,o,v=2147483647,b=36,y=1,_=26,a=38,s=700,w=72,E=128,A="-",u=/^xn--/,l=/[^\x20-\x7E]/,c=/[\x2E\u3002\uFF0E\uFF61]/g,f={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},p=b-y,x=Math.floor,k=String.fromCharCode;function C(e){throw new RangeError(f[e])}function d(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function h(e,t){var n=e.split("@"),r="";return 1<n.length&&(r=n[0]+"@",e=n[1]),r+d((e=e.replace(c,".")).split("."),t).join(".")}function O(e){for(var t,n,r=[],i=0,o=e.length;i<o;)55296<=(t=e.charCodeAt(i++))&&t<=56319&&i<o?56320==(64512&(n=e.charCodeAt(i++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),i--):r.push(t);return r}function S(e){return d(e,function(e){var t="";return 65535<e&&(t+=k((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=k(e)}).join("")}function D(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function T(e,t,n){var r=0;for(e=n?x(e/s):e>>1,e+=x(e/t);p*_>>1<e;r+=b)e=x(e/p);return x(r+(p+1)*e/(e+a))}function m(e){var t,n,r,i,o,a,s,u,l,c,f,p=[],d=e.length,h=0,m=E,g=w;for((n=e.lastIndexOf(A))<0&&(n=0),r=0;r<n;++r)128<=e.charCodeAt(r)&&C("not-basic"),p.push(e.charCodeAt(r));for(i=0<n?n+1:0;i<d;){for(o=h,a=1,s=b;d<=i&&C("invalid-input"),f=e.charCodeAt(i++),(b<=(u=f-48<10?f-22:f-65<26?f-65:f-97<26?f-97:b)||u>x((v-h)/a))&&C("overflow"),h+=u*a,!(u<(l=s<=g?y:g+_<=s?_:s-g));s+=b)a>x(v/(c=b-l))&&C("overflow"),a*=c;g=T(h-o,t=p.length+1,0==o),x(h/t)>v-m&&C("overflow"),m+=x(h/t),h%=t,p.splice(h++,0,m)}return S(p)}function g(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,m,g=[];for(p=(e=O(e)).length,t=E,o=w,a=n=0;a<p;++a)(f=e[a])<128&&g.push(k(f));for(r=i=g.length,i&&g.push(A);r<p;){for(s=v,a=0;a<p;++a)t<=(f=e[a])&&f<s&&(s=f);for(s-t>x((v-n)/(d=r+1))&&C("overflow"),n+=(s-t)*d,t=s,a=0;a<p;++a)if((f=e[a])<t&&++n>v&&C("overflow"),f==t){for(u=n,l=b;!(u<(c=l<=o?y:o+_<=l?_:l-o));l+=b)m=u-c,h=b-c,g.push(k(D(c+m%h,0))),u=x(m/h);g.push(k(D(u,0))),o=T(n,d,r==i),n=0,++r}++n,++t}return g.join("")}if(i={version:"1.4.1",ucs2:{decode:O,encode:S},decode:m,encode:g,toASCII:function(e){return h(e,function(e){return l.test(e)?"xn--"+g(e):e})},toUnicode:function(e){return h(e,function(e){return u.test(e)?m(e.slice(4).toLowerCase()):e})}},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return i});else if(t&&n)if(R.exports==t)n.exports=i;else for(o in i)i.hasOwnProperty(o)&&(t[o]=i[o]);else e.punycode=i}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],126:[function(e,t,n){"use strict";t.exports=function(e,t,n,r){t=t||"&",n=n||"=";var i={};if("string"!=typeof e||0===e.length)return i;var o=/\+/g;e=e.split(t);var a=1e3;r&&"number"==typeof r.maxKeys&&(a=r.maxKeys);var s,u,l=e.length;0<a&&a<l&&(l=a);for(var c=0;c<l;++c){var f,p,d,h,m=e[c].replace(o,"%20"),g=m.indexOf(n);p=0<=g?(f=m.substr(0,g),m.substr(g+1)):(f=m,""),d=decodeURIComponent(f),h=decodeURIComponent(p),s=i,u=d,Object.prototype.hasOwnProperty.call(s,u)?v(i[d])?i[d].push(h):i[d]=[i[d],h]:i[d]=h}return i};var v=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],127:[function(e,t,n){"use strict";var o=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(n,r,i,e){return r=r||"&",i=i||"=",null===n&&(n=void 0),"object"==typeof n?s(u(n),function(e){var t=encodeURIComponent(o(e))+i;return a(n[e])?s(n[e],function(e){return t+encodeURIComponent(o(e))}).join(r):t+encodeURIComponent(o(n[e]))}).join(r):e?encodeURIComponent(o(e))+i+encodeURIComponent(o(n)):""};var a=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function s(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var u=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},{}],128:[function(e,t,n){"use strict";n.decode=n.parse=e("./decode"),n.encode=n.stringify=e("./encode")},{"./decode":126,"./encode":127}],129:[function(e,t,n){"use strict";var r=e("process-nextick-args"),i=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};t.exports=f;var o=e("core-util-is");o.inherits=e("inherits");var a=e("./_stream_readable"),s=e("./_stream_writable");o.inherits(f,a);for(var u=i(s.prototype),l=0;l<u.length;l++){var c=u[l];f.prototype[c]||(f.prototype[c]=s.prototype[c])}function f(e){if(!(this instanceof f))return new f(e);a.call(this,e),s.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",p)}function p(){this.allowHalfOpen||this._writableState.ended||r.nextTick(d,this)}function d(e){e.end()}Object.defineProperty(f.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(f.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}}),f.prototype._destroy=function(e,t){this.push(null),this.end(),r.nextTick(t,e)}},{"./_stream_readable":131,"./_stream_writable":133,"core-util-is":113,inherits:118,"process-nextick-args":123}],130:[function(e,t,n){"use strict";t.exports=o;var r=e("./_stream_transform"),i=e("core-util-is");function o(e){if(!(this instanceof o))return new o(e);r.call(this,e)}i.inherits=e("inherits"),i.inherits(o,r),o.prototype._transform=function(e,t,n){n(null,e)}},{"./_stream_transform":132,"core-util-is":113,inherits:118}],131:[function(L,F,e){(function(g,e){"use strict";var v=L("process-nextick-args");F.exports=p;var a,b=L("isarray");p.ReadableState=o;L("events").EventEmitter;var y=function(e,t){return e.listeners(t).length},i=L("./internal/streams/stream"),l=L("safe-buffer").Buffer,c=e.Uint8Array||function(){};var t=L("core-util-is");t.inherits=L("inherits");var n=L("util"),_=void 0;_=n&&n.debuglog?n.debuglog("stream"):function(){};var s,u=L("./internal/streams/BufferList"),r=L("./internal/streams/destroy");t.inherits(p,i);var f=["error","close","destroy","pause","resume"];function o(e,t){e=e||{};var n=t instanceof(a=a||L("./_stream_duplex"));this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,i=e.readableHighWaterMark,o=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n&&(i||0===i)?i:o,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new u,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(s||(s=L("string_decoder/").StringDecoder),this.decoder=new s(e.encoding),this.encoding=e.encoding)}function p(e){if(a=a||L("./_stream_duplex"),!(this instanceof p))return new p(e);this._readableState=new o(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),i.call(this)}function d(e,t,n,r,i){var o,a,s,u=e._readableState;null===t?(u.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,E(e)}(e,u)):(i||(o=function(e,t){var n;r=t,l.isBuffer(r)||r instanceof c||"string"==typeof t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));var r;return n}(u,t)),o?e.emit("error",o):u.objectMode||t&&0<t.length?("string"==typeof t||u.objectMode||Object.getPrototypeOf(t)===l.prototype||(a=t,t=l.from(a)),r?u.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):h(e,u,t,!0):u.ended?e.emit("error",new Error("stream.push() after EOF")):(u.reading=!1,u.decoder&&!n?(t=u.decoder.write(t),u.objectMode||0!==t.length?h(e,u,t,!1):x(e,u)):h(e,u,t,!1))):r||(u.reading=!1));return!(s=u).ended&&(s.needReadable||s.length<s.highWaterMark||0===s.length)}function h(e,t,n,r){t.flowing&&0===t.length&&!t.sync?(e.emit("data",n),e.read(0)):(t.length+=t.objectMode?1:n.length,r?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&E(e)),x(e,t)}Object.defineProperty(p.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),p.prototype.destroy=r.destroy,p.prototype._undestroy=r.undestroy,p.prototype._destroy=function(e,t){this.push(null),t(e)},p.prototype.push=function(e,t){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof e&&((t=t||r.defaultEncoding)!==r.encoding&&(e=l.from(e,t),t=""),n=!0),d(this,e,t,!1,n)},p.prototype.unshift=function(e){return d(this,e,null,!0,!1)},p.prototype.isPaused=function(){return!1===this._readableState.flowing},p.prototype.setEncoding=function(e){return s||(s=L("string_decoder/").StringDecoder),this._readableState.decoder=new s(e),this._readableState.encoding=e,this};var m=8388608;function w(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=(m<=(n=e)?n=m:(n--,n|=n>>>1,n|=n>>>2,n|=n>>>4,n|=n>>>8,n|=n>>>16,n++),n)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0));var n}function E(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(_("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?v.nextTick(A,e):A(e))}function A(e){_("emit readable"),e.emit("readable"),S(e)}function x(e,t){t.readingMore||(t.readingMore=!0,v.nextTick(k,e,t))}function k(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(_("maybeReadMore read 0"),e.read(0),n!==t.length);)n=t.length;t.readingMore=!1}function C(e){_("readable nexttick read 0"),e.read(0)}function O(e,t){t.reading||(_("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),S(e),t.flowing&&!t.reading&&e.read(0)}function S(e){var t=e._readableState;for(_("flow",t.flowing);t.flowing&&null!==e.read(););}function D(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;e<t.head.data.length?(r=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):r=e===t.head.data.length?t.shift():n?function(e,t){var n=t.head,r=1,i=n.data;e-=i.length;for(;n=n.next;){var o=n.data,a=e>o.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n).data=o.slice(a);break}++r}return t.length-=r,i}(e,t):function(e,t){var n=l.allocUnsafe(e),r=t.head,i=1;r.data.copy(n),e-=r.data.length;for(;r=r.next;){var o=r.data,a=e>o.length?o.length:e;if(o.copy(n,n.length-e,0,a),0===(e-=a)){a===o.length?(++i,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r).data=o.slice(a);break}++i}return t.length-=i,n}(e,t);return r}(e,t.buffer,t.decoder),n);var n}function T(e){var t=e._readableState;if(0<t.length)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,v.nextTick(B,t,e))}function B(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function R(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}p.prototype.read=function(e){_("read",e),e=parseInt(e,10);var t=this._readableState,n=e;if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return _("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?T(this):E(this),null;if(0===(e=w(e,t))&&t.ended)return 0===t.length&&T(this),null;var r,i=t.needReadable;return _("need readable",i),(0===t.length||t.length-e<t.highWaterMark)&&_("length less than watermark",i=!0),t.ended||t.reading?_("reading or ended",i=!1):i&&(_("do read"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=w(n,t))),null===(r=0<e?D(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&T(this)),null!==r&&this.emit("data",r),r},p.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},p.prototype.pipe=function(n,e){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=n;break;case 1:i.pipes=[i.pipes,n];break;default:i.pipes.push(n)}i.pipesCount+=1,_("pipe count=%d opts=%j",i.pipesCount,e);var t=(!e||!1!==e.end)&&n!==g.stdout&&n!==g.stderr?a:m;function o(e,t){_("onunpipe"),e===r&&t&&!1===t.hasUnpiped&&(t.hasUnpiped=!0,_("cleanup"),n.removeListener("close",d),n.removeListener("finish",h),n.removeListener("drain",u),n.removeListener("error",p),n.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",m),r.removeListener("data",f),l=!0,!i.awaitDrain||n._writableState&&!n._writableState.needDrain||u())}function a(){_("onend"),n.end()}i.endEmitted?v.nextTick(t):r.once("end",t),n.on("unpipe",o);var s,u=(s=r,function(){var e=s._readableState;_("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&y(s,"data")&&(e.flowing=!0,S(s))});n.on("drain",u);var l=!1;var c=!1;function f(e){_("ondata"),(c=!1)!==n.write(e)||c||((1===i.pipesCount&&i.pipes===n||1<i.pipesCount&&-1!==R(i.pipes,n))&&!l&&(_("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,c=!0),r.pause())}function p(e){_("onerror",e),m(),n.removeListener("error",p),0===y(n,"error")&&n.emit("error",e)}function d(){n.removeListener("finish",h),m()}function h(){_("onfinish"),n.removeListener("close",d),m()}function m(){_("unpipe"),r.unpipe(n)}return r.on("data",f),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?b(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(n,"error",p),n.once("close",d),n.once("finish",h),n.emit("pipe",r),i.flowing||(_("pipe resume"),r.resume()),n},p.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o<i;o++)r[o].emit("unpipe",this,n);return this}var a=R(t.pipes,e);return-1===a||(t.pipes.splice(a,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,n)),this},p.prototype.addListener=p.prototype.on=function(e,t){var n=i.prototype.on.call(this,e,t);if("data"===e)!1!==this._readableState.flowing&&this.resume();else if("readable"===e){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&E(this):v.nextTick(C,this))}return n},p.prototype.resume=function(){var e,t,n=this._readableState;return n.flowing||(_("resume"),n.flowing=!0,e=this,(t=n).resumeScheduled||(t.resumeScheduled=!0,v.nextTick(O,e,t))),this},p.prototype.pause=function(){return _("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(_("pause"),this._readableState.flowing=!1,this.emit("pause")),this},p.prototype.wrap=function(t){var n=this,r=this._readableState,i=!1;for(var e in t.on("end",function(){if(_("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&n.push(e)}n.push(null)}),t.on("data",function(e){(_("wrapped data"),r.decoder&&(e=r.decoder.write(e)),r.objectMode&&null==e)||(r.objectMode||e&&e.length)&&(n.push(e)||(i=!0,t.pause()))}),t)void 0===this[e]&&"function"==typeof t[e]&&(this[e]=function(e){return function(){return t[e].apply(t,arguments)}}(e));for(var o=0;o<f.length;o++)t.on(f[o],this.emit.bind(this,f[o]));return this._read=function(e){_("wrapped _read",e),i&&(i=!1,t.resume())},this},Object.defineProperty(p.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),p._fromList=D}).call(this,L("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./_stream_duplex":129,"./internal/streams/BufferList":134,"./internal/streams/destroy":135,"./internal/streams/stream":136,_process:124,"core-util-is":113,events:114,inherits:118,isarray:120,"process-nextick-args":123,"safe-buffer":155,"string_decoder/":160,util:109}],132:[function(e,t,n){"use strict";t.exports=o;var r=e("./_stream_duplex"),i=e("core-util-is");function o(e){if(!(this instanceof o))return new o(e);r.call(this,e),this._transformState={afterTransform:function(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,(n.writecb=null)!=t&&this.push(t),r(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush&&(this._flush=e.flush)),this.on("prefinish",a)}function a(){var n=this;"function"==typeof this._flush?this._flush(function(e,t){s(n,e,t)}):s(this,null,null)}function s(e,t,n){if(t)return e.emit("error",t);if(null!=n&&e.push(n),e._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(e._transformState.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}i.inherits=e("inherits"),i.inherits(o,r),o.prototype.push=function(e,t){return this._transformState.needTransform=!1,r.prototype.push.call(this,e,t)},o.prototype._transform=function(e,t,n){throw new Error("_transform() is not implemented")},o.prototype._write=function(e,t,n){var r=this._transformState;if(r.writecb=n,r.writechunk=e,r.writeencoding=t,!r.transforming){var i=this._readableState;(r.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},o.prototype._read=function(e){var t=this._transformState;null!==t.writechunk&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0},o.prototype._destroy=function(e,t){var n=this;r.prototype._destroy.call(this,e,function(e){t(e),n.emit("close")})}},{"./_stream_duplex":129,"core-util-is":113,inherits:118}],133:[function(A,x,e){(function(e,t,n){"use strict";var v=A("process-nextick-args");function f(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var i=r.callback;t.pendingcb--,i(n),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}x.exports=c;var s,p=!e.browser&&-1<["v0.10","v0.9."].indexOf(e.version.slice(0,5))?n:v.nextTick;c.WritableState=l;var r=A("core-util-is");r.inherits=A("inherits");var i={deprecate:A("util-deprecate")},o=A("./internal/streams/stream"),b=A("safe-buffer").Buffer,y=t.Uint8Array||function(){};var a,u=A("./internal/streams/destroy");function _(){}function l(e,t){s=s||A("./_stream_duplex"),e=e||{};var n=t instanceof s;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var r=e.highWaterMark,i=e.writableHighWaterMark,o=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n&&(i||0===i)?i:o,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var a=(this.destroyed=!1)===e.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,i=n.writecb;if(f=n,f.writing=!1,f.writecb=null,f.length-=f.writelen,f.writelen=0,t)a=e,s=n,u=r,l=t,c=i,--s.pendingcb,u?(v.nextTick(c,l),v.nextTick(E,a,s),a._writableState.errorEmitted=!0,a.emit("error",l)):(c(l),a._writableState.errorEmitted=!0,a.emit("error",l),E(a,s));else{var o=m(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||h(e,n),r?p(d,e,n,o,i):d(e,n,o,i)}var a,s,u,l,c;var f}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new f(this)}function c(e){if(s=s||A("./_stream_duplex"),!(a.call(c,this)||this instanceof s))return new c(e);this._writableState=new l(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),o.call(this)}function w(e,t,n,r,i,o,a){t.writelen=r,t.writecb=a,t.writing=!0,t.sync=!0,n?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function d(e,t,n,r){var i,o;n||(i=e,0===(o=t).length&&o.needDrain&&(o.needDrain=!1,i.emit("drain"))),t.pendingcb--,r(),E(e,t)}function h(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,i=new Array(r),o=t.corkedRequestsFree;o.entry=n;for(var a=0,s=!0;n;)(i[a]=n).isBuf||(s=!1),n=n.next,a+=1;i.allBuffers=s,w(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new f(t),t.bufferedRequestCount=0}else{for(;n;){var u=n.chunk,l=n.encoding,c=n.callback;if(w(e,t,!1,t.objectMode?1:u.length,u,l,c),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function m(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function g(t,n){t._final(function(e){n.pendingcb--,e&&t.emit("error",e),n.prefinished=!0,t.emit("prefinish"),E(t,n)})}function E(e,t){var n,r,i=m(t);return i&&(n=e,(r=t).prefinished||r.finalCalled||("function"==typeof n._final?(r.pendingcb++,r.finalCalled=!0,v.nextTick(g,n,r)):(r.prefinished=!0,n.emit("prefinish"))),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),i}r.inherits(c,o),l.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(l.prototype,"buffer",{get:i.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(a=Function.prototype[Symbol.hasInstance],Object.defineProperty(c,Symbol.hasInstance,{value:function(e){return!!a.call(this,e)||this===c&&(e&&e._writableState instanceof l)}})):a=function(e){return e instanceof this},c.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},c.prototype.write=function(e,t,n){var r,i,o,a,s,u,l,c,f,p,d,h=this._writableState,m=!1,g=!h.objectMode&&(r=e,b.isBuffer(r)||r instanceof y);return g&&!b.isBuffer(e)&&(i=e,e=b.from(i)),"function"==typeof t&&(n=t,t=null),g?t="buffer":t||(t=h.defaultEncoding),"function"!=typeof n&&(n=_),h.ended?(f=this,p=n,d=new Error("write after end"),f.emit("error",d),v.nextTick(p,d)):(g||(o=this,a=h,u=n,c=!(l=!0),null===(s=e)?c=new TypeError("May not write null values to stream"):"string"==typeof s||void 0===s||a.objectMode||(c=new TypeError("Invalid non-string/buffer chunk")),c&&(o.emit("error",c),v.nextTick(u,c),l=!1),l))&&(h.pendingcb++,m=function(e,t,n,r,i,o){if(!n){var a=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=b.from(t,n));return t}(t,r,i);r!==a&&(n=!0,i="buffer",r=a)}var s=t.objectMode?1:r.length;t.length+=s;var u=t.length<t.highWaterMark;u||(t.needDrain=!0);if(t.writing||t.corked){var l=t.lastBufferedRequest;t.lastBufferedRequest={chunk:r,encoding:i,isBuf:n,callback:o,next:null},l?l.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else w(e,t,!1,s,r,i,o);return u}(this,h,g,e,t,n)),m},c.prototype.cork=function(){this._writableState.corked++},c.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||h(this,e))},c.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(-1<["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(c.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),c.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},c.prototype._writev=null,c.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,t=e=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,n){t.ending=!0,E(e,t),n&&(t.finished?v.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(c.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),c.prototype.destroy=u.destroy,c.prototype._undestroy=u.undestroy,c.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,A("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},A("timers").setImmediate)},{"./_stream_duplex":129,"./internal/streams/destroy":135,"./internal/streams/stream":136,_process:124,"core-util-is":113,inherits:118,"process-nextick-args":123,"safe-buffer":155,timers:161,"util-deprecate":177}],134:[function(e,t,n){"use strict";var s=e("safe-buffer").Buffer,r=e("util");t.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};0<this.length?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return s.alloc(0);if(1===this.length)return this.head.data;for(var t,n,r,i=s.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=o.data,n=i,r=a,t.copy(n,r),a+=o.data.length,o=o.next;return i},e}(),r&&r.inspect&&r.inspect.custom&&(t.exports.prototype[r.inspect.custom]=function(){var e=r.inspect({length:this.length});return this.constructor.name+" "+e})},{"safe-buffer":155,util:109}],135:[function(e,t,n){"use strict";var o=e("process-nextick-args");function a(e,t){e.emit("error",t)}t.exports={destroy:function(e,t){var n=this,r=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return r||i?t?t(e):!e||this._writableState&&this._writableState.errorEmitted||o.nextTick(a,this,e):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(o.nextTick(a,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):t&&t(e)})),this},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{"process-nextick-args":123}],136:[function(e,t,n){t.exports=e("events").EventEmitter},{events:114}],137:[function(e,t,n){(((n=t.exports=e("./lib/_stream_readable.js")).Stream=n).Readable=n).Writable=e("./lib/_stream_writable.js"),n.Duplex=e("./lib/_stream_duplex.js"),n.Transform=e("./lib/_stream_transform.js"),n.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":129,"./lib/_stream_passthrough.js":130,"./lib/_stream_readable.js":131,"./lib/_stream_transform.js":132,"./lib/_stream_writable.js":133}],138:[function(e,t,n){"use strict";t.exports={ABSOLUTE:"absolute",PATH_RELATIVE:"pathRelative",ROOT_RELATIVE:"rootRelative",SHORTEST:"shortest"}},{}],139:[function(e,t,n){"use strict";var m=e("./constants");function g(e,t){var n=t.removeEmptyQueries&&e.extra.relation.minimumPort;return e.query.string[n?"stripped":"full"]}function v(e,t){return!e.extra.relation.minimumQuery||t.output===m.ABSOLUTE||t.output===m.ROOT_RELATIVE}function b(e,t){var n=t.removeDirectoryIndexes&&e.extra.resourceIsIndex,r=e.extra.relation.minimumResource&&t.output!==m.ABSOLUTE&&t.output!==m.ROOT_RELATIVE;return!!e.resource&&!r&&!n}t.exports=function(e,t){var n,r,i,o,a,s,u,l,c,f,p,d,h="";return h+=(r=t,i="",((n=e).extra.relation.maximumHost||r.output===m.ABSOLUTE)&&(n.extra.relation.minimumScheme&&r.schemeRelative&&r.output!==m.ABSOLUTE?i+="//":i+=n.scheme+"://"),i),h+=(a=t,!(o=e).auth||a.removeAuth||!o.extra.relation.maximumHost&&a.output!==m.ABSOLUTE?"":o.auth+"@"),h+=(u=t,(s=e).host.full&&(s.extra.relation.maximumAuth||u.output===m.ABSOLUTE)?s.host.full:""),h+=(l=e).port&&!l.extra.portIsDefault&&l.extra.relation.maximumHost?":"+l.port:"",h+=function(e,t){var n="",r=e.path.absolute.string,i=e.path.relative.string,o=b(e,t);if(e.extra.relation.maximumHost||t.output===m.ABSOLUTE||t.output===m.ROOT_RELATIVE)n=r;else if(i.length<=r.length&&t.output===m.SHORTEST||t.output===m.PATH_RELATIVE){if(""===(n=i)){var a=v(e,t)&&!!g(e,t);e.extra.relation.maximumPath&&!o?n="./":!e.extra.relation.overridesQuery||o||a||(n="./")}}else n=r;return"/"!==n||o||!t.removeRootTrailingSlash||e.extra.relation.minimumPort&&t.output!==m.ABSOLUTE||(n=""),n}(e,t),h+=b(c=e,t)?c.resource:"",h+=v(f=e,p=t)?g(f,p):"",h+=(d=e).hash?d.hash:""}},{"./constants":138}],140:[function(e,t,n){"use strict";var r=e("./constants"),i=e("./format"),o=e("./options"),a=e("./util/object"),s=e("./parse"),u=e("./relate");function l(e,t){this.options=o(t,{defaultPorts:{ftp:21,http:80,https:443},directoryIndexes:["index.html"],ignore_www:!1,output:l.SHORTEST,rejectedSchemes:["data","javascript","mailto"],removeAuth:!1,removeDirectoryIndexes:!0,removeEmptyQueries:!1,removeRootTrailingSlash:!0,schemeRelative:!0,site:void 0,slashesDenoteHost:!0}),this.from=s.from(e,this.options,null)}l.prototype.relate=function(e,t,n){if(a.isPlainObject(t)?(n=t,t=e,e=null):t||(t=e,e=null),n=o(n,this.options),e=e||n.site,!(e=s.from(e,n,this.from))||!e.href)throw new Error("from value not defined.");if(e.extra.hrefInfo.minimumPathOnly)throw new Error("from value supplied is not absolute: "+e.href);return!1===(t=s.to(t,n)).valid?t.href:(t=u(e,t,n),t=i(t,n))},l.relate=function(e,t,n){return(new l).relate(e,t,n)},a.shallowMerge(l,r),t.exports=l},{"./constants":138,"./format":139,"./options":141,"./parse":144,"./relate":151,"./util/object":153}],141:[function(e,t,n){"use strict";var a=e("./util/object");t.exports=function(e,t){if(a.isPlainObject(e)){var n={};for(var r in t)t.hasOwnProperty(r)&&(void 0!==e[r]?n[r]=(i=e[r],(o=t[r])instanceof Object&&i instanceof Object?o instanceof Array&&i instanceof Array?o.concat(i):a.shallowMerge(i,o):i):n[r]=t[r]);return n}var i,o;return t}},{"./util/object":153}],142:[function(e,t,n){"use strict";t.exports=function(e,t){if(t.ignore_www){var n=e.host.full;if(n){var r=n;0===n.indexOf("www.")&&(r=n.substr(4)),e.host.stripped=r}}}},{}],143:[function(e,t,n){"use strict";t.exports=function(e){var t=!(e.scheme||e.auth||e.host.full||e.port),n=t&&!e.path.absolute.string,r=n&&!e.resource,i=r&&!e.query.string.full.length,o=i&&!e.hash;e.extra.hrefInfo.minimumPathOnly=t,e.extra.hrefInfo.minimumResourceOnly=n,e.extra.hrefInfo.minimumQueryOnly=r,e.extra.hrefInfo.minimumHashOnly=i,e.extra.hrefInfo.empty=o}},{}],144:[function(e,t,n){"use strict";var r=e("./hrefInfo"),i=e("./host"),o=e("./path"),a=e("./port"),s=e("./query"),u=e("./urlstring"),l=e("../util/path");function c(e,t){var n=u(e,t);return!1===n.valid||(i(n,t),a(n,t),o(n,t),s(n,t),r(n)),n}t.exports={from:function(e,t,n){if(e){var r=c(e,t),i=l.resolveDotSegments(r.path.absolute.array);return r.path.absolute.array=i,r.path.absolute.string="/"+l.join(i),r}return n},to:c}},{"../util/path":154,"./host":142,"./hrefInfo":143,"./path":145,"./port":146,"./query":147,"./urlstring":148}],145:[function(e,t,n){"use strict";function s(e){if("/"===e)return[];var t=[];return e.split("/").forEach(function(e){""!==e&&t.push(e)}),t}t.exports=function(e,t){var n,r,i=e.path.absolute.string;if(i){var o=i.lastIndexOf("/");if(-1<o){if(++o<i.length){var a=i.substr(o);"."!==a&&".."!==a?(e.resource=a,i=i.substr(0,o)):i+="/"}e.path.absolute.string=i,e.path.absolute.array=s(i)}else"."===i||".."===i?(i+="/",e.path.absolute.string=i,e.path.absolute.array=s(i)):(e.resource=i,e.path.absolute.string=null);e.extra.resourceIsIndex=(n=e.resource,r=!1,t.directoryIndexes.every(function(e){return e!==n||!(r=!0)}),r)}}},{}],146:[function(e,t,n){"use strict";t.exports=function(e,t){var n=-1;for(var r in t.defaultPorts)if(r===e.scheme&&t.defaultPorts.hasOwnProperty(r)){n=t.defaultPorts[r];break}-1<n&&(n=n.toString(),null===e.port&&(e.port=n),e.extra.portIsDefault=e.port===n)}},{}],147:[function(e,t,n){"use strict";var a=Object.prototype.hasOwnProperty;function r(e,t){var n=0,r="";for(var i in e)if(""!==i&&!0===a.call(e,i)){var o=e[i];""===o&&t||(r+=1==++n?"?":"&",i=encodeURIComponent(i),r+=""!==o?i+"="+encodeURIComponent(o).replace(/%20/g,"+"):i)}return r}t.exports=function(e,t){e.query.string.full=r(e.query.object,!1),t.removeEmptyQueries&&(e.query.string.stripped=r(e.query.object,!0))}},{}],148:[function(e,t,n){"use strict";var a=e("url").parse;t.exports=function(e,t){return i=e,o=!0,t.rejectedSchemes.every(function(e){return o=!(0===i.indexOf(e+":"))}),o?(n=a(e,!0,t.slashesDenoteHost),(r=n.protocol)&&r.indexOf(":")===r.length-1&&(r=r.substr(0,r.length-1)),n.host={full:n.hostname,stripped:null},n.path={absolute:{array:null,string:n.pathname},relative:{array:null,string:null}},n.query={object:n.query,string:{full:null,stripped:null}},n.extra={hrefInfo:{minimumPathOnly:null,minimumResourceOnly:null,minimumQueryOnly:null,minimumHashOnly:null,empty:null,separatorOnlyQuery:"?"===n.search},portIsDefault:null,relation:{maximumScheme:null,maximumAuth:null,maximumHost:null,maximumPort:null,maximumPath:null,maximumResource:null,maximumQuery:null,maximumHash:null,minimumScheme:null,minimumAuth:null,minimumHost:null,minimumPort:null,minimumPath:null,minimumResource:null,minimumQuery:null,minimumHash:null,overridesQuery:null},resourceIsIndex:null,slashes:n.slashes},n.resource=null,n.scheme=r,delete n.hostname,delete n.pathname,delete n.protocol,delete n.search,delete n.slashes,n):{href:e,valid:!1};var n,r,i,o}},{url:175}],149:[function(e,t,n){"use strict";var s=e("./findRelation"),u=e("../util/object"),l=e("../util/path");t.exports=function(e,t,n){var r,i,o,a;s.upToPath(e,t,n),e.extra.relation.minimumScheme&&(e.scheme=t.scheme),e.extra.relation.minimumAuth&&(e.auth=t.auth),e.extra.relation.minimumHost&&(e.host=u.clone(t.host)),e.extra.relation.minimumPort&&(i=t,(r=e).port=i.port,r.extra.portIsDefault=i.extra.portIsDefault),e.extra.relation.minimumScheme&&function(e,t){if(e.extra.relation.maximumHost||!e.extra.hrefInfo.minimumResourceOnly){var n=e.path.absolute.array,r="/";n?(e.extra.hrefInfo.minimumPathOnly&&0!==e.path.absolute.string.indexOf("/")&&(n=t.path.absolute.array.concat(n)),n=l.resolveDotSegments(n),r+=l.join(n)):n=[],e.path.absolute.array=n,e.path.absolute.string=r}else e.path=u.clone(t.path)}(e,t),s.pathOn(e,t,n),e.extra.relation.minimumResource&&(a=t,(o=e).resource=a.resource,o.extra.resourceIsIndex=a.extra.resourceIsIndex),e.extra.relation.minimumQuery&&(e.query=u.clone(t.query)),e.extra.relation.minimumHash&&(e.hash=t.hash)}},{"../util/object":153,"../util/path":154,"./findRelation":150}],150:[function(e,t,n){"use strict";t.exports={pathOn:function(e,t,n){var r=e.extra.hrefInfo.minimumQueryOnly,i=e.extra.hrefInfo.minimumHashOnly,o=e.extra.hrefInfo.empty,a=e.extra.relation.minimumPort,s=e.extra.relation.minimumScheme,u=a&&e.path.absolute.string===t.path.absolute.string,l=e.resource===t.resource||!e.resource&&t.extra.resourceIsIndex||n.removeDirectoryIndexes&&e.extra.resourceIsIndex&&!t.resource,c=u&&(l||r||i||o),f=n.removeEmptyQueries?"stripped":"full",p=e.query.string[f],d=t.query.string[f],h=c&&!!p&&p===d||(i||o)&&!e.extra.hrefInfo.separatorOnlyQuery,m=h&&e.hash===t.hash;e.extra.relation.minimumPath=u,e.extra.relation.minimumResource=c,e.extra.relation.minimumQuery=h,e.extra.relation.minimumHash=m,e.extra.relation.maximumPort=!s||s&&!u,e.extra.relation.maximumPath=!s||s&&!c,e.extra.relation.maximumResource=!s||s&&!h,e.extra.relation.maximumQuery=!s||s&&!m,e.extra.relation.maximumHash=!s||s&&!m,e.extra.relation.overridesQuery=u&&e.extra.relation.maximumResource&&!h&&!!d},upToPath:function(e,t,n){var r=e.extra.hrefInfo.minimumPathOnly,i=e.scheme===t.scheme||!e.scheme,o=i&&(e.auth===t.auth||n.removeAuth||r),a=n.ignore_www?"stripped":"full",s=o&&(e.host[a]===t.host[a]||r),u=s&&(e.port===t.port||r);e.extra.relation.minimumScheme=i,e.extra.relation.minimumAuth=o,e.extra.relation.minimumHost=s,e.extra.relation.minimumPort=u,e.extra.relation.maximumScheme=!i||i&&!o,e.extra.relation.maximumAuth=!i||i&&!s,e.extra.relation.maximumHost=!i||i&&!u}}},{}],151:[function(e,t,n){"use strict";var r=e("./absolutize"),i=e("./relativize");t.exports=function(e,t,n){return r(t,e,n),i(t,e,n),t}},{"./absolutize":149,"./relativize":152}],152:[function(e,t,n){"use strict";var l=e("../util/path");t.exports=function(e,t,n){if(e.extra.relation.minimumScheme){var r=(i=e.path.absolute.array,o=t.path.absolute.array,a=[],s=!0,u=-1,o.forEach(function(e,t){s&&(i[t]!==e?s=!1:u=t),s||a.push("..")}),i.forEach(function(e,t){u<t&&a.push(e)}),a);e.path.relative.array=r,e.path.relative.string=l.join(r)}var i,o,a,s,u}},{"../util/path":154}],153:[function(e,t,n){"use strict";t.exports={clone:function e(t){if(t instanceof Object){var n=t instanceof Array?[]:{};for(var r in t)t.hasOwnProperty(r)&&(n[r]=e(t[r]));return n}return t},isPlainObject:function(e){return!!e&&"object"==typeof e&&e.constructor===Object},shallowMerge:function(e,t){if(e instanceof Object&&t instanceof Object)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}}},{}],154:[function(e,t,n){"use strict";t.exports={join:function(e){return 0<e.length?e.join("/")+"/":""},resolveDotSegments:function(e){var t=[];return e.forEach(function(e){".."!==e?"."!==e&&t.push(e):0<t.length&&t.splice(t.length-1,1)}),t}}},{}],155:[function(e,t,n){var r=e("buffer"),i=r.Buffer;function o(e,t){for(var n in e)t[n]=e[n]}function a(e,t,n){return i(e,t,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=r:(o(r,n),n.Buffer=a),o(i,a),a.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,n)},a.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=i(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},a.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},a.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},{buffer:111}],156:[function(n,e,i){(function(u){var l=n("./lib/request"),e=n("./lib/response"),c=n("xtend"),t=n("builtin-status-codes"),f=n("url"),r=i;r.request=function(e,t){e="string"==typeof e?f.parse(e):c(e);var n=-1===u.location.protocol.search(/^https?:$/)?"http:":"",r=e.protocol||n,i=e.hostname||e.host,o=e.port,a=e.path||"/";i&&-1!==i.indexOf(":")&&(i="["+i+"]"),e.url=(i?r+"//"+i:"")+(o?":"+o:"")+a,e.method=(e.method||"GET").toUpperCase(),e.headers=e.headers||{};var s=new l(e);return t&&s.on("response",t),s},r.get=function(e,t){var n=r.request(e,t);return n.end(),n},r.ClientRequest=l,r.IncomingMessage=e.IncomingMessage,r.Agent=function(){},r.Agent.defaultMaxSockets=4,r.globalAgent=new r.Agent,r.STATUS_CODES=t,r.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./lib/request":158,"./lib/response":159,"builtin-status-codes":112,url:175,xtend:181}],157:[function(e,t,s){(function(e){s.fetch=a(e.fetch)&&a(e.ReadableStream),s.writableStream=a(e.WritableStream),s.abortController=a(e.AbortController),s.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),s.blobConstructor=!0}catch(e){}var t;function n(){if(void 0!==t)return t;if(e.XMLHttpRequest){t=new e.XMLHttpRequest;try{t.open("GET",e.XDomainRequest?"/":"https://example.com")}catch(e){t=null}}else t=null;return t}function r(e){var t=n();if(!t)return!1;try{return t.responseType=e,t.responseType===e}catch(e){}return!1}var i=void 0!==e.ArrayBuffer,o=i&&a(e.ArrayBuffer.prototype.slice);function a(e){return"function"==typeof e}s.arraybuffer=s.fetch||i&&r("arraybuffer"),s.msstream=!s.fetch&&o&&r("ms-stream"),s.mozchunkedarraybuffer=!s.fetch&&i&&r("moz-chunked-arraybuffer"),s.overrideMimeType=s.fetch||!!n()&&a(n().overrideMimeType),s.vbArray=a(e.VBArray),t=null}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],158:[function(o,s,e){(function(u,l,c){var f=o("./capability"),e=o("inherits"),t=o("./response"),a=o("readable-stream"),p=o("to-arraybuffer"),n=t.IncomingMessage,d=t.readyStates;var r=s.exports=function(t){var e,n=this;a.Writable.call(n),n._opts=t,n._body=[],n._headers={},t.auth&&n.setHeader("Authorization","Basic "+new c(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){n.setHeader(e,t.headers[e])});var r,i,o=!0;if("disable-fetch"===t.mode||"requestTimeout"in t&&!f.abortController)e=!(o=!1);else if("prefer-streaming"===t.mode)e=!1;else if("allow-wrong-content-type"===t.mode)e=!f.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");e=!0}n._mode=(r=e,i=o,f.fetch&&i?"fetch":f.mozchunkedarraybuffer?"moz-chunked-arraybuffer":f.msstream?"ms-stream":f.arraybuffer&&r?"arraybuffer":f.vbArray&&r?"text:vbarray":"text"),n._fetchTimer=null,n.on("finish",function(){n._onFinish()})};e(r,a.Writable),r.prototype.setHeader=function(e,t){var n=e.toLowerCase();-1===i.indexOf(n)&&(this._headers[n]={name:e,value:t})},r.prototype.getHeader=function(e){var t=this._headers[e.toLowerCase()];return t?t.value:null},r.prototype.removeHeader=function(e){delete this._headers[e.toLowerCase()]},r.prototype._onFinish=function(){var t=this;if(!t._destroyed){var e=t._opts,r=t._headers,n=null;"GET"!==e.method&&"HEAD"!==e.method&&(n=f.arraybuffer?p(c.concat(t._body)):f.blobConstructor?new l.Blob(t._body.map(function(e){return p(e)}),{type:(r["content-type"]||{}).value||""}):c.concat(t._body).toString());var i=[];if(Object.keys(r).forEach(function(e){var t=r[e].name,n=r[e].value;Array.isArray(n)?n.forEach(function(e){i.push([t,e])}):i.push([t,n])}),"fetch"===t._mode){var o=null;if(f.abortController){var a=new AbortController;o=a.signal,t._fetchAbortController=a,"requestTimeout"in e&&0!==e.requestTimeout&&(t._fetchTimer=l.setTimeout(function(){t.emit("requestTimeout"),t._fetchAbortController&&t._fetchAbortController.abort()},e.requestTimeout))}l.fetch(t._opts.url,{method:t._opts.method,headers:i,body:n||void 0,mode:"cors",credentials:e.withCredentials?"include":"same-origin",signal:o}).then(function(e){t._fetchResponse=e,t._connect()},function(e){l.clearTimeout(t._fetchTimer),t._destroyed||t.emit("error",e)})}else{var s=t._xhr=new l.XMLHttpRequest;try{s.open(t._opts.method,t._opts.url,!0)}catch(e){return void u.nextTick(function(){t.emit("error",e)})}"responseType"in s&&(s.responseType=t._mode.split(":")[0]),"withCredentials"in s&&(s.withCredentials=!!e.withCredentials),"text"===t._mode&&"overrideMimeType"in s&&s.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in e&&(s.timeout=e.requestTimeout,s.ontimeout=function(){t.emit("requestTimeout")}),i.forEach(function(e){s.setRequestHeader(e[0],e[1])}),t._response=null,s.onreadystatechange=function(){switch(s.readyState){case d.LOADING:case d.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(s.onprogress=function(){t._onXHRProgress()}),s.onerror=function(){t._destroyed||t.emit("error",new Error("XHR error"))};try{s.send(n)}catch(e){return void u.nextTick(function(){t.emit("error",e)})}}}},r.prototype._onXHRProgress=function(){(function(e){try{var t=e.status;return null!==t&&0!==t}catch(e){return!1}})(this._xhr)&&!this._destroyed&&(this._response||this._connect(),this._response._onXHRProgress())},r.prototype._connect=function(){var t=this;t._destroyed||(t._response=new n(t._xhr,t._fetchResponse,t._mode,t._fetchTimer),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},r.prototype._write=function(e,t,n){this._body.push(e),n()},r.prototype.abort=r.prototype.destroy=function(){this._destroyed=!0,l.clearTimeout(this._fetchTimer),this._response&&(this._response._destroyed=!0),this._xhr?this._xhr.abort():this._fetchAbortController&&this._fetchAbortController.abort()},r.prototype.end=function(e,t,n){"function"==typeof e&&(n=e,e=void 0),a.Writable.prototype.end.call(this,e,t,n)},r.prototype.flushHeaders=function(){},r.prototype.setTimeout=function(){},r.prototype.setNoDelay=function(){},r.prototype.setSocketKeepAlive=function(){};var i=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]}).call(this,o("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},o("buffer").Buffer)},{"./capability":157,"./response":159,_process:124,buffer:111,inherits:118,"readable-stream":137,"to-arraybuffer":162}],159:[function(n,e,r){(function(l,c,f){var p=n("./capability"),e=n("inherits"),d=n("readable-stream"),s=r.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},t=r.IncomingMessage=function(e,t,n,r){var i=this;if(d.Readable.call(i),i._mode=n,i.headers={},i.rawHeaders=[],i.trailers={},i.rawTrailers=[],i.on("end",function(){l.nextTick(function(){i.emit("close")})}),"fetch"===n){if(i._fetchResponse=t,i.url=t.url,i.statusCode=t.status,i.statusMessage=t.statusText,t.headers.forEach(function(e,t){i.headers[t.toLowerCase()]=e,i.rawHeaders.push(t,e)}),p.writableStream){var o=new WritableStream({write:function(n){return new Promise(function(e,t){i._destroyed?t():i.push(new f(n))?e():i._resumeFetch=e})},close:function(){c.clearTimeout(r),i._destroyed||i.push(null)},abort:function(e){i._destroyed||i.emit("error",e)}});try{return void t.body.pipeTo(o).catch(function(e){c.clearTimeout(r),i._destroyed||i.emit("error",e)})}catch(e){}}var a=t.body.getReader();!function t(){a.read().then(function(e){if(!i._destroyed){if(e.done)return c.clearTimeout(r),void i.push(null);i.push(new f(e.value)),t()}}).catch(function(e){c.clearTimeout(r),i._destroyed||i.emit("error",e)})}()}else{if(i._xhr=e,i._pos=0,i.url=e.responseURL,i.statusCode=e.status,i.statusMessage=e.statusText,e.getAllResponseHeaders().split(/\r?\n/).forEach(function(e){var t=e.match(/^([^:]+):\s*(.*)/);if(t){var n=t[1].toLowerCase();"set-cookie"===n?(void 0===i.headers[n]&&(i.headers[n]=[]),i.headers[n].push(t[2])):void 0!==i.headers[n]?i.headers[n]+=", "+t[2]:i.headers[n]=t[2],i.rawHeaders.push(t[1],t[2])}}),i._charset="x-user-defined",!p.overrideMimeType){var s=i.rawHeaders["mime-type"];if(s){var u=s.match(/;\s*charset=([^;])(;|$)/);u&&(i._charset=u[1].toLowerCase())}i._charset||(i._charset="utf-8")}}};e(t,d.Readable),t.prototype._read=function(){var e=this._resumeFetch;e&&(this._resumeFetch=null,e())},t.prototype._onXHRProgress=function(){var t=this,e=t._xhr,n=null;switch(t._mode){case"text:vbarray":if(e.readyState!==s.DONE)break;try{n=new c.VBArray(e.responseBody).toArray()}catch(e){}if(null!==n){t.push(new f(n));break}case"text":try{n=e.responseText}catch(e){t._mode="text:vbarray";break}if(n.length>t._pos){var r=n.substr(t._pos);if("x-user-defined"===t._charset){for(var i=new f(r.length),o=0;o<r.length;o++)i[o]=255&r.charCodeAt(o);t.push(i)}else t.push(r,t._charset);t._pos=n.length}break;case"arraybuffer":if(e.readyState!==s.DONE||!e.response)break;n=e.response,t.push(new f(new Uint8Array(n)));break;case"moz-chunked-arraybuffer":if(n=e.response,e.readyState!==s.LOADING||!n)break;t.push(new f(new Uint8Array(n)));break;case"ms-stream":if(n=e.response,e.readyState!==s.LOADING)break;var a=new c.MSStreamReader;a.onprogress=function(){a.result.byteLength>t._pos&&(t.push(new f(new Uint8Array(a.result.slice(t._pos)))),t._pos=a.result.byteLength)},a.onload=function(){t.push(null)},a.readAsArrayBuffer(n)}t._xhr.readyState===s.DONE&&"ms-stream"!==t._mode&&t.push(null)}}).call(this,n("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n("buffer").Buffer)},{"./capability":157,_process:124,buffer:111,inherits:118,"readable-stream":137}],160:[function(e,t,n){"use strict";var r=e("safe-buffer").Buffer,i=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=l,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=c,this.end=f,t=3;break;default:return this.write=p,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(1<e.lastNeed&&1<t.length){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(2<e.lastNeed&&2<t.length&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2!=0)return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1);var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(55296<=r&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function c(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function f(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function p(e){return e.toString(this.encoding)}function d(e){return e&&e.length?this.write(e):""}(n.StringDecoder=o).prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<e.length?t?t+this.text(e,n):this.text(e,n):t||""},o.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t},o.prototype.text=function(e,t){var n=function(e,t,n){var r=t.length-1;if(r<n)return 0;var i=a(t[r]);if(0<=i)return 0<i&&(e.lastNeed=i-1),i;if(--r<n||-2===i)return 0;if(0<=(i=a(t[r])))return 0<i&&(e.lastNeed=i-2),i;if(--r<n||-2===i)return 0;if(0<=(i=a(t[r])))return 0<i&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},{"safe-buffer":155}],161:[function(u,e,l){(function(e,t){var r=u("process/browser.js").nextTick,n=Function.prototype.apply,i=Array.prototype.slice,o={},a=0;function s(e,t){this._id=e,this._clearFn=t}l.setTimeout=function(){return new s(n.call(setTimeout,window,arguments),clearTimeout)},l.setInterval=function(){return new s(n.call(setInterval,window,arguments),clearInterval)},l.clearTimeout=l.clearInterval=function(e){e.close()},s.prototype.unref=s.prototype.ref=function(){},s.prototype.close=function(){this._clearFn.call(window,this._id)},l.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},l.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},l._unrefActive=l.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},l.setImmediate="function"==typeof e?e:function(e){var t=a++,n=!(arguments.length<2)&&i.call(arguments,1);return o[t]=!0,r(function(){o[t]&&(n?e.apply(null,n):e.call(null),l.clearImmediate(t))}),t},l.clearImmediate="function"==typeof t?t:function(e){delete o[e]}}).call(this,u("timers").setImmediate,u("timers").clearImmediate)},{"process/browser.js":124,timers:161}],162:[function(e,t,n){var i=e("buffer").Buffer;t.exports=function(e){if(e instanceof Uint8Array){if(0===e.byteOffset&&e.byteLength===e.buffer.byteLength)return e.buffer;if("function"==typeof e.buffer.slice)return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}if(i.isBuffer(e)){for(var t=new Uint8Array(e.length),n=e.length,r=0;r<n;r++)t[r]=e[r];return t.buffer}throw new Error("Argument must be a Buffer")}},{buffer:111}],163:[function(e,t,n){arguments[4][96][0].apply(n,arguments)},{"./util":172,dup:96}],164:[function(e,t,n){arguments[4][97][0].apply(n,arguments)},{"./base64":165,dup:97}],165:[function(e,t,n){arguments[4][98][0].apply(n,arguments)},{dup:98}],166:[function(e,t,n){arguments[4][99][0].apply(n,arguments)},{dup:99}],167:[function(e,t,n){arguments[4][100][0].apply(n,arguments)},{"./util":172,dup:100}],168:[function(e,t,n){arguments[4][101][0].apply(n,arguments)},{dup:101}],169:[function(e,t,n){arguments[4][102][0].apply(n,arguments)},{"./array-set":163,"./base64-vlq":164,"./binary-search":166,"./quick-sort":168,"./util":172,dup:102}],170:[function(e,t,n){arguments[4][103][0].apply(n,arguments)},{"./array-set":163,"./base64-vlq":164,"./mapping-list":167,"./util":172,dup:103}],171:[function(e,t,n){arguments[4][104][0].apply(n,arguments)},{"./source-map-generator":170,"./util":172,dup:104}],172:[function(e,t,n){arguments[4][105][0].apply(n,arguments)},{dup:105}],173:[function(e,t,n){arguments[4][106][0].apply(n,arguments)},{"./lib/source-map-consumer":169,"./lib/source-map-generator":170,"./lib/source-node":171,dup:106}],174:[function(t,e,n){var r,i=t("fs"),o=n,a=o.FILES=["../lib/utils.js","../lib/ast.js","../lib/parse.js","../lib/transform.js","../lib/scope.js","../lib/output.js","../lib/compress.js","../lib/sourcemap.js","../lib/mozilla-ast.js","../lib/propmangle.js","../lib/minify.js","./exports.js"].map(function(e){return t.resolve(e)});function s(e){var t=o.minify("",e);return t.error&&t.error.defs}new Function("MOZ_SourceMap","exports",((r=a.map(function(e){return i.readFileSync(e,"utf8")})).push("exports.describe_ast = "+function(){var r=OutputStream({beautify:!0});return function n(e){r.print("AST_"+e.TYPE);var t=e.SELF_PROPS.filter(function(e){return!/^\$/.test(e)});0<t.length&&(r.space(),r.with_parens(function(){t.forEach(function(e,t){t&&r.space(),r.print(e)})})),e.documentation&&(r.space(),r.print_string(e.documentation)),0<e.SUBCLASSES.length&&(r.space(),r.with_block(function(){e.SUBCLASSES.forEach(function(e,t){r.indent(),n(e),r.newline()})}))}(AST_Node),r+"\n"}.toString()),r.join("\n\n")))(t("source-map"),o),o.default_options=function(){var n={};return Object.keys(s({0:0})).forEach(function(e){var t={};t[e]={0:0},(t=s(t))&&(n[e]=t)}),n}},{fs:110,"source-map":173}],175:[function(e,t,n){"use strict";var L=e("punycode"),F=e("./util");function O(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}n.parse=o,n.resolve=function(e,t){return o(e,!1,!0).resolve(t)},n.resolveObject=function(e,t){return e?o(e,!1,!0).resolveObject(t):t},n.format=function(e){F.isString(e)&&(e=o(e));return e instanceof O?e.format():O.prototype.format.call(e)},n.Url=O;var q=/^([a-z0-9.+-]+:)/i,r=/:[0-9]*$/,U=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,i=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),M=["'"].concat(i),N=["%","/","?",";","#"].concat(M),P=["/","?","#"],z=/^[+a-z0-9A-Z_-]{0,63}$/,j=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,I={javascript:!0,"javascript:":!0},V={javascript:!0,"javascript:":!0},H={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},$=e("querystring");function o(e,t,n){if(e&&F.isObject(e)&&e instanceof O)return e;var r=new O;return r.parse(e,t,n),r}O.prototype.parse=function(e,t,n){if(!F.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var r=e.indexOf("?"),i=-1!==r&&r<e.indexOf("#")?"?":"#",o=e.split(i);o[0]=o[0].replace(/\\/g,"/");var a=e=o.join(i);if(a=a.trim(),!n&&1===e.split("#").length){var s=U.exec(a);if(s)return this.path=a,this.href=a,this.pathname=s[1],s[2]?(this.search=s[2],this.query=t?$.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var u=q.exec(a);if(u){var l=(u=u[0]).toLowerCase();this.protocol=l,a=a.substr(u.length)}if(n||u||a.match(/^\/\/[^@\/]+@[^@\/]+/)){var c="//"===a.substr(0,2);!c||u&&V[u]||(a=a.substr(2),this.slashes=!0)}if(!V[u]&&(c||u&&!H[u])){for(var f,p,d=-1,h=0;h<P.length;h++){-1!==(m=a.indexOf(P[h]))&&(-1===d||m<d)&&(d=m)}-1!==(p=-1===d?a.lastIndexOf("@"):a.lastIndexOf("@",d))&&(f=a.slice(0,p),a=a.slice(p+1),this.auth=decodeURIComponent(f)),d=-1;for(h=0;h<N.length;h++){var m;-1!==(m=a.indexOf(N[h]))&&(-1===d||m<d)&&(d=m)}-1===d&&(d=a.length),this.host=a.slice(0,d),a=a.slice(d),this.parseHost(),this.hostname=this.hostname||"";var g="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!g)for(var v=this.hostname.split(/\./),b=(h=0,v.length);h<b;h++){var y=v[h];if(y&&!y.match(z)){for(var _="",w=0,E=y.length;w<E;w++)127<y.charCodeAt(w)?_+="x":_+=y[w];if(!_.match(z)){var A=v.slice(0,h),x=v.slice(h+1),k=y.match(j);k&&(A.push(k[1]),x.unshift(k[2])),x.length&&(a="/"+x.join(".")+a),this.hostname=A.join(".");break}}}255<this.hostname.length?this.hostname="":this.hostname=this.hostname.toLowerCase(),g||(this.hostname=L.toASCII(this.hostname));var C=this.port?":"+this.port:"",O=this.hostname||"";this.host=O+C,this.href+=this.host,g&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==a[0]&&(a="/"+a))}if(!I[l])for(h=0,b=M.length;h<b;h++){var S=M[h];if(-1!==a.indexOf(S)){var D=encodeURIComponent(S);D===S&&(D=escape(S)),a=a.split(S).join(D)}}var T=a.indexOf("#");-1!==T&&(this.hash=a.substr(T),a=a.slice(0,T));var B=a.indexOf("?");if(-1!==B?(this.search=a.substr(B),this.query=a.substr(B+1),t&&(this.query=$.parse(this.query)),a=a.slice(0,B)):t&&(this.search="",this.query={}),a&&(this.pathname=a),H[l]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){C=this.pathname||"";var R=this.search||"";this.path=C+R}return this.href=this.format(),this},O.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",i=!1,o="";this.host?i=e+this.host:this.hostname&&(i=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&F.isObject(this.query)&&Object.keys(this.query).length&&(o=$.stringify(this.query));var a=this.search||o&&"?"+o||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||H[t])&&!1!==i?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),r&&"#"!==r.charAt(0)&&(r="#"+r),a&&"?"!==a.charAt(0)&&(a="?"+a),t+i+(n=n.replace(/[?#]/g,function(e){return encodeURIComponent(e)}))+(a=a.replace("#","%23"))+r},O.prototype.resolve=function(e){return this.resolveObject(o(e,!1,!0)).format()},O.prototype.resolveObject=function(e){if(F.isString(e)){var t=new O;t.parse(e,!1,!0),e=t}for(var n=new O,r=Object.keys(this),i=0;i<r.length;i++){var o=r[i];n[o]=this[o]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var a=Object.keys(e),s=0;s<a.length;s++){var u=a[s];"protocol"!==u&&(n[u]=e[u])}return H[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!H[e.protocol]){for(var l=Object.keys(e),c=0;c<l.length;c++){var f=l[c];n[f]=e[f]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||V[e.protocol])n.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==p[0]&&p.unshift(""),p.length<2&&p.unshift(""),n.pathname=p.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var d=n.pathname||"",h=n.search||"";n.path=d+h}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var m=n.pathname&&"/"===n.pathname.charAt(0),g=e.host||e.pathname&&"/"===e.pathname.charAt(0),v=g||m||n.host&&e.pathname,b=v,y=n.pathname&&n.pathname.split("/")||[],_=(p=e.pathname&&e.pathname.split("/")||[],n.protocol&&!H[n.protocol]);if(_&&(n.hostname="",n.port=null,n.host&&(""===y[0]?y[0]=n.host:y.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===p[0]?p[0]=e.host:p.unshift(e.host)),e.host=null),v=v&&(""===p[0]||""===y[0])),g)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,y=p;else if(p.length)y||(y=[]),y.pop(),y=y.concat(p),n.search=e.search,n.query=e.query;else if(!F.isNullOrUndefined(e.search)){if(_)n.hostname=n.host=y.shift(),(k=!!(n.host&&0<n.host.indexOf("@"))&&n.host.split("@"))&&(n.auth=k.shift(),n.host=n.hostname=k.shift());return n.search=e.search,n.query=e.query,F.isNull(n.pathname)&&F.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!y.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var w=y.slice(-1)[0],E=(n.host||e.host||1<y.length)&&("."===w||".."===w)||""===w,A=0,x=y.length;0<=x;x--)"."===(w=y[x])?y.splice(x,1):".."===w?(y.splice(x,1),A++):A&&(y.splice(x,1),A--);if(!v&&!b)for(;A--;A)y.unshift("..");!v||""===y[0]||y[0]&&"/"===y[0].charAt(0)||y.unshift(""),E&&"/"!==y.join("/").substr(-1)&&y.push("");var k,C=""===y[0]||y[0]&&"/"===y[0].charAt(0);_&&(n.hostname=n.host=C?"":y.length?y.shift():"",(k=!!(n.host&&0<n.host.indexOf("@"))&&n.host.split("@"))&&(n.auth=k.shift(),n.host=n.hostname=k.shift()));return(v=v||n.host&&y.length)&&!C&&y.unshift(""),y.length?n.pathname=y.join("/"):(n.pathname=null,n.path=null),F.isNull(n.pathname)&&F.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},O.prototype.parseHost=function(){var e=this.host,t=r.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":176,punycode:125,querystring:128}],176:[function(e,t,n){"use strict";t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],177:[function(e,t,n){(function(n){function r(e){try{if(!n.localStorage)return!1}catch(e){return!1}var t=n.localStorage[e];return null!=t&&"true"===String(t).toLowerCase()}t.exports=function(e,t){if(r("noDeprecation"))return e;var n=!1;return function(){if(!n){if(r("throwDeprecation"))throw new Error(t);r("traceDeprecation")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],178:[function(e,t,n){arguments[4][118][0].apply(n,arguments)},{dup:118}],179:[function(e,t,n){t.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},{}],180:[function(p,e,O){(function(r,i){var s=/%[sdj%]/g;O.format=function(e){if(!_(e)){for(var t=[],n=0;n<arguments.length;n++)t.push(u(arguments[n]));return t.join(" ")}n=1;for(var r=arguments,i=r.length,o=String(e).replace(s,function(e){if("%%"===e)return"%";if(i<=n)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}}),a=r[n];n<i;a=r[++n])b(a)||!c(a)?o+=" "+a:o+=" "+u(a);return o},O.deprecate=function(e,t){if(w(i.process))return function(){return O.deprecate(e,t).apply(this,arguments)};if(!0===r.noDeprecation)return e;var n=!1;return function(){if(!n){if(r.throwDeprecation)throw new Error(t);r.traceDeprecation?console.trace(t):console.error(t),n=!0}return e.apply(this,arguments)}};var e,o={};function u(e,t){var n={seen:[],stylize:l};return 3<=arguments.length&&(n.depth=arguments[2]),4<=arguments.length&&(n.colors=arguments[3]),v(t)?n.showHidden=t:t&&O._extend(n,t),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=a),d(n,e,n.depth)}function a(e,t){var n=u.styles[t];return n?"\e["+u.colors[n][0]+"m"+e+"\e["+u.colors[n][1]+"m":e}function l(e,t){return e}function d(t,n,r){if(t.customInspect&&n&&k(n.inspect)&&n.inspect!==O.inspect&&(!n.constructor||n.constructor.prototype!==n)){var e=n.inspect(r,t);return _(e)||(e=d(t,e,r)),e}var i=function(e,t){if(w(t))return e.stylize("undefined","undefined");if(_(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(y(t))return e.stylize(""+t,"number");if(v(t))return e.stylize(""+t,"boolean");if(b(t))return e.stylize("null","null")}(t,n);if(i)return i;var o,a=Object.keys(n),s=(o={},a.forEach(function(e,t){o[e]=!0}),o);if(t.showHidden&&(a=Object.getOwnPropertyNames(n)),x(n)&&(0<=a.indexOf("message")||0<=a.indexOf("description")))return h(n);if(0===a.length){if(k(n)){var u=n.name?": "+n.name:"";return t.stylize("[Function"+u+"]","special")}if(E(n))return t.stylize(RegExp.prototype.toString.call(n),"regexp");if(A(n))return t.stylize(Date.prototype.toString.call(n),"date");if(x(n))return h(n)}var l,c="",f=!1,p=["{","}"];(g(n)&&(f=!0,p=["[","]"]),k(n))&&(c=" [Function"+(n.name?": "+n.name:"")+"]");return E(n)&&(c=" "+RegExp.prototype.toString.call(n)),A(n)&&(c=" "+Date.prototype.toUTCString.call(n)),x(n)&&(c=" "+h(n)),0!==a.length||f&&0!=n.length?r<0?E(n)?t.stylize(RegExp.prototype.toString.call(n),"regexp"):t.stylize("[Object]","special"):(t.seen.push(n),l=f?function(t,n,r,i,e){for(var o=[],a=0,s=n.length;a<s;++a)C(n,String(a))?o.push(m(t,n,r,i,String(a),!0)):o.push("");return e.forEach(function(e){e.match(/^\d+$/)||o.push(m(t,n,r,i,e,!0))}),o}(t,n,r,s,a):a.map(function(e){return m(t,n,r,s,e,f)}),t.seen.pop(),function(e,t,n){if(60<e.reduce(function(e,t){return 0,0<=t.indexOf("\n")&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0))return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n  ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(l,c,p)):p[0]+c+p[1]}function h(e){return"["+Error.prototype.toString.call(e)+"]"}function m(e,t,n,r,i,o){var a,s,u;if((u=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=u.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):u.set&&(s=e.stylize("[Setter]","special")),C(r,i)||(a="["+i+"]"),s||(e.seen.indexOf(u.value)<0?-1<(s=b(n)?d(e,u.value,null):d(e,u.value,n-1)).indexOf("\n")&&(s=o?s.split("\n").map(function(e){return"  "+e}).join("\n").substr(2):"\n"+s.split("\n").map(function(e){return"   "+e}).join("\n")):s=e.stylize("[Circular]","special")),w(a)){if(o&&i.match(/^\d+$/))return s;a=(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),e.stylize(a,"string"))}return a+": "+s}function g(e){return Array.isArray(e)}function v(e){return"boolean"==typeof e}function b(e){return null===e}function y(e){return"number"==typeof e}function _(e){return"string"==typeof e}function w(e){return void 0===e}function E(e){return c(e)&&"[object RegExp]"===t(e)}function c(e){return"object"==typeof e&&null!==e}function A(e){return c(e)&&"[object Date]"===t(e)}function x(e){return c(e)&&("[object Error]"===t(e)||e instanceof Error)}function k(e){return"function"==typeof e}function t(e){return Object.prototype.toString.call(e)}function n(e){return e<10?"0"+e.toString(10):e.toString(10)}O.debuglog=function(t){if(w(e)&&(e=r.env.NODE_DEBUG||""),t=t.toUpperCase(),!o[t])if(new RegExp("\\b"+t+"\\b","i").test(e)){var n=r.pid;o[t]=function(){var e=O.format.apply(O,arguments);console.error("%s %d: %s",t,n,e)}}else o[t]=function(){};return o[t]},(O.inspect=u).colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},u.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},O.isArray=g,O.isBoolean=v,O.isNull=b,O.isNullOrUndefined=function(e){return null==e},O.isNumber=y,O.isString=_,O.isSymbol=function(e){return"symbol"==typeof e},O.isUndefined=w,O.isRegExp=E,O.isObject=c,O.isDate=A,O.isError=x,O.isFunction=k,O.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},O.isBuffer=p("./support/isBuffer");var f=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function C(e,t){return Object.prototype.hasOwnProperty.call(e,t)}O.log=function(){var e,t;console.log("%s - %s",(e=new Date,t=[n(e.getHours()),n(e.getMinutes()),n(e.getSeconds())].join(":"),[e.getDate(),f[e.getMonth()],t].join(" ")),O.format.apply(O,arguments))},O.inherits=p("inherits"),O._extend=function(e,t){if(!t||!c(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e}}).call(this,p("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":179,_process:124,inherits:178}],181:[function(e,t,n){t.exports=function(){for(var e={},t=0;t<arguments.length;t++){var n=arguments[t];for(var r in n)i.call(n,r)&&(e[r]=n[r])}return e};var i=Object.prototype.hasOwnProperty},{}],182:[function(e,t,n){"use strict";var r=e("./utils").createMapFromString;function i(e){return r(e,!0)}var o,a,s=/([^\s"'<>/=]+)/,u=[/=/],l=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^ \t\n\f\r"'`=<>]+)/.source],c="((?:"+(a="["+(o="A-Za-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u0131\\u0134-\\u013E\\u0141-\\u0148\\u014A-\\u017E\\u0180-\\u01C3\\u01CD-\\u01F0\\u01F4\\u01F5\\u01FA-\\u0217\\u0250-\\u02A8\\u02BB-\\u02C1\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03CE\\u03D0-\\u03D6\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2-\\u03F3\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E-\\u0481\\u0490-\\u04C4\\u04C7\\u04C8\\u04CB\\u04CC\\u04D0-\\u04EB\\u04EE-\\u04F5\\u04F8\\u04F9\\u0531-\\u0556\\u0559\\u0561-\\u0586\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u063A\\u0641-\\u064A\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D3\\u06D5\\u06E5\\u06E6\\u0905-\\u0939\\u093D\\u0958-\\u0961\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\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-\\u0A8B\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AE0\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B36-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB5\\u0BB7-\\u0BB9\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D60\\u0D61\\u0E01-\\u0E2E\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E45\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD\\u0EAE\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0F40-\\u0F47\\u0F49-\\u0F69\\u10A0-\\u10C5\\u10D0-\\u10F6\\u1100\\u1102\\u1103\\u1105-\\u1107\\u1109\\u110B\\u110C\\u110E-\\u1112\\u113C\\u113E\\u1140\\u114C\\u114E\\u1150\\u1154\\u1155\\u1159\\u115F-\\u1161\\u1163\\u1165\\u1167\\u1169\\u116D\\u116E\\u1172\\u1173\\u1175\\u119E\\u11A8\\u11AB\\u11AE\\u11AF\\u11B7\\u11B8\\u11BA\\u11BC-\\u11C2\\u11EB\\u11F0\\u11F9\\u1E00-\\u1E9B\\u1EA0-\\u1EF9\\u1F00-\\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\\u2126\\u212A\\u212B\\u212E\\u2180-\\u2182\\u3007\\u3021-\\u3029\\u3041-\\u3094\\u30A1-\\u30FA\\u3105-\\u312C\\u4E00-\\u9FA5\\uAC00-\\uD7A3")+"_]["+o+"0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE7-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\.\\-_\\u0300-\\u0345\\u0360\\u0361\\u0483-\\u0486\\u0591-\\u05A1\\u05A3-\\u05B9\\u05BB-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u064B-\\u0652\\u0670\\u06D6-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0901-\\u0903\\u093C\\u093E-\\u094D\\u0951-\\u0954\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A02\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A70\\u0A71\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B43\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B82\\u0B83\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C01-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C82\\u0C83\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D43\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86-\\u0F8B\\u0F90-\\u0F95\\u0F97\\u0F99-\\u0FAD\\u0FB1-\\u0FB7\\u0FB9\\u20D0-\\u20DC\\u20E1\\u302A-\\u302F\\u3099\\u309A\\xB7\\u02D0\\u02D1\\u0387\\u0640\\u0E46\\u0EC6\\u3005\\u3031-\\u3035\\u309D\\u309E\\u30FC-\\u30FE]*")+"\\:)?"+a+")",A=new RegExp("^<"+c),x=/^\s*(\/?)>/,k=new RegExp("^<\\/"+c+"[^>]*>"),C=/^<!DOCTYPE\s?[^>]+>/i,O=!1;"x".replace(/x(.)?/g,function(e,t){O=""===t});var S=i("area,base,basefont,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),D=i("a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,noscript,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,svg,textarea,tt,u,var"),T=i("colgroup,dd,dt,li,option,p,td,tfoot,th,thead,tr,source"),B=i("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),R=i("script,style"),L=i("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,ol,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track,ul"),F={};function q(e){var t,n=s.source+"(?:\\s*("+(t=e,u.concat(t.customAttrAssign||[]).map(function(e){return"(?:"+e.source+")"}).join("|"))+")[ \\t\\n\\f\\r]*(?:"+l.join("|")+"))?";if(e.customAttrSurround){for(var r=[],i=e.customAttrSurround.length-1;0<=i;i--)r[i]="(?:("+e.customAttrSurround[i][0].source+")\\s*"+n+"\\s*("+e.customAttrSurround[i][1].source+"))";r.push("(?:"+n+")"),n="(?:"+r.join("|")+")"}return new RegExp("^\\s*"+n)}function f(e,f){for(var o,t,n,r,a=[],s=q(f);e;){if(t=e,o&&R(o)){var i=o.toLowerCase(),u=F[i]||(F[i]=new RegExp("([\\s\\S]*?)</"+i+"[^>]*>","i"));e=e.replace(u,function(e,t){return"script"!==i&&"style"!==i&&"noscript"!==i&&(t=t.replace(/<!--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),f.chars&&f.chars(t),""}),E("</"+i+">",i)}else{var l,c=e.indexOf("<");if(0===c){if(/^<!--/.test(e)){var p=e.indexOf("--\x3e");if(0<=p){f.comment&&f.comment(e.substring(4,p)),e=e.substring(p+3),n="";continue}}if(/^<!\[/.test(e)){var d=e.indexOf("]>");if(0<=d){f.comment&&f.comment(e.substring(2,d+1),!0),e=e.substring(d+2),n="";continue}}var h=e.match(C);if(h){f.doctype&&f.doctype(h[0]),e=e.substring(h[0].length),n="";continue}var m=e.match(k);if(m){e=e.substring(m[0].length),m[0].replace(k,E),n="/"+m[1].toLowerCase();continue}var g=b(e);if(g){e=g.rest,_(g),n=g.tagName.toLowerCase();continue}}var v=b(e=0<=c?(l=e.substring(0,c),e.substring(c)):(l=e,""));r=v?v.tagName:(v=e.match(k))?"/"+v[1]:"",f.chars&&f.chars(l,n,r),n=""}if(e===t)throw new Error("Parse Error: "+e)}function b(e){var t=e.match(A);if(t){var n,r,i={tagName:t[1],attrs:[]};for(e=e.slice(t[0].length);!(n=e.match(x))&&(r=e.match(s));)e=e.slice(r[0].length),i.attrs.push(r);if(n)return i.unarySlash=n[1],i.rest=e.slice(n[0].length),i}}function y(e){if(0<=w(e))return E("",e),!0}function _(e){var t=e.tagName,n=e.unarySlash;if(f.html5&&("p"===o&&L(t)?E("",o):"tbody"===t?y("thead"):"tfoot"===t&&(y("tbody")||y("thead")),"col"===t&&w("colgroup")<0&&(o="colgroup",a.push({tag:o,attrs:[]}),f.start&&f.start(o,[],!1,""))),!f.html5&&!D(t))for(;o&&D(o);)E("",o);T(t)&&o===t&&E("",t);var r=S(t)||"html"===t&&"head"===o||!!n,i=e.attrs.map(function(t){var n,r,e,i,o,a;function s(e){return o=t[e],void 0!==(r=t[e+1])?'"':void 0!==(r=t[e+2])?"'":(void 0===(r=t[e+3])&&B(n)&&(r=n),"")}O&&-1===t[0].indexOf('""')&&(""===t[3]&&delete t[3],""===t[4]&&delete t[4],""===t[5]&&delete t[5]);var u=1;if(f.customAttrSurround)for(var l=0,c=f.customAttrSurround.length;l<c;l++,u+=7)if(n=t[u+1]){a=s(u+2),e=t[u],i=t[u+6];break}return!n&&(n=t[u])&&(a=s(u+1)),{name:n,value:r,customAssign:o||"=",customOpen:e||"",customClose:i||"",quote:a||""}});r||(a.push({tag:t,attrs:i}),o=t,n=""),f.start&&f.start(t,i,r,n)}function w(e){var t,n=e.toLowerCase();for(t=a.length-1;0<=t&&a[t].tag.toLowerCase()!==n;t--);return t}function E(e,t){var n;if(0<=(n=t?w(t):0)){for(var r=a.length-1;n<=r;r--)f.end&&f.end(a[r].tag,a[r].attrs,n<r||!e);a.length=n,o=n&&a[n-1].tag}else"br"===t.toLowerCase()?f.start&&f.start(t,[],!0,""):"p"===t.toLowerCase()&&(f.start&&f.start(t,[],!1,"",!0),f.end&&f.end(t,[]))}f.partialMarkup||E()}n.HTMLParser=f,n.HTMLtoXML=function(e){var o="";return new f(e,{start:function(e,t,n){o+="<"+e;for(var r=0,i=t.length;r<i;r++)o+=" "+t[r].name+'="'+(t[r].value||"").replace(/"/g,"&#34;")+'"';o+=(n?"/":"")+">"},end:function(e){o+="</"+e+">"},chars:function(e){o+=e},comment:function(e){o+="\x3c!--"+e+"--\x3e"},ignore:function(e){o+=e}}),o},n.HTMLtoDOM=function(e,o){var a={html:!0,head:!0,body:!0,title:!0},s={link:"head",base:"head"};o?o=o.ownerDocument||o.getOwnerDocument&&o.getOwnerDocument()||o:"undefined"!=typeof DOMDocument?o=new DOMDocument:"undefined"!=typeof document&&document.implementation&&document.implementation.createDocument?o=document.implementation.createDocument("","",null):"undefined"!=typeof ActiveX&&(o=new ActiveXObject("Msxml.DOMDocument"));var t,n,u=[];if(!(o.documentElement||o.getDocumentElement&&o.getDocumentElement())&&o.createElement&&(t=o.createElement("html"),(n=o.createElement("head")).appendChild(o.createElement("title")),t.appendChild(n),t.appendChild(o.createElement("body")),o.appendChild(t)),o.getElementsByTagName)for(var r in a)a[r]=o.getElementsByTagName(r)[0];var l=a.body;return new f(e,{start:function(e,t,n){if(a[e])l=a[e];else{var r=o.createElement(e);for(var i in t)r.setAttribute(t[i].name,t[i].value);s[e]&&"boolean"!=typeof a[s[e]]?a[s[e]].appendChild(r):l&&l.appendChild&&l.appendChild(r),n||(u.push(r),l=r)}},end:function(){u.length-=1,l=u[u.length-1]},chars:function(e){l.appendChild(o.createTextNode(e))},comment:function(){},ignore:function(){}}),o}},{"./utils":184}],183:[function(e,t,n){"use strict";function r(){}function o(){}r.prototype.sort=function(e,t){t=t||0;for(var n=0,r=this.keys.length;n<r;n++){var i=this.keys[n],o=i.slice(1),a=e.indexOf(o,t);if(-1!==a){for(;a!==t&&(e.splice(a,1),e.splice(t,0,o)),t++,-1!==(a=e.indexOf(o,t)););return this[i].sort(e,t)}}return e},o.prototype={add:function(n){var r=this;n.forEach(function(e){var t="$"+e;r[t]||(r[t]=[],r[t].processed=0),r[t].push(n)})},createSorter:function(){var i=this,t=new r;return t.keys=Object.keys(i).sort(function(e,t){var n=i[e].length,r=i[t].length;return n<r?1:r<n?-1:e<t?-1:t<e?1:0}).filter(function(e){if(i[e].processed<i[e].length){var n=e.slice(1),r=new o;return i[e].forEach(function(e){for(var t;-1!==(t=e.indexOf(n));)e.splice(t,1);e.forEach(function(e){i["$"+e].processed++}),r.add(e.slice(0))}),t[e]=r.createSorter(),!0}return!1}),t}},t.exports=o},{}],184:[function(e,t,n){"use strict";function r(e,t){var n={};return e.forEach(function(e){n[e]=1}),t?function(e){return 1===n[e.toLowerCase()]}:function(e){return 1===n[e]}}n.createMap=r,n.createMapFromString=function(e,t){return r(e.split(/,/),t)}},{}],"html-minifier":[function(e,t,n){"use strict";var c=e("@ndcode/clean-css"),h=e("he").decode,d=e("./htmlparser").HTMLParser,s=e("relateurl"),B=e("./tokenchain"),u=e("uglify-es"),r=e("./utils");function R(e){return e&&e.replace(/^[ \n\r\t\f]+/,"").replace(/[ \n\r\t\f]+$/,"")}function p(e){return e&&e.replace(/[ \n\r\t\f\xA0]+/g,function(e){return"\t"===e?"\t":e.replace(/(^|\xA0+)[^\xA0]+/g,"$1 ")})}function f(e,n,t,r,i){var o="",a="";return n.preserveLineBreaks&&(e=e.replace(/^[ \n\r\t\f]*?[\n\r][ \n\r\t\f]*/,function(){return o="\n",""}).replace(/[ \n\r\t\f]*?[\n\r][ \n\r\t\f]*$/,function(){return a="\n",""})),t&&(e=e.replace(/^[ \n\r\t\f\xA0]+/,function(e){var t=!o&&n.conservativeCollapse;return t&&"\t"===e?"\t":e.replace(/^[^\xA0]+/,"").replace(/(\xA0+)[^\xA0]+/g,"$1 ")||(t?" ":"")})),r&&(e=e.replace(/[ \n\r\t\f\xA0]+$/,function(e){var t=!a&&n.conservativeCollapse;return t&&"\t"===e?"\t":e.replace(/[^\xA0]+(\xA0+)/g," $1").replace(/[^\xA0]+$/,"")||(t?" ":"")})),i&&(e=p(e)),o+e+a}var i=r.createMapFromString,L=i("a,abbr,acronym,b,bdi,bdo,big,button,cite,code,del,dfn,em,font,i,ins,kbd,label,mark,math,nobr,object,q,rp,rt,rtc,ruby,s,samp,select,small,span,strike,strong,sub,sup,svg,textarea,time,tt,u,var"),F=i("a,abbr,acronym,b,big,del,em,font,i,ins,kbd,mark,nobr,rp,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var"),a=i("comment,img,input,wbr");function q(e,t,n,r){var i=t&&!a(t);i&&!r.collapseInlineTagWhitespace&&(i="/"===t.charAt(0)?!L(t.slice(1)):!F(t));var o=n&&!a(n);return o&&!r.collapseInlineTagWhitespace&&(o="/"===n.charAt(0)?!F(n.slice(1)):!L(n)),f(e,r,i,o,t&&n)}function m(e,t){for(var n=e.length;n--;)if(e[n].name.toLowerCase()===t)return!0;return!1}var o=r.createMap(["text/javascript","text/ecmascript","text/jscript","application/javascript","application/x-javascript","application/ecmascript"]);function U(e){return""===(e=R(e.split(/;/,2)[0]).toLowerCase())||o(e)}function g(e){return""===(e=R(e).toLowerCase())||"text/css"===e}function M(e,t){if("style"!==e)return!1;for(var n=0,r=t.length;n<r;n++){if("type"===t[n].name.toLowerCase())return g(t[n].value)}return!0}var v=i("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),b=i("true,false");function y(e,t,n){if("link"!==e)return!1;for(var r=0,i=t.length;r<i;r++)if("rel"===t[r].name&&t[r].value===n)return!0}var _=i("img,source");function w(e,t,n,a,r){if(function(e,t){var n=t.customEventAttributes;if(n){for(var r=n.length;r--;)if(n[r].test(e))return!0;return!1}return/^on[a-z]{3,}$/.test(e)}(t,a))return n=R(n).replace(/^javascript:\s*/i,""),a.minifyJS(n,!0);if("class"===t)return n=R(n),n=a.sortClassName?a.sortClassName(n):p(n);if(c=t,/^(?:a|area|link|base)$/.test(f=e)&&"href"===c||"img"===f&&/^(?:src|longdesc|usemap)$/.test(c)||"object"===f&&/^(?:classid|codebase|data|usemap)$/.test(c)||"q"===f&&"cite"===c||"blockquote"===f&&"cite"===c||("ins"===f||"del"===f)&&"cite"===c||"form"===f&&"action"===c||"input"===f&&("src"===c||"usemap"===c)||"head"===f&&"profile"===c||"script"===f&&("src"===c||"for"===c))return n=R(n),y(e,r,"canonical")?n:a.minifyURLs(n);if(u=t,/^(?:a|area|object|button)$/.test(l=e)&&"tabindex"===u||"input"===l&&("maxlength"===u||"tabindex"===u)||"select"===l&&("size"===u||"tabindex"===u)||"textarea"===l&&/^(?:rows|cols|tabindex)$/.test(u)||"colgroup"===l&&"span"===u||"col"===l&&"span"===u||("th"===l||"td"===l)&&("rowspan"===u||"colspan"===u))return R(n);if("style"===t)return(n=R(n))&&(/;$/.test(n)&&!/&#?[0-9a-zA-Z]+;$/.test(n)&&(n=n.replace(/\s*;$/,";")),n=a.minifyCSS(n,"inline")),n;if(s=e,"srcset"===t&&_(s))n=R(n).split(/\s+,\s*|\s*,\s+/).map(function(e){var t=e,n="",r=e.match(/\s+([1-9][0-9]*w|[0-9]+(?:\.[0-9]+)?x)$/);if(r){t=t.slice(0,-r[0].length);var i=+r[1].slice(0,-1),o=r[1].slice(-1);1===i&&"x"===o||(n=" "+i+o)}return a.minifyURLs(t)+n}).join(", ");else if(function(e,t){if("meta"!==e)return!1;for(var n=0,r=t.length;n<r;n++)if("name"===t[n].name&&"viewport"===t[n].value)return!0}(e,r)&&"content"===t)n=n.replace(/\s+/g,"").replace(/[0-9]+\.[0-9]+/g,function(e){return(+e).toString()});else if(a.customAttrCollapse&&a.customAttrCollapse.test(t))n=n.replace(/\n+|\r+|\s{2,}/g,"");else if("script"===e&&"type"===t)n=R(n.replace(/\s*;\s*/g,";"));else if(i=e,o=r,"media"===t&&(y(i,o,"stylesheet")||M(i,o)))return n=R(n),a.minifyCSS(n,"media");var i,o,s,u,l,c,f;return n}function N(e){return"/* clean-css ignore:start */"+e+"/* clean-css ignore:end */"}function P(e,t){switch(t){case"inline":return"*{"+e+"}";case"media":return"@media "+e+"{a{top:0}}";default:return e}}var z=i("html,head,body,colgroup,tbody"),j=i("html,head,body,li,dt,dd,p,rb,rt,rtc,rp,optgroup,option,colgroup,caption,thead,tbody,tfoot,tr,td,th"),I=i("meta,link,script,style,template,noscript"),V=i("dt,dd"),H=i("address,article,aside,blockquote,details,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,main,menu,nav,ol,p,pre,section,table,ul"),$=i("a,audio,del,ins,map,noscript,video"),K=i("rb,rt,rtc,rp"),G=i("rb,rtc,rp"),Y=i("option,optgroup"),W=i("tbody,tfoot"),Q=i("thead,tbody,tfoot"),Z=i("td,th"),J=i("html,head,body"),X=i("html,body"),ee=i("head,colgroup,caption"),te=i("dt,thead"),ne=i("a,abbr,acronym,address,applet,area,article,aside,audio,b,base,basefont,bdi,bdo,bgsound,big,blink,blockquote,body,br,button,canvas,caption,center,cite,code,col,colgroup,command,content,data,datalist,dd,del,details,dfn,dialog,dir,div,dl,dt,element,em,embed,fieldset,figcaption,figure,font,footer,form,frame,frameset,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,i,iframe,image,img,input,ins,isindex,kbd,keygen,label,legend,li,link,listing,main,map,mark,marquee,menu,menuitem,meta,meter,multicol,nav,nobr,noembed,noframes,noscript,object,ol,optgroup,option,output,p,param,picture,plaintext,pre,progress,q,rb,rp,rt,rtc,ruby,s,samp,script,section,select,shadow,small,source,spacer,span,strike,strong,style,sub,summary,sup,table,tbody,td,template,textarea,tfoot,th,thead,time,title,tr,track,tt,u,ul,var,video,wbr,xmp");var E=new RegExp("^(?:class|id|style|title|lang|dir|on(?:focus|blur|change|click|dblclick|mouse(?:down|up|over|move|out)|key(?:press|down|up)))$");function re(e,t){for(var n=t.length-1;0<=n;n--)if(t[n].name===e)return!0;return!1}function ie(e){return!/^(?:script|style|pre|textarea)$/.test(e)}function oe(e){return!/^(?:pre|textarea)$/.test(e)}function ae(e,t,n,r){var i,o,a,s,u,l,c,f,p=r.name(e.name),d=e.value;if((r.decodeEntities&&d&&(d=h(d,{isAttributeValue:!0})),!(r.removeRedundantAttributes&&(i=n,o=p,s=t,a=(a=d)?R(a.toLowerCase()):"","script"===i&&"language"===o&&"javascript"===a||"form"===i&&"method"===o&&"get"===a||"input"===i&&"type"===o&&"text"===a||"script"===i&&"charset"===o&&!m(s,"src")||"a"===i&&"name"===o&&m(s,"id")||"area"===i&&"shape"===o&&"rect"===a)||r.removeScriptTypeAttributes&&"script"===n&&"type"===p&&U(d)||r.removeStyleLinkTypeAttributes&&("style"===n||"link"===n)&&"type"===p&&g(d)))&&(d&&(d=w(n,p,d,r,t)),!r.removeEmptyAttributes||(u=n,l=p,f=r,(c=d)&&!/^\s*$/.test(c)||!("function"==typeof f.removeEmptyAttributes?f.removeEmptyAttributes(l,u):"input"===u&&"value"===l||E.test(l)))))return r.decodeEntities&&d&&(d=d.replace(/&(#?[0-9a-zA-Z]+;)/g,"&amp;$1")),{attr:e,name:p,value:d}}function se(e,t,n,r,i){var o,a,s,u,l=e.name,c=e.value,f=e.attr,p=f.quote;if(void 0===c||n.removeAttributeQuotes&&!~c.indexOf(i)&&/^[^ \t\n\f\r"'`=<>]+$/.test(c))a=!r||t||/\/$/.test(c)?c+" ":c;else{if(!n.preventAttributesEscaping){if(void 0===n.quoteCharacter)p=(c.match(/'/g)||[]).length<(c.match(/"/g)||[]).length?"'":'"';else p="'"===n.quoteCharacter?"'":'"';c='"'===p?c.replace(/"/g,"&#34;"):c.replace(/'/g,"&#39;")}a=p+c+p,r||n.removeTagWhitespace||(a+=" ")}return void 0===c||n.collapseBooleanAttributes&&(s=l.toLowerCase(),u=c.toLowerCase(),v(s)||"draggable"===s&&!b(u))?(o=l,r||(o+=" ")):o=l+f.customAssign+a,f.customOpen+o+f.customClose}function ue(e){return e}function le(e){for(var t;t=Math.random().toString(36).replace(/^0\.[0-9]*/,""),~e.indexOf(t););return t}var ce=i("script,style");function fe(i,m,e){m.collapseWhitespace&&(i=f(i,m,!0,!0));var g,v,a,b,s,y=[],_="",w="",E=[],A=[],x=[],k="",C="",o=[],u=[];i=i.replace(/<!-- htmlmin:ignore -->([\s\S]*?)<!-- htmlmin:ignore -->/g,function(e,t){if(!a){a=le(i);var n=new RegExp("^"+a+"([0-9]+)$");m.ignoreCustomComments?m.ignoreCustomComments=m.ignoreCustomComments.slice():m.ignoreCustomComments=[],m.ignoreCustomComments.push(n)}var r="\x3c!--"+a+o.length+"--\x3e";return o.push(t),r});var t=m.ignoreCustomFragments.map(function(e){return e.source});if(t.length){var n=new RegExp("\\s*(?:"+t.join("|")+")+\\s*","g");i=i.replace(n,function(e){var n,t;b||(b=le(i),s=new RegExp("(\\s*)"+b+"([0-9]+)(\\s*)","g"),m.minifyCSS&&(m.minifyCSS=(t=m.minifyCSS,function(r,e){r=r.replace(s,function(e,t,n){var r=u[+n];return r[1]+b+n+r[2]});var i=[];return(new c).minify(P(r,e)).warnings.forEach(function(e){var t=s.exec(e);if(t){var n=b+t[2];r=r.replace(n,N(n)),i.push(n)}}),r=t(r,e),i.forEach(function(e){r=r.replace(N(e),e)}),r})),m.minifyJS&&(m.minifyJS=(n=m.minifyJS,function(e,t){return n(e.replace(s,function(e,t,n){var r=u[+n];return r[1]+b+n+r[2]}),t)})));var r=b+u.length;return u.push(/^(\s*)[\s\S]*?(\s*)$/.exec(e)),"\t"+r+"\t"})}function O(e,t){return m.canTrimWhitespace(e,t,oe)}function S(){for(var e=y.length-1;0<e&&!/^<[^/!]/.test(y[e]);)e--;y.length=Math.max(0,e)}function D(){for(var e=y.length-1;0<e&&!/^<\//.test(y[e]);)e--;y.length=Math.max(0,e)}function l(e,t){for(var n=null;0<=e&&O(n);e--){var r=y[e],i=r.match(/^<\/([\w:-]+)>$/);if(i)n=i[1];else if(/>$/.test(r)||(y[e]=q(r,null,t,m)))break}}function T(e){var t=y.length-1;if(1<y.length){var n=y[y.length-1];/^(?:<!|$)/.test(n)&&-1===n.indexOf(a)&&t--}l(t,e)}return(m.sortAttributes&&"function"!=typeof m.sortAttributes||m.sortClassName&&"function"!=typeof m.sortClassName)&&function(e,s,t,n){var u=s.sortAttributes&&Object.create(null),l=s.sortClassName&&new B;function c(e){return e.map(function(e){return s.name(e.name)})}function r(e,t){return!t||-1===e.indexOf(t)}function f(e){return r(e,t)&&r(e,n)}var i=s.log;if(s.log=ue,s.sortAttributes=!1,s.sortClassName=!1,function t(e){var o,a;new d(e,{start:function(e,t){u&&(u[e]||(u[e]=new B),u[e].add(c(t).filter(f)));for(var n=0,r=t.length;n<r;n++){var i=t[n];l&&i.value&&"class"===s.name(i.name)?l.add(R(i.value).split(/[ \t\n\f\r]+/).filter(f)):s.processScripts&&"type"===i.name.toLowerCase()&&(o=e,a=i.value)}},end:function(){o=""},chars:function(e){s.processScripts&&ce(o)&&-1<s.processScripts.indexOf(a)&&t(e)}})}(fe(e,s)),s.log=i,u){var o=Object.create(null);for(var a in u)o[a]=u[a].createSorter();s.sortAttributes=function(e,n){var t=o[e];if(t){var r=Object.create(null),i=c(n);i.forEach(function(e,t){(r[e]||(r[e]=[])).push(n[t])}),t.sort(i).forEach(function(e,t){n[t]=r[e].shift()})}}}if(l){var p=l.createSorter();s.sortClassName=function(e){return p.sort(e.split(/[ \n\f\r]+/)).join(" ")}}}(i,m,a,b),new d(i,{partialMarkup:e,html5:m.html5,start:function(e,t,n,r,i){"svg"===e.toLowerCase()&&((m=Object.create(m)).caseSensitive=!0,m.keepClosingSlash=!0,m.name=ue),e=m.name(e),F(g=w=e)||(_=""),v=!1,E=t;var o,a,s=m.removeOptionalTags;if(s){var u=ne(e);u&&function(e,t){switch(e){case"html":case"head":return!0;case"body":return!I(t);case"colgroup":return"col"===t;case"tbody":return"tr"===t}return!1}(k,e)&&S(),k="",u&&function(e,t){switch(e){case"html":case"head":case"body":case"colgroup":case"caption":return!0;case"li":case"optgroup":case"tr":return t===e;case"dt":case"dd":return V(t);case"p":return H(t);case"rb":case"rt":case"rp":return K(t);case"rtc":return G(t);case"option":return Y(t);case"thead":case"tbody":return W(t);case"tfoot":return"tbody"===t;case"td":case"th":return Z(t)}return!1}(C,e)&&(D(),s=!function(e,t){switch(t){case"colgroup":return"colgroup"===e;case"tbody":return Q(e)}return!1}(C,e)),C=""}m.collapseWhitespace&&(A.length||T(e),n||(O(e,t)&&!A.length||A.push(e),o=e,a=t,(!m.canCollapseWhitespace(o,a,ie)||x.length)&&x.push(e)));var l="<"+e,c=r&&m.keepClosingSlash;y.push(l),m.sortAttributes&&m.sortAttributes(e,t);for(var f=[],p=t.length,d=!0;0<=--p;){var h=ae(t[p],t,e,m);h&&(f.unshift(se(h,c,m,d,b)),d=!1)}0<f.length?(y.push(" "),y.push.apply(y,f)):s&&z(e)&&(k=e),y.push(y.pop()+(c?"/":"")+">"),i&&!m.includeAutoGeneratedTags&&(S(),k="")},end:function(e,t,n){"svg"===e.toLowerCase()&&(m=Object.getPrototypeOf(m)),e=m.name(e),m.collapseWhitespace&&(A.length?e===A[A.length-1]&&A.pop():T("/"+e),x.length&&e===x[x.length-1]&&x.pop());var r=!1;e===w&&(w="",r=!v),m.removeOptionalTags&&(r&&J(k)&&S(),k="",!ne(e)||!C||te(C)||"p"===C&&$(e)||D(),C=j(e)?e:""),m.removeEmptyElements&&r&&function(e,t){switch(e){case"textarea":return!1;case"audio":case"script":case"video":if(re("src",t))return!1;break;case"iframe":if(re("src",t)||re("srcdoc",t))return!1;break;case"object":if(re("data",t))return!1;break;case"applet":if(re("code",t))return!1}return!0}(e,t)?(S(),C=k=""):(n&&!m.includeAutoGeneratedTags?C="":y.push("</"+e+">"),g="/"+e,L(e)?r&&(_+="|"):_="")},chars:function(t,e,n){if(e=""===e?"comment":e,n=""===n?"comment":n,m.decodeEntities&&t&&!ce(w)&&(t=h(t)),m.collapseWhitespace){if(!A.length){if("comment"===e){var r=y[y.length-1];if(-1===r.indexOf(a)&&(r||(e=g),1<y.length&&(!r||!m.conservativeCollapse&&/ $/.test(_)))){var i=y.length-2;y[i]=y[i].replace(/\s+$/,function(e){return t=e+t,""})}}if(e)if("/nobr"===e||"wbr"===e){if(/^\s/.test(t)){for(var o=y.length-1;0<o&&0!==y[o].lastIndexOf("<"+e);)o--;l(o-1,"br")}}else F("/"===e.charAt(0)?e.slice(1):e)&&(t=f(t,m,/(?:^|\s)$/.test(_)));!(t=e||n?q(t,e,n,m):f(t,m,!0,!0))&&/\s$/.test(_)&&e&&"/"===e.charAt(0)&&l(y.length-1,n)}x.length||"html"===n||e&&n||(t=f(t,m,!1,!1,!0))}m.processScripts&&ce(w)&&(t=function(e,t,n){for(var r=0,i=n.length;r<i;r++)if("type"===n[r].name.toLowerCase()&&-1<t.processScripts.indexOf(n[r].value))return fe(e,t);return e}(t,m,E)),function(e,t){if("script"!==e)return!1;for(var n=0,r=t.length;n<r;n++)if("type"===t[n].name.toLowerCase())return U(t[n].value);return!0}(w,E)&&(t=m.minifyJS(t)),M(w,E)&&(t=m.minifyCSS(t)),m.removeOptionalTags&&t&&(("html"===k||"body"===k&&!/^\s/.test(t))&&S(),k="",(X(C)||ee(C)&&!/^\s/.test(t))&&D(),C=""),g=/^\s*$/.test(t)?e:"comment",m.decodeEntities&&t&&!ce(w)&&(t=t.replace(/&((?:Iacute|aacute|uacute|plusmn|Otilde|otilde|agrave|Agrave|Yacute|yacute|Oslash|oslash|atilde|Atilde|brvbar|ccedil|Ccedil|Ograve|curren|divide|eacute|Eacute|ograve|Oacute|egrave|Egrave|Ugrave|frac12|frac14|frac34|ugrave|oacute|iacute|Ntilde|ntilde|Uacute|middot|igrave|Igrave|iquest|Aacute|cedil|laquo|micro|iexcl|Icirc|icirc|acirc|Ucirc|Ecirc|ocirc|Ocirc|ecirc|ucirc|Aring|aring|AElig|aelig|acute|pound|raquo|Acirc|times|THORN|szlig|thorn|COPY|auml|ordf|ordm|Uuml|macr|uuml|Auml|ouml|Ouml|para|nbsp|euml|quot|QUOT|Euml|yuml|cent|sect|copy|sup1|sup2|sup3|iuml|Iuml|ETH|shy|reg|not|yen|amp|AMP|REG|uml|eth|deg|gt|GT|LT|lt)(?!;)|(?:#?[0-9a-zA-Z]+;))/g,"&amp$1").replace(/</g,"&lt;")),s&&m.collapseWhitespace&&A.length&&(t=t.replace(s,function(e,t,n){return u[+n][0]})),_+=t,t&&(v=!0),y.push(t)},comment:function(e,t){var n,i,r=t?"<!":"\x3c!--",o=t?">":"--\x3e";e=/^\[if\s[^\]]+]|\[endif]$/.test(e)?r+(n=e,(i=m).processConditionalComments?n.replace(/^(\[if\s[^\]]+]>)([\s\S]*?)(<!\[endif])$/,function(e,t,n,r){return t+fe(n,i,!0)+r}):n)+o:m.removeComments?function(e,t){for(var n=0,r=t.ignoreCustomComments.length;n<r;n++)if(t.ignoreCustomComments[n].test(e))return!0;return!1}(e,m)?"\x3c!--"+e+"--\x3e":"":r+e+o,m.removeOptionalTags&&e&&(C=k=""),y.push(e)},doctype:function(e){y.push(m.useShortDoctype?"<!doctype"+(m.removeTagWhitespace?"":" ")+"html>":p(e))},customAttrAssign:m.customAttrAssign,customAttrSurround:m.customAttrSurround}),m.removeOptionalTags&&(J(k)&&S(),C&&!te(C)&&D()),m.collapseWhitespace&&T("br"),function(e,t,n,r){var i,o=t.maxLineLength;if(o){for(var a="",s=[];e.length;){var u=a.length,l=e[0].indexOf("\n");l<0?a+=r(n(e.shift())):(a+=r(n(e[0].slice(0,l))),e[0]=e[0].slice(l+1)),0<u&&a.length>o?(s.push(a.slice(0,u)),a=a.slice(u)):0<=l&&(s.push(a),a="")}a&&s.push(a),i=s.join("\n")}else i=r(n(e.join("")));return t.collapseWhitespace?f(i,t,!0,!0):i}(y,m,s?function(e){return e.replace(s,function(e,t,n,r){var i=u[+n][0];return m.collapseWhitespace?("\t"!==t&&(i=t+i),"\t"!==r&&(i+=r),f(i,{preserveLineBreaks:m.preserveLineBreaks,conservativeCollapse:!m.trimCustomFragments},/^[ \n\r\t\f]/.test(i),/[ \n\r\t\f]$/.test(i))):i})}:ue,a?function(e){return e.replace(new RegExp("\x3c!--"+a+"([0-9]+)--\x3e","g"),function(e,t){return o[+t]})}:ue)}n.minify=function(e,t){var n,a,r=Date.now();n=t||{},a={name:function(e){return e.toLowerCase()},canCollapseWhitespace:ie,canTrimWhitespace:oe,html5:!0,ignoreCustomComments:[/^!/],ignoreCustomFragments:[/<%[\s\S]*?%>/,/<\?[\s\S]*?\?>/],includeAutoGeneratedTags:!0,log:ue,minifyCSS:ue,minifyJS:ue,minifyURLs:ue},Object.keys(n).forEach(function(e){var o=n[e];if("caseSensitive"===e)o&&(a.name=ue);else if("log"===e)"function"==typeof o&&(a.log=o);else if("minifyCSS"===e&&"function"!=typeof o){if(!o)return;"object"!=typeof o&&(o={}),a.minifyCSS=function(e,t){e=e.replace(/(url\s*\(\s*)("|'|)(.*?)\2(\s*\))/gi,function(e,t,n,r,i){return t+n+a.minifyURLs(r)+n+i});var n=new c(o).minify(P(e,t));return 0<n.errors.length?(n.errors.forEach(a.log),e):function(e,t){var n;switch(t){case"inline":n=e.match(/^\*\{([\s\S]*)\}$/);break;case"media":n=e.match(/^@media ([\s\S]*?)\s*{[\s\S]*}$/)}return n?n[1]:e}(n.styles,t)}}else if("minifyJS"===e&&"function"!=typeof o){if(!o)return;"object"!=typeof o&&(o={}),(o.parse||(o.parse={})).bare_returns=!1,a.minifyJS=function(e,t){var n=e.match(/^\s*<!--.*/),r=n?e.slice(n[0].length).replace(/\n\s*-->\s*$/,""):e;o.parse.bare_returns=t;var i=u.minify(r,o);return i.error?(a.log(i.error),e):i.code.replace(/;$/,"")}}else if("minifyURLs"===e&&"function"!=typeof o){if(!o)return;"string"==typeof o?o={site:o}:"object"!=typeof o&&(o={}),a.minifyURLs=function(t){try{return s.relate(t,o)}catch(e){return a.log(e),t}}}else a[e]=o});var i=fe(e,t=a);return t.log("minified in: "+(Date.now()-r)+"ms"),i}},{"./htmlparser":182,"./tokenchain":183,"./utils":184,"@ndcode/clean-css":1,he:115,relateurl:140,"uglify-es":174}],"uglify-js":[function(e,t,n){(function(u){!function(h){"use strict";function e(e){return e.split("")}function re(e,t){return 0<=t.indexOf(e)}function K(e,t){for(var n=t.length;0<=--n;)if(e(t[n]))return t[n]}function t(e){Object.defineProperty(e.prototype,"stack",{get:function(){var e=new Error(this.message);e.name=this.name;try{throw e}catch(e){return e.stack}}})}function o(e,t){this.message=e,this.defs=t}function $(e,t,n){!0===e&&(e={});var r=e||{};if(n)for(var i in r)if(se(r,i)&&!se(t,i))throw new o("`"+i+"` is not a supported option",t);for(var i in t)se(t,i)&&(r[i]=e&&se(e,i)?e[i]:t[i]);return r}function n(e,t){var n=0;for(var r in t)se(t,r)&&(e[r]=t[r],n++);return n}function G(){}function ie(){return!1}function Y(){return!0}function D(){return this}function T(){return null}((o.prototype=Object.create(Error.prototype)).constructor=o).prototype.name="DefaultsError",t(o);var oe=function(){function e(n,r,i){var o,a=[],s=[];function e(){var e=r(n[o],o),t=e instanceof f;return t&&(e=e.v),e instanceof l?(e=e.v)instanceof c?s.push.apply(s,i?e.v.slice().reverse():e.v):s.push(e):e!==u&&(e instanceof c?a.push.apply(a,i?e.v.slice().reverse():e.v):a.push(e)),t}if(Array.isArray(n))if(i){for(o=n.length;0<=--o&&!e(););a.reverse(),s.reverse()}else for(o=0;o<n.length&&!e();++o);else for(o in n)if(se(n,o)&&e())break;return s.concat(a)}e.at_top=function(e){return new l(e)},e.splice=function(e){return new c(e)},e.last=function(e){return new f(e)};var u=e.skip={};function l(e){this.v=e}function c(e){this.v=e}function f(e){this.v=e}return e}();function g(e,t){if(e.indexOf(t)<0)return e.push(t)}function B(e,n){return e.replace(/\{(.+?)\}/g,function(e,t){return n&&n[t]})}function R(e,t){var n=e.indexOf(t);0<=n&&e.splice(n,1)}function W(e){Array.isArray(e)||(e=e.split(" "));var t=Object.create(null);return e.forEach(function(e){t[e]=!0}),t}function ae(e,t){for(var n=e.length;0<=--n;)if(!t(e[n]))return!1;return!0}function L(){this._values=Object.create(null),this._size=0}function se(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function F(e){for(var t,n=e.parent(-1),r=0;t=e.parent(r++);n=t){if("Call"==t.TYPE){if(t.expression===n)continue}else if(t instanceof tt){if(t.left===n)continue}else if(t instanceof nt){if(t.condition===n)continue}else if(t instanceof We){if(t.expression===n)continue}else if(t instanceof Ye){if(t.expressions[0]===n)continue}else{if(t instanceof le)return t.body===n;if(t instanceof et&&t.expression===n)continue}return!1}}function r(e,t,n,r){void 0===r&&(r=ue);var i=t=t?t.split(/\s+/):[];r&&r.PROPS&&(t=t.concat(r.PROPS));var o=["return function AST_",e,"(props){","if(props){"];t.forEach(function(e){o.push("this.",e,"=props.",e,";")});var a=r&&new r;(a&&a.initialize||n&&n.initialize)&&o.push("this.initialize();"),o.push("}}");var s=new Function(o.join(""))();if(a&&(s.prototype=a,s.BASE=r),r&&r.SUBCLASSES.push(s),(s.prototype.CTOR=s).PROPS=t||null,s.SELF_PROPS=i,s.SUBCLASSES=[],e&&(s.prototype.TYPE=s.TYPE=e),n)for(var u in n)se(n,u)&&(/^\$/.test(u)?s[u.substr(1)]=n[u]:s.prototype[u]=n[u]);return s.DEFMETHOD=function(e,t){this.prototype[e]=t},void 0!==h&&(h["AST_"+e]=s),s}L.prototype={set:function(e,t){return this.has(e)||++this._size,this._values["$"+e]=t,this},add:function(e,t){return this.has(e)?this.get(e).push(t):this.set(e,[t]),this},get:function(e){return this._values["$"+e]},del:function(e){return this.has(e)&&(--this._size,delete this._values["$"+e]),this},has:function(e){return"$"+e in this._values},each:function(e){for(var t in this._values)e(this._values[t],t.substr(1))},size:function(){return this._size},map:function(e){var t=[];for(var n in this._values)t.push(e(this._values[n],n.substr(1)));return t},clone:function(){var e=new L;for(var t in this._values)e._values[t]=this._values[t];return e._size=this._size,e},toObject:function(){return this._values}},L.fromObject=function(e){var t=new L;return t._size=n(t._values,e),t};var O=r("Token","type value line col pos endline endcol endpos nlb comments_before comments_after file raw",{},null),ue=r("Node","start end",{_clone:function(e){if(e){var t=this.clone();return t.transform(new Wt(function(e){if(e!==t)return e.clone(!0)}))}return new this.CTOR(this)},clone:function(e){return this._clone(e)},$documentation:"Base class of all AST nodes",$propdoc:{start:"[AST_Token] The first token of this node",end:"[AST_Token] The last token of this node"},_walk:function(e){return e._visit(this)},walk:function(e){return this._walk(e)}},null);ue.warn=function(e,t){ue.warn_function&&ue.warn_function(B(e,t))};var le=r("Statement",null,{$documentation:"Base class of all statements"}),ce=r("Debugger",null,{$documentation:"Represents a debugger statement"},le),fe=r("Directive","value quote",{$documentation:'Represents a directive, like "use strict";',$propdoc:{value:"[string] The value of this directive as a plain string (it's not an AST_String!)",quote:"[string] the original quote character"}},le),pe=r("SimpleStatement","body",{$documentation:"A statement consisting of an expression, i.e. a = 1 + 2",$propdoc:{body:"[AST_Node] an expression node (should not be instanceof AST_Statement)"},_walk:function(e){return e._visit(this,function(){this.body._walk(e)})}},le);function q(e,t){var n=e.body;n instanceof le?n._walk(t):n.forEach(function(e){e._walk(t)})}var de=r("Block","body",{$documentation:"A body of statements (usually braced)",$propdoc:{body:"[AST_Statement*] an array of statements"},_walk:function(e){return e._visit(this,function(){q(this,e)})}},le),he=r("BlockStatement",null,{$documentation:"A block statement"},de),me=r("EmptyStatement",null,{$documentation:"The empty statement (empty block or simply a semicolon)"},le),v=r("StatementWithBody","body",{$documentation:"Base class for all statements that contain one nested body: `For`, `ForIn`, `Do`, `While`, `With`",$propdoc:{body:"[AST_Statement] the body; this should always be present, even if it's an AST_EmptyStatement"}},le),ge=r("LabeledStatement","label",{$documentation:"Statement with a label",$propdoc:{label:"[AST_Label] a label definition"},_walk:function(e){return e._visit(this,function(){this.label._walk(e),this.body._walk(e)})},clone:function(e){var t=this._clone(e);if(e){var n=t.label,r=this.label;t.walk(new Dt(function(e){e instanceof Re&&e.label&&e.label.thedef===r&&(e.label.thedef=n).references.push(e)}))}return t}},v),ve=r("IterationStatement",null,{$documentation:"Internal class.  All loops inherit from it."},v),be=r("DWLoop","condition",{$documentation:"Base class for do/while statements",$propdoc:{condition:"[AST_Node] the loop condition.  Should not be instanceof AST_Statement"}},ve),ye=r("Do",null,{$documentation:"A `do` statement",_walk:function(e){return e._visit(this,function(){this.body._walk(e),this.condition._walk(e)})}},be),_e=r("While",null,{$documentation:"A `while` statement",_walk:function(e){return e._visit(this,function(){this.condition._walk(e),this.body._walk(e)})}},be),we=r("For","init condition step",{$documentation:"A `for` statement",$propdoc:{init:"[AST_Node?] the `for` initialization code, or null if empty",condition:"[AST_Node?] the `for` termination clause, or null if empty",step:"[AST_Node?] the `for` update clause, or null if empty"},_walk:function(e){return e._visit(this,function(){this.init&&this.init._walk(e),this.condition&&this.condition._walk(e),this.step&&this.step._walk(e),this.body._walk(e)})}},ve),Ee=r("ForIn","init object",{$documentation:"A `for ... in` statement",$propdoc:{init:"[AST_Node] the `for/in` initialization code",object:"[AST_Node] the object that we're looping through"},_walk:function(e){return e._visit(this,function(){this.init._walk(e),this.object._walk(e),this.body._walk(e)})}},ve),Ae=r("With","expression",{$documentation:"A `with` statement",$propdoc:{expression:"[AST_Node] the `with` expression"},_walk:function(e){return e._visit(this,function(){this.expression._walk(e),this.body._walk(e)})}},v),xe=r("Scope","variables functions uses_with uses_eval parent_scope enclosed cname",{$documentation:"Base class for all statements introducing a lexical scope",$propdoc:{variables:"[Object/S] a map of name -> SymbolDef for all variables/functions defined in this scope",functions:"[Object/S] like `variables`, but only lists function declarations",uses_with:"[boolean/S] tells whether this scope uses the `with` statement",uses_eval:"[boolean/S] tells whether this scope contains a direct call to the global `eval`",parent_scope:"[AST_Scope?/S] link to the parent scope",enclosed:"[SymbolDef*/S] a list of all symbol definitions that are accessed from this scope or any subscopes",cname:"[integer/S] current index for mangling variables (used internally by the mangler)"},clone:function(e){var t=this._clone(e);return this.variables&&(t.variables=this.variables.clone()),this.functions&&(t.functions=this.functions.clone()),this.enclosed&&(t.enclosed=this.enclosed.slice()),t},pinned:function(){return this.uses_eval||this.uses_with}},de),ke=r("Toplevel","globals",{$documentation:"The toplevel scope",$propdoc:{globals:"[Object/S] a map of name -> SymbolDef for all undeclared names"},wrap_commonjs:function(e){var t=this.body,n="(function(exports){'$ORIG';})(typeof "+e+"=='undefined'?("+e+"={}):"+e+");";return n=(n=Yt(n)).transform(new Wt(function(e){if(e instanceof fe&&"$ORIG"==e.value)return oe.splice(t)}))},wrap_enclose:function(e){"string"!=typeof e&&(e="");var t=e.indexOf(":");t<0&&(t=e.length);var n=this.body;return Yt(["(function(",e.slice(0,t),'){"$ORIG"})(',e.slice(t+1),")"].join("")).transform(new Wt(function(e){if(e instanceof fe&&"$ORIG"==e.value)return oe.splice(n)}))}},xe),Ce=r("Lambda","name argnames uses_arguments",{$documentation:"Base class for functions",$propdoc:{name:"[AST_SymbolDeclaration?] the name of this function",argnames:"[AST_SymbolFunarg*] array of function arguments",uses_arguments:"[boolean/S] tells whether this function accesses the arguments array"},_walk:function(t){return t._visit(this,function(){this.name&&this.name._walk(t),this.argnames.forEach(function(e){e._walk(t)}),q(this,t)})}},xe),Oe=r("Accessor",null,{$documentation:"A setter/getter function.  The `name` property is always null."},Ce),Se=r("Function","inlined",{$documentation:"A function expression"},Ce),De=r("Defun","inlined",{$documentation:"A function definition"},Ce),U=r("Jump",null,{$documentation:"Base class for “jumps” (for now that's `return`, `throw`, `break` and `continue`)"},le),Te=r("Exit","value",{$documentation:"Base class for “exits” (`return` and `throw`)",$propdoc:{value:"[AST_Node?] the value returned or thrown by this statement; could be null for AST_Return"},_walk:function(e){return e._visit(this,this.value&&function(){this.value._walk(e)})}},U),Be=r("Return",null,{$documentation:"A `return` statement"},Te),Q=r("Throw",null,{$documentation:"A `throw` statement"},Te),Re=r("LoopControl","label",{$documentation:"Base class for loop control statements (`break` and `continue`)",$propdoc:{label:"[AST_LabelRef?] the label, or null if none"},_walk:function(e){return e._visit(this,this.label&&function(){this.label._walk(e)})}},U),Le=r("Break",null,{$documentation:"A `break` statement"},Re),Fe=r("Continue",null,{$documentation:"A `continue` statement"},Re),qe=r("If","condition alternative",{$documentation:"A `if` statement",$propdoc:{condition:"[AST_Node] the `if` condition",alternative:"[AST_Statement?] the `else` part, or null if not present"},_walk:function(e){return e._visit(this,function(){this.condition._walk(e),this.body._walk(e),this.alternative&&this.alternative._walk(e)})}},v),Ue=r("Switch","expression",{$documentation:"A `switch` statement",$propdoc:{expression:"[AST_Node] the `switch` “discriminant”"},_walk:function(e){return e._visit(this,function(){this.expression._walk(e),q(this,e)})}},de),Me=r("SwitchBranch",null,{$documentation:"Base class for `switch` branches"},de),Ne=r("Default",null,{$documentation:"A `default` switch branch"},Me),Pe=r("Case","expression",{$documentation:"A `case` switch branch",$propdoc:{expression:"[AST_Node] the `case` expression"},_walk:function(e){return e._visit(this,function(){this.expression._walk(e),q(this,e)})}},Me),ze=r("Try","bcatch bfinally",{$documentation:"A `try` statement",$propdoc:{bcatch:"[AST_Catch?] the catch block, or null if not present",bfinally:"[AST_Finally?] the finally block, or null if not present"},_walk:function(e){return e._visit(this,function(){q(this,e),this.bcatch&&this.bcatch._walk(e),this.bfinally&&this.bfinally._walk(e)})}},de),je=r("Catch","argname",{$documentation:"A `catch` node; only makes sense as part of a `try` statement",$propdoc:{argname:"[AST_SymbolCatch] symbol for the exception"},_walk:function(e){return e._visit(this,function(){this.argname._walk(e),q(this,e)})}},de),Ie=r("Finally",null,{$documentation:"A `finally` node; only makes sense as part of a `try` statement"},de),Ve=r("Definitions","definitions",{$documentation:"Base class for `var` nodes (variable declarations/initializations)",$propdoc:{definitions:"[AST_VarDef*] array of variable definitions"},_walk:function(t){return t._visit(this,function(){this.definitions.forEach(function(e){e._walk(t)})})}},le),He=r("Var",null,{$documentation:"A `var` statement"},Ve),$e=r("VarDef","name value",{$documentation:"A variable declaration; only appears in a AST_Definitions node",$propdoc:{name:"[AST_SymbolVar] name of the variable",value:"[AST_Node?] initializer, or null of there's no initializer"},_walk:function(e){return e._visit(this,function(){this.name._walk(e),this.value&&this.value._walk(e)})}}),Ke=r("Call","expression args",{$documentation:"A function call expression",$propdoc:{expression:"[AST_Node] expression to invoke as function",args:"[AST_Node*] array of arguments"},_walk:function(t){return t._visit(this,function(){this.expression._walk(t),this.args.forEach(function(e){e._walk(t)})})}}),Ge=r("New",null,{$documentation:"An object instantiation.  Derives from a function call since it has exactly the same properties"},Ke),Ye=r("Sequence","expressions",{$documentation:"A sequence expression (comma-separated expressions)",$propdoc:{expressions:"[AST_Node*] array of expressions (at least two)"},_walk:function(t){return t._visit(this,function(){this.expressions.forEach(function(e){e._walk(t)})})}}),We=r("PropAccess","expression property",{$documentation:'Base class for property access expressions, i.e. `a.foo` or `a["foo"]`',$propdoc:{expression:"[AST_Node] the “container” expression",property:"[AST_Node|string] the property to access.  For AST_Dot this is always a plain string, while for AST_Sub it's an arbitrary AST_Node"}}),Qe=r("Dot",null,{$documentation:"A dotted property access expression",_walk:function(e){return e._visit(this,function(){this.expression._walk(e)})}},We),Ze=r("Sub",null,{$documentation:'Index-style property access, i.e. `a["foo"]`',_walk:function(e){return e._visit(this,function(){this.expression._walk(e),this.property._walk(e)})}},We),Je=r("Unary","operator expression",{$documentation:"Base class for unary expressions",$propdoc:{operator:"[string] the operator",expression:"[AST_Node] expression that this unary operator applies to"},_walk:function(e){return e._visit(this,function(){this.expression._walk(e)})}}),Xe=r("UnaryPrefix",null,{$documentation:"Unary prefix expression, i.e. `typeof i` or `++i`"},Je),et=r("UnaryPostfix",null,{$documentation:"Unary postfix expression, i.e. `i++`"},Je),tt=r("Binary","operator left right",{$documentation:"Binary expression, i.e. `a + b`",$propdoc:{left:"[AST_Node] left-hand side expression",operator:"[string] the operator",right:"[AST_Node] right-hand side expression"},_walk:function(e){return e._visit(this,function(){this.left._walk(e),this.right._walk(e)})}}),nt=r("Conditional","condition consequent alternative",{$documentation:"Conditional expression using the ternary operator, i.e. `a ? b : c`",$propdoc:{condition:"[AST_Node]",consequent:"[AST_Node]",alternative:"[AST_Node]"},_walk:function(e){return e._visit(this,function(){this.condition._walk(e),this.consequent._walk(e),this.alternative._walk(e)})}}),rt=r("Assign",null,{$documentation:"An assignment expression — `a = b + 5`"},tt),it=r("Array","elements",{$documentation:"An array literal",$propdoc:{elements:"[AST_Node*] array of elements"},_walk:function(t){return t._visit(this,function(){this.elements.forEach(function(e){e._walk(t)})})}}),ot=r("Object","properties",{$documentation:"An object literal",$propdoc:{properties:"[AST_ObjectProperty*] array of properties"},_walk:function(t){return t._visit(this,function(){this.properties.forEach(function(e){e._walk(t)})})}}),at=r("ObjectProperty","key value",{$documentation:"Base class for literal object properties",$propdoc:{key:"[string|AST_SymbolAccessor] property name. For ObjectKeyVal this is a string. For getters and setters this is an AST_SymbolAccessor.",value:"[AST_Node] property value.  For getters and setters this is an AST_Accessor."},_walk:function(e){return e._visit(this,function(){this.value._walk(e)})}}),st=r("ObjectKeyVal","quote",{$documentation:"A key: value object property",$propdoc:{quote:"[string] the original quote character"}},at),Z=r("ObjectSetter",null,{$documentation:"An object setter property"},at),J=r("ObjectGetter",null,{$documentation:"An object getter property"},at),ut=r("Symbol","scope name thedef",{$propdoc:{name:"[string] name of this symbol",scope:"[AST_Scope/S] the current scope (not necessarily the definition scope)",thedef:"[SymbolDef/S] the definition of this symbol"},$documentation:"Base class for all symbols"}),X=r("SymbolAccessor",null,{$documentation:"The name of a property accessor (setter/getter function)"},ut),lt=r("SymbolDeclaration","init",{$documentation:"A declaration symbol (symbol in var, function name or argument, symbol in catch)"},ut),ct=r("SymbolVar",null,{$documentation:"Symbol defining a variable"},lt),ft=r("SymbolFunarg",null,{$documentation:"Symbol naming a function argument"},ct),pt=r("SymbolDefun",null,{$documentation:"Symbol defining a function"},lt),dt=r("SymbolLambda",null,{$documentation:"Symbol naming a function expression"},lt),ht=r("SymbolCatch",null,{$documentation:"Symbol naming the exception in catch"},lt),ee=r("Label","references",{$documentation:"Symbol naming a label (declaration)",$propdoc:{references:"[AST_LoopControl*] a list of nodes referring to this label"},initialize:function(){this.references=[],this.thedef=this}},ut),mt=r("SymbolRef",null,{$documentation:"Reference to some symbol (not definition/declaration)"},ut),te=r("LabelRef",null,{$documentation:"Reference to a label symbol"},ut),gt=r("This",null,{$documentation:"The `this` symbol"},ut),vt=r("Constant",null,{$documentation:"Base class for all constants",getValue:function(){return this.value}}),bt=r("String","value quote",{$documentation:"A string literal",$propdoc:{value:"[string] the contents of this string",quote:"[string] the original quote character"}},vt),yt=r("Number","value literal",{$documentation:"A number literal",$propdoc:{value:"[number] the numeric value",literal:"[string] numeric value as string (optional)"}},vt),_t=r("RegExp","value",{$documentation:"A regexp literal",$propdoc:{value:"[RegExp] the actual regexp"}},vt),a=r("Atom",null,{$documentation:"Base class for atoms"},vt),wt=r("Null",null,{$documentation:"The `null` atom",value:null},a),Et=r("NaN",null,{$documentation:"The impossible value",value:NaN},a),At=r("Undefined",null,{$documentation:"The `undefined` value",value:void 0},a),xt=r("Hole",null,{$documentation:"A hole in an array",value:void 0},a),kt=r("Infinity",null,{$documentation:"The `Infinity` value",value:1/0},a),Ct=r("Boolean",null,{$documentation:"Base class for booleans"},a),Ot=r("False",null,{$documentation:"The `false` atom",value:!1},Ct),St=r("True",null,{$documentation:"The `true` atom",value:!0},Ct);function Dt(e){this.visit=e,this.stack=[],this.directives=Object.create(null)}Dt.prototype={_visit:function(e,t){this.push(e);var n=this.visit(e,t?function(){t.call(e)}:G);return!n&&t&&t.call(e),this.pop(),n},parent:function(e){return this.stack[this.stack.length-2-(e||0)]},push:function(e){e instanceof Ce?this.directives=Object.create(this.directives):e instanceof fe&&!this.directives[e.value]&&(this.directives[e.value]=e),this.stack.push(e)},pop:function(){this.stack.pop()instanceof Ce&&(this.directives=Object.getPrototypeOf(this.directives))},self:function(){return this.stack[this.stack.length-1]},find_parent:function(e){for(var t=this.stack,n=t.length;0<=--n;){var r=t[n];if(r instanceof e)return r}},has_directive:function(e){var t=this.directives[e];if(t)return t;var n=this.stack[this.stack.length-1];if(n instanceof xe)for(var r=0;r<n.body.length;++r){var i=n.body[r];if(!(i instanceof fe))break;if(i.value==e)return i}},loopcontrol_target:function(e){var t=this.stack;if(e.label)for(var n=t.length;0<=--n;){if((r=t[n])instanceof ge&&r.label.name==e.label.name)return r.body}else for(n=t.length;0<=--n;){var r;if((r=t[n])instanceof ve||e instanceof Le&&r instanceof Ue)return r}},in_boolean_context:function(){for(var e,t=this.self(),n=0;e=this.parent(n);n++){if(e instanceof pe||e instanceof nt&&e.condition===t||e instanceof be&&e.condition===t||e instanceof we&&e.condition===t||e instanceof qe&&e.condition===t||e instanceof Xe&&"!"==e.operator&&e.expression===t)return!0;if(!(e instanceof tt&&("&&"==e.operator||"||"==e.operator)||e instanceof nt||e.tail_node()===t))return!1;t=e}}};var ne="break case catch const continue debugger default delete do else finally for function if in instanceof new return switch throw try typeof var void while with",S="false null true",b="abstract boolean byte char class double enum export extends final float goto implements import int interface let long native package private protected public short static super synchronized this throws transient volatile yield "+S+" "+ne,M="return new delete throw else case";ne=W(ne),b=W(b),M=W(M),S=W(S);var N=W(e("+-*&%=<>!?|~^")),P=/^0x[0-9a-f]+$/i,z=/^0[0-7]+$/,j=W(["in","instanceof","typeof","new","void","delete","++","--","+","-","!","~","&","|","^","*","/","%",">>","<<",">>>","<",">","<=",">=","==","===","!=","!==","?","=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&=","&&","||"]),I=W(e("  \n\r\t\f\v​           \u2028\u2029   \ufeff")),V=W(e("\n\r\u2028\u2029")),H=W(e("[{(,;:")),Tt=W(e("[]{}(),;:")),s={letter:new RegExp("[\\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\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\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-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\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-\\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\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\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\\u2160-\\u2188\\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-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\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-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\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]"),digit:new RegExp("[\\u0030-\\u0039\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]"),non_spacing_mark:new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"),space_combining_mark:new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"),connector_punctuation:new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]")};function Bt(e){return 97<=e&&e<=122||65<=e&&e<=90||170<=e&&s.letter.test(String.fromCharCode(e))}function Rt(e){return"string"==typeof e&&(e=e.charCodeAt(0)),55296<=e&&e<=56319}function Lt(e){return"string"==typeof e&&(e=e.charCodeAt(0)),56320<=e&&e<=57343}function Ft(e){return 48<=e&&e<=57}function f(e){return!b[e]&&/^[a-z_$][a-z0-9_$]*$/i.test(e)}function qt(e){return 36==e||95==e||Bt(e)}function Ut(e){var t,n,r,i=e.charCodeAt(0);return qt(i)||Ft(i)||8204==i||8205==i||(r=e,s.non_spacing_mark.test(r)||s.space_combining_mark.test(r))||(n=e,s.connector_punctuation.test(n))||(t=i,s.digit.test(String.fromCharCode(t)))}function Mt(e){return/^[a-z_$][a-z0-9_$]*$/i.test(e)}function Nt(e,t,n,r,i){this.message=e,this.filename=t,this.line=n,this.col=r,this.pos=i}function Pt(e,t,n,r,i){throw new Nt(e,t,n,r,i)}function zt(e,t,n){return e.type==t&&(null==n||e.value==n)}((Nt.prototype=Object.create(Error.prototype)).constructor=Nt).prototype.name="SyntaxError",t(Nt);var jt={};function It(i,o,a,s){var u={text:i,filename:o,pos:0,tokpos:0,line:1,tokline:0,col:0,tokcol:0,newline_before:!1,regex_allowed:!1,comments_before:[],directives:{},directive_stack:[]};function l(){return u.text.charAt(u.pos)}function c(e,t){var n=u.text.charAt(u.pos++);if(e&&!n)throw jt;return V[n]?(u.newline_before=u.newline_before||!t,++u.line,u.col=0,t||"\r"!=n||"\n"!=l()||(++u.pos,n="\n")):++u.col,n}function f(e){for(;0<e--;)c()}function p(e){return u.text.substr(u.pos,e.length)==e}function d(){u.tokline=u.line,u.tokcol=u.col,u.tokpos=u.pos}var h=!1;function m(e,t,n){u.regex_allowed="operator"==e&&!Ht[t]||"keyword"==e&&M[t]||"punc"==e&&H[t],"punc"==e&&"."==t?h=!0:n||(h=!1);var r={type:e,value:t,line:u.tokline,col:u.tokcol,pos:u.tokpos,endline:u.line,endcol:u.col,endpos:u.pos,nlb:u.newline_before,file:o};return/^(?:num|string|regexp)$/i.test(e)&&(r.raw=i.substring(r.pos,r.endpos)),n||(r.comments_before=u.comments_before,r.comments_after=u.comments_before=[]),u.newline_before=!1,new O(r)}function g(){for(;I[l()];)c()}function v(e){Pt(e,o,u.tokline,u.tokcol,u.tokpos)}function b(i){var o=!1,a=!1,s=!1,u="."==i,e=function(e){for(var t,n="",r=0;(t=l())&&e(t,r++);)n+=c();return n}(function(e,t){var n,r=e.charCodeAt(0);switch(r){case 120:case 88:return!s&&(s=!0);case 101:case 69:return!!s||!o&&(o=a=!0);case 45:return a||0==t&&!i;case 43:return a;case a=!1,46:return!(u||s||o)&&(u=!0)}return Ft(n=r)||Bt(n)});i&&(e=i+e),z.test(e)&&C.has_directive("use strict")&&v("Legacy octal literals are not allowed in strict mode");var t=function(e){if(P.test(e))return parseInt(e.substr(2),16);if(z.test(e))return parseInt(e.substr(1),8);var t=parseFloat(e);return t==e?t:void 0}(e);if(!isNaN(t))return m("num",t);v("Invalid syntax: "+e)}function y(e){var t=c(!0,e);switch(t.charCodeAt(0)){case 110:return"\n";case 114:return"\r";case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 120:return String.fromCharCode(n(2));case 117:return String.fromCharCode(n(4));case 10:return"";case 13:if("\n"==l())return c(!0,e),""}return"0"<=t&&t<="7"?function(e){var t=l();"0"<=t&&t<="7"&&(e+=c(!0))[0]<="3"&&"0"<=(t=l())&&t<="7"&&(e+=c(!0));if("0"===e)return"\0";0<e.length&&C.has_directive("use strict")&&v("Legacy octal escape sequences are not allowed in strict mode");return String.fromCharCode(parseInt(e,8))}(t):t}function n(e){for(var t=0;0<e;--e){var n=parseInt(c(!0),16);isNaN(n)&&v("Invalid hex-character pattern in string"),t=t<<4|n}return t}var _=t("Unterminated string constant",function(e){for(var t=c(),n="";;){var r=c(!0,!0);if("\\"==r)r=y(!0);else if(V[r])v("Unterminated string constant");else if(r==t)break;n+=r}var i=m("string",n);return i.quote=e,i});function w(e){var t,n=u.regex_allowed,r=function(){for(var e=u.text,t=u.pos,n=u.text.length;t<n;++t){var r=e[t];if(V[r])return t}return-1}();return u.pos=-1==r?(t=u.text.substr(u.pos),u.text.length):(t=u.text.substring(u.pos,r),r),u.col=u.tokcol+(u.pos-u.tokpos),u.comments_before.push(m(e,t,!0)),u.regex_allowed=n,C}var e=t("Unterminated multiline comment",function(){var e=u.regex_allowed,t=function(e,t){var n=u.text.indexOf(e,u.pos);if(t&&-1==n)throw jt;return n}("*/",!0),n=u.text.substring(u.pos,t).replace(/\r\n|\r|\u2028|\u2029/g,"\n");return f(n.length+2),u.comments_before.push(m("comment2",n,!0)),u.regex_allowed=e,C});function E(){for(var e,t,n=!1,r="",i=!1;null!=(e=l());)if(n)"u"!=e&&v("Expecting UnicodeEscapeSequence -- uXXXX"),Ut(e=y())||v("Unicode char: "+e.charCodeAt(0)+" is not valid in identifier"),r+=e,n=!1;else if("\\"==e)i=n=!0,c();else{if(!Ut(e))break;r+=c()}return ne[r]&&i&&(t=r.charCodeAt(0).toString(16).toUpperCase(),r="\\u"+"0000".substr(t.length)+t+r.slice(1)),r}var A=t("Unterminated regular expression",function(e){for(var t,n=!1,r=!1;t=c(!0);)if(V[t])v("Unexpected line terminator");else if(n)e+="\\"+t,n=!1;else if("["==t)r=!0,e+=t;else if("]"==t&&r)r=!1,e+=t;else{if("/"==t&&!r)break;"\\"==t?n=!0:e+=t}var i=E();try{var o=new RegExp(e,i);return o.raw_source=e,m("regexp",o)}catch(e){v(e.message)}});function x(e){return m("operator",function e(t){if(!l())return t;var n=t+l();return j[n]?(c(),e(n)):t}(e||c()))}function k(){switch(c(),l()){case"/":return c(),w("comment1");case"*":return c(),e()}return u.regex_allowed?A(""):x("/")}function t(t,n){return function(e){try{return n(e)}catch(e){if(e!==jt)throw e;v(t)}}}function C(e){if(null!=e)return A(e);for(s&&0==u.pos&&p("#!")&&(d(),f(2),w("comment5"));;){if(g(),d(),a){if(p("\x3c!--")){f(4),w("comment3");continue}if(p("--\x3e")&&u.newline_before){f(3),w("comment4");continue}}var t=l();if(!t)return m("eof");var n=t.charCodeAt(0);switch(n){case 34:case 39:return _(t);case 46:return c(),Ft(l().charCodeAt(0))?b("."):m("punc",".");case 47:var r=k();if(r===C)continue;return r}if(Ft(n))return b();if(Tt[t])return m("punc",c());if(N[t])return x();if(92==n||qt(n))return void 0,i=E(),h?m("name",i):S[i]?m("atom",i):ne[i]?j[i]?m("operator",i):m("keyword",i):m("name",i);break}var i;v("Unexpected character '"+t+"'")}return C.context=function(e){return e&&(u=e),u},C.add_directive=function(e){u.directive_stack[u.directive_stack.length-1].push(e),void 0===u.directives[e]?u.directives[e]=1:u.directives[e]++},C.push_directives_stack=function(){u.directive_stack.push([])},C.pop_directives_stack=function(){for(var e=u.directive_stack[u.directive_stack.length-1],t=0;t<e.length;t++)u.directives[e[t]]--;u.directive_stack.pop()},C.has_directive=function(e){return 0<u.directives[e]},C}var Vt=W(["typeof","void","delete","--","++","!","~","-","+"]),Ht=W(["--","++"]),$t=W(["=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&="]),Kt=function(e,t){for(var n=0;n<e.length;++n)for(var r=e[n],i=0;i<r.length;++i)t[r[i]]=n+1;return t}([["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]],{}),Gt=W(["atom","num","string","regexp","name"]);function Yt(e,u){u=$(u,{bare_returns:!1,expression:!1,filename:null,html5_comments:!0,shebang:!0,strict:!1,toplevel:null},!0);var l={input:"string"==typeof e?It(e,u.filename,u.html5_comments,u.shebang):e,token:null,prev:null,peeked:null,in_function:0,in_directives:!0,in_loop:0,labels:[]};function c(e,t){return zt(l.token,e,t)}function f(){return l.peeked||(l.peeked=l.input())}function p(){return l.prev=l.token,l.peeked?(l.token=l.peeked,l.peeked=null):l.token=l.input(),l.in_directives=l.in_directives&&("string"==l.token.type||c("punc",";")),l.token}function d(){return l.prev}function h(e,t,n,r){var i=l.input.context();Pt(e,i.filename,null!=t?t:i.tokline,null!=n?n:i.tokcol,null!=r?r:i.tokpos)}function n(e,t){h(t,e.line,e.col)}function m(e){null==e&&(e=l.token),n(e,"Unexpected token: "+e.type+" ("+e.value+")")}function g(e,t){if(c(e,t))return p();n(l.token,"Unexpected token "+l.token.type+" «"+l.token.value+"», expected "+e+" «"+t+"»")}function v(e){return g("punc",e)}function b(e){return e.nlb||!ae(e.comments_before,function(e){return!e.nlb})}function y(){return!u.strict&&(c("eof")||c("punc","}")||b(l.token))}function _(e){c("punc",";")?p():e||y()||m()}function w(){v("(");var e=V(!0);return v(")"),e}function t(r){return function(){var e=l.token,t=r.apply(null,arguments),n=d();return t.start=e,t.end=n,t}}function E(){(c("operator","/")||c("operator","/="))&&(l.peeked=null,l.token=l.input(l.token.value.substr(1)))}l.token=p();var A=t(function(e){switch(E(),l.token.type){case"string":if(l.in_directives){var t=f();-1==l.token.raw.indexOf("\\")&&(zt(t,"punc",";")||zt(t,"punc","}")||b(t)||zt(t,"eof"))?l.input.add_directive(l.token.value):l.in_directives=!1}var n=l.in_directives,r=x();return n?new fe(r.body):r;case"num":case"regexp":case"operator":case"atom":return x();case"name":return zt(f(),"punc",":")?function(){var t=U(ee);ae(l.labels,function(e){return e.name!=t.name})||h("Label "+t.name+" defined twice");v(":"),l.labels.push(t);var e=A();l.labels.pop(),e instanceof ve||t.references.forEach(function(e){e instanceof Fe&&(e=e.label.start,h("Continue label `"+t.name+"` refers to non-IterationStatement.",e.line,e.col,e.pos))});return new ge({body:e,label:t})}():x();case"punc":switch(l.token.value){case"{":return new he({start:l.token,body:O(),end:d()});case"[":case"(":return x();case";":return l.in_directives=!1,p(),new me;default:m()}case"keyword":switch(l.token.value){case"break":return p(),k(Le);case"continue":return p(),k(Fe);case"debugger":return p(),_(),new ce;case"do":p();var i=H(A);g("keyword","while");var o=w();return _(!0),new ye({body:i,condition:o});case"while":return p(),new _e({condition:w(),body:H(A)});case"for":return p(),function(){v("(");var e=null;if(!c("punc",";")&&(e=c("keyword","var")?(p(),D(!0)):V(!0,!0),c("operator","in")))return e instanceof He?1<e.definitions.length&&h("Only one variable declaration allowed in for..in loop",e.start.line,e.start.col,e.start.pos):j(e)||h("Invalid left-hand side in for..in loop",e.start.line,e.start.col,e.start.pos),p(),t=e,n=V(!0),v(")"),new Ee({init:t,object:n,body:H(A)});var t,n;return function(e){v(";");var t=c("punc",";")?null:V(!0);v(";");var n=c("punc",")")?null:V(!0);return v(")"),new we({init:e,condition:t,step:n,body:H(A)})}(e)}();case"function":return!e&&l.input.has_directive("use strict")&&h("In strict mode code, functions can only be declared at top level or immediately within another function."),p(),C(De);case"if":return p(),function(){var e=w(),t=A(),n=null;c("keyword","else")&&(p(),n=A());return new qe({condition:e,body:t,alternative:n})}();case"return":0!=l.in_function||u.bare_returns||h("'return' outside of function"),p();var a=null;return c("punc",";")?p():y()||(a=V(!0),_()),new Be({value:a});case"switch":return p(),new Ue({expression:w(),body:H(S)});case"throw":p(),b(l.token)&&h("Illegal newline after 'throw'");a=V(!0);return _(),new Q({value:a});case"try":return p(),function(){var e=O(),t=null,n=null;if(c("keyword","catch")){var r=l.token;p(),v("(");var i=U(ht);v(")"),t=new je({start:r,argname:i,body:O(),end:d()})}if(c("keyword","finally")){var r=l.token;p(),n=new Ie({start:r,body:O(),end:d()})}t||n||h("Missing catch/finally blocks");return new ze({body:e,bcatch:t,bfinally:n})}();case"var":p();var s=D();return _(),s;case"with":return l.input.has_directive("use strict")&&h("Strict mode may not include a with statement"),p(),new Ae({expression:w(),body:A()})}}m()});function x(e){return new pe({body:(e=V(!0),_(),e)})}function k(e){var t,n=null;y()||(n=U(te,!0)),null!=n?((t=K(function(e){return e.name==n.name},l.labels))||h("Undefined label "+n.name),n.thedef=t):0==l.in_loop&&h(e.TYPE+" not inside a loop or switch"),_();var r=new e({label:n});return t&&t.references.push(r),r}var C=function(e){var t=e===De,n=c("name")?U(t?pt:dt):null;t&&!n&&m(),!n||e===Oe||n instanceof lt||m(d()),v("(");for(var r=[],i=!0;!c("punc",")");)i?i=!1:v(","),r.push(U(ft));p();var o=l.in_loop,a=l.labels;++l.in_function,l.in_directives=!0,l.input.push_directives_stack(),l.in_loop=0,l.labels=[];var s=O(!0);return l.input.has_directive("use strict")&&(n&&q(n),r.forEach(q)),l.input.pop_directives_stack(),--l.in_function,l.in_loop=o,l.labels=a,new e({name:n,argnames:r,body:s})};function O(e){v("{");for(var t=[];!c("punc","}");)c("eof")&&m(),t.push(A(e));return p(),t}function S(){v("{");for(var e,t=[],n=null,r=null;!c("punc","}");)c("eof")&&m(),c("keyword","case")?(r&&(r.end=d()),n=[],r=new Pe({start:(e=l.token,p(),e),expression:V(!0),body:n}),t.push(r),v(":")):c("keyword","default")?(r&&(r.end=d()),n=[],r=new Ne({start:(e=l.token,p(),v(":"),e),body:n}),t.push(r)):(n||m(),n.push(A()));return r&&(r.end=d()),p(),t}var D=function(e){return new He({start:d(),definitions:function(e){for(var t=[];t.push(new $e({start:l.token,name:U(ct),value:c("operator","=")?(p(),V(!1,e)):null,end:d()})),c("punc",",");)p();return t}(e),end:d()})};var s=function(e){if(c("operator","new"))return function(e){var t=l.token;g("operator","new");var n,r=s(!1);n=c("punc","(")?(p(),T(")")):[];var i=new Ge({start:t,expression:r,args:n,end:d()});return M(i),N(i,e)}(e);var t=l.token;if(c("punc")){switch(t.value){case"(":p();var n=V(!0),r=t.comments_before.length;if([].unshift.apply(n.start.comments_before,t.comments_before),t.comments_before=n.start.comments_before,0==(t.comments_before_length=r)&&0<t.comments_before.length){var i=t.comments_before[0];i.nlb||(i.nlb=t.nlb,t.nlb=!1)}t.comments_after=n.start.comments_after,n.start=t,v(")");var o=d();return o.comments_before=n.end.comments_before,[].push.apply(n.end.comments_after,o.comments_after),o.comments_after=n.end.comments_after,n.end=o,n instanceof Ke&&M(n),N(n,e);case"[":return N(B(),e);case"{":return N(R(),e)}m()}if(c("keyword","function")){p();var a=C(Se);return a.start=t,a.end=d(),N(a,e)}if(Gt[l.token.type])return N(function(){var e,t=l.token;switch(t.type){case"name":e=F(mt);break;case"num":e=new yt({start:t,end:t,value:t.value});break;case"string":e=new bt({start:t,end:t,value:t.value,quote:t.quote});break;case"regexp":e=new _t({start:t,end:t,value:t.value});break;case"atom":switch(t.value){case"false":e=new Ot({start:t,end:t});break;case"true":e=new St({start:t,end:t});break;case"null":e=new wt({start:t,end:t})}}return p(),e}(),e);m()};function T(e,t,n){for(var r=!0,i=[];!c("punc",e)&&(r?r=!1:v(","),!t||!c("punc",e));)c("punc",",")&&n?i.push(new xt({start:l.token,end:l.token})):i.push(V(!1));return p(),i}var B=t(function(){return v("["),new it({elements:T("]",!u.strict,!0)})}),a=t(function(){return C(Oe)}),R=t(function(){v("{");for(var e=!0,t=[];!c("punc","}")&&(e?e=!1:v(","),u.strict||!c("punc","}"));){var n=l.token,r=n.type,i=L();if("name"==r&&!c("punc",":")){var o=new X({start:l.token,name:""+L(),end:d()});if("get"==i){t.push(new J({start:n,key:o,value:a(),end:d()}));continue}if("set"==i){t.push(new Z({start:n,key:o,value:a(),end:d()}));continue}}v(":"),t.push(new st({start:n,quote:n.quote,key:""+i,value:V(!1),end:d()}))}return p(),new ot({properties:t})});function L(){var e=l.token;switch(e.type){case"operator":ne[e.value]||m();case"num":case"string":case"name":case"keyword":case"atom":return p(),e.value;default:m()}}function F(e){var t=l.token.value;return new("this"==t?gt:e)({name:String(t),start:l.token,end:l.token})}function q(e){"arguments"!=e.name&&"eval"!=e.name||h("Unexpected "+e.name+" in strict mode",e.start.line,e.start.col,e.start.pos)}function U(e,t){if(!c("name"))return t||h("Name expected"),null;var n=F(e);return l.input.has_directive("use strict")&&n instanceof lt&&q(n),p(),n}function M(e){for(var t=e.start,n=t.comments_before,r=se(t,"comments_before_length")?t.comments_before_length:n.length;0<=--r;){var i=n[r];if(/[@#]__PURE__/.test(i.value)){e.pure=i;break}}}var N=function(e,t){var n,r=e.start;if(c("punc","."))return p(),N(new Qe({start:r,expression:e,property:(n=l.token,"name"!=n.type&&m(),p(),n.value),end:d()}),t);if(c("punc","[")){p();var i=V(!0);return v("]"),N(new Ze({start:r,expression:e,property:i,end:d()}),t)}if(t&&c("punc","(")){p();var o=new Ke({start:r,expression:e,args:T(")"),end:d()});return M(o),N(o,!0)}return e},P=function(e){var t=l.token;if(c("operator")&&Vt[t.value]){p(),E();var n=i(Xe,t,P(e));return n.start=t,n.end=d(),n}for(var r=s(e);c("operator")&&Ht[l.token.value]&&!b(l.token);)(r=i(et,l.token,r)).start=t,r.end=l.token,p();return r};function i(e,t,n){var r=t.value;switch(r){case"++":case"--":j(n)||h("Invalid use of "+r+" operator",t.line,t.col,t.pos);break;case"delete":n instanceof mt&&l.input.has_directive("use strict")&&h("Calling delete on expression not allowed in strict mode",n.start.line,n.start.col,n.start.pos)}return new e({operator:r,expression:n})}var z=function(e,t,n){var r=c("operator")?l.token.value:null;"in"==r&&n&&(r=null);var i=null!=r?Kt[r]:null;if(null!=i&&t<i){p();var o=z(P(!0),i,n);return z(new tt({start:e.start,left:e,operator:r,right:o,end:o.end}),t,n)}return e};var o=function(e){var t,n=l.token,r=(t=e,z(P(!0),0,t));if(c("operator","?")){p();var i=V(!1);return v(":"),new nt({start:n,condition:r,consequent:i,alternative:V(!1,e),end:d()})}return r};function j(e){return e instanceof We||e instanceof mt}var I=function(e){var t=l.token,n=o(e),r=l.token.value;if(c("operator")&&$t[r]){if(j(n))return p(),new rt({start:t,left:n,operator:r,right:I(e),end:d()});h("Invalid assignment")}return n},V=function(e,t){for(var n=l.token,r=[];r.push(I(t)),e&&c("punc",",");)p(),e=!0;return 1==r.length?r[0]:new Ye({start:n,expressions:r,end:f()})};function H(e){++l.in_loop;var t=e();return--l.in_loop,t}return u.expression?V(!0):function(){var e=l.token,t=[];for(l.input.push_directives_stack();!c("eof");)t.push(A(!0));l.input.pop_directives_stack();var n=d(),r=u.toplevel;return r?(r.body=r.body.concat(t),r.end=n):r=new ke({start:e,body:t,end:n}),r}()}function Wt(e,t){Dt.call(this),this.before=e,this.after=t}function i(e,t,n){this.name=t.name,this.orig=[t],this.init=n,this.eliminated=0,this.scope=e,this.references=[],this.replaced=0,this.global=!1,this.mangled_name=null,this.undeclared=!1,this.id=i.next_id++}function c(e,t){var n=e.names_in_use;return n||(e.names_in_use=n=Object.create(e.mangled_names||null),e.cname_holes=[],e.enclosed.forEach(function(e){e.unmangleable(t)&&(n[e.name]=!0)})),n}function p(e){return e=$(e,{eval:!1,ie8:!1,keep_fnames:!1,reserved:[],toplevel:!1}),Array.isArray(e.reserved)||(e.reserved=[]),g(e.reserved,"arguments"),e.reserved.has=W(e.reserved),e}Wt.prototype=new Dt,function(e){function n(e,t){return oe(e,function(e){return e.transform(t,!0)})}e(ue,G),e(ge,function(e,t){e.label=e.label.transform(t),e.body=e.body.transform(t)}),e(pe,function(e,t){e.body=e.body.transform(t)}),e(de,function(e,t){e.body=n(e.body,t)}),e(ye,function(e,t){e.body=e.body.transform(t),e.condition=e.condition.transform(t)}),e(_e,function(e,t){e.condition=e.condition.transform(t),e.body=e.body.transform(t)}),e(we,function(e,t){e.init&&(e.init=e.init.transform(t)),e.condition&&(e.condition=e.condition.transform(t)),e.step&&(e.step=e.step.transform(t)),e.body=e.body.transform(t)}),e(Ee,function(e,t){e.init=e.init.transform(t),e.object=e.object.transform(t),e.body=e.body.transform(t)}),e(Ae,function(e,t){e.expression=e.expression.transform(t),e.body=e.body.transform(t)}),e(Te,function(e,t){e.value&&(e.value=e.value.transform(t))}),e(Re,function(e,t){e.label&&(e.label=e.label.transform(t))}),e(qe,function(e,t){e.condition=e.condition.transform(t),e.body=e.body.transform(t),e.alternative&&(e.alternative=e.alternative.transform(t))}),e(Ue,function(e,t){e.expression=e.expression.transform(t),e.body=n(e.body,t)}),e(Pe,function(e,t){e.expression=e.expression.transform(t),e.body=n(e.body,t)}),e(ze,function(e,t){e.body=n(e.body,t),e.bcatch&&(e.bcatch=e.bcatch.transform(t)),e.bfinally&&(e.bfinally=e.bfinally.transform(t))}),e(je,function(e,t){e.argname=e.argname.transform(t),e.body=n(e.body,t)}),e(Ve,function(e,t){e.definitions=n(e.definitions,t)}),e($e,function(e,t){e.name=e.name.transform(t),e.value&&(e.value=e.value.transform(t))}),e(Ce,function(e,t){e.name&&(e.name=e.name.transform(t)),e.argnames=n(e.argnames,t),e.body=n(e.body,t)}),e(Ke,function(e,t){e.expression=e.expression.transform(t),e.args=n(e.args,t)}),e(Ye,function(e,t){e.expressions=n(e.expressions,t)}),e(Qe,function(e,t){e.expression=e.expression.transform(t)}),e(Ze,function(e,t){e.expression=e.expression.transform(t),e.property=e.property.transform(t)}),e(Je,function(e,t){e.expression=e.expression.transform(t)}),e(tt,function(e,t){e.left=e.left.transform(t),e.right=e.right.transform(t)}),e(nt,function(e,t){e.condition=e.condition.transform(t),e.consequent=e.consequent.transform(t),e.alternative=e.alternative.transform(t)}),e(it,function(e,t){e.elements=n(e.elements,t)}),e(ot,function(e,t){e.properties=n(e.properties,t)}),e(at,function(e,t){e.value=e.value.transform(t)})}(function(e,i){e.DEFMETHOD("transform",function(e,t){var n,r;return e.push(this),e.before&&(n=e.before(this,i,t)),void 0===n&&(i(n=this,e),e.after&&void 0!==(r=e.after(n,t))&&(n=r)),e.pop(),n})}),i.next_id=1,i.prototype={unmangleable:function(e){return e||(e={}),this.global&&!e.toplevel||this.undeclared||!e.eval&&this.scope.pinned()||e.keep_fnames&&(this.orig[0]instanceof dt||this.orig[0]instanceof pt)},mangle:function(e){var t=e.cache&&e.cache.props;if(this.global&&t&&t.has(this.name))this.mangled_name=t.get(this.name);else if(!this.mangled_name&&!this.unmangleable(e)){var n;(n=this.redefined())?this.mangled_name=n.mangled_name||n.name:this.mangled_name=function(e,r,t){var n,i=c(e,r),o=e.cname_holes,a=Object.create(null),s=[e];t.references.forEach(function(e){var t=e.scope;do{if(!(s.indexOf(t)<0))break;for(var n in c(t,r))a[n]=!0;s.push(t)}while(t=t.parent_scope)});for(var u=0,l=o.length;u<l;u++)if(n=m(o[u]),!a[n])return o.splice(u,1),e.names_in_use[n]=!0,n;for(;;)if(n=m(++e.cname),!i[n]&&f(n)&&!r.reserved.has[n]){if(!a[n])break;o.push(e.cname)}return e.names_in_use[n]=!0,n}(this.scope,e,this),this.global&&t&&t.set(this.name,this.mangled_name)}},redefined:function(){return this.defun&&this.defun.variables.get(this.name)}},ke.DEFMETHOD("figure_out_scope",function(a){a=$(a,{cache:null,ie8:!1});var o=this,s=o.parent_scope=null,u=null,l=new Dt(function(e,t){if(e instanceof je){var n=s;return(s=new xe(e)).init_scope_vars(n),t(),s=n,!0}if(e instanceof xe){e.init_scope_vars(s);n=s;var r=u;return u=s=e,t(),s=n,u=r,!0}if(e instanceof Ae)for(var i=s;i;i=i.parent_scope)i.uses_with=!0;else if(e instanceof ut&&(e.scope=s),e instanceof ee&&((e.thedef=e).references=[]),e instanceof pt)(e.scope=u.parent_scope.resolve()).def_function(e,u);else if(e instanceof dt){var o=u.def_function(e,"arguments"==e.name?void 0:u);a.ie8&&(o.defun=u.parent_scope.resolve())}else if(e instanceof ct){if(u.def_variable(e,"SymbolVar"==e.TYPE?null:void 0),u!==s){e.mark_enclosed(a);o=s.find_variable(e);e.thedef!==o&&(e.thedef=o),e.reference(a)}}else e instanceof ht&&(s.def_variable(e).defun=u)});o.walk(l),o.globals=new L;l=new Dt(function(e){if(e instanceof Re)return e.label&&e.label.thedef.references.push(e),!0;if(e instanceof mt){var t=e.name;if("eval"==t&&l.parent()instanceof Ke)for(var n=e.scope;n&&!n.uses_eval;n=n.parent_scope)n.uses_eval=!0;var r=e.scope.find_variable(t);return r?r.scope instanceof Ce&&"arguments"==t&&(r.scope.uses_arguments=!0):r=o.def_global(e),e.thedef=r,e.reference(a),!0}if(e instanceof ht){var i=e.definition().redefined();if(i)for(n=e.scope;n&&(g(n.enclosed,i),n!==i.scope);n=n.parent_scope);return!0}});function n(e,t){var n=e.name,r=e.thedef.references,i=t.find_variable(n)||o.globals.get(n)||t.def_variable(e);r.forEach(function(e){e.thedef=i,e.reference(a)}),e.thedef=i,e.reference(a)}o.walk(l),a.ie8&&o.walk(new Dt(function(e){if(e instanceof ht)return n(e,e.thedef.defun),!0;if(e instanceof dt){var t=e.thedef;return 1==t.orig.length&&(n(e,e.scope.parent_scope),e.thedef.init=t.init),!0}}))}),ke.DEFMETHOD("def_global",function(e){var t=this.globals,n=e.name;if(t.has(n))return t.get(n);var r=new i(this,e);return r.undeclared=!0,r.global=!0,t.set(n,r),r}),xe.DEFMETHOD("init_scope_vars",function(e){this.variables=new L,this.functions=new L,this.uses_with=!1,this.uses_eval=!1,this.parent_scope=e,this.enclosed=[],this.cname=-1}),Ce.DEFMETHOD("init_scope_vars",function(){xe.prototype.init_scope_vars.apply(this,arguments),this.uses_arguments=!1,this.def_variable(new ft({name:"arguments",start:this.start,end:this.end}))}),ut.DEFMETHOD("mark_enclosed",function(e){for(var t=this.definition(),n=this.scope;n&&(g(n.enclosed,t),e.keep_fnames&&n.functions.each(function(e){g(t.scope.enclosed,e)}),n!==t.scope);n=n.parent_scope);}),ut.DEFMETHOD("reference",function(e){this.definition().references.push(this),this.mark_enclosed(e)}),xe.DEFMETHOD("find_variable",function(e){return e instanceof ut&&(e=e.name),this.variables.get(e)||this.parent_scope&&this.parent_scope.find_variable(e)}),xe.DEFMETHOD("def_function",function(e,t){var n=this.def_variable(e,t);return(!n.init||n.init instanceof De)&&(n.init=t),this.functions.set(e.name,n),n}),xe.DEFMETHOD("def_variable",function(e,t){var n=this.variables.get(e.name);return n?(n.orig.push(e),n.init&&(n.scope!==e.scope||n.init instanceof Se)&&(n.init=t)):(n=new i(this,e,t),this.variables.set(e.name,n),n.global=!this.parent_scope),e.thedef=n}),Ce.DEFMETHOD("resolve",D),xe.DEFMETHOD("resolve",function(){return this.parent_scope}),ke.DEFMETHOD("resolve",D),ut.DEFMETHOD("unmangleable",function(e){var t=this.definition();return!t||t.unmangleable(e)}),ee.DEFMETHOD("unmangleable",ie),ut.DEFMETHOD("unreferenced",function(){return!this.definition().references.length&&!this.scope.pinned()}),ut.DEFMETHOD("definition",function(){return this.thedef}),ut.DEFMETHOD("global",function(){return this.definition().global}),ke.DEFMETHOD("mangle_names",function(s){s=p(s);var u=-1;if(s.cache&&s.cache.props){var t=this.mangled_names=Object.create(null);s.cache.props.each(function(e){t[e]=!0})}var l=[],e=new Dt(function(e,t){if(e instanceof ge){var n=u;return t(),u=n,!0}if(e instanceof xe)return t(),s.cache&&e instanceof ke&&e.globals.each(c),e.variables.each(c),!0;if(e instanceof ee){for(var r;!f(r=m(++u)););return e.mangled_name=r,!0}if(!s.ie8&&e instanceof je){var i=e.argname.definition(),o=i.redefined();return o&&(l.push(i),a(e.argname),i.references.forEach(a)),t(),o||c(i),!0}function a(e){e.thedef=o,e.reference(s),e.thedef=i}});function c(e){s.reserved.has[e.name]||e.mangle(s)}this.walk(e),l.forEach(c)}),ke.DEFMETHOD("find_colliding_names",function(n){var r=n.cache&&n.cache.props,t=Object.create(null);return n.reserved.forEach(i),this.globals.each(o),this.walk(new Dt(function(e){e instanceof xe&&e.variables.each(o),e instanceof ht&&o(e.definition())})),t;function i(e){t[e]=!0}function o(e){var t=e.name;if(e.global&&r&&r.has(t))t=r.get(t);else if(!e.unmangleable(n))return;i(t)}}),ke.DEFMETHOD("expand_names",function(n){m.reset(),m.sort(),n=p(n);var r=this.find_colliding_names(n),i=0;function t(t){if(!(t.global&&n.cache||t.unmangleable(n)||n.reserved.has[t.name])){var e=t.redefined();t.name=e?e.name:function(){for(var e;e=m(i++),r[e]||!f(e););return e}(),t.orig.forEach(function(e){e.name=t.name}),t.references.forEach(function(e){e.name=t.name})}}this.globals.each(t),this.walk(new Dt(function(e){e instanceof xe&&e.variables.each(t),e instanceof ht&&t(e.definition())}))}),ue.DEFMETHOD("tail_node",D),Ye.DEFMETHOD("tail_node",function(){return this.expressions[this.expressions.length-1]}),ke.DEFMETHOD("compute_char_frequency",function(n){n=p(n),m.reset();try{ue.prototype.print=function(e,t){this._print(e,t),this instanceof ut&&!this.unmangleable(n)?m.consider(this.name,-1):n.properties&&(this instanceof Qe?m.consider(this.property,-1):this instanceof Ze&&function e(t){t instanceof bt?m.consider(t.value,-1):t instanceof nt?(e(t.consequent),e(t.alternative)):t instanceof Ye&&e(t.tail_node())}(this.property))},m.consider(this.print_to_string(),1)}finally{ue.prototype.print=ue.prototype._print}m.sort()});var m=function(){var o=Object.create(null);function e(e){for(var t=[],n=0,r=e.length;n<r;n++){var i=e[n];t.push(i),o[i]=-.01*n}return t}var r,i,t=e("0123456789"),n=e("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_");function a(){i=Object.create(o)}function s(e,t){return i[t]-i[e]}function u(e){var t="",n=54;for(e++;t+=r[--e%n],e=Math.floor(e/n),n=64,0<e;);return t}return u.consider=function(e,t){for(var n=e.length;0<=--n;)i[e[n]]+=t},u.sort=function(){r=n.sort(s).concat(t.sort(s))},(u.reset=a)(),u}(),Qt=/^$|[;{][\s\n]*$/;function Zt(e){return"comment2"==e.type&&/@preserve|@license|@cc_on/i.test(e.value)}function Jt(s){var e=!s;s=$(s,{ascii_only:!1,beautify:!1,braces:!1,comments:!1,ie8:!1,indent_level:4,indent_start:0,inline_script:!0,keep_quoted_props:!1,max_line_len:!1,preamble:null,preserve_line:!1,quote_keys:!1,quote_style:0,semicolons:!0,shebang:!0,source_map:null,webkit:!1,width:80,wrap_iife:!1},!0);var u=ie;if(s.comments){var t=s.comments;if("string"==typeof s.comments&&/^\/.*\/[a-zA-Z]*$/.test(s.comments)){var n=s.comments.lastIndexOf("/");t=new RegExp(s.comments.substr(1,n-1),s.comments.substr(n+1))}u=t instanceof RegExp?function(e){return"comment5"!=e.type&&t.test(e.value)}:"function"==typeof t?function(e){return"comment5"!=e.type&&t(this,e)}:"some"===t?Zt:Y}var i=0,o=0,a=1,l=0,c="",f=s.ascii_only?function(e,n){return e.replace(/[\u0000-\u001f\u007f-\uffff]/g,function(e){var t=e.charCodeAt(0).toString(16);if(t.length<=2&&!n){for(;t.length<2;)t="0"+t;return"\\x"+t}for(;t.length<4;)t="0"+t;return"\\u"+t})}:function(e){for(var t="",n=0,r=e.length;n<r;n++)Rt(e[n])&&!Lt(e[n+1])||Lt(e[n])&&!Rt(e[n-1])?t+="\\u"+e.charCodeAt(n).toString(16):t+=e[n];return t};function p(e,t){var n=function(n,e){var r=0,i=0;function t(){return"'"+n.replace(/\x27/g,"\\'")+"'"}function o(){return'"'+n.replace(/\x22/g,'\\"')+'"'}switch(n=n.replace(/[\\\b\f\n\r\v\t\x22\x27\u2028\u2029\0\ufeff]/g,function(e,t){switch(e){case'"':return++r,'"';case"'":return++i,"'";case"\\":return"\\\\";case"\n":return"\\n";case"\r":return"\\r";case"\t":return"\\t";case"\b":return"\\b";case"\f":return"\\f";case"\v":return s.ie8?"\\x0B":"\\v";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";case"\ufeff":return"\\ufeff";case"\0":return/[0-9]/.test(n.charAt(t+1))?"\\x00":"\\0"}return e}),n=f(n),s.quote_style){case 1:return t();case 2:return o();case 3:return"'"==e?t():o();default:return i<r?t():o()}}(e,t);return s.inline_script&&(n=(n=(n=n.replace(/<\x2f(script)([>\/\t\n\f\r ])/gi,"<\\/$1$2")).replace(/\x3c!--/g,"\\x3c!--")).replace(/--\x3e/g,"--\\x3e")),n}function r(e){return function e(t,n){if(n<=0)return"";if(1==n)return t;var r=e(t,n>>1);return r+=r,1&n?r+t:r}(" ",s.indent_start+i-e*s.indent_level)}var d,h,m=!1,g=0,v=!0,b=!1,y=!1,_=!1,w=!1,E=-1,A="",x=s.source_map&&[],k=x?function(t,n){x.forEach(function(e){e.line+=t,e.col+=n})}:G,C=x?function(){x.forEach(function(t){try{s.source_map.add(t.token.file,t.line,t.col,t.token.line,t.token.col,t.name||"name"!=t.token.type?t.name:t.token.value)}catch(e){ue.warn("Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]",{file:t.token.file,line:t.token.line,col:t.token.col,cline:t.line,ccol:t.col,name:t.name||""})}}),x=[]}:G;function O(e){var t=c.lastIndexOf("\n");g<t&&(g=t);var n=c.slice(0,g),r=c.slice(g);for(k(e,r.length-o),a+=e,l+=e,o=r.length,c=n;e--;)c+="\n";c+=r}var S=s.max_line_len?function(){v?o>s.max_line_len&&ue.warn("Output exceeds {max_line_len} characters",s):(o>s.max_line_len&&O(1),v=!0,C())}:G,D=W("( [ + * / - , .");function T(e){var t=(e=String(e)).charAt(0);_&&t&&(_=!1,"\n"!=t&&(T("\n"),R())),w&&t&&(w=!1,/[\s;})]/.test(t)||B()),E=-1;var n=A.charAt(A.length-1);y&&(y=!1,(":"==n&&"}"==t||(!t||";}".indexOf(t)<0)&&";"!=n)&&(s.semicolons||D[t]?(c+=";",o++,l++):(S(),c+="\n",l++,a++,o=0,/^\s+$/.test(e)&&(y=!0)),s.beautify||(b=!1))),b&&((Ut(n)&&(Ut(t)||"\\"==t)||"/"==t&&t==n||("+"==t||"-"==t)&&t==A)&&(c+=" ",o++,l++),b=!1),d&&(x.push({token:d,name:h,line:a,col:o}),d=!1,v&&C()),c+=e,m="("==e[e.length-1],l+=e.length;var r=e.split(/\r?\n/),i=r.length-1;a+=i,o+=r[0].length,0<i&&(S(),o=r[i].length),A=e}var B=s.beautify?function(){T(" ")}:function(){b=!0},R=s.beautify?function(e){s.beautify&&T(r(e?.5:0))}:G,L=s.beautify?function(e,t){!0===e&&(e=N());var n=i;i=e;var r=t();return i=n,r}:function(e,t){return t()},F=s.max_line_len||s.preserve_line?function(){S(),g=c.length,v=!1}:G,q=s.beautify?function(){if(E<0)return T("\n");"\n"!=c[E]&&(c=c.slice(0,E)+"\n"+c.slice(E),l++,a++),E++}:F,U=s.beautify?function(){T(";")}:function(){y=!0};function M(){y=!1,T(";")}function N(){return i+s.indent_level}function P(){return v||S(),c}function z(){var e=c.lastIndexOf("\n");return/^ *$/.test(c.slice(e+1))}var j=[];return{get:P,toString:P,indent:R,indentation:function(){return i},current_width:function(){return o-i},should_break:function(){return s.width&&this.current_width()>=s.width},has_parens:function(){return m},newline:q,print:T,space:B,comma:function(){F(),T(","),F(),B()},colon:function(){T(":"),B()},last:function(){return A},semicolon:U,force_semicolon:M,to_utf8:f,print_name:function(e){var t;T((t=(t=e).toString(),t=f(t,!0)))},print_string:function(e,t,n){var r=p(e,t);!0===n&&-1===r.indexOf("\\")&&(Qt.test(c)||M(),M()),T(r)},encode_string:p,next_indent:N,with_indent:L,with_block:function(e){var t;return T("{"),q(),L(N(),function(){t=e()}),R(),T("}"),t},with_parens:function(e){T("("),F();var t=e();return F(),T(")"),t},with_square:function(e){T("["),F();var t=e();return F(),T("]"),t},add_mapping:x?function(e,t){d=e,h=t}:G,option:function(e){return s[e]},prepend_comments:e?G:function(e){var r=this,t=e.start;if(t&&(!t.comments_before||t.comments_before._dumped!==r)){var i=t.comments_before;if(i||(i=t.comments_before=[]),i._dumped=r,e instanceof Te&&e.value){var o=new Dt(function(e){var t=o.parent();if(!(t instanceof Te||t instanceof tt&&t.left===e||"Call"==t.TYPE&&t.expression===e||t instanceof nt&&t.condition===e||t instanceof Qe&&t.expression===e||t instanceof Ye&&t.expressions[0]===e||t instanceof Ze&&t.expression===e||t instanceof et))return!0;var n=e.start.comments_before;n&&n._dumped!==r&&(n._dumped=r,i=i.concat(n))});o.push(e),e.value.walk(o)}if(0==l){0<i.length&&s.shebang&&"comment5"==i[0].type&&(T("#!"+i.shift().value+"\n"),R());var n=s.preamble;n&&T(n.replace(/\r\n?|[\n\u2028\u2029]|\s*$/g,"\n"))}if(0!=(i=i.filter(u,e)).length){var a=z();i.forEach(function(e,t){a||(e.nlb?(T("\n"),R(),a=!0):0<t&&B()),/comment[134]/.test(e.type)?(T("//"+e.value.replace(/[@#]__PURE__/g," ")+"\n"),R(),a=!0):"comment2"==e.type&&(T("/*"+e.value.replace(/[@#]__PURE__/g," ")+"*/"),a=!1)}),a||(t.nlb?(T("\n"),R()):B())}}},append_comments:e||u===ie?G:function(e,n){var t=e.end;if(t){var r=t[n?"comments_before":"comments_after"];if(r&&r._dumped!==this&&(e instanceof le||ae(r,function(e){return!/comment[134]/.test(e.type)}))){r._dumped=this;var i=c.length;r.filter(u,e).forEach(function(e,t){w=!1,_?(T("\n"),R(),_=!1):e.nlb&&(0<t||!z())?(T("\n"),R()):(0<t||!n)&&B(),/comment[134]/.test(e.type)?(T("//"+e.value.replace(/[@#]__PURE__/g," ")),_=!0):"comment2"==e.type&&(T("/*"+e.value.replace(/[@#]__PURE__/g," ")+"*/"),w=!0)}),c.length>i&&(E=i)}}},line:function(){return a},col:function(){return o},pos:function(){return l},push_node:function(e){j.push(e)},pop_node:s.preserve_line?function(){var e=j.pop();e.start&&e.start.line>a&&O(e.start.line-a)}:function(){j.pop()},parent:function(e){return j[j.length-2-(e||0)]}}}function Xt(e,t){if(!(this instanceof Xt))return new Xt(e,t);Wt.call(this,this.before,this.after),this.options=$(e,{arguments:!t,booleans:!t,collapse_vars:!t,comparisons:!t,conditionals:!t,dead_code:!t,directives:!t,drop_console:!1,drop_debugger:!t,evaluate:!t,expression:!1,global_defs:!1,hoist_funs:!1,hoist_props:!t,hoist_vars:!1,ie8:!1,if_return:!t,inline:!t,join_vars:!t,keep_fargs:!0,keep_fnames:!1,keep_infinity:!1,loops:!t,negate_iife:!t,passes:1,properties:!t,pure_getters:!t&&"strict",pure_funcs:null,reduce_funcs:!t,reduce_vars:!t,sequences:!t,side_effects:!t,switches:!t,top_retain:null,toplevel:!(!e||!e.top_retain),typeofs:!t,unsafe:!1,unsafe_comps:!1,unsafe_Function:!1,unsafe_math:!1,unsafe_proto:!1,unsafe_regexp:!1,unsafe_undefined:!1,unused:!t,warnings:!1},!0);var n=this.options.global_defs;if("object"==typeof n)for(var r in n)/^@/.test(r)&&se(n,r)&&(n[r.slice(1)]=Yt(n[r],{expression:!0}));!0===this.options.inline&&(this.options.inline=3);var i=this.options.pure_funcs;this.pure_funcs="function"==typeof i?i:i?function(e){return i.indexOf(e.expression.print_to_string())<0}:Y;var o=this.options.top_retain;o instanceof RegExp?this.top_retain=function(e){return o.test(e.name)}:"function"==typeof o?this.top_retain=o:o&&("string"==typeof o&&(o=o.split(/,/)),this.top_retain=function(e){return 0<=o.indexOf(e.name)});var a=this.options.toplevel;this.toplevel="string"==typeof a?{funcs:/funcs/.test(a),vars:/vars/.test(a)}:{funcs:a,vars:a};var s=this.options.sequences;this.sequences_limit=1==s?800:0|s,this.warnings_produced={}}function y(e,t){e.walk(new Dt(function(e){return e instanceof Ye?y(e.tail_node(),t):e instanceof bt?t(e.value):e instanceof nt&&(y(e.consequent,t),y(e.alternative,t)),!0}))}function _(e,t){var n=(t=$(t,{builtins:!1,cache:null,debug:!1,keep_quoted:!1,only_cache:!1,regex:null,reserved:null},!0)).reserved;Array.isArray(n)||(n=[]),t.builtins||function(t){function n(e){g(t,e)}["null","true","false","Infinity","-Infinity","undefined"].forEach(n),[Array,Boolean,Date,Error,Function,Math,Number,Object,RegExp,String].forEach(function(e){Object.getOwnPropertyNames(e).map(n),e.prototype&&Object.getOwnPropertyNames(e.prototype).map(n)})}(n);var r,i=-1;t.cache?(r=t.cache.props).each(function(e){g(n,e)}):r=new L;var o,a=t.regex,s=!1!==t.debug;s&&(o=!0===t.debug?"":t.debug);var u=[],l=[];return e.walk(new Dt(function(e){e instanceof st?p(e.key):e instanceof at?p(e.key.name):e instanceof Qe?p(e.property):e instanceof Ze?y(e.property,p):e instanceof Ke&&"Object.defineProperty"==e.expression.print_to_string()&&y(e.args[1],p)})),e.transform(new Wt(function(e){e instanceof st?e.key=d(e.key):e instanceof at?e.key.name=d(e.key.name):e instanceof Qe?e.property=d(e.property):!t.keep_quoted&&e instanceof Ze?e.property=h(e.property):e instanceof Ke&&"Object.defineProperty"==e.expression.print_to_string()&&(e.args[1]=h(e.args[1]))}));function c(e){return!(0<=l.indexOf(e))&&(!(0<=n.indexOf(e))&&(t.only_cache?r.has(e):!/^-?[0-9]+(\.[0-9]+)?(e[+-][0-9]+)?$/.test(e)))}function f(e){return!(a&&!a.test(e))&&(!(0<=n.indexOf(e))&&(r.has(e)||0<=u.indexOf(e)))}function p(e){c(e)&&g(u,e),f(e)||g(l,e)}function d(e){if(!f(e))return e;var t=r.get(e);if(!t){if(s){var n="_$"+e+"$"+o+"_";c(n)&&(t=n)}if(!t)for(;!c(t=m(++i)););r.set(e,t)}return t}function h(e){return e.transform(new Wt(function(e){if(e instanceof Ye){var t=e.expressions.length-1;e.expressions[t]=h(e.expressions[t])}else e instanceof bt?e.value=d(e.value):e instanceof nt&&(e.consequent=h(e.consequent),e.alternative=h(e.alternative));return e}))}}!function(){function e(e,t){e.DEFMETHOD("_codegen",t)}var o=!1,a=null,s=null;function n(e,t){Array.isArray(e)?e.forEach(function(e){n(e,t)}):e.DEFMETHOD("needs_parens",t)}function r(e,n,r,t){var i=e.length-1;o=t,e.forEach(function(e,t){!0!==o||e instanceof fe||e instanceof me||e instanceof pe&&e.body instanceof bt||(o=!1),e instanceof me||(r.indent(),e.print(r),t==i&&n||(r.newline(),n&&r.newline())),!0===o&&e instanceof pe&&e.body instanceof bt&&(o=!1)}),o=!1}function i(e,t){t.print("{"),t.with_indent(t.next_indent(),function(){t.append_comments(e,!0)}),t.print("}")}function u(e,t,n){0<e.body.length?t.with_block(function(){r(e.body,!1,t,n)}):i(e,t)}function l(e,t,n){e.print(t),n&&(e.space(),n.print(e)),e.semicolon()}function c(e,t,n){var r=!1;n&&e.walk(new Dt(function(e){return!!(r||e instanceof xe)||(e instanceof tt&&"in"==e.operator?r=!0:void 0)})),e.print(t,r)}function f(e,t,n){n.option("quote_keys")?n.print_string(e):""+ +e==e&&0<=e?n.print(h(e)):(b[e]?!n.option("ie8"):Mt(e))?t&&n.option("keep_quoted_props")?n.print_string(e,t):n.print_name(e):n.print_string(e,t)}function p(e,t){t.option("braces")?m(e,t):!e||e instanceof me?t.force_semicolon():e.print(t)}function d(e,t){return 0<e.args.length||t.option("beautify")}function h(e){var t,n,r,i=e.toString(10).replace(/^0\./,".").replace("e+","e"),o=[i];return Math.floor(e)===e&&(e<0?o.push("-0x"+(-e).toString(16).toLowerCase()):o.push("0x"+e.toString(16).toLowerCase())),(t=/^\.0+/.exec(i))?(n=t[0].length,r=i.slice(n),o.push(r+"e-"+(r.length+n-1))):(t=/0+$/.exec(i))?(n=t[0].length,o.push(i.slice(0,-n)+"e"+n)):(t=/^(\d)\.(\d+)e(-?\d+)$/.exec(i))&&o.push(t[1]+t[2]+"e"+(t[3]-t[2].length)),function(e){for(var t=e[0],n=t.length,r=1;r<e.length;++r)e[r].length<n&&(n=(t=e[r]).length);return t}(o)}function m(e,t){!e||e instanceof me?t.print("{}"):e instanceof he?e.print(t):t.with_block(function(){t.indent(),e.print(t),t.newline()})}function t(e,t){e.forEach(function(e){e.DEFMETHOD("add_source_map",t)})}ue.DEFMETHOD("print",function(e,t){var n=this,r=n._codegen;function i(){e.prepend_comments(n),n.add_source_map(e),r(n,e),e.append_comments(n)}n instanceof xe?a=n:!s&&n instanceof fe&&"use asm"==n.value&&(s=a),e.push_node(n),t||n.needs_parens(e)?e.with_parens(i):i(),e.pop_node(),n===s&&(s=null)}),ue.DEFMETHOD("_print",ue.prototype.print),ue.DEFMETHOD("print_to_string",function(e){var t=Jt(e);return this.print(t),t.get()}),n(ue,ie),n(Se,function(e){if(!e.has_parens()&&F(e))return!0;var t;if(e.option("webkit")&&((t=e.parent())instanceof We&&t.expression===this))return!0;if(e.option("wrap_iife")&&((t=e.parent())instanceof Ke&&t.expression===this))return!0}),n(ot,function(e){return!e.has_parens()&&F(e)}),n(Je,function(e){var t=e.parent();return t instanceof We&&t.expression===this||t instanceof Ke&&t.expression===this}),n(Ye,function(e){var t=e.parent();return t instanceof Ke||t instanceof Je||t instanceof tt||t instanceof $e||t instanceof We||t instanceof it||t instanceof at||t instanceof nt}),n(tt,function(e){var t=e.parent();if(t instanceof Ke&&t.expression===this)return!0;if(t instanceof Je)return!0;if(t instanceof We&&t.expression===this)return!0;if(t instanceof tt){var n=t.operator,r=Kt[n],i=this.operator,o=Kt[i];if(o<r||r==o&&this===t.right)return!0}}),n(We,function(e){var t=e.parent();if(t instanceof Ge&&t.expression===this){var n=!1;return this.walk(new Dt(function(e){return!!(n||e instanceof xe)||(e instanceof Ke?n=!0:void 0)})),n}}),n(Ke,function(e){var t=e.parent();if(t instanceof Ge&&t.expression===this)return!0;if(e.option("webkit")){var n=e.parent(1);return this.expression instanceof Se&&t instanceof We&&t.expression===this&&n instanceof rt&&n.left===t}}),n(Ge,function(e){var t=e.parent();if(!d(this,e)&&(t instanceof We||t instanceof Ke&&t.expression===this))return!0}),n(yt,function(e){var t=e.parent();if(t instanceof We&&t.expression===this){var n=this.getValue();if(n<0||/^0/.test(h(n)))return!0}}),n([rt,nt],function(e){var t=e.parent();return t instanceof Je||(t instanceof tt&&!(t instanceof rt)||(t instanceof Ke&&t.expression===this||(t instanceof nt&&t.condition===this||(t instanceof We&&t.expression===this||void 0))))}),e(fe,function(e,t){t.print_string(e.value,e.quote),t.semicolon()}),e(ce,function(e,t){t.print("debugger"),t.semicolon()}),v.DEFMETHOD("_do_print_body",function(e){p(this.body,e)}),e(le,function(e,t){e.body.print(t),t.semicolon()}),e(ke,function(e,t){r(e.body,!0,t,!0),t.print("")}),e(ge,function(e,t){e.label.print(t),t.colon(),e.body.print(t)}),e(pe,function(e,t){e.body.print(t),t.semicolon()}),e(he,function(e,t){u(e,t)}),e(me,function(e,t){t.semicolon()}),e(ye,function(e,t){t.print("do"),t.space(),m(e.body,t),t.space(),t.print("while"),t.space(),t.with_parens(function(){e.condition.print(t)}),t.semicolon()}),e(_e,function(e,t){t.print("while"),t.space(),t.with_parens(function(){e.condition.print(t)}),t.space(),e._do_print_body(t)}),e(we,function(e,t){t.print("for"),t.space(),t.with_parens(function(){e.init?(e.init instanceof Ve?e.init.print(t):c(e.init,t,!0),t.print(";"),t.space()):t.print(";"),e.condition?(e.condition.print(t),t.print(";"),t.space()):t.print(";"),e.step&&e.step.print(t)}),t.space(),e._do_print_body(t)}),e(Ee,function(e,t){t.print("for"),t.space(),t.with_parens(function(){e.init.print(t),t.space(),t.print("in"),t.space(),e.object.print(t)}),t.space(),e._do_print_body(t)}),e(Ae,function(e,t){t.print("with"),t.space(),t.with_parens(function(){e.expression.print(t)}),t.space(),e._do_print_body(t)}),Ce.DEFMETHOD("_do_print",function(n,e){var t=this;e||n.print("function"),t.name&&(n.space(),t.name.print(n)),n.with_parens(function(){t.argnames.forEach(function(e,t){t&&n.comma(),e.print(n)})}),n.space(),u(t,n,!0)}),e(Ce,function(e,t){e._do_print(t)}),e(Be,function(e,t){l(t,"return",e.value)}),e(Q,function(e,t){l(t,"throw",e.value)}),e(Le,function(e,t){l(t,"break",e.label)}),e(Fe,function(e,t){l(t,"continue",e.label)}),e(qe,function(e,t){t.print("if"),t.space(),t.with_parens(function(){e.condition.print(t)}),t.space(),e.alternative?(!function(e,t){var n=e.body;if(t.option("braces")||t.option("ie8")&&n instanceof ye)return m(n,t);if(!n)return t.force_semicolon();for(;;)if(n instanceof qe){if(!n.alternative)return m(e.body,t);n=n.alternative}else{if(!(n instanceof v))break;n=n.body}p(e.body,t)}(e,t),t.space(),t.print("else"),t.space(),e.alternative instanceof qe?e.alternative.print(t):p(e.alternative,t)):e._do_print_body(t)}),e(Ue,function(e,n){n.print("switch"),n.space(),n.with_parens(function(){e.expression.print(n)}),n.space();var r=e.body.length-1;r<0?i(e,n):n.with_block(function(){e.body.forEach(function(e,t){n.indent(!0),e.print(n),t<r&&0<e.body.length&&n.newline()})})}),Me.DEFMETHOD("_do_print_body",function(t){t.newline(),this.body.forEach(function(e){t.indent(),e.print(t),t.newline()})}),e(Ne,function(e,t){t.print("default:"),e._do_print_body(t)}),e(Pe,function(e,t){t.print("case"),t.space(),e.expression.print(t),t.print(":"),e._do_print_body(t)}),e(ze,function(e,t){t.print("try"),t.space(),u(e,t),e.bcatch&&(t.space(),e.bcatch.print(t)),e.bfinally&&(t.space(),e.bfinally.print(t))}),e(je,function(e,t){t.print("catch"),t.space(),t.with_parens(function(){e.argname.print(t)}),t.space(),u(e,t)}),e(Ie,function(e,t){t.print("finally"),t.space(),u(e,t)}),e(He,function(e,n){n.print("var"),n.space(),e.definitions.forEach(function(e,t){t&&n.comma(),e.print(n)});var t=n.parent();(t&&t.init!==e||!(t instanceof we||t instanceof Ee))&&n.semicolon()}),e($e,function(e,t){if(e.name.print(t),e.value){t.space(),t.print("="),t.space();var n=t.parent(1),r=n instanceof we||n instanceof Ee;c(e.value,t,r)}}),e(Ke,function(e,n){e.expression.print(n),e instanceof Ge&&!d(e,n)||((e.expression instanceof Ke||e.expression instanceof Ce)&&n.add_mapping(e.start),n.with_parens(function(){e.args.forEach(function(e,t){t&&n.comma(),e.print(n)})}))}),e(Ge,function(e,t){t.print("new"),t.space(),Ke.prototype._codegen(e,t)}),e(Ye,function(e,n){e.expressions.forEach(function(e,t){0<t&&(n.comma(),n.should_break()&&(n.newline(),n.indent())),e.print(n)})}),e(Qe,function(e,t){var n=e.expression;n.print(t);var r=e.property;t.option("ie8")&&b[r]?(t.print("["),t.add_mapping(e.end),t.print_string(r),t.print("]")):(n instanceof yt&&0<=n.getValue()&&(/[xa-f.)]/i.test(t.last())||t.print(".")),t.print("."),t.add_mapping(e.end),t.print_name(r))}),e(Ze,function(e,t){e.expression.print(t),t.print("["),e.property.print(t),t.print("]")}),e(Xe,function(e,t){var n=e.operator;t.print(n),(/^[a-z]/i.test(n)||/[+-]$/.test(n)&&e.expression instanceof Xe&&/^[+-]/.test(e.expression.operator))&&t.space(),e.expression.print(t)}),e(et,function(e,t){e.expression.print(t),t.print(e.operator)}),e(tt,function(e,t){var n=e.operator;e.left.print(t),">"==n[0]&&e.left instanceof et&&"--"==e.left.operator?t.print(" "):t.space(),t.print(n),("<"==n||"<<"==n)&&e.right instanceof Xe&&"!"==e.right.operator&&e.right.expression instanceof Xe&&"--"==e.right.expression.operator?t.print(" "):t.space(),e.right.print(t)}),e(nt,function(e,t){e.condition.print(t),t.space(),t.print("?"),t.space(),e.consequent.print(t),t.space(),t.colon(),e.alternative.print(t)}),e(it,function(t,r){r.with_square(function(){var e=t.elements,n=e.length;0<n&&r.space(),e.forEach(function(e,t){t&&r.comma(),e.print(r),t===n-1&&e instanceof xt&&r.comma()}),0<n&&r.space()})}),e(ot,function(e,n){0<e.properties.length?n.with_block(function(){e.properties.forEach(function(e,t){t&&(n.print(","),n.newline()),n.indent(),e.print(n)}),n.newline()}):i(e,n)}),e(st,function(e,t){f(e.key,e.quote,t),t.colon(),e.value.print(t)}),at.DEFMETHOD("_print_getter_setter",function(e,t){t.print(e),t.space(),f(this.key.name,this.quote,t),this.value._do_print(t,!0)}),e(Z,function(e,t){e._print_getter_setter("set",t)}),e(J,function(e,t){e._print_getter_setter("get",t)}),e(ut,function(e,t){var n=e.definition();t.print_name(n?n.mangled_name||n.name:e.name)}),e(xt,G),e(gt,function(e,t){t.print("this")}),e(vt,function(e,t){t.print(e.getValue())}),e(bt,function(e,t){t.print_string(e.getValue(),e.quote,o)}),e(yt,function(e,t){s&&e.start&&null!=e.start.raw?t.print(e.start.raw):t.print(h(e.getValue()))}),e(_t,function(e,t){var n=e.getValue(),r=n.toString();n.raw_source&&(r="/"+n.raw_source+r.slice(r.lastIndexOf("/"))),r=t.to_utf8(r),t.print(r);var i=t.parent();i instanceof tt&&/^in/.test(i.operator)&&i.left===e&&t.print(" ")}),t([ue,ge,ke],G),t([it,he,je,vt,ce,Ve,fe,Ie,U,Ce,Ge,ot,v,ut,Ue,Me,ze],function(e){e.add_mapping(this.start)}),t([J,Z],function(e){e.add_mapping(this.start,this.key.name)}),t([at],function(e){e.add_mapping(this.start,this.key)})}(),n(Xt.prototype=new Wt,{option:function(e){return this.options[e]},exposed:function(e){if(e.global)for(var t=0,n=e.orig.length;t<n;t++)if(!this.toplevel[e.orig[t]instanceof pt?"funcs":"vars"])return!0;return!1},compress:function(e){e=e.resolve_defines(this),this.option("expression")&&e.process_expression(!0);for(var t=+this.options.passes||1,n=1/0,r=!1,i={ie8:this.option("ie8")},o=0;o<t;o++)if(e.figure_out_scope(i),(0<o||this.option("reduce_vars"))&&e.reset_opt_flags(this),e=e.transform(this),1<t){var a=0;if(e.walk(new Dt(function(){a++})),this.info("pass "+o+": last_count: "+n+", count: "+a),a<n)n=a,r=!1;else{if(r)break;r=!0}}return this.option("expression")&&e.process_expression(!1),e},info:function(){"verbose"==this.options.warnings&&ue.warn.apply(ue,arguments)},warn:function(e,t){if(this.options.warnings){var n=B(e,t);n in this.warnings_produced||(this.warnings_produced[n]=!0,ue.warn.apply(ue,arguments))}},clear_warnings:function(){this.warnings_produced={}},before:function(e,t,n){if(e._squeezed)return e;var r=e instanceof xe;r&&(e.hoist_properties(this),e.hoist_declarations(this)),t(e,this),t(e,this);var i=e.optimize(this);return r&&(i.drop_unused(this),t(i,this)),i===e&&(i._squeezed=!0),i}}),function(e){function m(e,t){if(!((t=h(t))instanceof ue)){var n;if(e instanceof it){var r=e.elements;if("length"==t)return N(r.length,e);"number"==typeof t&&t in r&&(n=r[t])}else if(e instanceof ot){t=""+t;for(var i=e.properties,o=i.length;0<=--o;){if(!(i[o]instanceof st))return;n||i[o].key!==t||(n=i[o].value)}}return n instanceof mt&&n.fixed_value()||n}}function Q(e,t,n,r,i,o){var a=t.parent(i),s=ne(n,a);if(s)return s;if(!o&&a instanceof Ke&&a.expression===n&&!a.is_expr_pure(e)&&(!(r instanceof Se)||!(a instanceof Ge)&&r.contains_this()))return!0;if(a instanceof it)return Q(e,t,a,a,i+1);if(a instanceof st&&n===a.value){var u=t.parent(i+1);return Q(e,t,u,u,i+2)}if(a instanceof We&&a.expression===n){var l=m(r,a.property);return!o&&Q(e,t,a,l,i+1)}}function Z(e){if(e instanceof gt)return!0;if(e instanceof mt)return e.definition().orig[0]instanceof dt;if(e instanceof We){if((e=e.expression)instanceof mt){if(e.is_immutable())return!1;e=e.fixed_value()}return!e||(!!e.is_constant()||Z(e))}return!1}function o(e,t){for(var n,r=0;(n=e.parent(r++))&&!(n instanceof xe);)if(n instanceof je){n=n.argname.definition().scope;break}return n.find_variable(t)}function J(e,t,n){return n||(n={}),t&&(n.start||(n.start=t.start),n.end||(n.end=t.end)),new e(n)}function M(e,t){return 1==t.length?t[0]:J(Ye,e,{expressions:t.reduce(d,[])})}function N(e,t){switch(typeof e){case"string":return J(bt,t,{value:e});case"number":return isNaN(e)?J(Et,t):isFinite(e)?1/e<0?J(Xe,t,{operator:"-",expression:J(yt,t,{value:-e})}):J(yt,t,{value:e}):e<0?J(Xe,t,{operator:"-",expression:J(kt,t)}):J(kt,t);case"boolean":return J(e?St:Ot,t);case"undefined":return J(At,t);default:if(null===e)return J(wt,t,{value:null});if(e instanceof RegExp)return J(_t,t,{value:e});throw new Error(B("Can't handle constant of type: {type}",{type:typeof e}))}}function a(e,t){return t instanceof We||e.has_directive("use strict")&&j(t)&&"eval"==t.name}function X(e,t,n,r){return t instanceof Xe&&"delete"==t.operator||"Call"==t.TYPE&&t.expression===n&&a(e,r)?M(n,[J(yt,n,{value:0}),r]):r}function d(e,t){return t instanceof Ye?e.push.apply(e,t.expressions):e.push(t),e}function _(e){if(null===e)return[];if(e instanceof he)return e.body;if(e instanceof me)return[];if(e instanceof le)return[e];throw new Error("Can't convert thing to statement array")}function P(e){return null===e||(e instanceof me||e instanceof he&&0==e.body.length)}function w(e){return e instanceof ve&&e.body instanceof he?e.body:e}function ee(e){for(;e instanceof We;)e=e.expression;return e}function z(e){return"Call"==e.TYPE&&(e.expression instanceof Se||z(e.expression))}function j(e){return e instanceof mt&&e.definition().undeclared}e(ue,function(e,t){return e}),ue.DEFMETHOD("equivalent_to",function(e){return this.TYPE==e.TYPE&&this.print_to_string()==e.print_to_string()}),xe.DEFMETHOD("process_expression",function(r,i){var o=this,a=new Wt(function(e){if(r&&e instanceof pe)return J(Be,e,{value:e.body});if(!r&&e instanceof Be){if(i){var t=e.value&&e.value.drop_side_effect_free(i,!0);return t?J(pe,e,{body:t}):J(me,e)}return J(pe,e,{body:e.value||J(Xe,e,{operator:"void",expression:J(yt,e,{value:0})})})}if(e instanceof Ce&&e!==o)return e;if(e instanceof de){var n=e.body.length-1;0<=n&&(e.body[n]=e.body[n].transform(a))}else e instanceof qe?(e.body=e.body.transform(a),e.alternative&&(e.alternative=e.alternative.transform(a))):e instanceof Ae&&(e.body=e.body.transform(a));return e});o.transform(a)}),function(e){function r(e,t,n){n.assignments=0,n.chained=!1,n.direct_access=!1,n.escaped=!1,n.fixed=!n.scope.pinned()&&!t.exposed(n)&&!(n.init instanceof Se&&n.init!==n.scope)&&n.init,n.fixed instanceof De&&!ae(n.references,function(e){var t=e.scope;do{if(n.scope===t)return!0}while(t instanceof Se&&(t=t.parent_scope))})&&(e.defun_ids[n.id]=!1),n.recursive_refs=0,n.references=[],n.should_replace=void 0,n.single_use=void 0}function a(t,n,e){e.variables.each(function(e){r(t,n,e),null===e.fixed?(e.safe_ids=t.safe_ids,f(t,e,!0)):e.fixed&&(t.loop_ids[e.id]=t.in_loop,f(t,e,!0))}),e.may_call_this=function(){e.may_call_this=G,e.contains_this()&&e.functions.each(function(e){e.init instanceof De&&!(e.id in t.defun_ids)&&(t.defun_ids[e.id]=!1)})}}function c(t,n){if(n.id in t.defun_ids){var e=t.defun_ids[n.id];if(!e)return;var r=t.defun_visited[n.id];if(e===t.safe_ids){if(!r)return n.fixed}else r?n.init.enclosed.forEach(function(e){n.init.variables.get(e.name)!==e&&(p(t,e)||(e.fixed=!1))}):t.defun_ids[n.id]=!1}else{if(!t.in_loop)return t.defun_ids[n.id]=t.safe_ids,n.fixed;t.defun_ids[n.id]=!1}}function s(t,e){e.functions.each(function(e){e.init instanceof De&&!t.defun_visited[e.id]&&(t.defun_ids[e.id]=t.safe_ids,e.init.walk(t))})}function u(e){e.safe_ids=Object.create(e.safe_ids)}function l(e){e.safe_ids=Object.getPrototypeOf(e.safe_ids)}function f(e,t,n){e.safe_ids[t.id]=n}function p(e,t){if("m"==t.single_use)return!1;if(e.safe_ids[t.id]){if(null==t.fixed){var n=t.orig[0];if(n instanceof ft||"arguments"==n.name)return!1;t.fixed=J(At,n)}return!0}return t.fixed instanceof De}function d(e,t,n,r){return void 0===t.fixed||(null===t.fixed&&t.safe_ids?(t.safe_ids[t.id]=!1,delete t.safe_ids,!0):!!se(e.safe_ids,t.id)&&(!!p(e,t)&&(!1!==t.fixed&&(!(null!=t.fixed&&(!r||t.references.length>t.assignments))&&(t.fixed instanceof De?r instanceof ue&&t.fixed.parent_scope===n:ae(t.orig,function(e){return!(e instanceof pt||e instanceof dt)}))))))}function h(e,t,n,r,i,o,a){var s=e.parent(o);if(!i||!i.is_constant()){if(s instanceof rt&&"="==s.operator&&r===s.right||s instanceof Ke&&(r!==s.expression||s instanceof Ge)||s instanceof Te&&r===s.value&&r.scope!==t.scope||s instanceof $e&&r===s.value)return!(1<a)||i&&i.is_constant_expression(n)||(a=1),void((!t.escaped||t.escaped>a)&&(t.escaped=a));if(s instanceof it||s instanceof tt&&te[s.operator]||s instanceof nt&&r!==s.condition||s instanceof Ye&&r===s.tail_node())h(e,t,n,s,s,o+1,a);else if(s instanceof st&&r===s.value){var u=e.parent(o+1);h(e,t,n,u,u,o+2,a)}else if(s instanceof We&&r===s.expression&&(h(e,t,n,s,i=m(i,s.property),o+1,a+1),i))return;0<o||s instanceof Ye&&r!==s.tail_node()||s instanceof pe||(t.direct_access=!0)}}e(ue,G);var n=new Dt(function(e){if(e instanceof ut){var t=e.definition();t&&(e instanceof mt&&t.references.push(e),t.fixed=!1)}});e(Oe,function(e,t,n){return u(e),a(e,n,this),t(),l(e),s(e,this),!0}),e(rt,function(e,t,n){var r=this,i=r.left;if(i instanceof mt){var o=i.definition(),a=d(e,o,i.scope,r.right);if(o.assignments++,a){var s=o.fixed;if(s||"="==r.operator){var u="="==r.operator,l=u?r.right:r;if(!Q(n,e,r,l,0))return o.references.push(i),u||(o.chained=!0),o.fixed=u?function(){return r.right}:function(){return J(tt,r,{operator:r.operator.slice(0,-1),left:s instanceof ue?s:s(),right:r.right})},f(e,o,!1),r.right.walk(e),f(e,o,!0),h(e,o,i.scope,r,l,0,1),!0}}}}),e(tt,function(e){if(te[this.operator])return this.left.walk(e),u(e),this.right.walk(e),l(e),!0}),e(Ke,function(e,t){e.find_parent(xe).may_call_this();var n=this.expression;if(n instanceof mt){var r=n.definition();if(r.fixed instanceof De){var i=c(e,r);if(i)return t(),i.walk(e),!0}}}),e(Pe,function(e){return u(e),this.expression.walk(e),l(e),u(e),q(this,e),l(e),!0}),e(nt,function(e){return this.condition.walk(e),u(e),this.consequent.walk(e),l(e),u(e),this.alternative.walk(e),l(e),!0}),e(Ne,function(e,t){return u(e),t(),l(e),!0}),e(De,function(e,t,n){var r=this.name.definition().id;return e.defun_visited[r]||e.defun_ids[r]!==e.safe_ids||(e.defun_visited[r]=!0,this.inlined=!1,u(e),a(e,n,this),t(),l(e),s(e,this)),!0}),e(ye,function(e){var t=e.in_loop;return e.in_loop=this,u(e),this.body.walk(e),x(this)&&(l(e),u(e)),this.condition.walk(e),l(e),e.in_loop=t,!0}),e(we,function(e){this.init&&this.init.walk(e);var t=e.in_loop;return e.in_loop=this,u(e),this.condition&&this.condition.walk(e),this.body.walk(e),this.step&&(x(this)&&(l(e),u(e)),this.step.walk(e)),l(e),e.in_loop=t,!0}),e(Ee,function(e){this.init.walk(n),this.object.walk(e);var t=e.in_loop;return e.in_loop=this,u(e),this.body.walk(e),l(e),e.in_loop=t,!0}),e(Se,function(r,e,t){var i,o=this;return o.inlined=!1,u(r),a(r,t,o),!o.name&&(i=r.parent())instanceof Ke&&i.expression===o&&o.argnames.forEach(function(e,t){var n=e.definition();void 0!==n.fixed||o.uses_arguments&&!r.has_directive("use strict")?n.fixed=!1:(n.fixed=function(){return i.args[t]||J(At,i)},r.loop_ids[n.id]=r.in_loop,f(r,n,!0))}),e(),l(r),s(r,o),!0}),e(qe,function(e){return this.condition.walk(e),u(e),this.body.walk(e),l(e),this.alternative&&(u(e),this.alternative.walk(e),l(e)),!0}),e(ge,function(e){return u(e),this.body.walk(e),l(e),!0}),e(ht,function(){this.definition().fixed=!1}),e(mt,function(e,t,n){var r,i,o,a,s,u=this.definition();if(u.references.push(this),1==u.references.length&&!u.fixed&&u.orig[0]instanceof pt&&(e.loop_ids[u.id]=e.in_loop),void 0!==u.fixed&&p(e,u)?u.fixed&&((r=this.fixed_value())instanceof Ce&&H(e,u)?u.recursive_refs++:r&&(o=e,a=u,n.option("unused")&&!a.scope.pinned()&&a.references.length-a.recursive_refs==1&&o.loop_ids[a.id]===o.in_loop)?u.single_use=r instanceof Ce&&!r.pinned()||u.scope===this.scope&&r.is_constant_expression():u.single_use=!1,Q(n,e,this,r,0,!!(i=r)&&(i.is_constant()||i instanceof Ce||i instanceof gt))&&(u.single_use?u.single_use="m":u.fixed=!1)):u.fixed=!1,h(e,u,this.scope,this,r,0,1),u.fixed instanceof De&&!((s=e.parent())instanceof Ke&&s.expression===this)){var l=c(e,u);l&&l.walk(e)}}),e(ke,function(t,e,n){return this.globals.each(function(e){r(t,n,e)}),u(t),a(t,n,this),e(),l(t),s(t,this),!0}),e(ze,function(e){return u(e),q(this,e),l(e),this.bcatch&&(u(e),this.bcatch.walk(e),l(e)),this.bfinally&&this.bfinally.walk(e),!0}),e(Je,function(e,t){var n=this;if("++"==n.operator||"--"==n.operator){var r=n.expression;if(r instanceof mt){var i=r.definition(),o=d(e,i,r.scope,!0);if(i.assignments++,o){var a=i.fixed;if(a)return i.references.push(r),i.chained=!0,i.fixed=function(){return J(tt,n,{operator:n.operator.slice(0,-1),left:J(Xe,n,{operator:"+",expression:a instanceof ue?a:a()}),right:J(yt,n,{value:1})})},f(e,i,!0),!0}}}}),e($e,function(e,t){var n=this,r=n.name.definition();if(n.value){if(d(e,r,n.name.scope,n.value))return r.fixed=function(){return n.value},e.loop_ids[r.id]=e.in_loop,f(e,r,!1),t(),f(e,r,!0),!0;r.fixed=!1}}),e(_e,function(e,t){var n=e.in_loop;return e.in_loop=this,u(e),t(),l(e),e.in_loop=n,!0})}(function(e,t){e.DEFMETHOD("reduce_vars",t)}),ke.DEFMETHOD("reset_opt_flags",function(n){var r=new Dt(n.option("reduce_vars")?function(e,t){return e._squeezed=!1,e._optimized=!1,e.reduce_vars(r,t,n)}:function(e){e._squeezed=!1,e._optimized=!1});r.defun_ids=Object.create(null),r.defun_visited=Object.create(null),r.in_loop=null,r.loop_ids=Object.create(null),r.safe_ids=Object.create(null),this.walk(r)}),ut.DEFMETHOD("fixed_value",function(){var e=this.definition().fixed;return!e||e instanceof ue?e:e()}),mt.DEFMETHOD("is_immutable",function(){var e=this.definition().orig;return 1==e.length&&e[0]instanceof dt});var t=W("Array Boolean clearInterval clearTimeout console Date decodeURI decodeURIComponent encodeURI encodeURIComponent Error escape eval EvalError Function isFinite isNaN JSON Math Number parseFloat parseInt RangeError ReferenceError RegExp Object setInterval setTimeout String SyntaxError TypeError unescape URIError");mt.DEFMETHOD("is_declared",function(e){return!this.definition().undeclared||e.option("unsafe")&&t[this.name]});var n,r,I=W("Infinity NaN undefined");function i(e,u){var K,G,Y;!function(){var e=u.self(),t=0;do{if(e instanceof je||e instanceof Ie)t++;else if(e instanceof ve)K=!0;else{if(e instanceof xe){Y=e;break}e instanceof ze&&(G=!0)}}while(e=u.parent(t++))}();for(var W,t=10;W=!1,i(e),u.option("dead_code")&&o(e,u),u.option("if_return")&&r(e,u),0<u.sequences_limit&&(a(e,u),s(e,u)),u.option("join_vars")&&f(e),u.option("collapse_vars")&&n(e,u),W&&0<t--;);function n(n,u){if(Y.pinned())return n;for(var l,e,t,c=[],o=n.length,a=new Wt(function(e){if(C)return e;if(!k)return e!==s[f]?e:++f<s.length?R(e):(k=!0,(h=function e(t,n,r){var i=a.parent(n);if(i instanceof rt)return r&&!(i.left instanceof We||i.left.name in _)?e(i,n+1,r):t;if(i instanceof tt)return!r||te[i.operator]&&i.left!==t?t:e(i,n+1,r);if(i instanceof Ke)return t;if(i instanceof Pe)return t;if(i instanceof nt)return r&&i.condition===t?e(i,n+1,r):t;if(i instanceof Ve)return e(i,n+1,!0);if(i instanceof Te)return r?e(i,n+1,r):t;if(i instanceof qe)return r&&i.condition===t?e(i,n+1,r):t;if(i instanceof ve)return t;if(i instanceof Ye)return e(i,n+1,i.tail_node()!==t);if(i instanceof pe)return e(i,n+1,!0);if(i instanceof Ue)return t;if(i instanceof Je)return t;if(i instanceof $e)return t;return null}(e,0))===e&&(C=!0),e);var t,n,r,i=a.parent();if(function(e,t){if(t instanceof we)return e!==t.init;if(e instanceof rt)return"="!=e.operator&&g.equivalent_to(e.left);if(e instanceof Ke)return g instanceof We&&g.equivalent_to(e.expression);return e instanceof ce||(e instanceof ve?!(e instanceof we):e instanceof Re||e instanceof ze||e instanceof Ae||!E&&e instanceof mt&&!e.is_declared(u))}(e,i))return C=!0,e;if(!m&&(t=e,(n=i)instanceof tt?te[n.operator]&&n.left!==t:n instanceof nt?n.condition!==t:n instanceof qe&&n.condition!==t)&&(m=i),!S||e instanceof lt||!(b&&g.equivalent_to(e)||y&&(r=y(e,this))))return(function(e,t){if(e instanceof Ke)return!0;if(e instanceof Te)return v||g instanceof We||H(g);if(e instanceof Se)return u.option("ie8")&&e.name&&e.name.name in _;if(e instanceof We)return v||e.expression.may_throw_on_access(u);if(e instanceof mt)return V(e,t)?!t||"="!=t.operator||t.left!==e:v&&H(e);if(e instanceof gt)return V(e,t);if(e instanceof $e)return!!e.value&&(e.name.name in _||v&&H(e.name));var n=ne(e.left,e);if(n&&n.name in _)return!0;if(n instanceof We)return!0}(e,i)||A(e))&&(h=e)instanceof xe&&(C=!0),R(e);if(m&&(r||!w||!E))return C=!0,e;if(ne(e,i))return d&&O++,e;if(O++,d&&p instanceof $e)return e;if(W=C=!0,u.info("Collapsing {name} [{file}:{line},{col}]",{name:e.print_to_string(),file:e.start.file,line:e.start.line,col:e.start.col}),p instanceof et)return J(Xe,p,p);if(p instanceof $e){var o=p.name.definition();return o.references.length-o.replaced!=1||u.exposed(o)?J(rt,p,{operator:"=",left:J(mt,p.name,p.name),right:p.value}):(o.replaced++,X(u,i,e,p.value))}return p.write_only=!1,p},function(e){C||(h===e&&(C=!0),m===e&&(m=null))}),r=new Wt(function(e){return C?e:k?e instanceof mt&&e.name==B.name?(--O||(C=!0),ne(e,r.parent())?e:(B.replaced++,d.replaced--,p.value.clone())):e instanceof Ne||e instanceof xe?e:void 0:e!==s[f]?e:++f<s.length?void 0:(k=!0,e)});0<=--o;){0==o&&u.option("unused")&&L();var s=[];for(F(n[o]);0<c.length;){s=c.pop();var f=0,p=s[s.length-1],d=null,h=null,m=null,g=q(p),i=p instanceof rt&&"="==p.operator&&p.right,v=g&&g.has_side_effects(u),b=g&&!v&&!Z(g),y=i&&U(i);if(b||y){var _=P(p),w=(t=void 0,(t=ee(e=g))instanceof mt&&t.definition().scope===Y&&!(K&&(t.name in _&&_[t.name]!==e||p instanceof Je||p instanceof rt&&"="!=p.operator)));v||(v=j(p));var E=I(),A=p.may_throw(u)?G?function(e){return e.has_side_effects(u)}:$:ie,x=p.name instanceof ft,k=x,C=!1,O=0,S=!l||!k;if(!S){for(var D=u.self().argnames.lastIndexOf(p.name)+1;!C&&D<l.length;D++)l[D].transform(a);S=!0}for(var T=o;!C&&T<n.length;T++)n[T].transform(a);if(d){var B=p.name.definition();if(C&&B.references.length-B.replaced>O)O=!1;else{C=!1,f=0,k=x;for(T=o;!C&&T<n.length;T++)n[T].transform(r);d.single_use=!1}}O&&!z(p)&&n.splice(o,1)}}}function R(e){if(e instanceof xe)return e;if(e instanceof Ue){e.expression=e.expression.transform(a);for(var t=0,n=e.body.length;!C&&t<n;t++){var r=e.body[t];if(r instanceof Pe){if(!k){if(r!==s[f])continue;f++}if(r.expression=r.expression.transform(a),!E)break}}return C=!0,e}}function L(){var e,n=u.self();if(n instanceof Se&&!n.name&&!n.uses_arguments&&!n.pinned()&&(e=u.parent())instanceof Ke&&e.expression===n){var r=u.has_directive("use strict");r&&!re(r,n.body)&&(r=!1);var t=n.argnames.length;l=e.args.slice(t);for(var i=Object.create(null),o=t;0<=--o;){var a=n.argnames[o],s=e.args[o];l.unshift(J($e,a,{name:a,value:s})),a.name in i||(i[a.name]=!0,s?s instanceof Ce&&s.pinned()?s=null:s.walk(new Dt(function(e){if(!s)return!0;if(e instanceof mt&&n.variables.has(e.name)){var t=e.definition().scope;if(t!==Y)for(;t=t.parent_scope;)if(t===Y)return!0;s=null}return e instanceof gt&&(r||!this.find_parent(xe))?!(s=null):void 0})):s=J(At,a).transform(u),s&&c.unshift([J($e,a,{name:a,value:s})]))}}}function F(e){if(s.push(e),e instanceof rt)c.push(s.slice()),F(e.right);else if(e instanceof tt)F(e.left),F(e.right);else if(e instanceof Ke)F(e.expression),e.args.forEach(F);else if(e instanceof Pe)F(e.expression);else if(e instanceof nt)F(e.condition),F(e.consequent),F(e.alternative);else if(e instanceof Ve)e.definitions.forEach(F);else if(e instanceof be)F(e.condition),e.body instanceof de||F(e.body);else if(e instanceof Te)e.value&&F(e.value);else if(e instanceof we)e.init&&F(e.init),e.condition&&F(e.condition),e.step&&F(e.step),e.body instanceof de||F(e.body);else if(e instanceof Ee)F(e.object),e.body instanceof de||F(e.body);else if(e instanceof qe)F(e.condition),e.body instanceof de||F(e.body),!e.alternative||e.alternative instanceof de||F(e.alternative);else if(e instanceof Ye)e.expressions.forEach(F);else if(e instanceof pe)F(e.body);else if(e instanceof Ue)F(e.expression),e.body.forEach(F);else if(e instanceof Je)"++"==e.operator||"--"==e.operator?c.push(s.slice()):F(e.expression);else if(e instanceof $e&&e.value){var t=e.name.definition();t.references.length>t.replaced&&c.push(s.slice()),F(e.value)}s.pop()}function q(e){if(!(e instanceof $e))return e[e instanceof rt?"left":"expression"];var t=e.name.definition();if(re(e.name,t.orig)){var n=t.references.length-t.replaced;return 1<t.orig.length-t.eliminated&&!(e.name instanceof ft)||(1<n?function(e){var t=e.value;if(t instanceof mt&&"arguments"!=t.name){var n=t.definition();if(!n.undeclared)return d=n}}(e):!u.exposed(t))?J(mt,e.name,e.name):void 0}}function U(e){if(e instanceof mt){var t=e.evaluate(u);return t===e?M:N(t,M)}if(e instanceof gt)return M;if(e.is_truthy())return N(!0,ie);if(e.is_constant())return N(e.evaluate(u),M);if(!(g instanceof mt))return!1;if(!function e(t){return!(t instanceof it)&&(t instanceof tt&&te[t.operator]?e(t.left)&&e(t.right):!(t instanceof Ke)&&(t instanceof nt?e(t.consequent)&&e(t.alternative):!(t instanceof ot||t.has_side_effects(u))))}(e))return!1;var n,r=g.definition();return e.walk(new Dt(function(e){if(n)return!0;e instanceof mt&&e.definition()===r&&(n=!0)})),!n&&M}function M(e){return i.equivalent_to(e)}function N(n,r){return function(e,t){if(t.in_boolean_context()){if(n&&e.is_truthy()&&!e.has_side_effects(u))return!0;if(e.is_constant())return!e.evaluate(u)==!n}return r(e)}}function P(e){var n=Object.create(null);p instanceof $e&&(n[p.name.name]=g);var r=new Dt(function(e){var t=ee(e);(t instanceof mt||t instanceof gt)&&(n[t.name]=n[t.name]||Q(u,r,e,e,0))});return e.walk(r),n}function z(r){if(r.name instanceof ft){var e=u.self().argnames.indexOf(r.name),t=u.parent().args;return t[e]&&(t[e]=J(yt,t[e],{value:0})),!0}var i=!1;return n[o].transform(new Wt(function(e,t,n){return i?e:e===r||e.body===r?(i=!0,e instanceof $e?(e.value=null,e):n?oe.skip:null):void 0},function(e){if(e instanceof Ye)switch(e.expressions.length){case 0:return null;case 1:return e.expressions[0]}}))}function j(e){return!(e instanceof Je)&&(t=e,t[t instanceof rt?"right":"value"]).has_side_effects(u);var t}function I(){if(v)return!1;if(d)return!0;if(g instanceof mt){var e=g.definition();if(e.references.length-e.replaced==(p instanceof $e?1:2))return!0}return!1}function V(e,t){var n=_[e.name];if(n)return n!==g?!(t instanceof Ke):void(y=!1)}function H(e){var t=e.definition();return!(1==t.orig.length&&t.orig[0]instanceof pt)&&(t.scope!==Y||!ae(t.references,function(e){return e.scope.resolve()===Y}))}function $(e,t){if(e instanceof rt)return $(e.left,!0);if(e instanceof Je)return $(e.expression,!0);if(e instanceof $e)return e.value&&$(e.value);if(t){if(e instanceof Qe)return $(e.expression,!0);if(e instanceof Ze)return $(e.expression,!0);if(e instanceof mt)return e.definition().scope!==Y}return!1}}function i(e){for(var t=[],n=0;n<e.length;){var r=e[n];r instanceof he?(W=!0,i(r.body),[].splice.apply(e,[n,1].concat(r.body)),n+=r.body.length):r instanceof me?(W=!0,e.splice(n,1)):r instanceof fe?t.indexOf(r.value)<0?(n++,t.push(r.value)):(W=!0,e.splice(n,1)):n++}}function r(i,r){for(var o=r.self(),e=function(e){for(var t=0,n=e.length;0<=--n;){var r=e[n];if(r instanceof qe&&r.body instanceof Be&&1<++t)return!0}return!1}(i),a=o instanceof Ce,t=i.length;0<=--t;){var n=i[t],s=v(t),u=i[s];if(a&&!u&&n instanceof Be){if(!n.value){W=!0,i.splice(t,1);continue}if(n.value instanceof Xe&&"void"==n.value.operator){W=!0,i[t]=J(pe,n,{body:n.value.expression});continue}}if(n instanceof qe){var l;if(h(l=A(n.body))){l.label&&R(l.label.thedef.references,l),W=!0,(n=n.clone()).condition=n.condition.negate(r);var c=g(n.body,l);n.body=J(he,n,{body:_(n.alternative).concat(m())}),n.alternative=J(he,n,{body:c}),i[t]=n.transform(r);continue}if(l&&!n.alternative&&n.body instanceof he&&u instanceof U){var f=n.condition.negate(r);if(f.print_to_string().length<=n.condition.print_to_string().length){W=!0,(n=n.clone()).condition=f,i[s]=n.body,n.body=u,i[t]=n.transform(r);continue}}if(h(l=A(n.alternative))){l.label&&R(l.label.thedef.references,l),W=!0,(n=n.clone()).body=J(he,n.body,{body:_(n.body).concat(m())});c=g(n.alternative,l);n.alternative=J(he,n.alternative,{body:c}),i[t]=n.transform(r);continue}}if(n instanceof qe&&n.body instanceof Be){var p=n.body.value;if(!p&&!n.alternative&&(a&&!u||u instanceof Be&&!u.value)){W=!0,i[t]=J(pe,n.condition,{body:n.condition});continue}if(p&&!n.alternative&&u instanceof Be&&u.value){W=!0,(n=n.clone()).alternative=u,i.splice(t,1,n.transform(r)),i.splice(s,1);continue}if(p&&!n.alternative&&(!u&&a&&e||u instanceof Be)){W=!0,(n=n.clone()).alternative=u||J(Be,n,{value:null}),i.splice(t,1,n.transform(r)),u&&i.splice(s,1);continue}var d=i[b(t)];if(r.option("sequences")&&a&&!n.alternative&&d instanceof qe&&d.body instanceof Be&&v(s)==i.length&&u instanceof pe){W=!0,(n=n.clone()).alternative=J(he,u,{body:[u,J(Be,u,{value:null})]}),i.splice(t,1,n.transform(r)),i.splice(s,1);continue}}}function h(e){if(!e)return!1;var t,n=e instanceof Re?r.loopcontrol_target(e):null;return e instanceof Be&&a&&(!(t=e.value)||t instanceof Xe&&"void"==t.operator)||e instanceof Fe&&o===w(n)||e instanceof Le&&n instanceof he&&o===n}function m(){var e=i.slice(t+1);return i.length=t+1,e.filter(function(e){return!(e instanceof De)||(i.push(e),!1)})}function g(e,t){var n=_(e).slice(0,-1);return t.value&&n.push(J(pe,t.value,{body:t.value.expression})),n}function v(e){for(var t=e+1,n=i.length;t<n;t++){var r=i[t];if(!(r instanceof He&&y(r)))break}return t}function b(e){for(var t=e;0<=--t;){var n=i[t];if(!(n instanceof He&&y(n)))break}return t}}function o(t,n){for(var e,r=n.self(),i=0,o=0,a=t.length;i<a;i++){var s=t[i];if(s instanceof Re){var u=n.loopcontrol_target(s);s instanceof Le&&!(u instanceof ve)&&w(u)===r||s instanceof Fe&&w(u)===r?s.label&&R(s.label.thedef.references,s):t[o++]=s}else t[o++]=s;if(A(s)){e=t.slice(i+1);break}}t.length=o,W=o!=a,e&&e.forEach(function(e){E(n,e,t)})}function y(e){return ae(e.definitions,function(e){return!e.value})}function a(t,e){if(!(t.length<2)){for(var n=[],r=0,i=0,o=t.length;i<o;i++){var a=t[i];if(a instanceof pe){n.length>=e.sequences_limit&&u();var s=a.body;0<n.length&&(s=s.drop_side_effect_free(e)),s&&d(n,s)}else a instanceof Ve&&y(a)||a instanceof De||u(),t[r++]=a}u(),(t.length=r)!=o&&(W=!0)}function u(){if(n.length){var e=M(n[0],n);t[r++]=J(pe,e,{body:e}),n=[]}}}function p(e,t){if(!(e instanceof he))return e;for(var n=null,r=0,i=e.body.length;r<i;r++){var o=e.body[r];if(o instanceof He&&y(o))t.push(o);else{if(n)return!1;n=o}}return n}function s(e,n){function t(e){i--,W=!0;var t=r.body;return M(t,[t,e]).transform(n)}for(var r,i=0,o=0;o<e.length;o++){var a=e[o];if(r)if(a instanceof Te)a.value=t(a.value||J(At,a).transform(n));else if(a instanceof we){if(!(a.init instanceof Ve)){var s=!1;r.body.walk(new Dt(function(e){return!!(s||e instanceof xe)||(e instanceof tt&&"in"==e.operator?s=!0:void 0)})),s||(a.init?a.init=t(a.init):(a.init=r.body,i--,W=!0))}}else a instanceof Ee?a.object=t(a.object):a instanceof qe?a.condition=t(a.condition):a instanceof Ue?a.expression=t(a.expression):a instanceof Ae&&(a.expression=t(a.expression));if(n.option("conditionals")&&a instanceof qe){var u=[],l=p(a.body,u),c=p(a.alternative,u);if(!1!==l&&!1!==c&&0<u.length){var f=u.length;u.push(J(qe,a,{condition:a.condition,body:l||J(me,a.body),alternative:c})),u.unshift(i,1),[].splice.apply(e,u),o+=f,i+=f+1,W=!(r=null);continue}}e[i++]=a,r=a instanceof pe?a:null}e.length=i}function l(e,t){var n;if(t instanceof rt?n=[t]:t instanceof Ye&&(n=t.expressions.slice()),n){if(e instanceof Ve){var r=e.definitions[e.definitions.length-1];if(c(r.name,r.value,n))return n}for(var i=n.length-1;0<=--i;){var o=n[i];if(o instanceof rt&&("="==o.operator&&o.left instanceof mt)){var a=n.slice(i+1);if(c(o.left,o.right,a))return n.slice(0,i+1).concat(a)}}}}function c(e,t,n){if(t instanceof ot){var r=!1;do{var i=n[0];if(!(i instanceof rt))break;if("="!=i.operator)break;if(!(i.left instanceof We))break;var o=i.left.expression;if(!(o instanceof mt))break;if(e.name!=o.name)break;if(!i.right.is_constant_expression(Y))break;var a=i.left.property;if(a instanceof ue&&(a=a.evaluate(u)),a instanceof ue)break;a=""+a;var s=u.has_directive("use strict")?function(e){return e.key!=a&&e.key.name!=a}:function(e){return e.key.name!=a};if(!ae(t.properties,s))break;t.properties.push(J(st,i,{key:a,value:i.right})),n.shift(),r=!0}while(n.length);return r}}function f(r){for(var e,t=0,i=-1,n=r.length;t<n;t++){var o=r[t],a=r[i];if(o instanceof Ve)a&&a.TYPE==o.TYPE?(a.definitions=a.definitions.concat(o.definitions),W=!0):e&&e.TYPE==o.TYPE&&y(o)?(e.definitions=e.definitions.concat(o.definitions),W=!0):e=r[++i]=o;else if(o instanceof Te)o.value=u(o.value);else if(o instanceof we){(s=l(a,o.init))?(W=!0,o.init=s.length?M(o.init,s):null,r[++i]=o):a instanceof He&&(!o.init||o.init.TYPE==a.TYPE)?(o.init&&(a.definitions=a.definitions.concat(o.init.definitions)),o.init=a,r[i]=o,W=!0):e&&o.init&&e.TYPE==o.init.TYPE&&y(o.init)?(e.definitions=e.definitions.concat(o.init.definitions),o.init=null,r[++i]=o,W=!0):r[++i]=o}else if(o instanceof Ee)o.object=u(o.object);else if(o instanceof qe)o.condition=u(o.condition);else if(o instanceof pe){var s;if(s=l(a,o.body)){if(W=!0,!s.length)continue;o.body=M(o.body,s)}r[++i]=o}else o instanceof Ue?o.expression=u(o.expression):o instanceof Ae?o.expression=u(o.expression):r[++i]=o}function u(e){r[++i]=o;var t=l(a,e);if(!t)return e;W=!0;var n=e.tail_node();return t[t.length-1]!==n&&t.push(n.left),M(e,t)}r.length=i+1}}function E(t,e,n){e instanceof De||t.warn("Dropping unreachable code [{file}:{line},{col}]",e.start),e.walk(new Dt(function(e){return e instanceof Ve?(t.warn("Declarations in unreachable code! [{file}:{line},{col}]",e.start),e.remove_initializers(),n.push(e),!0):e instanceof De?(n.push(e),!0):e instanceof xe||void 0}))}function h(e){return e instanceof vt?e.getValue():e instanceof Xe&&"void"==e.operator&&e.expression instanceof vt?void 0:e}function b(e,t){return e.is_undefined||e instanceof At||e instanceof Xe&&"void"==e.operator&&!e.expression.has_side_effects(t)}(n=function(e,t){e.DEFMETHOD("is_truthy",t)})(ue,ie),n(it,Y),n(rt,function(){return"="==this.operator&&this.right.is_truthy()}),n(Ce,Y),n(ot,Y),n(_t,Y),n(Ye,function(){return this.tail_node().is_truthy()}),n(mt,function(){var e=this.fixed_value();return e&&e.is_truthy()}),function(e){function n(e){return/strict/.test(e.option("pure_getters"))}ue.DEFMETHOD("may_throw_on_access",function(e){return!e.option("pure_getters")||this._dot_throw(e)}),e(ue,n),e(wt,Y),e(At,Y),e(vt,ie),e(it,ie),e(ot,function(e){if(!n(e))return!1;for(var t=this.properties.length;0<=--t;)if(this.properties[t].value instanceof Oe)return!0;return!1}),e(Ce,ie),e(et,ie),e(Xe,function(){return"void"==this.operator}),e(tt,function(e){return("&&"==this.operator||"||"==this.operator)&&(this.left._dot_throw(e)||this.right._dot_throw(e))}),e(rt,function(e){return"="==this.operator&&this.right._dot_throw(e)}),e(nt,function(e){return this.consequent._dot_throw(e)||this.alternative._dot_throw(e)}),e(Qe,function(e){if(!n(e))return!1;var t=this.expression;return t instanceof mt&&(t=t.fixed_value()),!(t instanceof Ce&&"prototype"==this.property)}),e(Ye,function(e){return this.tail_node()._dot_throw(e)}),e(mt,function(e){if(this.is_undefined)return!0;if(!n(e))return!1;if(j(this)&&this.is_declared(e))return!1;if(this.is_immutable())return!1;var t=this.fixed_value();return!t||t._dot_throw(e)})}(function(e,t){e.DEFMETHOD("_dot_throw",t)}),function(e){e(ue,ie),e(rt,function(e){return"="==this.operator&&this.right.is_boolean(e)});var t=W("in instanceof == != === !== < <= >= >");e(tt,function(e){return t[this.operator]||te[this.operator]&&this.left.is_boolean(e)&&this.right.is_boolean(e)}),e(Ct,Y);var n=W("every hasOwnProperty isPrototypeOf propertyIsEnumerable some");e(Ke,function(e){if(!e.option("unsafe"))return!1;var t=this.expression;return t instanceof Qe&&(n[t.property]||"test"==t.property&&t.expression instanceof _t)}),e(nt,function(e){return this.consequent.is_boolean(e)&&this.alternative.is_boolean(e)}),e(Ge,ie),e(Ye,function(e){return this.tail_node().is_boolean(e)});var r=W("! delete");e(Xe,function(){return r[this.operator]})}(function(e,t){e.DEFMETHOD("is_boolean",t)}),function(e){e(ue,ie);var t=W("- * / % & | ^ << >> >>>");e(rt,function(e){return t[this.operator.slice(0,-1)]||"="==this.operator&&this.right.is_number(e)}),e(tt,function(e){return t[this.operator]||"+"==this.operator&&this.left.is_number(e)&&this.right.is_number(e)});var n=W(["charCodeAt","getDate","getDay","getFullYear","getHours","getMilliseconds","getMinutes","getMonth","getSeconds","getTime","getTimezoneOffset","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","getYear","indexOf","lastIndexOf","localeCompare","push","search","setDate","setFullYear","setHours","setMilliseconds","setMinutes","setMonth","setSeconds","setTime","setUTCDate","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes","setUTCMonth","setUTCSeconds","setYear","toExponential","toFixed","toPrecision"]);e(Ke,function(e){if(!e.option("unsafe"))return!1;var t=this.expression;return t instanceof Qe&&(n[t.property]||j(t.expression)&&"Math"==t.expression.name)}),e(nt,function(e){return this.consequent.is_number(e)&&this.alternative.is_number(e)}),e(Ge,ie),e(yt,Y),e(Ye,function(e){return this.tail_node().is_number(e)});var r=W("+ - ~ ++ --");e(Je,function(){return r[this.operator]})}(function(e,t){e.DEFMETHOD("is_number",t)}),(r=function(e,t){e.DEFMETHOD("is_string",t)})(ue,ie),r(bt,Y),r(Xe,function(){return"typeof"==this.operator}),r(tt,function(e){return"+"==this.operator&&(this.left.is_string(e)||this.right.is_string(e))}),r(rt,function(e){return("="==this.operator||"+="==this.operator)&&this.right.is_string(e)}),r(Ye,function(e){return this.tail_node().is_string(e)}),r(nt,function(e){return this.consequent.is_string(e)&&this.alternative.is_string(e)});var te=W("&& ||"),s=W("delete ++ --");function ne(e,t){return t instanceof Je&&s[t.operator]?t.expression:t instanceof rt&&t.left===e?e:void 0}function y(e,t){return e.print_to_string().length>t.print_to_string().length?t:e}function V(e,t,n){return(F(e)?function(e,t){return y(J(pe,e,{body:e}),J(pe,t,{body:t})).body}:y)(t,n)}function u(e){for(var t in e)e[t]=W(e[t])}!function(e){function a(e,t){e.warn("global_defs "+t.print_to_string()+" redefined [{file}:{line},{col}]",t.start)}ke.DEFMETHOD("resolve_defines",function(o){return o.option("global_defs")?(this.figure_out_scope({ie8:o.option("ie8")}),this.transform(new Wt(function(e){var t=e._find_defs(o,"");if(t){for(var n,r=0,i=e;(n=this.parent(r++))&&n instanceof We&&n.expression===i;)i=n;if(!ne(i,n))return t;a(o,e)}}))):this}),e(ue,G),e(Qe,function(e,t){return this.expression._find_defs(e,"."+this.property+t)}),e(lt,function(e){this.global()&&se(e.option("global_defs"),this.name)&&a(e,this)}),e(mt,function(e,t){if(this.global()){var n=e.option("global_defs"),r=this.name+t;return se(n,r)?function t(e,n){if(e instanceof ue)return J(e.CTOR,n,e);if(Array.isArray(e))return J(it,n,{elements:e.map(function(e){return t(e,n)})});if(e&&"object"==typeof e){var r=[];for(var i in e)se(e,i)&&r.push(J(st,n,{key:i,value:t(e[i],n)}));return J(ot,n,{properties:r})}return N(e,n)}(n[r],this):void 0}})}(function(e,t){e.DEFMETHOD("_find_defs",t)});var l=["constructor","toString","valueOf"],g={Array:["indexOf","join","lastIndexOf","slice"].concat(l),Boolean:l,Function:l,Number:["toExponential","toFixed","toPrecision"].concat(l),Object:l,RegExp:["test"].concat(l),String:["charAt","charCodeAt","concat","indexOf","italics","lastIndexOf","match","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase","trim"].concat(l)};u(g);var v={Array:["isArray"],Math:["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan","atan2","pow","max","min"],Number:["isFinite","isNaN"],Object:["create","getOwnPropertyDescriptor","getOwnPropertyNames","getPrototypeOf","isExtensible","isFrozen","isSealed","keys"],String:["fromCharCode"]};u(v),function(e){ue.DEFMETHOD("evaluate",function(e){if(!e.option("evaluate"))return this;var t=[],n=this._eval(e,t,1);return t.forEach(function(e){delete e._eval}),!n||n instanceof RegExp?n:"function"==typeof n||"object"==typeof n?this:n});var t=W("! ~ - + void");ue.DEFMETHOD("is_constant",function(){return this instanceof vt?!(this instanceof _t):this instanceof Xe&&this.expression instanceof vt&&t[this.operator]}),e(le,function(){throw new Error(B("Cannot evaluate a statement [{file}:{line},{col}]",this.start))}),e(Ce,D),e(ue,D),e(vt,function(){return this.getValue()}),e(Se,function(e){if(e.option("unsafe")){var t=function(){};return t.node=this,t.toString=function(){return"function(){}"},t}return this}),e(it,function(e,t,n){if(e.option("unsafe")){for(var r=[],i=0,o=this.elements.length;i<o;i++){var a=this.elements[i],s=a._eval(e,t,n);if(a===s)return this;r.push(s)}return r}return this}),e(ot,function(e,t,n){if(e.option("unsafe")){for(var r={},i=0,o=this.properties.length;i<o;i++){var a=this.properties[i],s=a.key;if(s instanceof ut)s=s.name;else if(s instanceof ue&&(s=s._eval(e,t,n))===a.key)return this;if("function"==typeof Object.prototype[s])return this;if(!(a.value instanceof Se)&&(r[s]=a.value._eval(e,t,n),r[s]===a.value))return this}return r}return this});var i=W("! typeof void");e(Xe,function(e,t,n){var r=this.expression;if(e.option("typeofs")&&"typeof"==this.operator&&(r instanceof Ce||r instanceof mt&&r.fixed_value()instanceof Ce))return"function";if(i[this.operator]||n++,(r=r._eval(e,t,n))===this.expression)return this;switch(this.operator){case"!":return!r;case"typeof":return r instanceof RegExp?this:typeof r;case"void":return;case"~":return~r;case"-":return-r;case"+":return+r}return this});var a=W("&& || === !==");e(tt,function(e,t,n){a[this.operator]||n++;var r=this.left._eval(e,t,n);if(r===this.left)return this;var i,o=this.right._eval(e,t,n);if(o===this.right)return this;switch(this.operator){case"&&":i=r&&o;break;case"||":i=r||o;break;case"|":i=r|o;break;case"&":i=r&o;break;case"^":i=r^o;break;case"+":i=r+o;break;case"*":i=r*o;break;case"/":i=r/o;break;case"%":i=r%o;break;case"-":i=r-o;break;case"<<":i=r<<o;break;case">>":i=r>>o;break;case">>>":i=r>>>o;break;case"==":i=r==o;break;case"===":i=r===o;break;case"!=":i=r!=o;break;case"!==":i=r!==o;break;case"<":i=r<o;break;case"<=":i=r<=o;break;case">":i=o<r;break;case">=":i=o<=r;break;default:return this}return isNaN(i)&&e.find_parent(Ae)?this:i}),e(nt,function(e,t,n){var r=this.condition._eval(e,t,n);if(r===this.condition)return this;var i=r?this.consequent:this.alternative,o=i._eval(e,t,n);return o===i?this:o}),e(mt,function(e,t,n){var r,i=this.fixed_value();if(!i)return this;if(0<=t.indexOf(i))r=i._eval();else{if(this._eval=D,r=i._eval(e,t,n),delete this._eval,r===i)return this;i._eval=function(){return r},t.push(i)}if(r&&"object"==typeof r){var o=this.definition().escaped;if(o&&o<n)return this}return r});var h={Array:Array,Math:Math,Number:Number,Object:Object,String:String},s={Math:["E","LN10","LN2","LOG2E","LOG10E","PI","SQRT1_2","SQRT2"],Number:["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"]};u(s),e(We,function(e,t,n){if(e.option("unsafe")){var r=this.property;if(r instanceof ue&&(r=r._eval(e,t,n))===this.property)return this;var i,o=this.expression;if(j(o)){var a=s[o.name];if(!a||!a[r])return this;i=h[o.name]}else{if(!(i=o._eval(e,t,n+1))||i===o||!se(i,r))return this;if("function"==typeof i)switch(r){case"name":return i.node.name?i.node.name.name:"";case"length":return i.node.argnames.length;default:return this}}return i[r]}return this}),e(Ke,function(t,e,n){var r=this.expression;if(t.option("unsafe")&&r instanceof We){var i,o=r.property;if(o instanceof ue&&(o=o._eval(t,e,n))===r.property)return this;var a=r.expression;if(j(a)){var s=v[a.name];if(!s||!s[o])return this;i=h[a.name]}else{if((i=a._eval(t,e,n+1))===a||!i)return this;var u=g[i.constructor.name];if(!u||!u[o])return this}for(var l=[],c=0,f=this.args.length;c<f;c++){var p=this.args[c],d=p._eval(t,e,n);if(p===d)return this;l.push(d)}try{return i[o].apply(i,l)}catch(e){t.warn("Error evaluating {code} [{file}:{line},{col}]",{code:this.print_to_string(),file:this.start.file,line:this.start.line,col:this.start.col})}}return this}),e(Ge,D)}(function(e,t){e.DEFMETHOD("_eval",t)}),function(e){function o(e){return J(Xe,e,{operator:"!",expression:e})}function i(e,t,n){var r=o(e);if(n){var i=J(pe,t,{body:t});return y(r,i)===i?t:r}return y(r,t)}e(ue,function(){return o(this)}),e(le,function(){throw new Error("Cannot negate a statement")}),e(Se,function(){return o(this)}),e(Xe,function(){return"!"==this.operator?this.expression:o(this)}),e(Ye,function(e){var t=this.expressions.slice();return t.push(t.pop().negate(e)),M(this,t)}),e(nt,function(e,t){var n=this.clone();return n.consequent=n.consequent.negate(e),n.alternative=n.alternative.negate(e),i(this,n,t)}),e(tt,function(e,t){var n=this.clone(),r=this.operator;if(e.option("unsafe_comps"))switch(r){case"<=":return n.operator=">",n;case"<":return n.operator=">=",n;case">=":return n.operator="<",n;case">":return n.operator="<=",n}switch(r){case"==":return n.operator="!=",n;case"!=":return n.operator="==",n;case"===":return n.operator="!==",n;case"!==":return n.operator="===",n;case"&&":return n.operator="||",n.left=n.left.negate(e,t),n.right=n.right.negate(e),i(this,n,t);case"||":return n.operator="&&",n.left=n.left.negate(e,t),n.right=n.right.negate(e),i(this,n,t)}return o(this)})}(function(e,n){e.DEFMETHOD("negate",function(e,t){return n.call(this,e,t)})});var c=W("Boolean decodeURI decodeURIComponent Date encodeURI encodeURIComponent Error escape EvalError isFinite isNaN Number Object parseFloat parseInt RangeError ReferenceError String SyntaxError TypeError unescape URIError");function A(e){return e&&e.aborts()}Ke.DEFMETHOD("is_expr_pure",function(e){if(e.option("unsafe")){var t=this.expression;if(j(t)&&c[t.name])return!0;if(t instanceof Qe&&j(t.expression)){var n=v[t.expression.name];return n&&n[t.property]}}return this.pure||!e.pure_funcs(this)}),ue.DEFMETHOD("is_call_pure",ie),Qe.DEFMETHOD("is_call_pure",function(e){if(e.option("unsafe")){var t,n=this.expression;return n instanceof it?t=g.Array:n.is_boolean(e)?t=g.Boolean:n.is_number(e)?t=g.Number:n instanceof _t?t=g.RegExp:n.is_string(e)?t=g.String:this.may_throw_on_access(e)||(t=g.Object),t&&t[this.property]}}),function(e){function t(e,t){for(var n=e.length;0<=--n;)if(e[n].has_side_effects(t))return!0;return!1}e(ue,Y),e(it,function(e){return t(this.elements,e)}),e(rt,Y),e(tt,function(e){return this.left.has_side_effects(e)||this.right.has_side_effects(e)}),e(de,function(e){return t(this.body,e)}),e(Ke,function(e){return!(this.is_expr_pure(e)||this.expression.is_call_pure(e)&&!this.expression.has_side_effects(e))||t(this.args,e)}),e(Pe,function(e){return this.expression.has_side_effects(e)||t(this.body,e)}),e(nt,function(e){return this.condition.has_side_effects(e)||this.consequent.has_side_effects(e)||this.alternative.has_side_effects(e)}),e(vt,ie),e(Ve,function(e){return t(this.definitions,e)}),e(Qe,function(e){return this.expression.may_throw_on_access(e)||this.expression.has_side_effects(e)}),e(me,ie),e(qe,function(e){return this.condition.has_side_effects(e)||this.body&&this.body.has_side_effects(e)||this.alternative&&this.alternative.has_side_effects(e)}),e(ge,function(e){return this.body.has_side_effects(e)}),e(Ce,ie),e(ot,function(e){return t(this.properties,e)}),e(at,function(e){return this.value.has_side_effects(e)}),e(Ze,function(e){return this.expression.may_throw_on_access(e)||this.expression.has_side_effects(e)||this.property.has_side_effects(e)}),e(Ye,function(e){return t(this.expressions,e)}),e(pe,function(e){return this.body.has_side_effects(e)}),e(Ue,function(e){return this.expression.has_side_effects(e)||t(this.body,e)}),e(lt,ie),e(mt,function(e){return!this.is_declared(e)}),e(gt,ie),e(ze,function(e){return t(this.body,e)||this.bcatch&&this.bcatch.has_side_effects(e)||this.bfinally&&this.bfinally.has_side_effects(e)}),e(Je,function(e){return s[this.operator]||this.expression.has_side_effects(e)}),e($e,function(e){return this.value})}(function(e,t){e.DEFMETHOD("has_side_effects",t)}),function(e){function t(e,t){for(var n=e.length;0<=--n;)if(e[n].may_throw(t))return!0;return!1}e(ue,Y),e(vt,ie),e(me,ie),e(Ce,ie),e(lt,ie),e(gt,ie),e(it,function(e){return t(this.elements,e)}),e(rt,function(e){return!!this.right.may_throw(e)||!(!e.has_directive("use strict")&&"="==this.operator&&this.left instanceof mt)&&this.left.may_throw(e)}),e(tt,function(e){return this.left.may_throw(e)||this.right.may_throw(e)}),e(de,function(e){return t(this.body,e)}),e(Ke,function(e){return!!t(this.args,e)||!this.is_expr_pure(e)&&(!!this.expression.may_throw(e)||(!(this.expression instanceof Ce)||t(this.expression.body,e)))}),e(Pe,function(e){return this.expression.may_throw(e)||t(this.body,e)}),e(nt,function(e){return this.condition.may_throw(e)||this.consequent.may_throw(e)||this.alternative.may_throw(e)}),e(Ve,function(e){return t(this.definitions,e)}),e(Qe,function(e){return this.expression.may_throw_on_access(e)||this.expression.may_throw(e)}),e(qe,function(e){return this.condition.may_throw(e)||this.body&&this.body.may_throw(e)||this.alternative&&this.alternative.may_throw(e)}),e(ge,function(e){return this.body.may_throw(e)}),e(ot,function(e){return t(this.properties,e)}),e(at,function(e){return this.value.may_throw(e)}),e(Be,function(e){return this.value&&this.value.may_throw(e)}),e(Ye,function(e){return t(this.expressions,e)}),e(pe,function(e){return this.body.may_throw(e)}),e(Ze,function(e){return this.expression.may_throw_on_access(e)||this.expression.may_throw(e)||this.property.may_throw(e)}),e(Ue,function(e){return this.expression.may_throw(e)||t(this.body,e)}),e(mt,function(e){return!this.is_declared(e)}),e(ze,function(e){return this.bcatch?this.bcatch.may_throw(e):t(this.body,e)||this.bfinally&&this.bfinally.may_throw(e)}),e(Je,function(e){return!("typeof"==this.operator&&this.expression instanceof mt)&&this.expression.may_throw(e)}),e($e,function(e){return!!this.value&&this.value.may_throw(e)})}(function(e,t){e.DEFMETHOD("may_throw",t)}),function(e){function t(e){for(var t=e.length;0<=--t;)if(!e[t].is_constant_expression())return!1;return!0}e(ue,ie),e(vt,Y),e(Ce,function(r){var i=this,o=!0;return i.walk(new Dt(function(e){if(!o)return!0;if(e instanceof mt){if(i.inlined)return!(o=!1);var t=e.definition();if(re(t,i.enclosed)&&!i.variables.has(t.name)){if(r){var n=r.find_variable(e);if(t.undeclared?!n:n===t)return o="f",!0}o=!1}return!0}})),o}),e(Je,function(){return this.expression.is_constant_expression()}),e(tt,function(){return this.left.is_constant_expression()&&this.right.is_constant_expression()}),e(it,function(){return t(this.elements)}),e(ot,function(){return t(this.properties)}),e(at,function(){return this.value.is_constant_expression()})}(function(e,t){e.DEFMETHOD("is_constant_expression",t)}),function(e){function t(){var e=this.body.length;return 0<e&&A(this.body[e-1])}e(le,T),e(U,D),e(he,t),e(Me,t),e(qe,function(){return this.alternative&&A(this.body)&&A(this.alternative)&&this})}(function(e,t){e.DEFMETHOD("aborts",t)});var f=W(["use asm","use strict"]);function x(t,e){var n=!1,r=new Dt(function(e){return!!(n||e instanceof xe)||(e instanceof Re&&r.loopcontrol_target(e)===t?n=!0:void 0)});return e instanceof ge&&r.push(e),r.push(t),t.body.walk(r),n}e(fe,function(e,t){return!t.option("directives")||f[e.value]&&t.has_directive(e.value)===e?e:J(me,e)}),e(ce,function(e,t){return t.option("drop_debugger")?J(me,e):e}),e(ge,function(e,t){return e.body instanceof Le&&t.loopcontrol_target(e.body)===e.body?J(me,e):0==e.label.references.length?e.body:e}),e(de,function(e,t){return i(e.body,t),e}),e(he,function(e,t){switch(i(e.body,t),e.body.length){case 1:return e.body[0];case 0:return J(me,e)}return e}),e(Ce,function(e,t){return i(e.body,t),t.option("side_effects")&&1==e.body.length&&e.body[0]===t.has_directive("use strict")&&(e.body.length=0),e}),xe.DEFMETHOD("drop_unused",function(y){if(y.option("unused")&&!y.has_directive("use asm")){var _=this;if(!_.pinned()){var w=!(_ instanceof ke)||y.toplevel.funcs,E=!(_ instanceof ke)||y.toplevel.vars,A=/keep_assign/.test(y.option("unused"))?ie:function(e,t){var n;if(e instanceof rt&&(e.write_only||"="==e.operator)?n=e.left:e instanceof Je&&e.write_only&&(n=e.expression),!/strict/.test(y.option("pure_getters")))return n instanceof mt&&n;for(;n instanceof We&&!n.expression.may_throw_on_access(y);)n instanceof Ze&&t.unshift(n.property),n=n.expression;return n instanceof mt&&ae(n.definition().orig,function(e){return!(e instanceof dt)})&&n},s=[],x=Object.create(null),k=Object.create(null),u=Object.create(null),l=Object.create(null);_ instanceof ke&&y.top_retain&&_.variables.each(function(e){!y.top_retain(e)||e.id in x||(x[e.id]=!0,s.push(e))});var C=new L,r=new L,O=this,c=new Dt(function(e,t){if(e instanceof Ce&&e.uses_arguments&&!c.has_directive("use strict")&&e.argnames.forEach(function(e){var t=e.definition();t.id in x||(x[t.id]=!0,s.push(t))}),e!==_){if(e instanceof De){var n=e.name.definition();return w||O!==_||n.id in x||(x[n.id]=!0,s.push(n)),r.add(n.id,e),!0}return e instanceof ft&&O===_&&C.add(e.definition().id,e),e instanceof Ve&&O===_?(e.definitions.forEach(function(e){var t=e.name.definition();e.name instanceof ct&&C.add(t.id,e),E||t.id in x||(x[t.id]=!0,s.push(t)),e.value&&(r.add(t.id,e.value),e.value.has_side_effects(y)&&e.value.walk(c),t.chained||e.name.fixed_value()!==e.value||(k[t.id]=e))}),!0):i(e,t)}});_.walk(c),c=new Dt(i);for(var e=0;e<s.length;e++){var t=r.get(s[e].id);t&&t.forEach(function(e){e.walk(c)})}var S=y.option("keep_fnames")?ie:y.option("ie8")?function(e){return!y.exposed(e)&&!e.references.length}:function(e){return!(e.id in x)||1<e.orig.length},D=new Wt(function(a,e,t){var n=D.parent();if(E){var r=[];if(c=A(a,r)){var i=(f=c.definition()).id in x,o=null;if(a instanceof rt?(!i||a.left===c&&f.id in k&&k[f.id]!==a)&&(o=a.right):i||(o=J(yt,a,{value:0})),o)return r.push(o),X(y,n,a,M(a,r.map(function(e){return e.transform(D)})))}}if(O===_){if(a instanceof Se&&a.name&&S(a.name.definition())&&(a.name=null),a instanceof Ce&&!(a instanceof Oe))for(var s=!y.option("keep_fargs"),u=a.argnames,l=u.length;0<=--l;){var c;(c=u[l]).definition().id in x?s=!1:(c.__unused=!0,s&&(u.pop(),y[c.unreferenced()?"warn":"info"]("Dropping unused function argument {name} [{file}:{line},{col}]",b(c))))}var f;if(w&&a instanceof De&&a!==_)if(!((f=a.name.definition()).id in x))return y[a.name.unreferenced()?"warn":"info"]("Dropping unused function {name} [{file}:{line},{col}]",b(a.name)),f.eliminated++,J(me,a);if(a instanceof Ve&&!(n instanceof Ee&&n.init===a)){var p=[],d=[],h=[],m=[];switch(a.definitions.forEach(function(e){e.value&&(e.value=e.value.transform(D));var t=e.name.definition();if(!E||t.id in x){if(e.value&&t.id in k&&k[t.id]!==e&&(e.value=e.value.drop_side_effect_free(y)),e.name instanceof ct){var n=C.get(t.id);if(1<n.length&&(!e.value||t.orig.indexOf(e.name)>t.eliminated)){if(y.warn("Dropping duplicated definition of variable {name} [{file}:{line},{col}]",b(e.name)),e.value){var r=J(mt,e.name,e.name);t.references.push(r);var i=J(rt,e,{operator:"=",left:r,right:e.value});k[t.id]===e&&(k[t.id]=i),m.push(i.transform(D))}return R(n,e),void t.eliminated++}}e.value?(0<m.length&&(0<h.length?(m.push(e.value),e.value=M(e.value,m)):p.push(J(pe,a,{body:M(a,m)})),m=[]),h.push(e)):d.push(e)}else if(t.orig[0]instanceof ht){(o=e.value&&e.value.drop_side_effect_free(y))&&m.push(o),e.value=null,d.push(e)}else{var o;(o=e.value&&e.value.drop_side_effect_free(y))?(y.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]",b(e.name)),m.push(o)):y[e.name.unreferenced()?"warn":"info"]("Dropping unused variable {name} [{file}:{line},{col}]",b(e.name)),t.eliminated++}}),(0<d.length||0<h.length)&&(a.definitions=d.concat(h),p.push(a)),0<m.length&&p.push(J(pe,a,{body:M(a,m)})),p.length){case 0:return t?oe.skip:J(me,a);case 1:return p[0];default:return t?oe.splice(p):J(he,a,{body:p})}}if(a instanceof we)return e(a,this),a.init instanceof he&&(g=a.init,a.init=g.body.pop(),g.body.push(a)),a.init instanceof pe?a.init=a.init.body:P(a.init)&&(a.init=null),g?t?oe.splice(g.body):g:a;if(a instanceof ge&&a.body instanceof we){if(e(a,this),a.body instanceof he){var g=a.body;return a.body=g.body.pop(),g.body.push(a),t?oe.splice(g.body):g}return a}if(a instanceof xe){var v=O;return e(O=a,this),O=v,a}}function b(e){return{name:e.name,file:e.start.file,line:e.start.line,col:e.start.col}}});_.transform(D)}}function f(e,t,n){e.id in x||(t&&n?(x[e.id]=!0,s.push(e)):(u[e.id]=t,l[e.id]=n))}function i(e,t){var n,r=[],i=A(e,r);if(i&&_.variables.get(i.name)===(n=i.definition())){if(r.forEach(function(e){e.walk(c)}),e instanceof rt)if(e.right.walk(c),e.left===i)n.chained||i.fixed_value()!==e.right||(k[n.id]=e),e.write_only||f(n,!0,l[n.id]);else{var o=i.fixed_value();o&&o.is_constant()||f(n,u[n.id],!0)}return!0}if(e instanceof mt)return(n=e.definition()).id in x||(x[n.id]=!0,s.push(n)),!0;if(e instanceof xe){var a=O;return O=e,t(),O=a,!0}}}),xe.DEFMETHOD("hoist_declarations",function(i){if(!i.has_directive("use asm")){var o=i.option("hoist_funs"),a=i.option("hoist_vars"),s=this;if(a){var t=0;s.walk(new Dt(function(e){return 1<t||(e instanceof xe&&e!==s||(e instanceof He?(t++,!0):void 0))})),t<=1&&(a=!1)}if(o||a){var u=[],l=[],c=new L,f=0,p=new Wt(function(e){if(e!==s){if(e instanceof fe)return u.push(e),J(me,e);if(o&&e instanceof De&&(p.parent()===s||!i.has_directive("use strict")))return l.push(e),J(me,e);if(a&&e instanceof He){e.definitions.forEach(function(e){c.set(e.name.name,e),++f});var t=e.to_assignments(i),n=p.parent();if(n instanceof Ee&&n.init===e){if(t)return t;var r=e.definitions[0].name;return J(mt,r,r)}return n instanceof we&&n.init===e?t:t?J(pe,e,{body:t}):J(me,e)}return e instanceof xe?e:void 0}});if(s.transform(p),0<f){var n=[];if(c.each(function(e,t){s instanceof Ce&&!ae(s.argnames,function(e){return e.name!=t})?c.del(t):((e=e.clone()).value=null,n.push(e),c.set(t,e))}),0<n.length){for(var e=0;e<s.body.length;){if(s.body[e]instanceof pe){var r,d,h=s.body[e].body;if(h instanceof rt&&"="==h.operator&&(r=h.left)instanceof ut&&c.has(r.name)){if((m=c.get(r.name)).value)break;m.value=h.right,R(n,m),n.push(m),s.body.splice(e,1);continue}if(h instanceof Ye&&(d=h.expressions[0])instanceof rt&&"="==d.operator&&(r=d.left)instanceof ut&&c.has(r.name)){var m;if((m=c.get(r.name)).value)break;m.value=d.right,R(n,m),n.push(m),s.body[e].body=M(h,h.expressions.slice(1));continue}}if(s.body[e]instanceof me)s.body.splice(e,1);else{if(!(s.body[e]instanceof he))break;var g=[e,1].concat(s.body[e].body);s.body.splice.apply(s.body,g)}}n=J(He,s,{definitions:n}),l.push(n)}}s.body=u.concat(l,s.body)}}}),xe.DEFMETHOD("var_names",function(){var n=this._var_names;return n||(this._var_names=n=Object.create(null),this.enclosed.forEach(function(e){n[e.name]=!0}),this.variables.each(function(e,t){n[t]=!0})),n}),xe.DEFMETHOD("make_var_name",function(e){for(var t=this.var_names(),n=e=e.replace(/(?:^[^a-z_$]|[^a-z0-9_$])/gi,"_"),r=0;t[n];r++)n=e+"$"+r;return t[n]=!0,n}),xe.DEFMETHOD("hoist_properties",function(e){if(e.option("hoist_props")&&!e.has_directive("use asm")){var c=this,f=c instanceof ke&&e.top_retain||ie,p=Object.create(null);c.transform(new Wt(function(r,e){if(r instanceof rt&&"="==r.operator&&r.write_only&&u(r.left,r.right,1)){e(r,this);var i=new L,o=[],a=[];return r.right.properties.forEach(function(e){var t=l(r.left,e.key);a.push(J($e,r,{name:t,value:null}));var n=J(mt,r,{name:t.name,scope:c,thedef:t.definition()});n.reference({}),o.push(J(rt,r,{operator:"=",left:n,right:e.value}))}),p[r.left.definition().id]=i,c.body.splice(c.body.indexOf(this.stack[1])+1,0,J(He,r,{definitions:a})),M(r,o)}if(r instanceof $e&&u(r.name,r.value,0)){e(r,this);i=new L;var t=[];return r.value.properties.forEach(function(e){t.push(J($e,r,{name:l(r.name,e.key),value:e.value}))}),p[r.name.definition().id]=i,oe.splice(t)}if(r instanceof We&&r.expression instanceof mt&&(i=p[r.expression.definition().id])){var n=i.get(h(r.property)),s=J(mt,r,{name:n.name,scope:r.expression.scope,thedef:n});return s.reference({}),s}function u(e,t,n){if(e.scope===c){var r=e.definition();if(r.assignments==n&&!r.direct_access&&1!=r.escaped&&r.references.length!=n&&!r.single_use&&!f(r)&&e.fixed_value()===t)return t instanceof ot}}function l(e,t){var n=J(ct,e,{name:c.make_var_name(e.name+"_"+t),scope:c}),r=c.def_variable(n);return i.set(t,r),c.enclosed.push(r),n}}))}}),function(e){function a(e,t,n){var r=e.length;if(!r)return null;for(var i=[],o=!1,a=0;a<r;a++){var s=e[a].drop_side_effect_free(t,n);o|=s!==e[a],s&&(i.push(s),n=!1)}return o?i.length?i:null:e}e(ue,D),e(Oe,T),e(it,function(e,t){var n=a(this.elements,e,t);return n&&M(this,n)}),e(rt,function(e){var t=this.left;return t.has_side_effects(e)||e.has_directive("use strict")&&t instanceof We&&t.expression.is_constant()?this:(this.write_only=!0,ee(t).is_constant_expression(e.find_parent(xe))?this.right.drop_side_effect_free(e):this)}),e(tt,function(e,t){var n=this.right.drop_side_effect_free(e);if(!n)return this.left.drop_side_effect_free(e,t);if(te[this.operator]){if(n===this.right)return this;var r=this.clone();return r.right=n,r}var i=this.left.drop_side_effect_free(e,t);return i?M(this,[i,n]):this.right.drop_side_effect_free(e,t)}),e(Ke,function(t,e){if(!this.is_expr_pure(t)){if(this.expression.is_call_pure(t)){var n=this.args.slice();return n.unshift(this.expression.expression),(n=a(n,t,e))&&M(this,n)}if(!(this.expression instanceof Se)||this.expression.name&&this.expression.name.definition().references.length)return this;var r=this.clone(),i=r.expression;return i.process_expression(!1,t),i.walk(new Dt(function(e){return e instanceof Be&&e.value?(e.value=e.value.drop_side_effect_free(t),!0):e instanceof xe&&e!==i||void 0})),r}this.pure&&t.warn("Dropping __PURE__ call [{file}:{line},{col}]",this.start);var o=a(this.args,t,e);return o&&M(this,o)}),e(nt,function(e){var t=this.consequent.drop_side_effect_free(e),n=this.alternative.drop_side_effect_free(e);if(t===this.consequent&&n===this.alternative)return this;if(!t)return n?J(tt,this,{operator:"||",left:this.condition,right:n}):this.condition.drop_side_effect_free(e);if(!n)return J(tt,this,{operator:"&&",left:this.condition,right:t});var r=this.clone();return r.consequent=t,r.alternative=n,r}),e(vt,T),e(Qe,function(e,t){return this.expression.may_throw_on_access(e)?this:this.expression.drop_side_effect_free(e,t)}),e(Se,function(e){return this.name&&e.option("ie8")?this:null}),e(Je,function(e,t){if(s[this.operator])return this.write_only=!this.expression.has_side_effects(e),this;if("typeof"==this.operator&&this.expression instanceof mt)return null;var n=this.expression.drop_side_effect_free(e,t);return t&&n&&z(n)?n===this.expression&&"!"==this.operator?this:n.negate(e,t):n}),e(ot,function(e,t){var n=a(this.properties,e,t);return n&&M(this,n)}),e(at,function(e,t){return this.value.drop_side_effect_free(e,t)}),e(Ye,function(e){var t=this.tail_node(),n=t.drop_side_effect_free(e);if(n===t)return this;var r=this.expressions.slice(0,-1);return n&&r.push(n),M(this,r)}),e(Ze,function(e,t){if(this.expression.may_throw_on_access(e))return this;var n=this.expression.drop_side_effect_free(e,t);if(!n)return this.property.drop_side_effect_free(e,t);var r=this.property.drop_side_effect_free(e);return r?M(this,[n,r]):n}),e(mt,function(e){return this.is_declared(e)?null:this}),e(gt,T)}(function(e,t){e.DEFMETHOD("drop_side_effect_free",t)}),e(pe,function(e,t){if(t.option("side_effects")){var n=e.body,r=n.drop_side_effect_free(t,!0);if(!r)return t.warn("Dropping side-effect-free statement [{file}:{line},{col}]",e.start),J(me,e);if(r!==n)return J(pe,e,{body:r})}return e}),e(_e,function(e,t){return t.option("loops")?J(we,e,e).optimize(t):e}),e(ye,function(e,t){if(!t.option("loops"))return e;var n=e.condition.is_truthy()||e.condition.tail_node().evaluate(t);if(!(n instanceof ue)){if(n)return J(we,e,{body:J(he,e.body,{body:[e.body,J(pe,e.condition,{body:e.condition})]})}).optimize(t);if(!x(e,t.parent()))return J(he,e.body,{body:[e.body,J(pe,e.condition,{body:e.condition})]}).optimize(t)}return e.body instanceof pe?J(we,e,{condition:M(e.condition,[e.body.body,e.condition]),body:J(me,e)}).optimize(t):e}),e(we,function(e,t){if(!t.option("loops"))return e;if(t.option("side_effects")&&e.init&&(e.init=e.init.drop_side_effect_free(t)),e.condition){var n=e.condition.evaluate(t);if(!(n instanceof ue))if(n)e.condition=null;else if(!t.option("dead_code")){var r=e.condition;e.condition=N(n,e.condition),e.condition=y(e.condition.transform(t),r)}if(n instanceof ue&&(n=e.condition.is_truthy()||e.condition.tail_node().evaluate(t)),n)!e.condition||n instanceof ue||(e.body=J(he,e.body,{body:[J(pe,e.condition,{body:e.condition}),e.body]}),e.condition=null);else if(t.option("dead_code")){var i=[];return E(t,e.body,i),e.init instanceof le?i.push(e.init):e.init&&i.push(J(pe,e.init,{body:e.init})),i.push(J(pe,e.condition,{body:e.condition})),J(he,e,{body:i}).optimize(t)}}return function t(n,r){var e=n.body instanceof he?n.body.body[0]:n.body;if(r.option("dead_code")&&o(e)){var i=[];return n.init instanceof le?i.push(n.init):n.init&&i.push(J(pe,n.init,{body:n.init})),n.condition&&i.push(J(pe,n.condition,{body:n.condition})),E(r,n.body,i),J(he,n,{body:i})}return e instanceof qe&&(o(e.body)?(n.condition?n.condition=J(tt,n.condition,{left:n.condition,operator:"&&",right:e.condition.negate(r)}):n.condition=e.condition.negate(r),a(e.alternative)):o(e.alternative)&&(n.condition?n.condition=J(tt,n.condition,{left:n.condition,operator:"&&",right:e.condition}):n.condition=e.condition,a(e.body))),n;function o(e){return e instanceof Le&&r.loopcontrol_target(e)===r.self()}function a(e){e=_(e),n.body instanceof he?(n.body=n.body.clone(),n.body.body=e.concat(n.body.body.slice(1)),n.body=n.body.transform(r)):n.body=J(he,n.body,{body:e}).transform(r),n=t(n,r)}}(e,t)}),e(qe,function(e,t){if(P(e.alternative)&&(e.alternative=null),!t.option("conditionals"))return e;var n=e.condition.evaluate(t);if(!(t.option("dead_code")||n instanceof ue)){var r=e.condition;e.condition=N(n,r),e.condition=y(e.condition.transform(t),r)}if(t.option("dead_code")){if(n instanceof ue&&(n=e.condition.is_truthy()||e.condition.tail_node().evaluate(t)),!n){t.warn("Condition always false [{file}:{line},{col}]",e.condition.start);var i=[];return E(t,e.body,i),i.push(J(pe,e.condition,{body:e.condition})),e.alternative&&i.push(e.alternative),J(he,e,{body:i}).optimize(t)}if(!(n instanceof ue)){t.warn("Condition always true [{file}:{line},{col}]",e.condition.start);i=[];return e.alternative&&E(t,e.alternative,i),i.push(J(pe,e.condition,{body:e.condition})),i.push(e.body),J(he,e,{body:i}).optimize(t)}}var o=e.condition.negate(t),a=e.condition.print_to_string().length,s=o.print_to_string().length,u=s<a;if(e.alternative&&u){u=!1,e.condition=o;var l=e.body;e.body=e.alternative||J(me,e),e.alternative=l}if(P(e.body)&&P(e.alternative))return J(pe,e.condition,{body:e.condition.clone()}).optimize(t);if(e.body instanceof pe&&e.alternative instanceof pe)return J(pe,e,{body:J(nt,e,{condition:e.condition,consequent:e.body.body,alternative:e.alternative.body})}).optimize(t);if(P(e.alternative)&&e.body instanceof pe)return a===s&&!u&&e.condition instanceof tt&&"||"==e.condition.operator&&(u=!0),u?J(pe,e,{body:J(tt,e,{operator:"||",left:o,right:e.body.body})}).optimize(t):J(pe,e,{body:J(tt,e,{operator:"&&",left:e.condition,right:e.body.body})}).optimize(t);if(e.body instanceof me&&e.alternative instanceof pe)return J(pe,e,{body:J(tt,e,{operator:"||",left:e.condition,right:e.alternative.body})}).optimize(t);if(e.body instanceof Te&&e.alternative instanceof Te&&e.body.TYPE==e.alternative.TYPE)return J(e.body.CTOR,e,{value:J(nt,e,{condition:e.condition,consequent:e.body.value||J(At,e.body),alternative:e.alternative.value||J(At,e.alternative)}).transform(t)}).optimize(t);if(e.body instanceof qe&&!e.body.alternative&&!e.alternative&&(e=J(qe,e,{condition:J(tt,e.condition,{operator:"&&",left:e.condition,right:e.body.condition}),body:e.body.body,alternative:null})),A(e.body)&&e.alternative){var c=e.alternative;return e.alternative=null,J(he,e,{body:[e,c]}).optimize(t)}if(A(e.alternative)){i=e.body;return e.body=e.alternative,e.condition=u?o:e.condition.negate(t),e.alternative=null,J(he,e,{body:[e,i]}).optimize(t)}return e}),e(Ue,function(t,n){if(!n.option("switches"))return t;var e,r=t.expression.evaluate(n);if(!(r instanceof ue)){var i=t.expression;t.expression=N(r,i),t.expression=y(t.expression.transform(n),i)}if(!n.option("dead_code"))return t;r instanceof ue&&(r=t.expression.tail_node().evaluate(n));for(var o,a,s=[],u=[],l=0,c=t.body.length;l<c&&!a;l++){if((e=t.body[l])instanceof Ne)o?b(e,u[u.length-1]):o=e;else if(!(r instanceof ue)){if(!((g=e.expression.evaluate(n))instanceof ue)&&g!==r){b(e,u[u.length-1]);continue}if(g instanceof ue&&(g=e.expression.tail_node().evaluate(n)),g===r&&(a=e,o)){var f=u.indexOf(o);u.splice(f,1),b(o,u[f-1]),o=null}}if(A(e)){var p=u[u.length-1];A(p)&&p.body.length==e.body.length&&J(he,p,p).equivalent_to(J(he,e,e))&&(p.body=[])}u.push(e)}for(;l<c;)b(t.body[l++],u[u.length-1]);for(0<u.length&&(u[0].body=s.concat(u[0].body)),t.body=u;e=u[u.length-1];){var d=e.body[e.body.length-1];if(d instanceof Le&&n.loopcontrol_target(d)===t&&e.body.pop(),e.body.length||e instanceof Pe&&(o||e.expression.has_side_effects(n)))break;u.pop()===o&&(o=null)}if(0==u.length)return J(he,t,{body:s.concat(J(pe,t.expression,{body:t.expression}))}).optimize(n);if(1==u.length&&(u[0]===a||u[0]===o)){var h=!1,m=new Dt(function(e){if(h||e instanceof Ce||e instanceof pe)return!0;e instanceof Le&&m.loopcontrol_target(e)===t&&(h=!0)});if(t.walk(m),!h){var g,v=u[0].body.slice();return(g=u[0].expression)&&v.unshift(J(pe,g,{body:g})),v.unshift(J(pe,t.expression,{body:t.expression})),J(he,t,{body:v}).optimize(n)}}return t;function b(e,t){t&&!A(t)?t.body=t.body.concat(e.body):E(n,e,s)}}),e(ze,function(e,t){if(i(e.body,t),e.bcatch&&e.bfinally&&ae(e.bfinally.body,P)&&(e.bfinally=null),t.option("dead_code")&&ae(e.body,P)){var n=[];return e.bcatch&&(E(t,e.bcatch,n),n.forEach(function(e){e instanceof Ve&&e.definitions.forEach(function(e){var t=e.name.definition().redefined();t&&(e.name=e.name.clone(),e.name.thedef=t)})})),e.bfinally&&(n=n.concat(e.bfinally.body)),J(he,e,{body:n}).optimize(t)}return e}),Ve.DEFMETHOD("remove_initializers",function(){this.definitions.forEach(function(e){e.value=null})}),Ve.DEFMETHOD("to_assignments",function(e){var r=e.option("reduce_vars"),t=this.definitions.reduce(function(e,t){if(t.value){var n=J(mt,t.name,t.name);e.push(J(rt,t,{operator:"=",left:n,right:t.value})),r&&(n.definition().fixed=!1)}return(t=t.name.definition()).eliminated++,t.replaced--,e},[]);return 0==t.length?null:M(this,t)}),e(Ve,function(e,t){return 0==e.definitions.length?J(me,e):e}),Ke.DEFMETHOD("lift_sequences",function(e){if(!e.option("sequences"))return this;var t=this.expression;if(!(t instanceof Ye))return this;var n=t.tail_node();if(a(e,n)&&!(this instanceof Ge))return this;var r=t.expressions.slice(0,-1),i=this.clone();return i.expression=n,r.push(i),M(this,r).optimize(e)}),e(Ke,function(s,i){var e=s.lift_sequences(i);if(e!==s)return e;var t=s.expression,d=t;i.option("reduce_vars")&&d instanceof mt&&(d=d.fixed_value());var n=d instanceof Ce;if(i.option("unused")&&n&&!d.uses_arguments&&!d.pinned()){for(var r=0,o=0,a=0,u=s.args.length;a<u;a++){var l=a>=d.argnames.length;if(l||d.argnames[a].__unused){if(h=s.args[a].drop_side_effect_free(i))s.args[r++]=h;else if(!l){s.args[r++]=J(yt,s.args[a],{value:0});continue}}else s.args[r++]=s.args[a];o=r}s.args.length=o}if(i.option("unsafe"))if(j(t))switch(t.name){case"Array":if(1!=s.args.length)return J(it,s,{elements:s.args}).optimize(i);break;case"Object":if(0==s.args.length)return J(ot,s,{properties:[]});break;case"String":if(0==s.args.length)return J(bt,s,{value:""});if(s.args.length<=1)return J(tt,s,{left:s.args[0],operator:"+",right:J(bt,s,{value:""})}).optimize(i);break;case"Number":if(0==s.args.length)return J(yt,s,{value:0});if(1==s.args.length)return J(Xe,s,{expression:s.args[0],operator:"+"}).optimize(i);case"Boolean":if(0==s.args.length)return J(Ot,s);if(1==s.args.length)return J(Xe,s,{expression:J(Xe,s,{expression:s.args[0],operator:"!"}),operator:"!"}).optimize(i);break;case"RegExp":var c=[];if(ae(s.args,function(e){var t=e.evaluate(i);return c.unshift(t),e!==t}))try{return V(i,s,J(_t,s,{value:RegExp.apply(RegExp,c)}))}catch(e){i.warn("Error converting {expr} [{file}:{line},{col}]",{expr:s.print_to_string(),file:s.start.file,line:s.start.line,col:s.start.col})}}else if(t instanceof Qe)switch(t.property){case"toString":if(0==s.args.length&&!t.expression.may_throw_on_access(i))return J(tt,s,{left:J(bt,s,{value:""}),operator:"+",right:t.expression}).optimize(i);break;case"join":var f;if(t.expression instanceof it)if(!(0<s.args.length&&(f=s.args[0].evaluate(i))===s.args[0])){var p,h,m=[],g=[];return t.expression.elements.forEach(function(e){var t=e.evaluate(i);t!==e?g.push(t):(0<g.length&&(m.push(J(bt,s,{value:g.join(f)})),g.length=0),m.push(e))}),0<g.length&&m.push(J(bt,s,{value:g.join(f)})),0==m.length?J(bt,s,{value:""}):1==m.length?m[0].is_string(i)?m[0]:J(tt,m[0],{operator:"+",left:J(bt,s,{value:""}),right:m[0]}):""==f?(p=m[0].is_string(i)||m[1].is_string(i)?m.shift():J(bt,s,{value:""}),m.reduce(function(e,t){return J(tt,t,{operator:"+",left:e,right:t})},p).optimize(i)):((h=s.clone()).expression=h.expression.clone(),h.expression.expression=h.expression.expression.clone(),h.expression.expression.elements=m,V(i,s,h))}break;case"charAt":if(t.expression.is_string(i)){var v=s.args[0],b=v?v.evaluate(i):0;if(b!==v)return J(Ze,t,{expression:t.expression,property:N(0|b,v||t)}).optimize(i)}break;case"apply":if(2==s.args.length&&s.args[1]instanceof it)return(O=s.args[1].elements.slice()).unshift(s.args[0]),J(Ke,s,{expression:J(Qe,t,{expression:t.expression,property:"call"}),args:O}).optimize(i);break;case"call":var y=t.expression;if(y instanceof mt&&(y=y.fixed_value()),y instanceof Ce&&!y.contains_this())return(s.args.length?M(this,[s.args[0],J(Ke,s,{expression:t.expression,args:s.args.slice(1)})]):J(Ke,s,{expression:t.expression,args:[]})).optimize(i)}if(i.option("unsafe_Function")&&j(t)&&"Function"==t.name){if(0==s.args.length)return J(Se,s,{argnames:[],body:[]});if(ae(s.args,function(e){return e instanceof bt}))try{var _=Yt(x="n(function("+s.args.slice(0,-1).map(function(e){return e.value}).join(",")+"){"+s.args[s.args.length-1].value+"})"),w={ie8:i.option("ie8")};_.figure_out_scope(w);var E,A=new Xt(i.options);(_=_.transform(A)).figure_out_scope(w),_.compute_char_frequency(w),_.mangle_names(w),_.walk(new Dt(function(e){return!!E||(e instanceof Ce?(E=e,!0):void 0)}));var x=Jt();return he.prototype._codegen.call(E,E,x),s.args=[J(bt,s,{value:E.argnames.map(function(e){return e.print_to_string()}).join(",")}),J(bt,s.args[s.args.length-1],{value:x.get().replace(/^\{|\}$/g,"")})],s}catch(e){if(!(e instanceof Nt))throw e;i.warn("Error parsing code passed to new Function [{file}:{line},{col}]",s.args[s.args.length-1].start),i.warn(e.toString())}}var k=n&&d.body[0],C=i.option("inline")&&!s.is_expr_pure(i);if(C&&k instanceof Be&&(!(D=k.value)||D.is_constant_expression())){D=D?D.clone(!0):J(At,s);var O=s.args.concat(D);return M(s,O).optimize(i)}if(n){var S,D,T,B,R=-1;if(C&&!d.uses_arguments&&!d.pinned()&&!(d.name&&d instanceof Se)&&(D=function(e){var t=d.body.length;if(i.option("inline")<3)return 1==t&&q(e);e=null;for(var n=0;n<t;n++){var r=d.body[n];if(r instanceof He){if(e&&!ae(r.definitions,function(e){return!e.value}))return!1}else{if(r instanceof me)continue;if(e)return!1;e=r}}return q(e)}(k))&&(t===d||i.option("unused")&&1==(S=t.definition()).references.length&&!H(i,S)&&d.is_constant_expression(t.scope))&&!s.pure&&!d.contains_this()&&function(){var e=Object.create(null);do{if((T=i.parent(++R))instanceof je)e[T.argname.name]=!0;else if(T instanceof ve)B=[];else if(T instanceof mt&&T.fixed_value()instanceof xe)return!1}while(!(T instanceof xe));var t=!(T instanceof ke)||i.toplevel.vars,n=i.option("inline");return!(!function(e,t){for(var n=d.body.length,r=0;r<n;r++){var i=d.body[r];if(i instanceof He){if(!t)return!1;for(var o=i.definitions.length;0<=--o;){var a=i.definitions[o].name;if(e[a.name]||I[a.name]||T.var_names()[a.name])return!1;B&&B.push(a.definition())}}}return!0}(e,3<=n&&t)||!function(e,t){for(var n=0,r=d.argnames.length;n<r;n++){var i=d.argnames[n];if(!i.__unused){if(!t||e[i.name]||I[i.name]||T.var_names()[i.name])return!1;B&&B.push(i.definition())}}return!0}(e,2<=n&&t)||B&&0!=B.length&&$(d,B))}())return d._squeezed=!0,M(s,function(){var e=[],t=[];(function(e,t){for(var n=d.argnames.length,r=s.args.length;--r>=n;)t.push(s.args[r]);for(r=n;0<=--r;){var i=d.argnames[r],o=s.args[r];if(i.__unused||T.var_names()[i.name])o&&t.push(o);else{var a=J(ct,i,i);i.definition().orig.push(a),!o&&B&&(o=J(At,s)),U(e,t,a,o)}}e.reverse(),t.reverse()})(e,t),function(e,t){for(var n=t.length,r=0,i=d.body.length;r<i;r++){var o=d.body[r];if(o instanceof He)for(var a=0,s=o.definitions.length;a<s;a++){var u=o.definitions[a],l=u.name,c=l.definition().redefined();if(c&&((l=l.clone()).thedef=c),U(e,t,l,u.value),B&&ae(d.argnames,function(e){return e.name!=l.name})){var f=d.variables.get(l.name),p=J(mt,l,l);f.references.push(p),t.splice(n++,0,J(rt,u,{operator:"=",left:p,right:J(At,l)}))}}}}(e,t),t.push(D),e.length&&(a=T.body.indexOf(i.parent(R-1))+1,T.body.splice(a,0,J(He,d,{definitions:e})));return t}()).optimize(i);if(i.option("side_effects")&&ae(d.body,P)){O=s.args.concat(J(At,s));return M(s,O).optimize(i)}}if(i.option("drop_console")&&t instanceof We){for(var L=t.expression;L.expression;)L=L.expression;if(j(L)&&"console"==L.name)return J(At,s).optimize(i)}if(i.option("negate_iife")&&i.parent()instanceof pe&&z(s))return s.negate(i,!0);var F=s.evaluate(i);return F!==s?(F=N(F,s).optimize(i),V(i,F,s)):s;function q(e){return e?e instanceof Be?e.value?e.value.clone(!0):J(At,s):e instanceof pe?J(Xe,e,{operator:"void",expression:e.body.clone(!0)}):void 0:J(At,s)}function U(e,t,n,r){var i=n.definition();T.variables.set(n.name,i),T.enclosed.push(i),T.var_names()[n.name]||(T.var_names()[n.name]=!0,e.push(J($e,n,{name:n,value:null})));var o=J(mt,n,n);i.references.push(o),r&&t.push(J(rt,s,{operator:"=",left:o,right:r}))}}),e(Ge,function(e,t){var n=e.lift_sequences(t);if(n!==e)return n;if(t.option("unsafe")){var r=e.expression;if(j(r))switch(r.name){case"Object":case"RegExp":case"Function":case"Error":case"Array":return J(Ke,e,e).transform(t)}}return e}),e(Ye,function(e,n){if(!n.option("side_effects"))return e;var r,i,o=[];r=F(n),i=e.expressions.length-1,e.expressions.forEach(function(e,t){t<i&&(e=e.drop_side_effect_free(n,r)),e&&(d(o,e),r=!1)});var t=o.length-1;return function(){for(;0<t&&b(o[t],n);)t--;t<o.length-1&&(o[t]=J(Xe,e,{operator:"void",expression:o[t]}),o.length=t+1)}(),0==t?(e=X(n,n.parent(),n.self(),o[0]))instanceof Ye||(e=e.optimize(n)):e.expressions=o,e}),Je.DEFMETHOD("lift_sequences",function(e){if(e.option("sequences")&&this.expression instanceof Ye){var t=this.expression.expressions.slice(),n=this.clone();return n.expression=t.pop(),t.push(n),M(this,t).optimize(e)}return this}),e(et,function(e,t){return e.lift_sequences(t)}),e(Xe,function(e,t){var n,r=e.expression;if("delete"==e.operator&&!(r instanceof mt||r instanceof We||((n=r)instanceof kt||n instanceof Et||n instanceof At)))return r instanceof Ye?((r=r.expressions.slice()).push(J(St,e)),M(e,r).optimize(t)):M(e,[r,J(St,e)]).optimize(t);var i=e.lift_sequences(t);if(i!==e)return i;if(t.option("side_effects")&&"void"==e.operator)return(r=r.drop_side_effect_free(t))?(e.expression=r,e):J(At,e).optimize(t);if(t.option("booleans")){if("!"==e.operator&&r.is_truthy())return M(e,[r,J(Ot,e)]).optimize(t);if(t.in_boolean_context())switch(e.operator){case"!":if(r instanceof Xe&&"!"==r.operator)return r.expression;r instanceof tt&&(e=V(t,e,r.negate(t,F(t))));break;case"typeof":return t.warn("Boolean expression always true [{file}:{line},{col}]",e.start),(r instanceof mt?J(St,e):M(e,[r,J(St,e)])).optimize(t)}}if("-"==e.operator&&r instanceof kt&&(r=r.transform(t)),r instanceof tt&&("+"==e.operator||"-"==e.operator)&&("*"==r.operator||"/"==r.operator||"%"==r.operator))return J(tt,e,{operator:r.operator,left:J(Xe,r.left,{operator:e.operator,expression:r.left}),right:r.right});if("-"!=e.operator||!(r instanceof yt||r instanceof kt)){var o=e.evaluate(t);if(o!==e)return V(t,o=N(o,e).optimize(t),e)}return e}),tt.DEFMETHOD("lift_sequences",function(e){if(e.option("sequences")){if(this.left instanceof Ye){var t=this.left.expressions.slice();return(n=this.clone()).left=t.pop(),t.push(n),M(this,t).optimize(e)}if(this.right instanceof Ye&&!this.left.has_side_effects(e)){for(var n,r="="==this.operator&&this.left instanceof mt,i=(t=this.right.expressions).length-1,o=0;o<i&&(r||!t[o].has_side_effects(e));o++);if(o==i)return t=t.slice(),(n=this.clone()).right=t.pop(),t.push(n),M(this,t).optimize(e);if(0<o)return(n=this.clone()).right=M(this.right,t.slice(o)),(t=t.slice(0,o)).push(n),M(this,t).optimize(e)}}return this});var k=W("== === != !== * & | ^");function H(e,t){for(var n,r=0;n=e.parent(r);r++)if(n instanceof Ce){var i=n.name;if(i&&i.definition()===t)break}return n}function p(e,t){return e instanceof mt||e.TYPE===t.TYPE}function $(n,t){var r=!1,i=new Dt(function(e){return!!r||(e instanceof mt&&re(e.definition(),t)?r=!0:void 0)}),o=new Dt(function(e){if(r)return!0;if(e instanceof xe&&e!==n){var t=o.parent();if(t instanceof Ke&&t.expression===e)return;return e.walk(i),!0}});return n.walk(o),r}e(tt,function(n,t){function r(){return n.left.is_constant()||n.right.is_constant()||!n.left.has_side_effects(t)&&!n.right.has_side_effects(t)}function e(e){if(r()){e&&(n.operator=e);var t=n.left;n.left=n.right,n.right=t}}if(k[n.operator]&&n.right.is_constant()&&!n.left.is_constant()&&(n.left instanceof tt&&Kt[n.left.operator]>=Kt[n.operator]||e()),n=n.lift_sequences(t),t.option("comparisons"))switch(n.operator){case"===":case"!==":var i=!0;(n.left.is_string(t)&&n.right.is_string(t)||n.left.is_number(t)&&n.right.is_number(t)||n.left.is_boolean(t)&&n.right.is_boolean(t)||n.left.equivalent_to(n.right))&&(n.operator=n.operator.substr(0,2));case"==":case"!=":if(!i&&b(n.left,t))n.left=J(wt,n.left);else if(t.option("typeofs")&&n.left instanceof bt&&"undefined"==n.left.value&&n.right instanceof Xe&&"typeof"==n.right.operator){var o=n.right.expression;(o instanceof mt?!o.is_declared(t):o instanceof We&&t.option("ie8"))||(n.right=o,n.left=J(At,n.left).optimize(t),2==n.operator.length&&(n.operator+="="))}else if(n.left instanceof mt&&n.right instanceof mt&&n.left.definition()===n.right.definition()&&((u=n.left.fixed_value())instanceof it||u instanceof Ce||u instanceof ot))return J("="==n.operator[0]?St:Ot,n);break;case"&&":case"||":var a=n.left;if(a.operator==n.operator&&(a=a.right),a instanceof tt&&a.operator==("&&"==n.operator?"!==":"===")&&n.right instanceof tt&&a.operator==n.right.operator&&(b(a.left,t)&&n.right.left instanceof wt||a.left instanceof wt&&b(n.right.left,t))&&!a.right.has_side_effects(t)&&a.right.equivalent_to(n.right.right)){var s=J(tt,n,{operator:a.operator.slice(0,-1),left:J(wt,n),right:a.right});return a!==n.left&&(s=J(tt,n,{operator:n.operator,left:n.left.left,right:s})),s}}var u;if(t.option("booleans")&&"+"==n.operator&&t.in_boolean_context()){var l=n.left.evaluate(t),c=n.right.evaluate(t);if(l&&"string"==typeof l)return t.warn("+ in boolean context always true [{file}:{line},{col}]",n.start),M(n,[n.right,J(St,n)]).optimize(t);if(c&&"string"==typeof c)return t.warn("+ in boolean context always true [{file}:{line},{col}]",n.start),M(n,[n.left,J(St,n)]).optimize(t)}if(t.option("comparisons")&&n.is_boolean(t)){if(!(t.parent()instanceof tt)||t.parent()instanceof rt){var f=J(Xe,n,{operator:"!",expression:n.negate(t,F(t))});n=V(t,n,f)}switch(n.operator){case">":e("<");break;case">=":e("<=")}}if("+"==n.operator){if(n.right instanceof bt&&""==n.right.getValue()&&n.left.is_string(t))return n.left;if(n.left instanceof bt&&""==n.left.getValue()&&n.right.is_string(t))return n.right;if(n.left instanceof tt&&"+"==n.left.operator&&n.left.left instanceof bt&&""==n.left.left.getValue()&&n.right.is_string(t))return n.left=n.left.right,n.transform(t)}if(t.option("evaluate")){switch(n.operator){case"&&":if(!(l=v(n.left)))return t.warn("Condition left of && always false [{file}:{line},{col}]",n.start),X(t,t.parent(),t.self(),n.left).optimize(t);if(!(l instanceof ue))return t.warn("Condition left of && always true [{file}:{line},{col}]",n.start),M(n,[n.left,n.right]).optimize(t);if(c=n.right.evaluate(t)){if(!(c instanceof ue)){if("&&"==(p=t.parent()).operator&&p.left===t.self()||t.option("booleans")&&t.in_boolean_context())return t.warn("Dropping side-effect-free && [{file}:{line},{col}]",n.start),n.left.optimize(t)}}else{if(t.option("booleans")&&t.in_boolean_context())return t.warn("Boolean && always false [{file}:{line},{col}]",n.start),M(n,[n.left,J(Ot,n)]).optimize(t);n.falsy=!0}if("||"==n.left.operator)if(!(d=n.left.right.evaluate(t)))return J(nt,n,{condition:n.left.left,consequent:n.right,alternative:n.left.right}).optimize(t);break;case"||":var p,d;if(!(l=v(n.left)))return t.warn("Condition left of || always false [{file}:{line},{col}]",n.start),M(n,[n.left,n.right]).optimize(t);if(!(l instanceof ue))return t.warn("Condition left of || always true [{file}:{line},{col}]",n.start),X(t,t.parent(),t.self(),n.left).optimize(t);if(c=n.right.evaluate(t)){if(!(c instanceof ue)){if(t.option("booleans")&&t.in_boolean_context())return t.warn("Boolean || always true [{file}:{line},{col}]",n.start),M(n,[n.left,J(St,n)]).optimize(t);n.truthy=!0}}else if("||"==(p=t.parent()).operator&&p.left===t.self()||t.option("booleans")&&t.in_boolean_context())return t.warn("Dropping side-effect-free || [{file}:{line},{col}]",n.start),n.left.optimize(t);if("&&"==n.left.operator)if((d=n.left.right.evaluate(t))&&!(d instanceof ue))return J(nt,n,{condition:n.left.left,consequent:n.left.right,alternative:n.right}).optimize(t)}var h=!0;switch(n.operator){case"+":if(n.left instanceof vt&&n.right instanceof tt&&"+"==n.right.operator&&n.right.left instanceof vt&&n.right.is_string(t)&&(n=J(tt,n,{operator:"+",left:J(bt,n.left,{value:""+n.left.getValue()+n.right.left.getValue(),start:n.left.start,end:n.right.left.end}),right:n.right.right})),n.right instanceof vt&&n.left instanceof tt&&"+"==n.left.operator&&n.left.right instanceof vt&&n.left.is_string(t)&&(n=J(tt,n,{operator:"+",left:n.left.left,right:J(bt,n.right,{value:""+n.left.right.getValue()+n.right.getValue(),start:n.left.right.start,end:n.right.end})})),n.left instanceof tt&&"+"==n.left.operator&&n.left.is_string(t)&&n.left.right instanceof vt&&n.right instanceof tt&&"+"==n.right.operator&&n.right.left instanceof vt&&n.right.is_string(t)&&(n=J(tt,n,{operator:"+",left:J(tt,n.left,{operator:"+",left:n.left.left,right:J(bt,n.left.right,{value:""+n.left.right.getValue()+n.right.left.getValue(),start:n.left.right.start,end:n.right.left.end})}),right:n.right.right})),n.right instanceof Xe&&"-"==n.right.operator&&n.left.is_number(t)){n=J(tt,n,{operator:"-",left:n.left,right:n.right.expression});break}if(n.left instanceof Xe&&"-"==n.left.operator&&r()&&n.right.is_number(t)){n=J(tt,n,{operator:"-",left:n.right,right:n.left.expression});break}case"*":h=t.option("unsafe_math");case"&":case"|":case"^":if(n.left.is_number(t)&&n.right.is_number(t)&&r()&&!(n.left instanceof tt&&n.left.operator!=n.operator&&Kt[n.left.operator]>=Kt[n.operator])){var m=J(tt,n,{operator:n.operator,left:n.right,right:n.left});n=n.right instanceof vt&&!(n.left instanceof vt)?V(t,m,n):V(t,n,m)}h&&n.is_number(t)&&(n.right instanceof tt&&n.right.operator==n.operator&&(n=J(tt,n,{operator:n.operator,left:J(tt,n.left,{operator:n.operator,left:n.left,right:n.right.left,start:n.left.start,end:n.right.left.end}),right:n.right.right})),n.right instanceof vt&&n.left instanceof tt&&n.left.operator==n.operator&&(n.left.left instanceof vt?n=J(tt,n,{operator:n.operator,left:J(tt,n.left,{operator:n.operator,left:n.left.left,right:n.right,start:n.left.left.start,end:n.right.end}),right:n.left.right}):n.left.right instanceof vt&&(n=J(tt,n,{operator:n.operator,left:J(tt,n.left,{operator:n.operator,left:n.left.right,right:n.right,start:n.left.right.start,end:n.right.end}),right:n.left.left}))),n.left instanceof tt&&n.left.operator==n.operator&&n.left.right instanceof vt&&n.right instanceof tt&&n.right.operator==n.operator&&n.right.left instanceof vt&&(n=J(tt,n,{operator:n.operator,left:J(tt,n.left,{operator:n.operator,left:J(tt,n.left.left,{operator:n.operator,left:n.left.right,right:n.right.left,start:n.left.right.start,end:n.right.left.end}),right:n.left.left}),right:n.right.right})))}}if(n.right instanceof tt&&n.right.operator==n.operator&&(te[n.operator]||"+"==n.operator&&(n.right.left.is_string(t)||n.left.is_string(t)&&n.right.right.is_string(t))))return n.left=J(tt,n.left,{operator:n.operator,left:n.left,right:n.right.left}),n.right=n.right.right,n.transform(t);var g=n.evaluate(t);return g!==n?(g=N(g,n).optimize(t),V(t,g,n)):n;function v(e){return!!e.truthy||!e.falsy&&(!!e.is_truthy()||e.evaluate(t))}}),e(mt,function(e,t){if(!t.option("ie8")&&j(e)&&(!e.scope.uses_with||!t.find_parent(Ae)))switch(e.name){case"undefined":return J(At,e).optimize(t);case"NaN":return J(Et,e).optimize(t);case"Infinity":return J(kt,e).optimize(t)}var n,r=t.parent();if(t.option("reduce_vars")&&ne(e,r)!==e){var i=e.definition(),o=e.fixed_value(),a=i.single_use&&!(r instanceof Ke&&r.is_expr_pure(t));if(a&&o instanceof Ce)if(i.scope===e.scope||t.option("reduce_funcs")&&1!=i.escaped&&!o.inlined){if(H(t,i))a=!1;else if((i.scope!==e.scope||i.orig[0]instanceof ft)&&"f"==(a=o.is_constant_expression(e.scope)))for(var s=e.scope;(s instanceof De||s instanceof Se)&&(s.inlined=!0),s=s.parent_scope;);}else a=!1;if(a&&o){var u;if(i.single_use=!1,o instanceof De&&(o._squeezed=!0,(o=J(Se,o,o)).name=J(dt,o.name,o.name)),0<i.recursive_refs){var l=(u=o.clone(!0)).name.definition(),c=u.variables.get(u.name.name),f=c&&c.orig[0];f instanceof dt||(((f=J(dt,u.name,u.name)).scope=u).name=f,c=u.def_function(f)),u.walk(new Dt(function(e){if(e instanceof mt){var t=e.definition();t===l?(e.thedef=c).references.push(e):t.single_use=!1}}))}else(u=o.optimize(t))===o&&(u=o.clone(!0));return u}if(o&&void 0===i.should_replace){var p;if(o instanceof gt)i.orig[0]instanceof ft||!ae(i.references,function(e){return i.scope===e.scope})||(p=o);else{var d=o.evaluate(t);d===o||!t.option("unsafe_regexp")&&d instanceof RegExp||(p=N(d,o))}if(p){var h,m=p.optimize(t).print_to_string().length;o.walk(new Dt(function(e){if(e instanceof mt&&(n=!0),n)return!0})),h=n?function(){var e=p.optimize(t);return e===p?e.clone(!0):e}:(m=Math.min(m,o.print_to_string().length),function(){var e=y(p.optimize(t),o);return e===p||e===o?e.clone(!0):e});var g=i.name.length,v=0;t.option("unused")&&!t.exposed(i)&&(v=(g+2+m)/(i.references.length-i.assignments)),i.should_replace=m<=g+v&&h}else i.should_replace=!1}if(i.should_replace)return i.should_replace()}return e}),e(At,function(e,t){if(t.option("unsafe_undefined")){var n=o(t,"undefined");if(n){var r=J(mt,e,{name:"undefined",scope:n.scope,thedef:n});return r.is_undefined=!0,r}}var i=ne(t.self(),t.parent());return i&&p(i,e)?e:J(Xe,e,{operator:"void",expression:J(yt,e,{value:0})})}),e(kt,function(e,t){var n=ne(t.self(),t.parent());return n&&p(n,e)?e:!t.option("keep_infinity")||n&&!p(n,e)||o(t,"Infinity")?J(tt,e,{operator:"/",left:J(yt,e,{value:1}),right:J(yt,e,{value:0})}):e}),e(Et,function(e,t){var n=ne(t.self(),t.parent());return n&&!p(n,e)||o(t,"NaN")?J(tt,e,{operator:"/",left:J(yt,e,{value:0}),right:J(yt,e,{value:0})}):e});var C=W("+ - / * % >> << >>> | ^ &"),O=W("* | ^ &");function S(e,t){return e instanceof mt&&(e=e.fixed_value()),!!e&&(!(e instanceof Ce)||t.parent()instanceof Ge||!e.contains_this())}e(rt,function(a,s){var e;if(s.option("dead_code")&&a.left instanceof mt&&(e=a.left.definition()).scope===s.find_parent(Ce)){var t,n=0,r=a;do{if(t=r,(r=s.parent(n++))instanceof Te){if(i(n,r))break;if($(e.scope,[e]))break;return"="==a.operator?a.right:(e.fixed=!1,J(tt,a,{operator:a.operator.slice(0,-1),left:a.left,right:a.right}).optimize(s))}}while(r instanceof tt&&r.right===t||r instanceof Ye&&r.tail_node()===t)}return"="==(a=a.lift_sequences(s)).operator&&a.left instanceof mt&&a.right instanceof tt&&(a.right.left instanceof mt&&a.right.left.name==a.left.name&&C[a.right.operator]?(a.operator=a.right.operator+"=",a.right=a.right.right):a.right.right instanceof mt&&a.right.right.name==a.left.name&&O[a.right.operator]&&!a.right.left.has_side_effects(s)&&(a.operator=a.right.operator+"=",a.right=a.right.left)),a;function i(e,t){var n=a.right;a.right=J(wt,n);var r=t.may_throw(s);a.right=n;for(var i,o=a.left.definition().scope;(i=s.parent(e++))!==o;)if(i instanceof ze){if(i.bfinally)return!0;if(r&&i.bcatch)return!0}}}),e(nt,function(e,t){if(!t.option("conditionals"))return e;if(e.condition instanceof Ye){var n=e.condition.expressions.slice();return e.condition=n.pop(),n.push(e),M(e,n)}var r=e.condition.is_truthy()||e.condition.tail_node().evaluate(t);if(!r)return t.warn("Condition always false [{file}:{line},{col}]",e.start),M(e,[e.condition,e.alternative]).optimize(t);if(!(r instanceof ue))return t.warn("Condition always true [{file}:{line},{col}]",e.start),M(e,[e.condition,e.consequent]).optimize(t);var i=r.negate(t,F(t));V(t,r,i)===i&&(e=J(nt,e,{condition:i,consequent:e.alternative,alternative:e.consequent}));var o=e.condition,a=e.consequent,s=e.alternative;if(o instanceof mt&&a instanceof mt&&o.definition()===a.definition())return J(tt,e,{operator:"||",left:o,right:s});var u,l=a.tail_node();if(l instanceof rt){var c="="==l.operator,f=c?s.tail_node():s;if((c||a instanceof rt)&&f instanceof rt&&l.operator==f.operator&&l.left.equivalent_to(f.left)&&(!o.has_side_effects(t)||c&&!l.left.has_side_effects(t)))return J(rt,e,{operator:l.operator,left:l.left,right:J(nt,e,{condition:o,consequent:v(a),alternative:v(s)})})}if(a instanceof Ke&&s.TYPE===a.TYPE&&0<a.args.length&&a.args.length==s.args.length&&a.expression.equivalent_to(s.expression)&&!o.has_side_effects(t)&&!a.expression.has_side_effects(t)&&"number"==typeof(u=function(){for(var e=a.args,t=s.args,n=0,r=e.length;n<r;n++)if(!e[n].equivalent_to(t[n])){for(var i=n+1;i<r;i++)if(!e[i].equivalent_to(t[i]))return;return n}}())){var p=a.clone();return p.args[u]=J(nt,e,{condition:o,consequent:a.args[u],alternative:s.args[u]}),p}if(a instanceof nt&&a.alternative.equivalent_to(s))return J(nt,e,{condition:J(tt,e,{left:o,operator:"&&",right:a.condition}),consequent:a.consequent,alternative:s});if(a.equivalent_to(s))return M(e,[o,a]).optimize(t);if((a instanceof Ye||s instanceof Ye)&&a.tail_node().equivalent_to(s.tail_node()))return M(e,[J(nt,e,{condition:o,consequent:b(a),alternative:b(s)}),a.tail_node()]).optimize(t);if(a instanceof tt&&"||"==a.operator&&a.right.equivalent_to(s))return J(tt,e,{operator:"||",left:J(tt,e,{operator:"&&",left:o,right:a.left}),right:s}).optimize(t);var d=t.option("booleans")&&t.in_boolean_context();return m(e.consequent)?g(e.alternative)?h(o):J(tt,e,{operator:"||",left:h(o),right:e.alternative}):g(e.consequent)?m(e.alternative)?h(o.negate(t)):J(tt,e,{operator:"&&",left:h(o.negate(t)),right:e.alternative}):m(e.alternative)?J(tt,e,{operator:"||",left:h(o.negate(t)),right:e.consequent}):g(e.alternative)?J(tt,e,{operator:"&&",left:h(o),right:e.consequent}):e;function h(e){return e.is_boolean(t)?e:J(Xe,e,{operator:"!",expression:e.negate(t)})}function m(e){return e instanceof St||d&&e instanceof vt&&e.getValue()||e instanceof Xe&&"!"==e.operator&&e.expression instanceof vt&&!e.expression.getValue()}function g(e){return e instanceof Ot||d&&e instanceof vt&&!e.getValue()||e instanceof Xe&&"!"==e.operator&&e.expression instanceof vt&&e.expression.getValue()}function v(e){if(!(e instanceof Ye))return e.right;var t=e.expressions.slice();return t.push(t.pop().right),M(e,t)}function b(e){return e instanceof Ye?M(e,e.expressions.slice(0,-1)):J(yt,e,{value:0})}}),e(Ct,function(e,t){if(!t.option("booleans"))return e;if(t.in_boolean_context())return J(yt,e,{value:+e.value});var n=t.parent();return n instanceof tt&&("=="==n.operator||"!="==n.operator)?(t.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]",{operator:n.operator,value:e.value,file:n.start.file,line:n.start.line,col:n.start.col}),J(yt,e,{value:+e.value})):J(Xe,e,{operator:"!",expression:J(yt,e,{value:1-e.value})})}),e(Ze,function(e,t){var n,r=e.expression,i=e.property;if(t.option("properties")){var o=i.evaluate(t);if(o!==i){if("string"==typeof o)if("undefined"==o)o=void 0;else(v=parseFloat(o)).toString()==o&&(o=v);i=e.property=y(i,N(o,i).transform(t));var a=""+o;if(Mt(a)&&a.length<=i.print_to_string().length+1)return J(Qe,e,{expression:r,property:a}).optimize(t)}}if(t.option("arguments")&&r instanceof mt&&"arguments"==r.name&&1==r.definition().orig.length&&(n=r.scope)instanceof Ce&&i instanceof yt){var s=i.getValue(),u=n.argnames[s];if(u&&t.has_directive("use strict")){var l=u.definition();(!t.option("reduce_vars")||l.assignments||1<l.orig.length)&&(u=null)}else if(!u&&!t.option("keep_fargs")&&s<n.argnames.length+5)for(;s>=n.argnames.length;)u=J(ft,n,{name:n.make_var_name("argument_"+n.argnames.length),scope:n}),n.argnames.push(u),n.enclosed.push(n.def_variable(u));if(u&&K(function(e){return e.name===u.name},n.argnames)===u){var c=J(mt,e,u);return c.reference({}),delete u.__unused,c}}if(ne(e,t.parent()))return e;if(o!==i){var f=e.flatten_object(a,t);f&&(r=e.expression=f.expression,i=e.property=f.property)}if(t.option("properties")&&t.option("side_effects")&&i instanceof yt&&r instanceof it){s=i.getValue();var p=r.elements,d=p[s];if(S(d,t)){for(var h=!0,m=[],g=p.length;--g>s;){(v=p[g].drop_side_effect_free(t))&&(m.unshift(v),h&&v.has_side_effects(t)&&(h=!1))}for(d=d instanceof xt?J(At,d):d,h||m.unshift(d);0<=--g;){var v;(v=p[g].drop_side_effect_free(t))?m.unshift(v):s--}return h?(m.push(d),M(e,m).optimize(t)):J(Ze,e,{expression:J(it,r,{elements:m}),property:J(yt,i,{value:s})})}}var b=e.evaluate(t);return b!==e?V(t,b=N(b,e).optimize(t),e):e}),xe.DEFMETHOD("contains_this",function(){var t,n=this;return n.walk(new Dt(function(e){return!!t||(e instanceof gt?t=!0:e!==n&&e instanceof xe||void 0)})),t}),We.DEFMETHOD("flatten_object",function(e,t){if(t.option("properties")){var n=this.expression;if(n instanceof ot)for(var r=n.properties,i=r.length;0<=--i;){var o=r[i];if(""+o.key==e){if(!ae(r,function(e){return e instanceof st}))break;if(!S(o.value,t))break;return J(Ze,this,{expression:J(it,n,{elements:r.map(function(e){return e.value})}),property:J(yt,this,{value:i})})}}}}),e(Qe,function(e,t){if("arguments"!=e.property&&"caller"!=e.property||t.warn("Function.protoype.{prop} not supported [{file}:{line},{col}]",{prop:e.property,file:e.start.file,line:e.start.line,col:e.start.col}),ne(e,t.parent()))return e;if(t.option("unsafe_proto")&&e.expression instanceof Qe&&"prototype"==e.expression.property){var n=e.expression.expression;if(j(n))switch(n.name){case"Array":e.expression=J(it,e.expression,{elements:[]});break;case"Function":e.expression=J(Se,e.expression,{argnames:[],body:[]});break;case"Number":e.expression=J(yt,e.expression,{value:0});break;case"Object":e.expression=J(ot,e.expression,{properties:[]});break;case"RegExp":e.expression=J(_t,e.expression,{value:/t/});break;case"String":e.expression=J(bt,e.expression,{value:""})}}var r=e.flatten_object(e.property,t);if(r)return r.optimize(t);var i=e.evaluate(t);return i!==e?V(t,i=N(i,e).optimize(t),e):e}),e(Be,function(e,t){return e.value&&b(e.value,t)&&(e.value=null),e})}(function(e,n){e.DEFMETHOD("optimize",function(e){if(this._optimized)return this;if(e.has_directive("use asm"))return this;var t=n(this,e);return t._optimized=!0,t})}),function(){function t(e){for(var t=!0,n=0;n<e.length;n++)t&&e[n]instanceof le&&e[n].body instanceof bt?e[n]=new fe({start:e[n].start,end:e[n].end,value:e[n].body.value}):!t||e[n]instanceof le&&e[n].body instanceof bt||(t=!1);return e}var r={Program:function(e){return new ke({start:s(e),end:u(e),body:t(e.body.map(l))})},FunctionDeclaration:function(e){return new De({start:s(e),end:u(e),name:l(e.id),argnames:e.params.map(l),body:t(l(e.body).body)})},FunctionExpression:function(e){return new Se({start:s(e),end:u(e),name:l(e.id),argnames:e.params.map(l),body:t(l(e.body).body)})},ExpressionStatement:function(e){return new pe({start:s(e),end:u(e),body:l(e.expression)})},TryStatement:function(e){var t=e.handlers||[e.handler];if(1<t.length||e.guardedHandlers&&e.guardedHandlers.length)throw new Error("Multiple catch clauses are not supported.");return new ze({start:s(e),end:u(e),body:l(e.block).body,bcatch:l(t[0]),bfinally:e.finalizer?new Ie(l(e.finalizer)):null})},Property:function(e){var t=e.key,n={start:s(t),end:u(e.value),key:"Identifier"==t.type?t.name:t.value,value:l(e.value)};return"init"==e.kind?new st(n):(n.key=new X({name:n.key}),n.value=new Oe(n.value),"get"==e.kind?new J(n):"set"==e.kind?new Z(n):void 0)},ArrayExpression:function(e){return new it({start:s(e),end:u(e),elements:e.elements.map(function(e){return null===e?new xt:l(e)})})},ObjectExpression:function(e){return new ot({start:s(e),end:u(e),properties:e.properties.map(function(e){return e.type="Property",l(e)})})},SequenceExpression:function(e){return new Ye({start:s(e),end:u(e),expressions:e.expressions.map(l)})},MemberExpression:function(e){return new(e.computed?Ze:Qe)({start:s(e),end:u(e),property:e.computed?l(e.property):e.property.name,expression:l(e.object)})},SwitchCase:function(e){return new(e.test?Pe:Ne)({start:s(e),end:u(e),expression:l(e.test),body:e.consequent.map(l)})},VariableDeclaration:function(e){return new He({start:s(e),end:u(e),definitions:e.declarations.map(l)})},Literal:function(e){var t=e.value,n={start:s(e),end:u(e)};if(null===t)return new wt(n);var r=e.regex;if(r&&r.pattern)return n.value=new RegExp(r.pattern,r.flags),n.value.raw_source=r.pattern,new _t(n);if(r)return n.value=e.regex&&e.raw?e.raw:t,new _t(n);switch(typeof t){case"string":return n.value=t,new bt(n);case"number":return n.value=t,new yt(n);case"boolean":return new(t?St:Ot)(n)}},Identifier:function(e){var t=o[o.length-2];return new("LabeledStatement"==t.type?ee:"VariableDeclarator"==t.type&&t.id===e?ct:"FunctionExpression"==t.type?t.id===e?dt:ft:"FunctionDeclaration"==t.type?t.id===e?pt:ft:"CatchClause"==t.type?ht:"BreakStatement"==t.type||"ContinueStatement"==t.type?te:mt)({start:s(e),end:u(e),name:e.name})}};function i(e){if("Literal"==e.type)return null!=e.raw?e.raw:e.value+""}function s(e){var t=e.loc,n=t&&t.start,r=e.range;return new O({file:t&&t.source,line:n&&n.line,col:n&&n.column,pos:r?r[0]:e.start,endline:n&&n.line,endcol:n&&n.column,endpos:r?r[0]:e.start,raw:i(e)})}function u(e){var t=e.loc,n=t&&t.end,r=e.range;return new O({file:t&&t.source,line:n&&n.line,col:n&&n.column,pos:r?r[1]:e.end,endline:n&&n.line,endcol:n&&n.column,endpos:r?r[1]:e.end,raw:i(e)})}function e(e,t,n){var o="function From_Moz_"+e+"(M){\n";o+="return new U2."+t.name+"({\nstart: my_start_token(M),\nend: my_end_token(M)";var a="function To_Moz_"+e+"(M){\n";a+="return {\ntype: "+JSON.stringify(e),n&&n.split(/\s*,\s*/).forEach(function(e){var t=/([a-z0-9$_]+)(=|@|>|%)([a-z0-9$_]+)/i.exec(e);if(!t)throw new Error("Can't understand property map: "+e);var n=t[1],r=t[2],i=t[3];switch(o+=",\n"+i+": ",a+=",\n"+n+": ",r){case"@":o+="M."+n+".map(from_moz)",a+="M."+i+".map(to_moz)";break;case">":o+="from_moz(M."+n+")",a+="to_moz(M."+i+")";break;case"=":o+="M."+n,a+="M."+i;break;case"%":o+="from_moz(M."+n+").body",a+="to_moz_block(M)";break;default:throw new Error("Can't understand operator in propmap: "+e)}}),o+="\n})\n}",a+="\n}\n}",o=new Function("U2","my_start_token","my_end_token","from_moz","return("+o+")")(h,s,u,l),a=new Function("to_moz","to_moz_block","to_moz_scope","return("+a+")")(f,p,d),r[e]=o,c(t,a)}r.UpdateExpression=r.UnaryExpression=function(e){return new(("prefix"in e?e.prefix:"UnaryExpression"==e.type)?Xe:et)({start:s(e),end:u(e),operator:e.operator,expression:l(e.argument)})},e("EmptyStatement",me),e("BlockStatement",he,"body@body"),e("IfStatement",qe,"test>condition, consequent>body, alternate>alternative"),e("LabeledStatement",ge,"label>label, body>body"),e("BreakStatement",Le,"label>label"),e("ContinueStatement",Fe,"label>label"),e("WithStatement",Ae,"object>expression, body>body"),e("SwitchStatement",Ue,"discriminant>expression, cases@body"),e("ReturnStatement",Be,"argument>value"),e("ThrowStatement",Q,"argument>value"),e("WhileStatement",_e,"test>condition, body>body"),e("DoWhileStatement",ye,"test>condition, body>body"),e("ForStatement",we,"init>init, test>condition, update>step, body>body"),e("ForInStatement",Ee,"left>init, right>object, body>body"),e("DebuggerStatement",ce),e("VariableDeclarator",$e,"id>name, init>value"),e("CatchClause",je,"param>argname, body%body"),e("ThisExpression",gt),e("BinaryExpression",tt,"operator=operator, left>left, right>right"),e("LogicalExpression",tt,"operator=operator, left>left, right>right"),e("AssignmentExpression",rt,"operator=operator, left>left, right>right"),e("ConditionalExpression",nt,"test>condition, consequent>consequent, alternate>alternative"),e("NewExpression",Ge,"callee>expression, arguments@args"),e("CallExpression",Ke,"callee>expression, arguments@args"),c(ke,function(e){return d("Program",e)}),c(De,function(e){return{type:"FunctionDeclaration",id:f(e.name),params:e.argnames.map(f),body:d("BlockStatement",e)}}),c(Se,function(e){return{type:"FunctionExpression",id:f(e.name),params:e.argnames.map(f),body:d("BlockStatement",e)}}),c(fe,function(e){return{type:"ExpressionStatement",expression:{type:"Literal",value:e.value}}}),c(pe,function(e){return{type:"ExpressionStatement",expression:f(e.body)}}),c(Me,function(e){return{type:"SwitchCase",test:f(e.expression),consequent:e.body.map(f)}}),c(ze,function(e){return{type:"TryStatement",block:p(e),handler:f(e.bcatch),guardedHandlers:[],finalizer:f(e.bfinally)}}),c(je,function(e){return{type:"CatchClause",param:f(e.argname),guard:null,body:p(e)}}),c(Ve,function(e){return{type:"VariableDeclaration",kind:"var",declarations:e.definitions.map(f)}}),c(Ye,function(e){return{type:"SequenceExpression",expressions:e.expressions.map(f)}}),c(We,function(e){var t=e instanceof Ze;return{type:"MemberExpression",object:f(e.expression),computed:t,property:t?f(e.property):{type:"Identifier",name:e.property}}}),c(Je,function(e){return{type:"++"==e.operator||"--"==e.operator?"UpdateExpression":"UnaryExpression",operator:e.operator,prefix:e instanceof Xe,argument:f(e.expression)}}),c(tt,function(e){return{type:"&&"==e.operator||"||"==e.operator?"LogicalExpression":"BinaryExpression",left:f(e.left),operator:e.operator,right:f(e.right)}}),c(it,function(e){return{type:"ArrayExpression",elements:e.elements.map(f)}}),c(ot,function(e){return{type:"ObjectExpression",properties:e.properties.map(f)}}),c(at,function(e){var t,n={type:"Literal",value:e.key instanceof X?e.key.name:e.key};return e instanceof st?t="init":e instanceof J?t="get":e instanceof Z&&(t="set"),{type:"Property",kind:t,key:n,value:f(e.value)}}),c(ut,function(e){var t=e.definition();return{type:"Identifier",name:t?t.mangled_name||t.name:e.name}}),c(_t,function(e){var t=e.value.toString().match(/[gimuy]*$/)[0],n="/"+e.value.raw_source+"/"+t;return{type:"Literal",value:n,raw:n,regex:{pattern:e.value.raw_source,flags:t}}}),c(vt,function(e){var t=e.value;return"number"==typeof t&&(t<0||0===t&&1/t<0)?{type:"UnaryExpression",operator:"-",prefix:!0,argument:{type:"Literal",value:-t,raw:e.start.raw}}:{type:"Literal",value:t,raw:e.start.raw}}),c(a,function(e){return{type:"Identifier",name:String(e.value)}}),Ct.DEFMETHOD("to_mozilla_ast",vt.prototype.to_mozilla_ast),wt.DEFMETHOD("to_mozilla_ast",vt.prototype.to_mozilla_ast),xt.DEFMETHOD("to_mozilla_ast",function(){return null}),de.DEFMETHOD("to_mozilla_ast",he.prototype.to_mozilla_ast),Ce.DEFMETHOD("to_mozilla_ast",Se.prototype.to_mozilla_ast);var o=null;function l(e){o.push(e);var t=null!=e?r[e.type](e):null;return o.pop(),t}function c(e,i){e.DEFMETHOD("to_mozilla_ast",function(){return t=i(e=this),n=e.start,r=e.end,null!=n.pos&&null!=r.endpos&&(t.range=[n.pos,r.endpos]),n.line&&(t.loc={start:{line:n.line,column:n.col},end:r.endline?{line:r.endline,column:r.endcol}:null},n.file&&(t.loc.source=n.file)),t;var e,t,n,r})}function f(e){return null!=e?e.to_mozilla_ast():null}function p(e){return{type:"BlockStatement",body:e.body.map(f)}}function d(e,t){var n=t.body.map(f);return t.body[0]instanceof pe&&t.body[0].body instanceof bt&&n.unshift(f(new me(t.body[0]))),{type:e,body:n}}ue.from_mozilla_ast=function(e){var t=o;o=[];var n=l(e);return o=t,n.walk(new Dt(function(e){if(e instanceof te){for(var t,n=0;(t=this.parent(n))&&!(t instanceof xe);n++)if(t instanceof ge&&t.label.name==e.name){e.thedef=t.label;break}if(!e.thedef){var r=e.start;Pt("Undefined label "+e.name,r.file,r.line,r.col,r.pos)}}})),n}}();var w="undefined"==typeof atob?function(e){return new u(e,"base64").toString()}:atob,E="undefined"==typeof btoa?function(e){return new u(e).toString("base64")}:btoa;function A(t){try{return JSON.parse(t)}catch(e){throw new Error("invalid input source map: "+t)}}function x(t,n,e){n[t]&&e.forEach(function(e){n[e]&&("object"!=typeof n[e]&&(n[e]={}),t in n[e]||(n[e][t]=n[t]))})}function k(e){e&&("props"in e?e.props instanceof L||(e.props=L.fromObject(e.props)):e.props=new L)}function C(e){return{props:e.props.toObject()}}h.Dictionary=L,h.minify=function(e,t){var n,r,i,o=ue.warn_function;try{var a,s=(t=$(t,{compress:{},enclose:!1,ie8:!1,keep_fnames:!1,mangle:{},nameCache:null,output:{},parse:{},rename:void 0,sourceMap:!1,timings:!1,toplevel:!1,warnings:!1,wrap:!1},!0)).timings&&{start:Date.now()};void 0===t.rename&&(t.rename=t.compress&&t.mangle),x("ie8",t,["compress","mangle","output"]),x("keep_fnames",t,["compress","mangle"]),x("toplevel",t,["compress","mangle"]),x("warnings",t,["compress"]),t.mangle&&(t.mangle=$(t.mangle,{cache:t.nameCache&&(t.nameCache.vars||{}),eval:!1,ie8:!1,keep_fnames:!1,properties:!1,reserved:[],toplevel:!1},!0),t.mangle.properties&&("object"!=typeof t.mangle.properties&&(t.mangle.properties={}),t.mangle.properties.keep_quoted&&(a=t.mangle.properties.reserved,Array.isArray(a)||(a=[]),t.mangle.properties.reserved=a),!t.nameCache||"cache"in t.mangle.properties||(t.mangle.properties.cache=t.nameCache.props||{})),k(t.mangle.cache),k(t.mangle.properties.cache)),t.sourceMap&&(t.sourceMap=$(t.sourceMap,{content:null,filename:null,includeSources:!1,root:null,url:null},!0));var u,l,c=[];if(t.warnings&&!ue.warn_function&&(ue.warn_function=function(e){c.push(e)}),s&&(s.parse=Date.now()),e instanceof ke)l=e;else{"string"==typeof e&&(e=[e]),t.parse=t.parse||{},t.parse.toplevel=null;var f=t.sourceMap&&t.sourceMap.content;for(var p in"string"==typeof f&&"inline"!=f&&(f=A(f)),u=f&&Object.create(null),e)if(se(e,p)&&(t.parse.filename=p,t.parse.toplevel=Yt(e[p],t.parse),u))if("inline"==f){var d=(r=e[n=p],(i=/\n\/\/# sourceMappingURL=data:application\/json(;.*?)?;base64,(.*)/.exec(r))?w(i[2]):(ue.warn("inline source map not found: "+n),null));d&&(u[p]=A(d))}else u[p]=f;l=t.parse.toplevel}a&&function(e,t){function n(e){g(t,e)}e.walk(new Dt(function(e){e instanceof st&&e.quote?n(e.key):e instanceof Ze&&y(e.property,n)}))}(l,a),t.wrap&&(l=l.wrap_commonjs(t.wrap)),t.enclose&&(l=l.wrap_enclose(t.enclose)),s&&(s.rename=Date.now()),t.rename&&(l.figure_out_scope(t.mangle),l.expand_names(t.mangle)),s&&(s.compress=Date.now()),t.compress&&(l=new Xt(t.compress).compress(l)),s&&(s.scope=Date.now()),t.mangle&&l.figure_out_scope(t.mangle),s&&(s.mangle=Date.now()),t.mangle&&(l.compute_char_frequency(t.mangle),l.mangle_names(t.mangle)),s&&(s.properties=Date.now()),t.mangle&&t.mangle.properties&&(l=_(l,t.mangle.properties)),s&&(s.output=Date.now());var h={};if(t.output.ast&&(h.ast=l),!se(t.output,"code")||t.output.code){if(t.sourceMap)if(t.output.source_map=function(u){u=$(u,{file:null,root:null,orig:null,orig_line_diff:0,dest_line_diff:0},!0);var l=new MOZ_SourceMap.SourceMapGenerator({file:u.file,sourceRoot:u.root}),c=u.orig&&Object.create(null);if(c)for(var e in u.orig){var n=new MOZ_SourceMap.SourceMapConsumer(u.orig[e]);Array.isArray(u.orig[e].sources)&&n._sources.toArray().forEach(function(e){var t=n.sourceContentFor(e,!0);t&&l.setSourceContent(e,t)}),c[e]=n}return{add:function(e,t,n,r,i,o){var a=c&&c[e];if(a){var s=a.originalPositionFor({line:r,column:i});if(null===s.source)return;e=s.source,r=s.line,i=s.column,o=s.name||o}l.addMapping({name:o,source:e,generated:{line:t+u.dest_line_diff,column:n},original:{line:r+u.orig_line_diff,column:i}})},get:function(){return l},toString:function(){return JSON.stringify(l.toJSON())}}}({file:t.sourceMap.filename,orig:u,root:t.sourceMap.root}),t.sourceMap.includeSources){if(e instanceof ke)throw new Error("original source content unavailable");for(var p in e)se(e,p)&&t.output.source_map.get().setSourceContent(p,e[p])}else t.output.source_map.get()._sourcesContents=null;delete t.output.ast,delete t.output.code;var m=Jt(t.output);l.print(m),h.code=m.get(),t.sourceMap&&(h.map=t.output.source_map.toString(),"inline"==t.sourceMap.url?h.code+="\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,"+E(h.map):t.sourceMap.url&&(h.code+="\n//# sourceMappingURL="+t.sourceMap.url))}return t.nameCache&&t.mangle&&(t.mangle.cache&&(t.nameCache.vars=C(t.mangle.cache)),t.mangle.properties&&t.mangle.properties.cache&&(t.nameCache.props=C(t.mangle.properties.cache))),s&&(s.end=Date.now(),h.timings={parse:.001*(s.rename-s.parse),rename:.001*(s.compress-s.rename),compress:.001*(s.scope-s.compress),scope:.001*(s.mangle-s.scope),mangle:.001*(s.properties-s.mangle),properties:.001*(s.output-s.properties),output:.001*(s.end-s.output),total:.001*(s.end-s.start)}),c.length&&(h.warnings=c),h}catch(e){return{error:e}}finally{ue.warn_function=o}},h.parse=Yt,h.push_uniq=g,h.TreeTransformer=Wt,h.TreeWalker=Dt}(void 0===n?n={}:n)}).call(this,e("buffer").Buffer)},{buffer:111}]},{},["html-minifier"]);
\ No newline at end of file
diff --git a/env.sh b/env.sh
new file mode 100644 (file)
index 0000000..1bbcade
--- /dev/null
+++ b/env.sh
@@ -0,0 +1 @@
+PATH=`pwd`/node_modules/.bin:$PATH
index 430b257..756c835 100644 (file)
@@ -1,6 +1,6 @@
 {
-  "name": "html-minifier",
-  "description": "Highly configurable, well-tested, JavaScript-based HTML minifier.",
+  "name": "@ndcode/html-minifier",
+  "description": "Highly configurable, well-tested, JavaScript-based HTML minifier (uses NDCODE dependencies).",
   "version": "3.5.21",
   "keywords": [
     "cli",
   "homepage": "https://kangax.github.io/html-minifier/",
   "author": "Juriy \"kangax\" Zaytsev",
   "maintainers": [
-    "Alex Lam <alexlamsl@gmail.com>",
-    "Juriy Zaytsev <kangax@gmail.com> (http://perfectionkills.com/)"
+    "Nick Downing <nick@ndcode.org>"
   ],
   "contributors": [
     "Gilmore Davidson (https://github.com/gilmoreorless)",
     "Hugo Wetterberg <hugo@wetterberg.nu>",
-    "Zoltan Frombach <tssajo@gmail.com>"
+    "Zoltan Frombach <tssajo@gmail.com>",
+    "Alex Lam <alexlamsl@gmail.com>"
   ],
   "license": "MIT",
   "bin": {
   "main": "src/htmlminifier.js",
   "repository": {
     "type": "git",
-    "url": "git+https://github.com/kangax/html-minifier.git"
+    "url": "https://git.ndcode.org/public/html-minifier.git"
   },
   "bugs": {
-    "url": "https://github.com/kangax/html-minifier/issues"
+    "email": "nick@ndcode.org"
   },
   "engines": {
     "node": ">=4"
     "test": "grunt test"
   },
   "dependencies": {
+    "@ndcode/clean-css": "^4.2.1",
     "camel-case": "3.0.x",
-    "clean-css": "4.2.x",
     "commander": "2.17.x",
     "he": "1.2.x",
     "param-case": "2.1.x",
     "relateurl": "0.2.x",
-    "uglify-js": "3.4.x"
+    "uglify-es": "^3.3.9"
   },
   "devDependencies": {
     "grunt": "1.0.x",
index c792842..55c670f 100644 (file)
@@ -1,11 +1,11 @@
 'use strict';
 
-var CleanCSS = require('clean-css');
+var CleanCSS = require('@ndcode/clean-css');
 var decode = require('he').decode;
 var HTMLParser = require('./htmlparser').HTMLParser;
 var RelateUrl = require('relateurl');
 var TokenChain = require('./tokenchain');
-var UglifyJS = require('uglify-js');
+var UglifyES = require('uglify-es');
 var utils = require('./utils');
 
 function trimWhitespace(str) {
@@ -684,7 +684,7 @@ function processOptions(values) {
         var start = text.match(/^\s*<!--.*/);
         var code = start ? text.slice(start[0].length).replace(/\n\s*-->\s*$/, '') : text;
         value.parse.bare_returns = inline;
-        var result = UglifyJS.minify(code, value);
+        var result = UglifyES.minify(code, value);
         if (result.error) {
           options.log(result.error);
           return text;
index b3f82b5..2fff87c 100644 (file)
@@ -3,14 +3,14 @@
   <head>
     <meta charset="utf-8">
     <title>HTML Minifier Tests</title>
-    <link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.7.1.css">
+    <link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.8.0.css">
   </head>
   <body>
     <div id="qunit">
       <button onclick="QUnit.start()">Start</button>
     </div>
     <div id="qunit-fixture"></div>
-    <script src="https://code.jquery.com/qunit/qunit-2.7.1.js"></script>
+    <script src="https://code.jquery.com/qunit/qunit-2.8.0.js"></script>
     <script src="../dist/htmlminifier.min.js"></script>
     <script src="minifier.js"></script>
   </body>