You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							35614 lines
						
					
					
						
							1.0 MiB
						
					
					
				
			
		
		
	
	
							35614 lines
						
					
					
						
							1.0 MiB
						
					
					
				(function webpackUniversalModuleDefinition(root, factory) { | 
						|
	if(typeof exports === 'object' && typeof module === 'object') | 
						|
		module.exports = factory(); | 
						|
	else if(typeof define === 'function' && define.amd) | 
						|
		define([], factory); | 
						|
	else if(typeof exports === 'object') | 
						|
		exports["expect"] = factory(); | 
						|
	else | 
						|
		root["expect"] = factory(); | 
						|
})(window, function() { | 
						|
return /******/ (function(modules) { // webpackBootstrap | 
						|
/******/ 	// The module cache | 
						|
/******/ 	var installedModules = {}; | 
						|
/******/ | 
						|
/******/ 	// The require function | 
						|
/******/ 	function __webpack_require__(moduleId) { | 
						|
/******/ | 
						|
/******/ 		// Check if module is in cache | 
						|
/******/ 		if(installedModules[moduleId]) { | 
						|
/******/ 			return installedModules[moduleId].exports; | 
						|
/******/ 		} | 
						|
/******/ 		// Create a new module (and put it into the cache) | 
						|
/******/ 		var module = installedModules[moduleId] = { | 
						|
/******/ 			i: moduleId, | 
						|
/******/ 			l: false, | 
						|
/******/ 			exports: {} | 
						|
/******/ 		}; | 
						|
/******/ | 
						|
/******/ 		// Execute the module function | 
						|
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); | 
						|
/******/ | 
						|
/******/ 		// Flag the module as loaded | 
						|
/******/ 		module.l = true; | 
						|
/******/ | 
						|
/******/ 		// Return the exports of the module | 
						|
/******/ 		return module.exports; | 
						|
/******/ 	} | 
						|
/******/ | 
						|
/******/ | 
						|
/******/ 	// expose the modules object (__webpack_modules__) | 
						|
/******/ 	__webpack_require__.m = modules; | 
						|
/******/ | 
						|
/******/ 	// expose the module cache | 
						|
/******/ 	__webpack_require__.c = installedModules; | 
						|
/******/ | 
						|
/******/ 	// define getter function for harmony exports | 
						|
/******/ 	__webpack_require__.d = function(exports, name, getter) { | 
						|
/******/ 		if(!__webpack_require__.o(exports, name)) { | 
						|
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter }); | 
						|
/******/ 		} | 
						|
/******/ 	}; | 
						|
/******/ | 
						|
/******/ 	// define __esModule on exports | 
						|
/******/ 	__webpack_require__.r = function(exports) { | 
						|
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { | 
						|
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); | 
						|
/******/ 		} | 
						|
/******/ 		Object.defineProperty(exports, '__esModule', { value: true }); | 
						|
/******/ 	}; | 
						|
/******/ | 
						|
/******/ 	// create a fake namespace object | 
						|
/******/ 	// mode & 1: value is a module id, require it | 
						|
/******/ 	// mode & 2: merge all properties of value into the ns | 
						|
/******/ 	// mode & 4: return value when already ns object | 
						|
/******/ 	// mode & 8|1: behave like require | 
						|
/******/ 	__webpack_require__.t = function(value, mode) { | 
						|
/******/ 		if(mode & 1) value = __webpack_require__(value); | 
						|
/******/ 		if(mode & 8) return value; | 
						|
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; | 
						|
/******/ 		var ns = Object.create(null); | 
						|
/******/ 		__webpack_require__.r(ns); | 
						|
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value }); | 
						|
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); | 
						|
/******/ 		return ns; | 
						|
/******/ 	}; | 
						|
/******/ | 
						|
/******/ 	// getDefaultExport function for compatibility with non-harmony modules | 
						|
/******/ 	__webpack_require__.n = function(module) { | 
						|
/******/ 		var getter = module && module.__esModule ? | 
						|
/******/ 			function getDefault() { return module['default']; } : | 
						|
/******/ 			function getModuleExports() { return module; }; | 
						|
/******/ 		__webpack_require__.d(getter, 'a', getter); | 
						|
/******/ 		return getter; | 
						|
/******/ 	}; | 
						|
/******/ | 
						|
/******/ 	// Object.prototype.hasOwnProperty.call | 
						|
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; | 
						|
/******/ | 
						|
/******/ 	// __webpack_public_path__ | 
						|
/******/ 	__webpack_require__.p = ""; | 
						|
/******/ | 
						|
/******/ | 
						|
/******/ 	// Load entry module and return exports | 
						|
/******/ 	return __webpack_require__(__webpack_require__.s = "./packages/expect/src/index.ts"); | 
						|
/******/ }) | 
						|
/************************************************************************/ | 
						|
/******/ ({ | 
						|
 | 
						|
/***/ "./node_modules/@babel/code-frame/lib/index.js": | 
						|
/*!*****************************************************!*\ | 
						|
  !*** ./node_modules/@babel/code-frame/lib/index.js ***! | 
						|
  \*****************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(process) { | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.codeFrameColumns = codeFrameColumns; | 
						|
exports.default = _default; | 
						|
 | 
						|
function _highlight() { | 
						|
  var data = _interopRequireWildcard(__webpack_require__(/*! @babel/highlight */ "./node_modules/@babel/highlight/lib/index.js")); | 
						|
 | 
						|
  _highlight = function _highlight() { | 
						|
    return data; | 
						|
  }; | 
						|
 | 
						|
  return data; | 
						|
} | 
						|
 | 
						|
function _interopRequireWildcard(obj) { | 
						|
  if (obj && obj.__esModule) { | 
						|
    return obj; | 
						|
  } else { | 
						|
    var newObj = {}; | 
						|
 | 
						|
    if (obj != null) { | 
						|
      for (var key in obj) { | 
						|
        if (Object.prototype.hasOwnProperty.call(obj, key)) { | 
						|
          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; | 
						|
 | 
						|
          if (desc.get || desc.set) { | 
						|
            Object.defineProperty(newObj, key, desc); | 
						|
          } else { | 
						|
            newObj[key] = obj[key]; | 
						|
          } | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    newObj.default = obj; | 
						|
    return newObj; | 
						|
  } | 
						|
} | 
						|
 | 
						|
var deprecationWarningShown = false; | 
						|
 | 
						|
function getDefs(chalk) { | 
						|
  return { | 
						|
    gutter: chalk.grey, | 
						|
    marker: chalk.red.bold, | 
						|
    message: chalk.red.bold | 
						|
  }; | 
						|
} | 
						|
 | 
						|
var NEWLINE = /\r\n|[\n\r\u2028\u2029]/; | 
						|
 | 
						|
function getMarkerLines(loc, source, opts) { | 
						|
  var startLoc = Object.assign({ | 
						|
    column: 0, | 
						|
    line: -1 | 
						|
  }, loc.start); | 
						|
  var endLoc = Object.assign({}, startLoc, loc.end); | 
						|
 | 
						|
  var _ref = opts || {}, | 
						|
      _ref$linesAbove = _ref.linesAbove, | 
						|
      linesAbove = _ref$linesAbove === void 0 ? 2 : _ref$linesAbove, | 
						|
      _ref$linesBelow = _ref.linesBelow, | 
						|
      linesBelow = _ref$linesBelow === void 0 ? 3 : _ref$linesBelow; | 
						|
 | 
						|
  var startLine = startLoc.line; | 
						|
  var startColumn = startLoc.column; | 
						|
  var endLine = endLoc.line; | 
						|
  var endColumn = endLoc.column; | 
						|
  var start = Math.max(startLine - (linesAbove + 1), 0); | 
						|
  var end = Math.min(source.length, endLine + linesBelow); | 
						|
 | 
						|
  if (startLine === -1) { | 
						|
    start = 0; | 
						|
  } | 
						|
 | 
						|
  if (endLine === -1) { | 
						|
    end = source.length; | 
						|
  } | 
						|
 | 
						|
  var lineDiff = endLine - startLine; | 
						|
  var markerLines = {}; | 
						|
 | 
						|
  if (lineDiff) { | 
						|
    for (var i = 0; i <= lineDiff; i++) { | 
						|
      var lineNumber = i + startLine; | 
						|
 | 
						|
      if (!startColumn) { | 
						|
        markerLines[lineNumber] = true; | 
						|
      } else if (i === 0) { | 
						|
        var sourceLength = source[lineNumber - 1].length; | 
						|
        markerLines[lineNumber] = [startColumn, sourceLength - startColumn]; | 
						|
      } else if (i === lineDiff) { | 
						|
        markerLines[lineNumber] = [0, endColumn]; | 
						|
      } else { | 
						|
        var _sourceLength = source[lineNumber - i].length; | 
						|
        markerLines[lineNumber] = [0, _sourceLength]; | 
						|
      } | 
						|
    } | 
						|
  } else { | 
						|
    if (startColumn === endColumn) { | 
						|
      if (startColumn) { | 
						|
        markerLines[startLine] = [startColumn, 0]; | 
						|
      } else { | 
						|
        markerLines[startLine] = true; | 
						|
      } | 
						|
    } else { | 
						|
      markerLines[startLine] = [startColumn, endColumn - startColumn]; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return { | 
						|
    start: start, | 
						|
    end: end, | 
						|
    markerLines: markerLines | 
						|
  }; | 
						|
} | 
						|
 | 
						|
function codeFrameColumns(rawLines, loc) { | 
						|
  var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; | 
						|
  var highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight().shouldHighlight)(opts); | 
						|
  var chalk = (0, _highlight().getChalk)(opts); | 
						|
  var defs = getDefs(chalk); | 
						|
 | 
						|
  var maybeHighlight = function maybeHighlight(chalkFn, string) { | 
						|
    return highlighted ? chalkFn(string) : string; | 
						|
  }; | 
						|
 | 
						|
  if (highlighted) rawLines = (0, _highlight().default)(rawLines, opts); | 
						|
  var lines = rawLines.split(NEWLINE); | 
						|
 | 
						|
  var _getMarkerLines = getMarkerLines(loc, lines, opts), | 
						|
      start = _getMarkerLines.start, | 
						|
      end = _getMarkerLines.end, | 
						|
      markerLines = _getMarkerLines.markerLines; | 
						|
 | 
						|
  var hasColumns = loc.start && typeof loc.start.column === "number"; | 
						|
  var numberMaxWidth = String(end).length; | 
						|
  var frame = lines.slice(start, end).map(function (line, index) { | 
						|
    var number = start + 1 + index; | 
						|
    var paddedNumber = " ".concat(number).slice(-numberMaxWidth); | 
						|
    var gutter = " ".concat(paddedNumber, " | "); | 
						|
    var hasMarker = markerLines[number]; | 
						|
    var lastMarkerLine = !markerLines[number + 1]; | 
						|
 | 
						|
    if (hasMarker) { | 
						|
      var markerLine = ""; | 
						|
 | 
						|
      if (Array.isArray(hasMarker)) { | 
						|
        var markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " "); | 
						|
        var numberOfMarkers = hasMarker[1] || 1; | 
						|
        markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join(""); | 
						|
 | 
						|
        if (lastMarkerLine && opts.message) { | 
						|
          markerLine += " " + maybeHighlight(defs.message, opts.message); | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line, markerLine].join(""); | 
						|
    } else { | 
						|
      return " ".concat(maybeHighlight(defs.gutter, gutter)).concat(line); | 
						|
    } | 
						|
  }).join("\n"); | 
						|
 | 
						|
  if (opts.message && !hasColumns) { | 
						|
    frame = "".concat(" ".repeat(numberMaxWidth + 1)).concat(opts.message, "\n").concat(frame); | 
						|
  } | 
						|
 | 
						|
  if (highlighted) { | 
						|
    return chalk.reset(frame); | 
						|
  } else { | 
						|
    return frame; | 
						|
  } | 
						|
} | 
						|
 | 
						|
function _default(rawLines, lineNumber, colNumber) { | 
						|
  var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; | 
						|
 | 
						|
  if (!deprecationWarningShown) { | 
						|
    deprecationWarningShown = true; | 
						|
    var message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."; | 
						|
 | 
						|
    if (process.emitWarning) { | 
						|
      process.emitWarning(message, "DeprecationWarning"); | 
						|
    } else { | 
						|
      var deprecationError = new Error(message); | 
						|
      deprecationError.name = "DeprecationWarning"; | 
						|
      console.warn(new Error(message)); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  colNumber = Math.max(colNumber, 0); | 
						|
  var location = { | 
						|
    start: { | 
						|
      column: colNumber, | 
						|
      line: lineNumber | 
						|
    } | 
						|
  }; | 
						|
  return codeFrameColumns(rawLines, location, opts); | 
						|
} | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../process/browser.js */ "./node_modules/process/browser.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/@babel/highlight/lib/index.js": | 
						|
/*!****************************************************!*\ | 
						|
  !*** ./node_modules/@babel/highlight/lib/index.js ***! | 
						|
  \****************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } | 
						|
 | 
						|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } | 
						|
 | 
						|
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | 
						|
 | 
						|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.shouldHighlight = shouldHighlight; | 
						|
exports.getChalk = getChalk; | 
						|
exports.default = highlight; | 
						|
 | 
						|
function _jsTokens() { | 
						|
  var data = _interopRequireWildcard(__webpack_require__(/*! js-tokens */ "./node_modules/js-tokens/index.js")); | 
						|
 | 
						|
  _jsTokens = function _jsTokens() { | 
						|
    return data; | 
						|
  }; | 
						|
 | 
						|
  return data; | 
						|
} | 
						|
 | 
						|
function _esutils() { | 
						|
  var data = _interopRequireDefault(__webpack_require__(/*! esutils */ "./node_modules/esutils/lib/utils.js")); | 
						|
 | 
						|
  _esutils = function _esutils() { | 
						|
    return data; | 
						|
  }; | 
						|
 | 
						|
  return data; | 
						|
} | 
						|
 | 
						|
function _chalk() { | 
						|
  var data = _interopRequireDefault(__webpack_require__(/*! chalk */ "./packages/expect/build/fakeChalk.js")); | 
						|
 | 
						|
  _chalk = function _chalk() { | 
						|
    return data; | 
						|
  }; | 
						|
 | 
						|
  return data; | 
						|
} | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
 | 
						|
function _interopRequireWildcard(obj) { | 
						|
  if (obj && obj.__esModule) { | 
						|
    return obj; | 
						|
  } else { | 
						|
    var newObj = {}; | 
						|
 | 
						|
    if (obj != null) { | 
						|
      for (var key in obj) { | 
						|
        if (Object.prototype.hasOwnProperty.call(obj, key)) { | 
						|
          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; | 
						|
 | 
						|
          if (desc.get || desc.set) { | 
						|
            Object.defineProperty(newObj, key, desc); | 
						|
          } else { | 
						|
            newObj[key] = obj[key]; | 
						|
          } | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    newObj.default = obj; | 
						|
    return newObj; | 
						|
  } | 
						|
} | 
						|
 | 
						|
function getDefs(chalk) { | 
						|
  return { | 
						|
    keyword: chalk.cyan, | 
						|
    capitalized: chalk.yellow, | 
						|
    jsx_tag: chalk.yellow, | 
						|
    punctuator: chalk.yellow, | 
						|
    number: chalk.magenta, | 
						|
    string: chalk.green, | 
						|
    regex: chalk.magenta, | 
						|
    comment: chalk.grey, | 
						|
    invalid: chalk.white.bgRed.bold | 
						|
  }; | 
						|
} | 
						|
 | 
						|
var NEWLINE = /\r\n|[\n\r\u2028\u2029]/; | 
						|
var JSX_TAG = /^[a-z][\w-]*$/i; | 
						|
var BRACKET = /^[()[\]{}]$/; | 
						|
 | 
						|
function getTokenType(match) { | 
						|
  var _match$slice = match.slice(-2), | 
						|
      _match$slice2 = _slicedToArray(_match$slice, 2), | 
						|
      offset = _match$slice2[0], | 
						|
      text = _match$slice2[1]; | 
						|
 | 
						|
  var token = (0, _jsTokens().matchToToken)(match); | 
						|
 | 
						|
  if (token.type === "name") { | 
						|
    if (_esutils().default.keyword.isReservedWordES6(token.value)) { | 
						|
      return "keyword"; | 
						|
    } | 
						|
 | 
						|
    if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "</")) { | 
						|
      return "jsx_tag"; | 
						|
    } | 
						|
 | 
						|
    if (token.value[0] !== token.value[0].toLowerCase()) { | 
						|
      return "capitalized"; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (token.type === "punctuator" && BRACKET.test(token.value)) { | 
						|
    return "bracket"; | 
						|
  } | 
						|
 | 
						|
  if (token.type === "invalid" && (token.value === "@" || token.value === "#")) { | 
						|
    return "punctuator"; | 
						|
  } | 
						|
 | 
						|
  return token.type; | 
						|
} | 
						|
 | 
						|
function highlightTokens(defs, text) { | 
						|
  return text.replace(_jsTokens().default, function () { | 
						|
    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { | 
						|
      args[_key] = arguments[_key]; | 
						|
    } | 
						|
 | 
						|
    var type = getTokenType(args); | 
						|
    var colorize = defs[type]; | 
						|
 | 
						|
    if (colorize) { | 
						|
      return args[0].split(NEWLINE).map(function (str) { | 
						|
        return colorize(str); | 
						|
      }).join("\n"); | 
						|
    } else { | 
						|
      return args[0]; | 
						|
    } | 
						|
  }); | 
						|
} | 
						|
 | 
						|
function shouldHighlight(options) { | 
						|
  return _chalk().default.supportsColor || options.forceColor; | 
						|
} | 
						|
 | 
						|
function getChalk(options) { | 
						|
  var chalk = _chalk().default; | 
						|
 | 
						|
  if (options.forceColor) { | 
						|
    chalk = new (_chalk().default.constructor)({ | 
						|
      enabled: true, | 
						|
      level: 1 | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  return chalk; | 
						|
} | 
						|
 | 
						|
function highlight(code) { | 
						|
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | 
						|
 | 
						|
  if (shouldHighlight(options)) { | 
						|
    var chalk = getChalk(options); | 
						|
    var defs = getDefs(chalk); | 
						|
    return highlightTokens(defs, code); | 
						|
  } else { | 
						|
    return code; | 
						|
  } | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/ansi-regex/index.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/ansi-regex/index.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
module.exports = function (options) { | 
						|
  options = Object.assign({ | 
						|
    onlyFirst: false | 
						|
  }, options); | 
						|
  var pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'].join('|'); | 
						|
  return new RegExp(pattern, options.onlyFirst ? undefined : 'g'); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/ansi-styles/index.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/ansi-styles/index.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(module) { | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var colorConvert = __webpack_require__(/*! color-convert */ "./node_modules/color-convert/index.js"); | 
						|
 | 
						|
var wrapAnsi16 = function wrapAnsi16(fn, offset) { | 
						|
  return function () { | 
						|
    var code = fn.apply(colorConvert, arguments); | 
						|
    return "\x1B[".concat(code + offset, "m"); | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var wrapAnsi256 = function wrapAnsi256(fn, offset) { | 
						|
  return function () { | 
						|
    var code = fn.apply(colorConvert, arguments); | 
						|
    return "\x1B[".concat(38 + offset, ";5;").concat(code, "m"); | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var wrapAnsi16m = function wrapAnsi16m(fn, offset) { | 
						|
  return function () { | 
						|
    var rgb = fn.apply(colorConvert, arguments); | 
						|
    return "\x1B[".concat(38 + offset, ";2;").concat(rgb[0], ";").concat(rgb[1], ";").concat(rgb[2], "m"); | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
function assembleStyles() { | 
						|
  var codes = new Map(); | 
						|
  var styles = { | 
						|
    modifier: { | 
						|
      reset: [0, 0], | 
						|
      // 21 isn't widely supported and 22 does the same thing | 
						|
      bold: [1, 22], | 
						|
      dim: [2, 22], | 
						|
      italic: [3, 23], | 
						|
      underline: [4, 24], | 
						|
      inverse: [7, 27], | 
						|
      hidden: [8, 28], | 
						|
      strikethrough: [9, 29] | 
						|
    }, | 
						|
    color: { | 
						|
      black: [30, 39], | 
						|
      red: [31, 39], | 
						|
      green: [32, 39], | 
						|
      yellow: [33, 39], | 
						|
      blue: [34, 39], | 
						|
      magenta: [35, 39], | 
						|
      cyan: [36, 39], | 
						|
      white: [37, 39], | 
						|
      gray: [90, 39], | 
						|
      // Bright color | 
						|
      redBright: [91, 39], | 
						|
      greenBright: [92, 39], | 
						|
      yellowBright: [93, 39], | 
						|
      blueBright: [94, 39], | 
						|
      magentaBright: [95, 39], | 
						|
      cyanBright: [96, 39], | 
						|
      whiteBright: [97, 39] | 
						|
    }, | 
						|
    bgColor: { | 
						|
      bgBlack: [40, 49], | 
						|
      bgRed: [41, 49], | 
						|
      bgGreen: [42, 49], | 
						|
      bgYellow: [43, 49], | 
						|
      bgBlue: [44, 49], | 
						|
      bgMagenta: [45, 49], | 
						|
      bgCyan: [46, 49], | 
						|
      bgWhite: [47, 49], | 
						|
      // Bright color | 
						|
      bgBlackBright: [100, 49], | 
						|
      bgRedBright: [101, 49], | 
						|
      bgGreenBright: [102, 49], | 
						|
      bgYellowBright: [103, 49], | 
						|
      bgBlueBright: [104, 49], | 
						|
      bgMagentaBright: [105, 49], | 
						|
      bgCyanBright: [106, 49], | 
						|
      bgWhiteBright: [107, 49] | 
						|
    } | 
						|
  }; // Fix humans | 
						|
 | 
						|
  styles.color.grey = styles.color.gray; | 
						|
 | 
						|
  var _arr = Object.keys(styles); | 
						|
 | 
						|
  for (var _i = 0; _i < _arr.length; _i++) { | 
						|
    var groupName = _arr[_i]; | 
						|
    var group = styles[groupName]; | 
						|
 | 
						|
    var _arr3 = Object.keys(group); | 
						|
 | 
						|
    for (var _i3 = 0; _i3 < _arr3.length; _i3++) { | 
						|
      var styleName = _arr3[_i3]; | 
						|
      var style = group[styleName]; | 
						|
      styles[styleName] = { | 
						|
        open: "\x1B[".concat(style[0], "m"), | 
						|
        close: "\x1B[".concat(style[1], "m") | 
						|
      }; | 
						|
      group[styleName] = styles[styleName]; | 
						|
      codes.set(style[0], style[1]); | 
						|
    } | 
						|
 | 
						|
    Object.defineProperty(styles, groupName, { | 
						|
      value: group, | 
						|
      enumerable: false | 
						|
    }); | 
						|
    Object.defineProperty(styles, 'codes', { | 
						|
      value: codes, | 
						|
      enumerable: false | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  var ansi2ansi = function ansi2ansi(n) { | 
						|
    return n; | 
						|
  }; | 
						|
 | 
						|
  var rgb2rgb = function rgb2rgb(r, g, b) { | 
						|
    return [r, g, b]; | 
						|
  }; | 
						|
 | 
						|
  styles.color.close = "\x1B[39m"; | 
						|
  styles.bgColor.close = "\x1B[49m"; | 
						|
  styles.color.ansi = { | 
						|
    ansi: wrapAnsi16(ansi2ansi, 0) | 
						|
  }; | 
						|
  styles.color.ansi256 = { | 
						|
    ansi256: wrapAnsi256(ansi2ansi, 0) | 
						|
  }; | 
						|
  styles.color.ansi16m = { | 
						|
    rgb: wrapAnsi16m(rgb2rgb, 0) | 
						|
  }; | 
						|
  styles.bgColor.ansi = { | 
						|
    ansi: wrapAnsi16(ansi2ansi, 10) | 
						|
  }; | 
						|
  styles.bgColor.ansi256 = { | 
						|
    ansi256: wrapAnsi256(ansi2ansi, 10) | 
						|
  }; | 
						|
  styles.bgColor.ansi16m = { | 
						|
    rgb: wrapAnsi16m(rgb2rgb, 10) | 
						|
  }; | 
						|
 | 
						|
  var _arr2 = Object.keys(colorConvert); | 
						|
 | 
						|
  for (var _i2 = 0; _i2 < _arr2.length; _i2++) { | 
						|
    var key = _arr2[_i2]; | 
						|
 | 
						|
    if (_typeof(colorConvert[key]) !== 'object') { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    var suite = colorConvert[key]; | 
						|
 | 
						|
    if (key === 'ansi16') { | 
						|
      key = 'ansi'; | 
						|
    } | 
						|
 | 
						|
    if ('ansi16' in suite) { | 
						|
      styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); | 
						|
      styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); | 
						|
    } | 
						|
 | 
						|
    if ('ansi256' in suite) { | 
						|
      styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); | 
						|
      styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); | 
						|
    } | 
						|
 | 
						|
    if ('rgb' in suite) { | 
						|
      styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); | 
						|
      styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return styles; | 
						|
} // Make the export immutable | 
						|
 | 
						|
 | 
						|
Object.defineProperty(module, 'exports', { | 
						|
  enumerable: true, | 
						|
  get: assembleStyles | 
						|
}); | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/arr-diff/index.js": | 
						|
/*!****************************************!*\ | 
						|
  !*** ./node_modules/arr-diff/index.js ***! | 
						|
  \****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * arr-diff <https://github.com/jonschlinkert/arr-diff> | 
						|
 * | 
						|
 * Copyright (c) 2014-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function diff(arr | 
						|
/*, arrays*/ | 
						|
) { | 
						|
  var len = arguments.length; | 
						|
  var idx = 0; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    arr = diffArray(arr, arguments[idx]); | 
						|
  } | 
						|
 | 
						|
  return arr; | 
						|
}; | 
						|
 | 
						|
function diffArray(one, two) { | 
						|
  if (!Array.isArray(two)) { | 
						|
    return one.slice(); | 
						|
  } | 
						|
 | 
						|
  var tlen = two.length; | 
						|
  var olen = one.length; | 
						|
  var idx = -1; | 
						|
  var arr = []; | 
						|
 | 
						|
  while (++idx < olen) { | 
						|
    var ele = one[idx]; | 
						|
    var hasEle = false; | 
						|
 | 
						|
    for (var i = 0; i < tlen; i++) { | 
						|
      var val = two[i]; | 
						|
 | 
						|
      if (ele === val) { | 
						|
        hasEle = true; | 
						|
        break; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    if (hasEle === false) { | 
						|
      arr.push(ele); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return arr; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/arr-flatten/index.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/arr-flatten/index.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * arr-flatten <https://github.com/jonschlinkert/arr-flatten> | 
						|
 * | 
						|
 * Copyright (c) 2014-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function (arr) { | 
						|
  return flat(arr, []); | 
						|
}; | 
						|
 | 
						|
function flat(arr, res) { | 
						|
  var i = 0, | 
						|
      cur; | 
						|
  var len = arr.length; | 
						|
 | 
						|
  for (; i < len; i++) { | 
						|
    cur = arr[i]; | 
						|
    Array.isArray(cur) ? flat(cur, res) : res.push(cur); | 
						|
  } | 
						|
 | 
						|
  return res; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/arr-union/index.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/arr-union/index.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
module.exports = function union(init) { | 
						|
  if (!Array.isArray(init)) { | 
						|
    throw new TypeError('arr-union expects the first argument to be an array.'); | 
						|
  } | 
						|
 | 
						|
  var len = arguments.length; | 
						|
  var i = 0; | 
						|
 | 
						|
  while (++i < len) { | 
						|
    var arg = arguments[i]; | 
						|
    if (!arg) continue; | 
						|
 | 
						|
    if (!Array.isArray(arg)) { | 
						|
      arg = [arg]; | 
						|
    } | 
						|
 | 
						|
    for (var j = 0; j < arg.length; j++) { | 
						|
      var ele = arg[j]; | 
						|
 | 
						|
      if (init.indexOf(ele) >= 0) { | 
						|
        continue; | 
						|
      } | 
						|
 | 
						|
      init.push(ele); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return init; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/array-unique/index.js": | 
						|
/*!********************************************!*\ | 
						|
  !*** ./node_modules/array-unique/index.js ***! | 
						|
  \********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * array-unique <https://github.com/jonschlinkert/array-unique> | 
						|
 * | 
						|
 * Copyright (c) 2014-2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function unique(arr) { | 
						|
  if (!Array.isArray(arr)) { | 
						|
    throw new TypeError('array-unique expects an array.'); | 
						|
  } | 
						|
 | 
						|
  var len = arr.length; | 
						|
  var i = -1; | 
						|
 | 
						|
  while (i++ < len) { | 
						|
    var j = i + 1; | 
						|
 | 
						|
    for (; j < arr.length; ++j) { | 
						|
      if (arr[i] === arr[j]) { | 
						|
        arr.splice(j--, 1); | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return arr; | 
						|
}; | 
						|
 | 
						|
module.exports.immutable = function uniqueImmutable(arr) { | 
						|
  if (!Array.isArray(arr)) { | 
						|
    throw new TypeError('array-unique expects an array.'); | 
						|
  } | 
						|
 | 
						|
  var arrLen = arr.length; | 
						|
  var newArr = new Array(arrLen); | 
						|
 | 
						|
  for (var i = 0; i < arrLen; i++) { | 
						|
    newArr[i] = arr[i]; | 
						|
  } | 
						|
 | 
						|
  return module.exports(newArr); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/assign-symbols/index.js": | 
						|
/*!**********************************************!*\ | 
						|
  !*** ./node_modules/assign-symbols/index.js ***! | 
						|
  \**********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * assign-symbols <https://github.com/jonschlinkert/assign-symbols> | 
						|
 * | 
						|
 * Copyright (c) 2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function (receiver, objects) { | 
						|
  if (receiver === null || typeof receiver === 'undefined') { | 
						|
    throw new TypeError('expected first argument to be an object.'); | 
						|
  } | 
						|
 | 
						|
  if (typeof objects === 'undefined' || typeof Symbol === 'undefined') { | 
						|
    return receiver; | 
						|
  } | 
						|
 | 
						|
  if (typeof Object.getOwnPropertySymbols !== 'function') { | 
						|
    return receiver; | 
						|
  } | 
						|
 | 
						|
  var isEnumerable = Object.prototype.propertyIsEnumerable; | 
						|
  var target = Object(receiver); | 
						|
  var len = arguments.length, | 
						|
      i = 0; | 
						|
 | 
						|
  while (++i < len) { | 
						|
    var provider = Object(arguments[i]); | 
						|
    var names = Object.getOwnPropertySymbols(provider); | 
						|
 | 
						|
    for (var j = 0; j < names.length; j++) { | 
						|
      var key = names[j]; | 
						|
 | 
						|
      if (isEnumerable.call(provider, key)) { | 
						|
        target[key] = provider[key]; | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return target; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/base/index.js": | 
						|
/*!************************************!*\ | 
						|
  !*** ./node_modules/base/index.js ***! | 
						|
  \************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var util = __webpack_require__(/*! util */ "./node_modules/util/util.js"); | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/base/node_modules/define-property/index.js"); | 
						|
 | 
						|
var CacheBase = __webpack_require__(/*! cache-base */ "./node_modules/cache-base/index.js"); | 
						|
 | 
						|
var Emitter = __webpack_require__(/*! component-emitter */ "./node_modules/base/node_modules/component-emitter/index.js"); | 
						|
 | 
						|
var isObject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
 | 
						|
var merge = __webpack_require__(/*! mixin-deep */ "./node_modules/mixin-deep/index.js"); | 
						|
 | 
						|
var pascal = __webpack_require__(/*! pascalcase */ "./node_modules/pascalcase/index.js"); | 
						|
 | 
						|
var cu = __webpack_require__(/*! class-utils */ "./node_modules/class-utils/index.js"); | 
						|
/** | 
						|
 * Optionally define a custom `cache` namespace to use. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function namespace(name) { | 
						|
  var Cache = name ? CacheBase.namespace(name) : CacheBase; | 
						|
  var fns = []; | 
						|
  /** | 
						|
   * Create an instance of `Base` with the given `config` and `options`. | 
						|
   * | 
						|
   * ```js | 
						|
   * // initialize with `config` and `options` | 
						|
   * var app = new Base({isApp: true}, {abc: true}); | 
						|
   * app.set('foo', 'bar'); | 
						|
   * | 
						|
   * // values defined with the given `config` object will be on the root of the instance | 
						|
   * console.log(app.baz); //=> undefined | 
						|
   * console.log(app.foo); //=> 'bar' | 
						|
   * // or use `.get` | 
						|
   * console.log(app.get('isApp')); //=> true | 
						|
   * console.log(app.get('foo')); //=> 'bar' | 
						|
   * | 
						|
   * // values defined with the given `options` object will be on `app.options | 
						|
   * console.log(app.options.abc); //=> true | 
						|
   * ``` | 
						|
   * | 
						|
   * @param {Object} `config` If supplied, this object is passed to [cache-base][] to merge onto the the instance upon instantiation. | 
						|
   * @param {Object} `options` If supplied, this object is used to initialize the `base.options` object. | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
  function Base(config, options) { | 
						|
    if (!(this instanceof Base)) { | 
						|
      return new Base(config, options); | 
						|
    } | 
						|
 | 
						|
    Cache.call(this, config); | 
						|
    this.is('base'); | 
						|
    this.initBase(config, options); | 
						|
  } | 
						|
  /** | 
						|
   * Inherit cache-base | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  util.inherits(Base, Cache); | 
						|
  /** | 
						|
   * Add static emitter methods | 
						|
   */ | 
						|
 | 
						|
  Emitter(Base); | 
						|
  /** | 
						|
   * Initialize `Base` defaults with the given `config` object | 
						|
   */ | 
						|
 | 
						|
  Base.prototype.initBase = function (config, options) { | 
						|
    this.options = merge({}, this.options, options); | 
						|
    this.cache = this.cache || {}; | 
						|
    this.define('registered', {}); | 
						|
    if (name) this[name] = {}; // make `app._callbacks` non-enumerable | 
						|
 | 
						|
    this.define('_callbacks', this._callbacks); | 
						|
 | 
						|
    if (isObject(config)) { | 
						|
      this.visit('set', config); | 
						|
    } | 
						|
 | 
						|
    Base.run(this, 'use', fns); | 
						|
  }; | 
						|
  /** | 
						|
   * Set the given `name` on `app._name` and `app.is*` properties. Used for doing | 
						|
   * lookups in plugins. | 
						|
   * | 
						|
   * ```js | 
						|
   * app.is('foo'); | 
						|
   * console.log(app._name); | 
						|
   * //=> 'foo' | 
						|
   * console.log(app.isFoo); | 
						|
   * //=> true | 
						|
   * app.is('bar'); | 
						|
   * console.log(app.isFoo); | 
						|
   * //=> true | 
						|
   * console.log(app.isBar); | 
						|
   * //=> true | 
						|
   * console.log(app._name); | 
						|
   * //=> 'bar' | 
						|
   * ``` | 
						|
   * @name .is | 
						|
   * @param {String} `name` | 
						|
   * @return {Boolean} | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Base.prototype.is = function (name) { | 
						|
    if (typeof name !== 'string') { | 
						|
      throw new TypeError('expected name to be a string'); | 
						|
    } | 
						|
 | 
						|
    this.define('is' + pascal(name), true); | 
						|
    this.define('_name', name); | 
						|
    this.define('_appname', name); | 
						|
    return this; | 
						|
  }; | 
						|
  /** | 
						|
   * Returns true if a plugin has already been registered on an instance. | 
						|
   * | 
						|
   * Plugin implementors are encouraged to use this first thing in a plugin | 
						|
   * to prevent the plugin from being called more than once on the same | 
						|
   * instance. | 
						|
   * | 
						|
   * ```js | 
						|
   * var base = new Base(); | 
						|
   * base.use(function(app) { | 
						|
   *   if (app.isRegistered('myPlugin')) return; | 
						|
   *   // do stuff to `app` | 
						|
   * }); | 
						|
   * | 
						|
   * // to also record the plugin as being registered | 
						|
   * base.use(function(app) { | 
						|
   *   if (app.isRegistered('myPlugin', true)) return; | 
						|
   *   // do stuff to `app` | 
						|
   * }); | 
						|
   * ``` | 
						|
   * @name .isRegistered | 
						|
   * @emits `plugin` Emits the name of the plugin being registered. Useful for unit tests, to ensure plugins are only registered once. | 
						|
   * @param {String} `name` The plugin name. | 
						|
   * @param {Boolean} `register` If the plugin if not already registered, to record it as being registered pass `true` as the second argument. | 
						|
   * @return {Boolean} Returns true if a plugin is already registered. | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Base.prototype.isRegistered = function (name, register) { | 
						|
    if (this.registered.hasOwnProperty(name)) { | 
						|
      return true; | 
						|
    } | 
						|
 | 
						|
    if (register !== false) { | 
						|
      this.registered[name] = true; | 
						|
      this.emit('plugin', name); | 
						|
    } | 
						|
 | 
						|
    return false; | 
						|
  }; | 
						|
  /** | 
						|
   * Define a plugin function to be called immediately upon init. Plugins are chainable | 
						|
   * and expose the following arguments to the plugin function: | 
						|
   * | 
						|
   * - `app`: the current instance of `Base` | 
						|
   * - `base`: the [first ancestor instance](#base) of `Base` | 
						|
   * | 
						|
   * ```js | 
						|
   * var app = new Base() | 
						|
   *   .use(foo) | 
						|
   *   .use(bar) | 
						|
   *   .use(baz) | 
						|
   * ``` | 
						|
   * @name .use | 
						|
   * @param {Function} `fn` plugin function to call | 
						|
   * @return {Object} Returns the item instance for chaining. | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Base.prototype.use = function (fn) { | 
						|
    fn.call(this, this); | 
						|
    return this; | 
						|
  }; | 
						|
  /** | 
						|
   * The `.define` method is used for adding non-enumerable property on the instance. | 
						|
   * Dot-notation is **not supported** with `define`. | 
						|
   * | 
						|
   * ```js | 
						|
   * // arbitrary `render` function using lodash `template` | 
						|
   * app.define('render', function(str, locals) { | 
						|
   *   return _.template(str)(locals); | 
						|
   * }); | 
						|
   * ``` | 
						|
   * @name .define | 
						|
   * @param {String} `key` The name of the property to define. | 
						|
   * @param {any} `value` | 
						|
   * @return {Object} Returns the instance for chaining. | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Base.prototype.define = function (key, val) { | 
						|
    if (isObject(key)) { | 
						|
      return this.visit('define', key); | 
						|
    } | 
						|
 | 
						|
    define(this, key, val); | 
						|
    return this; | 
						|
  }; | 
						|
  /** | 
						|
   * Mix property `key` onto the Base prototype. If base is inherited using | 
						|
   * `Base.extend` this method will be overridden by a new `mixin` method that will | 
						|
   * only add properties to the prototype of the inheriting application. | 
						|
   * | 
						|
   * ```js | 
						|
   * app.mixin('foo', function() { | 
						|
   *   // do stuff | 
						|
   * }); | 
						|
   * ``` | 
						|
   * @name .mixin | 
						|
   * @param {String} `key` | 
						|
   * @param {Object|Array} `val` | 
						|
   * @return {Object} Returns the `base` instance for chaining. | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Base.prototype.mixin = function (key, val) { | 
						|
    Base.prototype[key] = val; | 
						|
    return this; | 
						|
  }; | 
						|
  /** | 
						|
   * Non-enumberable mixin array, used by the static [Base.mixin]() method. | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Base.prototype.mixins = Base.prototype.mixins || []; | 
						|
  /** | 
						|
   * Getter/setter used when creating nested instances of `Base`, for storing a reference | 
						|
   * to the first ancestor instance. This works by setting an instance of `Base` on the `parent` | 
						|
   * property of a "child" instance. The `base` property defaults to the current instance if | 
						|
   * no `parent` property is defined. | 
						|
   * | 
						|
   * ```js | 
						|
   * // create an instance of `Base`, this is our first ("base") instance | 
						|
   * var first = new Base(); | 
						|
   * first.foo = 'bar'; // arbitrary property, to make it easier to see what's happening later | 
						|
   * | 
						|
   * // create another instance | 
						|
   * var second = new Base(); | 
						|
   * // create a reference to the first instance (`first`) | 
						|
   * second.parent = first; | 
						|
   * | 
						|
   * // create another instance | 
						|
   * var third = new Base(); | 
						|
   * // create a reference to the previous instance (`second`) | 
						|
   * // repeat this pattern every time a "child" instance is created | 
						|
   * third.parent = second; | 
						|
   * | 
						|
   * // we can always access the first instance using the `base` property | 
						|
   * console.log(first.base.foo); | 
						|
   * //=> 'bar' | 
						|
   * console.log(second.base.foo); | 
						|
   * //=> 'bar' | 
						|
   * console.log(third.base.foo); | 
						|
   * //=> 'bar' | 
						|
   * // and now you know how to get to third base ;) | 
						|
   * ``` | 
						|
   * @name .base | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
  Object.defineProperty(Base.prototype, 'base', { | 
						|
    configurable: true, | 
						|
    get: function get() { | 
						|
      return this.parent ? this.parent.base : this; | 
						|
    } | 
						|
  }); | 
						|
  /** | 
						|
   * Static method for adding global plugin functions that will | 
						|
   * be added to an instance when created. | 
						|
   * | 
						|
   * ```js | 
						|
   * Base.use(function(app) { | 
						|
   *   app.foo = 'bar'; | 
						|
   * }); | 
						|
   * var app = new Base(); | 
						|
   * console.log(app.foo); | 
						|
   * //=> 'bar' | 
						|
   * ``` | 
						|
   * @name #use | 
						|
   * @param {Function} `fn` Plugin function to use on each instance. | 
						|
   * @return {Object} Returns the `Base` constructor for chaining | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
  define(Base, 'use', function (fn) { | 
						|
    fns.push(fn); | 
						|
    return Base; | 
						|
  }); | 
						|
  /** | 
						|
   * Run an array of functions by passing each function | 
						|
   * to a method on the given object specified by the given property. | 
						|
   * | 
						|
   * @param  {Object} `obj` Object containing method to use. | 
						|
   * @param  {String} `prop` Name of the method on the object to use. | 
						|
   * @param  {Array} `arr` Array of functions to pass to the method. | 
						|
   */ | 
						|
 | 
						|
  define(Base, 'run', function (obj, prop, arr) { | 
						|
    var len = arr.length, | 
						|
        i = 0; | 
						|
 | 
						|
    while (len--) { | 
						|
      obj[prop](arr[i++]); | 
						|
    } | 
						|
 | 
						|
    return Base; | 
						|
  }); | 
						|
  /** | 
						|
   * Static method for inheriting the prototype and static methods of the `Base` class. | 
						|
   * This method greatly simplifies the process of creating inheritance-based applications. | 
						|
   * See [static-extend][] for more details. | 
						|
   * | 
						|
   * ```js | 
						|
   * var extend = cu.extend(Parent); | 
						|
   * Parent.extend(Child); | 
						|
   * | 
						|
   * // optional methods | 
						|
   * Parent.extend(Child, { | 
						|
   *   foo: function() {}, | 
						|
   *   bar: function() {} | 
						|
   * }); | 
						|
   * ``` | 
						|
   * @name #extend | 
						|
   * @param {Function} `Ctor` constructor to extend | 
						|
   * @param {Object} `methods` Optional prototype properties to mix in. | 
						|
   * @return {Object} Returns the `Base` constructor for chaining | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
  define(Base, 'extend', cu.extend(Base, function (Ctor, Parent) { | 
						|
    Ctor.prototype.mixins = Ctor.prototype.mixins || []; | 
						|
    define(Ctor, 'mixin', function (fn) { | 
						|
      var mixin = fn(Ctor.prototype, Ctor); | 
						|
 | 
						|
      if (typeof mixin === 'function') { | 
						|
        Ctor.prototype.mixins.push(mixin); | 
						|
      } | 
						|
 | 
						|
      return Ctor; | 
						|
    }); | 
						|
    define(Ctor, 'mixins', function (Child) { | 
						|
      Base.run(Child, 'mixin', Ctor.prototype.mixins); | 
						|
      return Ctor; | 
						|
    }); | 
						|
 | 
						|
    Ctor.prototype.mixin = function (key, value) { | 
						|
      Ctor.prototype[key] = value; | 
						|
      return this; | 
						|
    }; | 
						|
 | 
						|
    return Base; | 
						|
  })); | 
						|
  /** | 
						|
   * Used for adding methods to the `Base` prototype, and/or to the prototype of child instances. | 
						|
   * When a mixin function returns a function, the returned function is pushed onto the `.mixins` | 
						|
   * array, making it available to be used on inheriting classes whenever `Base.mixins()` is | 
						|
   * called (e.g. `Base.mixins(Child)`). | 
						|
   * | 
						|
   * ```js | 
						|
   * Base.mixin(function(proto) { | 
						|
   *   proto.foo = function(msg) { | 
						|
   *     return 'foo ' + msg; | 
						|
   *   }; | 
						|
   * }); | 
						|
   * ``` | 
						|
   * @name #mixin | 
						|
   * @param {Function} `fn` Function to call | 
						|
   * @return {Object} Returns the `Base` constructor for chaining | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
  define(Base, 'mixin', function (fn) { | 
						|
    var mixin = fn(Base.prototype, Base); | 
						|
 | 
						|
    if (typeof mixin === 'function') { | 
						|
      Base.prototype.mixins.push(mixin); | 
						|
    } | 
						|
 | 
						|
    return Base; | 
						|
  }); | 
						|
  /** | 
						|
   * Static method for running global mixin functions against a child constructor. | 
						|
   * Mixins must be registered before calling this method. | 
						|
   * | 
						|
   * ```js | 
						|
   * Base.extend(Child); | 
						|
   * Base.mixins(Child); | 
						|
   * ``` | 
						|
   * @name #mixins | 
						|
   * @param {Function} `Child` Constructor function of a child class | 
						|
   * @return {Object} Returns the `Base` constructor for chaining | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
  define(Base, 'mixins', function (Child) { | 
						|
    Base.run(Child, 'mixin', Base.prototype.mixins); | 
						|
    return Base; | 
						|
  }); | 
						|
  /** | 
						|
   * Similar to `util.inherit`, but copies all static properties, prototype properties, and | 
						|
   * getters/setters from `Provider` to `Receiver`. See [class-utils][]{#inherit} for more details. | 
						|
   * | 
						|
   * ```js | 
						|
   * Base.inherit(Foo, Bar); | 
						|
   * ``` | 
						|
   * @name #inherit | 
						|
   * @param {Function} `Receiver` Receiving (child) constructor | 
						|
   * @param {Function} `Provider` Providing (parent) constructor | 
						|
   * @return {Object} Returns the `Base` constructor for chaining | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
  define(Base, 'inherit', cu.inherit); | 
						|
  define(Base, 'bubble', cu.bubble); | 
						|
  return Base; | 
						|
} | 
						|
/** | 
						|
 * Expose `Base` with default settings | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = namespace(); | 
						|
/** | 
						|
 * Allow users to define a namespace | 
						|
 */ | 
						|
 | 
						|
module.exports.namespace = namespace; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/base/node_modules/component-emitter/index.js": | 
						|
/*!*******************************************************************!*\ | 
						|
  !*** ./node_modules/base/node_modules/component-emitter/index.js ***! | 
						|
  \*******************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/** | 
						|
 * Expose `Emitter`. | 
						|
 */ | 
						|
if (true) { | 
						|
  module.exports = Emitter; | 
						|
} | 
						|
/** | 
						|
 * Initialize a new `Emitter`. | 
						|
 * | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function Emitter(obj) { | 
						|
  if (obj) return mixin(obj); | 
						|
} | 
						|
 | 
						|
; | 
						|
/** | 
						|
 * Mixin the emitter properties. | 
						|
 * | 
						|
 * @param {Object} obj | 
						|
 * @return {Object} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
function mixin(obj) { | 
						|
  for (var key in Emitter.prototype) { | 
						|
    obj[key] = Emitter.prototype[key]; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
} | 
						|
/** | 
						|
 * Listen on the given `event` with `fn`. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @param {Function} fn | 
						|
 * @return {Emitter} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.on = Emitter.prototype.addEventListener = function (event, fn) { | 
						|
  this._callbacks = this._callbacks || {}; | 
						|
  (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(fn); | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Adds an `event` listener that will be invoked a single | 
						|
 * time then automatically removed. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @param {Function} fn | 
						|
 * @return {Emitter} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.once = function (event, fn) { | 
						|
  function on() { | 
						|
    this.off(event, on); | 
						|
    fn.apply(this, arguments); | 
						|
  } | 
						|
 | 
						|
  on.fn = fn; | 
						|
  this.on(event, on); | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Remove the given callback for `event` or all | 
						|
 * registered callbacks. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @param {Function} fn | 
						|
 * @return {Emitter} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function (event, fn) { | 
						|
  this._callbacks = this._callbacks || {}; // all | 
						|
 | 
						|
  if (0 == arguments.length) { | 
						|
    this._callbacks = {}; | 
						|
    return this; | 
						|
  } // specific event | 
						|
 | 
						|
 | 
						|
  var callbacks = this._callbacks['$' + event]; | 
						|
  if (!callbacks) return this; // remove all handlers | 
						|
 | 
						|
  if (1 == arguments.length) { | 
						|
    delete this._callbacks['$' + event]; | 
						|
    return this; | 
						|
  } // remove specific handler | 
						|
 | 
						|
 | 
						|
  var cb; | 
						|
 | 
						|
  for (var i = 0; i < callbacks.length; i++) { | 
						|
    cb = callbacks[i]; | 
						|
 | 
						|
    if (cb === fn || cb.fn === fn) { | 
						|
      callbacks.splice(i, 1); | 
						|
      break; | 
						|
    } | 
						|
  } // Remove event specific arrays for event types that no | 
						|
  // one is subscribed for to avoid memory leak. | 
						|
 | 
						|
 | 
						|
  if (callbacks.length === 0) { | 
						|
    delete this._callbacks['$' + event]; | 
						|
  } | 
						|
 | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Emit `event` with the given args. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @param {Mixed} ... | 
						|
 * @return {Emitter} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.emit = function (event) { | 
						|
  this._callbacks = this._callbacks || {}; | 
						|
  var args = new Array(arguments.length - 1), | 
						|
      callbacks = this._callbacks['$' + event]; | 
						|
 | 
						|
  for (var i = 1; i < arguments.length; i++) { | 
						|
    args[i - 1] = arguments[i]; | 
						|
  } | 
						|
 | 
						|
  if (callbacks) { | 
						|
    callbacks = callbacks.slice(0); | 
						|
 | 
						|
    for (var i = 0, len = callbacks.length; i < len; ++i) { | 
						|
      callbacks[i].apply(this, args); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Return array of callbacks for `event`. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @return {Array} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.listeners = function (event) { | 
						|
  this._callbacks = this._callbacks || {}; | 
						|
  return this._callbacks['$' + event] || []; | 
						|
}; | 
						|
/** | 
						|
 * Check if this emitter has `event` handlers. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.hasListeners = function (event) { | 
						|
  return !!this.listeners(event).length; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/base/node_modules/define-property/index.js": | 
						|
/*!*****************************************************************!*\ | 
						|
  !*** ./node_modules/base/node_modules/define-property/index.js ***! | 
						|
  \*****************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * define-property <https://github.com/jonschlinkert/define-property> | 
						|
 * | 
						|
 * Copyright (c) 2015, 2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var isDescriptor = __webpack_require__(/*! is-descriptor */ "./node_modules/is-descriptor/index.js"); | 
						|
 | 
						|
module.exports = function defineProperty(obj, prop, val) { | 
						|
  if (_typeof(obj) !== 'object' && typeof obj !== 'function') { | 
						|
    throw new TypeError('expected an object or function.'); | 
						|
  } | 
						|
 | 
						|
  if (typeof prop !== 'string') { | 
						|
    throw new TypeError('expected `prop` to be a string.'); | 
						|
  } | 
						|
 | 
						|
  if (isDescriptor(val) && ('set' in val || 'get' in val)) { | 
						|
    return Object.defineProperty(obj, prop, val); | 
						|
  } | 
						|
 | 
						|
  return Object.defineProperty(obj, prop, { | 
						|
    configurable: true, | 
						|
    enumerable: false, | 
						|
    writable: true, | 
						|
    value: val | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/braces/index.js": | 
						|
/*!**************************************!*\ | 
						|
  !*** ./node_modules/braces/index.js ***! | 
						|
  \**************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
/** | 
						|
 * Module dependencies | 
						|
 */ | 
						|
 | 
						|
var toRegex = __webpack_require__(/*! to-regex */ "./node_modules/to-regex/index.js"); | 
						|
 | 
						|
var unique = __webpack_require__(/*! array-unique */ "./node_modules/array-unique/index.js"); | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/extend-shallow/index.js"); | 
						|
/** | 
						|
 * Local dependencies | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var compilers = __webpack_require__(/*! ./lib/compilers */ "./node_modules/braces/lib/compilers.js"); | 
						|
 | 
						|
var parsers = __webpack_require__(/*! ./lib/parsers */ "./node_modules/braces/lib/parsers.js"); | 
						|
 | 
						|
var Braces = __webpack_require__(/*! ./lib/braces */ "./node_modules/braces/lib/braces.js"); | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./lib/utils */ "./node_modules/braces/lib/utils.js"); | 
						|
 | 
						|
var MAX_LENGTH = 1024 * 64; | 
						|
var cache = {}; | 
						|
/** | 
						|
 * Convert the given `braces` pattern into a regex-compatible string. By default, only one string is generated for every input string. Set `options.expand` to true to return an array of patterns (similar to Bash or minimatch. Before using `options.expand`, it's recommended that you read the [performance notes](#performance)). | 
						|
 * | 
						|
 * ```js | 
						|
 * var braces = require('braces'); | 
						|
 * console.log(braces('{a,b,c}')); | 
						|
 * //=> ['(a|b|c)'] | 
						|
 * | 
						|
 * console.log(braces('{a,b,c}', {expand: true})); | 
						|
 * //=> ['a', 'b', 'c'] | 
						|
 * ``` | 
						|
 * @param {String} `str` | 
						|
 * @param {Object} `options` | 
						|
 * @return {String} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
function braces(pattern, options) { | 
						|
  var key = utils.createKey(String(pattern), options); | 
						|
  var arr = []; | 
						|
  var disabled = options && options.cache === false; | 
						|
 | 
						|
  if (!disabled && cache.hasOwnProperty(key)) { | 
						|
    return cache[key]; | 
						|
  } | 
						|
 | 
						|
  if (Array.isArray(pattern)) { | 
						|
    for (var i = 0; i < pattern.length; i++) { | 
						|
      arr.push.apply(arr, braces.create(pattern[i], options)); | 
						|
    } | 
						|
  } else { | 
						|
    arr = braces.create(pattern, options); | 
						|
  } | 
						|
 | 
						|
  if (options && options.nodupes === true) { | 
						|
    arr = unique(arr); | 
						|
  } | 
						|
 | 
						|
  if (!disabled) { | 
						|
    cache[key] = arr; | 
						|
  } | 
						|
 | 
						|
  return arr; | 
						|
} | 
						|
/** | 
						|
 * Expands a brace pattern into an array. This method is called by the main [braces](#braces) function when `options.expand` is true. Before using this method it's recommended that you read the [performance notes](#performance)) and advantages of using [.optimize](#optimize) instead. | 
						|
 * | 
						|
 * ```js | 
						|
 * var braces = require('braces'); | 
						|
 * console.log(braces.expand('a/{b,c}/d')); | 
						|
 * //=> ['a/b/d', 'a/c/d']; | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Brace pattern | 
						|
 * @param {Object} `options` | 
						|
 * @return {Array} Returns an array of expanded values. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
braces.expand = function (pattern, options) { | 
						|
  return braces.create(pattern, extend({}, options, { | 
						|
    expand: true | 
						|
  })); | 
						|
}; | 
						|
/** | 
						|
 * Expands a brace pattern into a regex-compatible, optimized string. This method is called by the main [braces](#braces) function by default. | 
						|
 * | 
						|
 * ```js | 
						|
 * var braces = require('braces'); | 
						|
 * console.log(braces.expand('a/{b,c}/d')); | 
						|
 * //=> ['a/(b|c)/d'] | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Brace pattern | 
						|
 * @param {Object} `options` | 
						|
 * @return {Array} Returns an array of expanded values. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
braces.optimize = function (pattern, options) { | 
						|
  return braces.create(pattern, options); | 
						|
}; | 
						|
/** | 
						|
 * Processes a brace pattern and returns either an expanded array (if `options.expand` is true), a highly optimized regex-compatible string. This method is called by the main [braces](#braces) function. | 
						|
 * | 
						|
 * ```js | 
						|
 * var braces = require('braces'); | 
						|
 * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}')) | 
						|
 * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)' | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Brace pattern | 
						|
 * @param {Object} `options` | 
						|
 * @return {Array} Returns an array of expanded values. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
braces.create = function (pattern, options) { | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected a string'); | 
						|
  } | 
						|
 | 
						|
  var maxLength = options && options.maxLength || MAX_LENGTH; | 
						|
 | 
						|
  if (pattern.length >= maxLength) { | 
						|
    throw new Error('expected pattern to be less than ' + maxLength + ' characters'); | 
						|
  } | 
						|
 | 
						|
  function create() { | 
						|
    if (pattern === '' || pattern.length < 3) { | 
						|
      return [pattern]; | 
						|
    } | 
						|
 | 
						|
    if (utils.isEmptySets(pattern)) { | 
						|
      return []; | 
						|
    } | 
						|
 | 
						|
    if (utils.isQuotedString(pattern)) { | 
						|
      return [pattern.slice(1, -1)]; | 
						|
    } | 
						|
 | 
						|
    var proto = new Braces(options); | 
						|
    var result = !options || options.expand !== true ? proto.optimize(pattern, options) : proto.expand(pattern, options); // get the generated pattern(s) | 
						|
 | 
						|
    var arr = result.output; // filter out empty strings if specified | 
						|
 | 
						|
    if (options && options.noempty === true) { | 
						|
      arr = arr.filter(Boolean); | 
						|
    } // filter out duplicates if specified | 
						|
 | 
						|
 | 
						|
    if (options && options.nodupes === true) { | 
						|
      arr = unique(arr); | 
						|
    } | 
						|
 | 
						|
    Object.defineProperty(arr, 'result', { | 
						|
      enumerable: false, | 
						|
      value: result | 
						|
    }); | 
						|
    return arr; | 
						|
  } | 
						|
 | 
						|
  return memoize('create', pattern, options, create); | 
						|
}; | 
						|
/** | 
						|
 * Create a regular expression from the given string `pattern`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var braces = require('braces'); | 
						|
 * | 
						|
 * console.log(braces.makeRe('id-{200..300}')); | 
						|
 * //=> /^(?:id-(20[0-9]|2[1-9][0-9]|300))$/ | 
						|
 * ``` | 
						|
 * @param {String} `pattern` The pattern to convert to regex. | 
						|
 * @param {Object} `options` | 
						|
 * @return {RegExp} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
braces.makeRe = function (pattern, options) { | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected a string'); | 
						|
  } | 
						|
 | 
						|
  var maxLength = options && options.maxLength || MAX_LENGTH; | 
						|
 | 
						|
  if (pattern.length >= maxLength) { | 
						|
    throw new Error('expected pattern to be less than ' + maxLength + ' characters'); | 
						|
  } | 
						|
 | 
						|
  function makeRe() { | 
						|
    var arr = braces(pattern, options); | 
						|
    var opts = extend({ | 
						|
      strictErrors: false | 
						|
    }, options); | 
						|
    return toRegex(arr, opts); | 
						|
  } | 
						|
 | 
						|
  return memoize('makeRe', pattern, options, makeRe); | 
						|
}; | 
						|
/** | 
						|
 * Parse the given `str` with the given `options`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var braces = require('braces'); | 
						|
 * var ast = braces.parse('a/{b,c}/d'); | 
						|
 * console.log(ast); | 
						|
 * // { type: 'root', | 
						|
 * //   errors: [], | 
						|
 * //   input: 'a/{b,c}/d', | 
						|
 * //   nodes: | 
						|
 * //    [ { type: 'bos', val: '' }, | 
						|
 * //      { type: 'text', val: 'a/' }, | 
						|
 * //      { type: 'brace', | 
						|
 * //        nodes: | 
						|
 * //         [ { type: 'brace.open', val: '{' }, | 
						|
 * //           { type: 'text', val: 'b,c' }, | 
						|
 * //           { type: 'brace.close', val: '}' } ] }, | 
						|
 * //      { type: 'text', val: '/d' }, | 
						|
 * //      { type: 'eos', val: '' } ] } | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Brace pattern to parse | 
						|
 * @param {Object} `options` | 
						|
 * @return {Object} Returns an AST | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
braces.parse = function (pattern, options) { | 
						|
  var proto = new Braces(options); | 
						|
  return proto.parse(pattern, options); | 
						|
}; | 
						|
/** | 
						|
 * Compile the given `ast` or string with the given `options`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var braces = require('braces'); | 
						|
 * var ast = braces.parse('a/{b,c}/d'); | 
						|
 * console.log(braces.compile(ast)); | 
						|
 * // { options: { source: 'string' }, | 
						|
 * //   state: {}, | 
						|
 * //   compilers: | 
						|
 * //    { eos: [Function], | 
						|
 * //      noop: [Function], | 
						|
 * //      bos: [Function], | 
						|
 * //      brace: [Function], | 
						|
 * //      'brace.open': [Function], | 
						|
 * //      text: [Function], | 
						|
 * //      'brace.close': [Function] }, | 
						|
 * //   output: [ 'a/(b|c)/d' ], | 
						|
 * //   ast: | 
						|
 * //    { ... }, | 
						|
 * //   parsingErrors: [] } | 
						|
 * ``` | 
						|
 * @param {Object|String} `ast` AST from [.parse](#parse). If a string is passed it will be parsed first. | 
						|
 * @param {Object} `options` | 
						|
 * @return {Object} Returns an object that has an `output` property with the compiled string. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
braces.compile = function (ast, options) { | 
						|
  var proto = new Braces(options); | 
						|
  return proto.compile(ast, options); | 
						|
}; | 
						|
/** | 
						|
 * Clear the regex cache. | 
						|
 * | 
						|
 * ```js | 
						|
 * braces.clearCache(); | 
						|
 * ``` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
braces.clearCache = function () { | 
						|
  cache = braces.cache = {}; | 
						|
}; | 
						|
/** | 
						|
 * Memoize a generated regex or function. A unique key is generated | 
						|
 * from the method name, pattern, and user-defined options. Set | 
						|
 * options.memoize to false to disable. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function memoize(type, pattern, options, fn) { | 
						|
  var key = utils.createKey(type + ':' + pattern, options); | 
						|
  var disabled = options && options.cache === false; | 
						|
 | 
						|
  if (disabled) { | 
						|
    braces.clearCache(); | 
						|
    return fn(pattern, options); | 
						|
  } | 
						|
 | 
						|
  if (cache.hasOwnProperty(key)) { | 
						|
    return cache[key]; | 
						|
  } | 
						|
 | 
						|
  var res = fn(pattern, options); | 
						|
  cache[key] = res; | 
						|
  return res; | 
						|
} | 
						|
/** | 
						|
 * Expose `Braces` constructor and methods | 
						|
 * @type {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
braces.Braces = Braces; | 
						|
braces.compilers = compilers; | 
						|
braces.parsers = parsers; | 
						|
braces.cache = cache; | 
						|
/** | 
						|
 * Expose `braces` | 
						|
 * @type {Function} | 
						|
 */ | 
						|
 | 
						|
module.exports = braces; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/braces/lib/braces.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/braces/lib/braces.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/extend-shallow/index.js"); | 
						|
 | 
						|
var Snapdragon = __webpack_require__(/*! snapdragon */ "./node_modules/snapdragon/index.js"); | 
						|
 | 
						|
var compilers = __webpack_require__(/*! ./compilers */ "./node_modules/braces/lib/compilers.js"); | 
						|
 | 
						|
var parsers = __webpack_require__(/*! ./parsers */ "./node_modules/braces/lib/parsers.js"); | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./utils */ "./node_modules/braces/lib/utils.js"); | 
						|
/** | 
						|
 * Customize Snapdragon parser and renderer | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function Braces(options) { | 
						|
  this.options = extend({}, options); | 
						|
} | 
						|
/** | 
						|
 * Initialize braces | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Braces.prototype.init = function (options) { | 
						|
  if (this.isInitialized) return; | 
						|
  this.isInitialized = true; | 
						|
  var opts = utils.createOptions({}, this.options, options); | 
						|
  this.snapdragon = this.options.snapdragon || new Snapdragon(opts); | 
						|
  this.compiler = this.snapdragon.compiler; | 
						|
  this.parser = this.snapdragon.parser; | 
						|
  compilers(this.snapdragon, opts); | 
						|
  parsers(this.snapdragon, opts); | 
						|
  /** | 
						|
   * Call Snapdragon `.parse` method. When AST is returned, we check to | 
						|
   * see if any unclosed braces are left on the stack and, if so, we iterate | 
						|
   * over the stack and correct the AST so that compilers are called in the correct | 
						|
   * order and unbalance braces are properly escaped. | 
						|
   */ | 
						|
 | 
						|
  utils.define(this.snapdragon, 'parse', function (pattern, options) { | 
						|
    var parsed = Snapdragon.prototype.parse.apply(this, arguments); | 
						|
    this.parser.ast.input = pattern; | 
						|
    var stack = this.parser.stack; | 
						|
 | 
						|
    while (stack.length) { | 
						|
      addParent({ | 
						|
        type: 'brace.close', | 
						|
        val: '' | 
						|
      }, stack.pop()); | 
						|
    } | 
						|
 | 
						|
    function addParent(node, parent) { | 
						|
      utils.define(node, 'parent', parent); | 
						|
      parent.nodes.push(node); | 
						|
    } // add non-enumerable parser reference | 
						|
 | 
						|
 | 
						|
    utils.define(parsed, 'parser', this.parser); | 
						|
    return parsed; | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Decorate `.parse` method | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Braces.prototype.parse = function (ast, options) { | 
						|
  if (ast && _typeof(ast) === 'object' && ast.nodes) return ast; | 
						|
  this.init(options); | 
						|
  return this.snapdragon.parse(ast, options); | 
						|
}; | 
						|
/** | 
						|
 * Decorate `.compile` method | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Braces.prototype.compile = function (ast, options) { | 
						|
  if (typeof ast === 'string') { | 
						|
    ast = this.parse(ast, options); | 
						|
  } else { | 
						|
    this.init(options); | 
						|
  } | 
						|
 | 
						|
  return this.snapdragon.compile(ast, options); | 
						|
}; | 
						|
/** | 
						|
 * Expand | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Braces.prototype.expand = function (pattern) { | 
						|
  var ast = this.parse(pattern, { | 
						|
    expand: true | 
						|
  }); | 
						|
  return this.compile(ast, { | 
						|
    expand: true | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Optimize | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Braces.prototype.optimize = function (pattern) { | 
						|
  var ast = this.parse(pattern, { | 
						|
    optimize: true | 
						|
  }); | 
						|
  return this.compile(ast, { | 
						|
    optimize: true | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Expose `Braces` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = Braces; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/braces/lib/compilers.js": | 
						|
/*!**********************************************!*\ | 
						|
  !*** ./node_modules/braces/lib/compilers.js ***! | 
						|
  \**********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./utils */ "./node_modules/braces/lib/utils.js"); | 
						|
 | 
						|
module.exports = function (braces, options) { | 
						|
  braces.compiler | 
						|
  /** | 
						|
   * bos | 
						|
   */ | 
						|
  .set('bos', function () { | 
						|
    if (this.output) return; | 
						|
    this.ast.queue = isEscaped(this.ast) ? [this.ast.val] : []; | 
						|
    this.ast.count = 1; | 
						|
  }) | 
						|
  /** | 
						|
   * Square brackets | 
						|
   */ | 
						|
  .set('bracket', function (node) { | 
						|
    var close = node.close; | 
						|
    var open = !node.escaped ? '[' : '\\['; | 
						|
    var negated = node.negated; | 
						|
    var inner = node.inner; | 
						|
    inner = inner.replace(/\\(?=[\\\w]|$)/g, '\\\\'); | 
						|
 | 
						|
    if (inner === ']-') { | 
						|
      inner = '\\]\\-'; | 
						|
    } | 
						|
 | 
						|
    if (negated && inner.indexOf('.') === -1) { | 
						|
      inner += '.'; | 
						|
    } | 
						|
 | 
						|
    if (negated && inner.indexOf('/') === -1) { | 
						|
      inner += '/'; | 
						|
    } | 
						|
 | 
						|
    var val = open + negated + inner + close; | 
						|
    var queue = node.parent.queue; | 
						|
    var last = utils.arrayify(queue.pop()); | 
						|
    queue.push(utils.join(last, val)); | 
						|
    queue.push.apply(queue, []); | 
						|
  }) | 
						|
  /** | 
						|
   * Brace | 
						|
   */ | 
						|
  .set('brace', function (node) { | 
						|
    node.queue = isEscaped(node) ? [node.val] : []; | 
						|
    node.count = 1; | 
						|
    return this.mapVisit(node.nodes); | 
						|
  }) | 
						|
  /** | 
						|
   * Open | 
						|
   */ | 
						|
  .set('brace.open', function (node) { | 
						|
    node.parent.open = node.val; | 
						|
  }) | 
						|
  /** | 
						|
   * Inner | 
						|
   */ | 
						|
  .set('text', function (node) { | 
						|
    var queue = node.parent.queue; | 
						|
    var escaped = node.escaped; | 
						|
    var segs = [node.val]; | 
						|
 | 
						|
    if (node.optimize === false) { | 
						|
      options = utils.extend({}, options, { | 
						|
        optimize: false | 
						|
      }); | 
						|
    } | 
						|
 | 
						|
    if (node.multiplier > 1) { | 
						|
      node.parent.count *= node.multiplier; | 
						|
    } | 
						|
 | 
						|
    if (options.quantifiers === true && utils.isQuantifier(node.val)) { | 
						|
      escaped = true; | 
						|
    } else if (node.val.length > 1) { | 
						|
      if (isType(node.parent, 'brace') && !isEscaped(node)) { | 
						|
        var expanded = utils.expand(node.val, options); | 
						|
        segs = expanded.segs; | 
						|
 | 
						|
        if (expanded.isOptimized) { | 
						|
          node.parent.isOptimized = true; | 
						|
        } // if nothing was expanded, we probably have a literal brace | 
						|
 | 
						|
 | 
						|
        if (!segs.length) { | 
						|
          var val = expanded.val || node.val; | 
						|
 | 
						|
          if (options.unescape !== false) { | 
						|
            // unescape unexpanded brace sequence/set separators | 
						|
            val = val.replace(/\\([,.])/g, '$1'); // strip quotes | 
						|
 | 
						|
            val = val.replace(/["'`]/g, ''); | 
						|
          } | 
						|
 | 
						|
          segs = [val]; | 
						|
          escaped = true; | 
						|
        } | 
						|
      } | 
						|
    } else if (node.val === ',') { | 
						|
      if (options.expand) { | 
						|
        node.parent.queue.push(['']); | 
						|
        segs = ['']; | 
						|
      } else { | 
						|
        segs = ['|']; | 
						|
      } | 
						|
    } else { | 
						|
      escaped = true; | 
						|
    } | 
						|
 | 
						|
    if (escaped && isType(node.parent, 'brace')) { | 
						|
      if (node.parent.nodes.length <= 4 && node.parent.count === 1) { | 
						|
        node.parent.escaped = true; | 
						|
      } else if (node.parent.length <= 3) { | 
						|
        node.parent.escaped = true; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    if (!hasQueue(node.parent)) { | 
						|
      node.parent.queue = segs; | 
						|
      return; | 
						|
    } | 
						|
 | 
						|
    var last = utils.arrayify(queue.pop()); | 
						|
 | 
						|
    if (node.parent.count > 1 && options.expand) { | 
						|
      last = multiply(last, node.parent.count); | 
						|
      node.parent.count = 1; | 
						|
    } | 
						|
 | 
						|
    queue.push(utils.join(utils.flatten(last), segs.shift())); | 
						|
    queue.push.apply(queue, segs); | 
						|
  }) | 
						|
  /** | 
						|
   * Close | 
						|
   */ | 
						|
  .set('brace.close', function (node) { | 
						|
    var queue = node.parent.queue; | 
						|
    var prev = node.parent.parent; | 
						|
    var last = prev.queue.pop(); | 
						|
    var open = node.parent.open; | 
						|
    var close = node.val; | 
						|
 | 
						|
    if (open && close && isOptimized(node, options)) { | 
						|
      open = '('; | 
						|
      close = ')'; | 
						|
    } // if a close brace exists, and the previous segment is one character | 
						|
    // don't wrap the result in braces or parens | 
						|
 | 
						|
 | 
						|
    var ele = utils.last(queue); | 
						|
 | 
						|
    if (node.parent.count > 1 && options.expand) { | 
						|
      ele = multiply(queue.pop(), node.parent.count); | 
						|
      node.parent.count = 1; | 
						|
      queue.push(ele); | 
						|
    } | 
						|
 | 
						|
    if (close && typeof ele === 'string' && ele.length === 1) { | 
						|
      open = ''; | 
						|
      close = ''; | 
						|
    } | 
						|
 | 
						|
    if ((isLiteralBrace(node, options) || noInner(node)) && !node.parent.hasEmpty) { | 
						|
      queue.push(utils.join(open, queue.pop() || '')); | 
						|
      queue = utils.flatten(utils.join(queue, close)); | 
						|
    } | 
						|
 | 
						|
    if (typeof last === 'undefined') { | 
						|
      prev.queue = [queue]; | 
						|
    } else { | 
						|
      prev.queue.push(utils.flatten(utils.join(last, queue))); | 
						|
    } | 
						|
  }) | 
						|
  /** | 
						|
   * eos | 
						|
   */ | 
						|
  .set('eos', function (node) { | 
						|
    if (this.input) return; | 
						|
 | 
						|
    if (options.optimize !== false) { | 
						|
      this.output = utils.last(utils.flatten(this.ast.queue)); | 
						|
    } else if (Array.isArray(utils.last(this.ast.queue))) { | 
						|
      this.output = utils.flatten(this.ast.queue.pop()); | 
						|
    } else { | 
						|
      this.output = utils.flatten(this.ast.queue); | 
						|
    } | 
						|
 | 
						|
    if (node.parent.count > 1 && options.expand) { | 
						|
      this.output = multiply(this.output, node.parent.count); | 
						|
    } | 
						|
 | 
						|
    this.output = utils.arrayify(this.output); | 
						|
    this.ast.queue = []; | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Multiply the segments in the current brace level | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function multiply(queue, n, options) { | 
						|
  return utils.flatten(utils.repeat(utils.arrayify(queue), n)); | 
						|
} | 
						|
/** | 
						|
 * Return true if `node` is escaped | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isEscaped(node) { | 
						|
  return node.escaped === true; | 
						|
} | 
						|
/** | 
						|
 * Returns true if regex parens should be used for sets. If the parent `type` | 
						|
 * is not `brace`, then we're on a root node, which means we should never | 
						|
 * expand segments and open/close braces should be `{}` (since this indicates | 
						|
 * a brace is missing from the set) | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isOptimized(node, options) { | 
						|
  if (node.parent.isOptimized) return true; | 
						|
  return isType(node.parent, 'brace') && !isEscaped(node.parent) && options.expand !== true; | 
						|
} | 
						|
/** | 
						|
 * Returns true if the value in `node` should be wrapped in a literal brace. | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isLiteralBrace(node, options) { | 
						|
  return isEscaped(node.parent) || options.optimize !== false; | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given `node` does not have an inner value. | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function noInner(node, type) { | 
						|
  if (node.parent.queue.length === 1) { | 
						|
    return true; | 
						|
  } | 
						|
 | 
						|
  var nodes = node.parent.nodes; | 
						|
  return nodes.length === 3 && isType(nodes[0], 'brace.open') && !isType(nodes[1], 'text') && isType(nodes[2], 'brace.close'); | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given `node` is the given `type` | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isType(node, type) { | 
						|
  return typeof node !== 'undefined' && node.type === type; | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given `node` has a non-empty queue. | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function hasQueue(node) { | 
						|
  return Array.isArray(node.queue) && node.queue.length; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/braces/lib/parsers.js": | 
						|
/*!********************************************!*\ | 
						|
  !*** ./node_modules/braces/lib/parsers.js ***! | 
						|
  \********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var Node = __webpack_require__(/*! snapdragon-node */ "./node_modules/snapdragon-node/index.js"); | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./utils */ "./node_modules/braces/lib/utils.js"); | 
						|
/** | 
						|
 * Braces parsers | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function (braces, options) { | 
						|
  braces.parser.set('bos', function () { | 
						|
    if (!this.parsed) { | 
						|
      this.ast = this.nodes[0] = new Node(this.ast); | 
						|
    } | 
						|
  }) | 
						|
  /** | 
						|
   * Character parsers | 
						|
   */ | 
						|
  .set('escape', function () { | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^(?:\\(.)|\$\{)/); | 
						|
    if (!m) return; | 
						|
    var prev = this.prev(); | 
						|
    var last = utils.last(prev.nodes); | 
						|
    var node = pos(new Node({ | 
						|
      type: 'text', | 
						|
      multiplier: 1, | 
						|
      val: m[0] | 
						|
    })); | 
						|
 | 
						|
    if (node.val === '\\\\') { | 
						|
      return node; | 
						|
    } | 
						|
 | 
						|
    if (node.val === '${') { | 
						|
      var str = this.input; | 
						|
      var idx = -1; | 
						|
      var ch; | 
						|
 | 
						|
      while (ch = str[++idx]) { | 
						|
        this.consume(1); | 
						|
        node.val += ch; | 
						|
 | 
						|
        if (ch === '\\') { | 
						|
          node.val += str[++idx]; | 
						|
          continue; | 
						|
        } | 
						|
 | 
						|
        if (ch === '}') { | 
						|
          break; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    if (this.options.unescape !== false) { | 
						|
      node.val = node.val.replace(/\\([{}])/g, '$1'); | 
						|
    } | 
						|
 | 
						|
    if (last.val === '"' && this.input.charAt(0) === '"') { | 
						|
      last.val = node.val; | 
						|
      this.consume(1); | 
						|
      return; | 
						|
    } | 
						|
 | 
						|
    return concatNodes.call(this, pos, node, prev, options); | 
						|
  }) | 
						|
  /** | 
						|
   * Brackets: "[...]" (basic, this is overridden by | 
						|
   * other parsers in more advanced implementations) | 
						|
   */ | 
						|
  .set('bracket', function () { | 
						|
    var isInside = this.isInside('brace'); | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^(?:\[([!^]?)([^\]]{2,}|\]-)(\]|[^*+?]+)|\[)/); | 
						|
    if (!m) return; | 
						|
    var prev = this.prev(); | 
						|
    var val = m[0]; | 
						|
    var negated = m[1] ? '^' : ''; | 
						|
    var inner = m[2] || ''; | 
						|
    var close = m[3] || ''; | 
						|
 | 
						|
    if (isInside && prev.type === 'brace') { | 
						|
      prev.text = prev.text || ''; | 
						|
      prev.text += val; | 
						|
    } | 
						|
 | 
						|
    var esc = this.input.slice(0, 2); | 
						|
 | 
						|
    if (inner === '' && esc === '\\]') { | 
						|
      inner += esc; | 
						|
      this.consume(2); | 
						|
      var str = this.input; | 
						|
      var idx = -1; | 
						|
      var ch; | 
						|
 | 
						|
      while (ch = str[++idx]) { | 
						|
        this.consume(1); | 
						|
 | 
						|
        if (ch === ']') { | 
						|
          close = ch; | 
						|
          break; | 
						|
        } | 
						|
 | 
						|
        inner += ch; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return pos(new Node({ | 
						|
      type: 'bracket', | 
						|
      val: val, | 
						|
      escaped: close !== ']', | 
						|
      negated: negated, | 
						|
      inner: inner, | 
						|
      close: close | 
						|
    })); | 
						|
  }) | 
						|
  /** | 
						|
   * Empty braces (we capture these early to | 
						|
   * speed up processing in the compiler) | 
						|
   */ | 
						|
  .set('multiplier', function () { | 
						|
    var isInside = this.isInside('brace'); | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\{((?:,|\{,+\})+)\}/); | 
						|
    if (!m) return; | 
						|
    this.multiplier = true; | 
						|
    var prev = this.prev(); | 
						|
    var val = m[0]; | 
						|
 | 
						|
    if (isInside && prev.type === 'brace') { | 
						|
      prev.text = prev.text || ''; | 
						|
      prev.text += val; | 
						|
    } | 
						|
 | 
						|
    var node = pos(new Node({ | 
						|
      type: 'text', | 
						|
      multiplier: 1, | 
						|
      match: m, | 
						|
      val: val | 
						|
    })); | 
						|
    return concatNodes.call(this, pos, node, prev, options); | 
						|
  }) | 
						|
  /** | 
						|
   * Open | 
						|
   */ | 
						|
  .set('brace.open', function () { | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\{(?!(?:[^\\}]?|,+)\})/); | 
						|
    if (!m) return; | 
						|
    var prev = this.prev(); | 
						|
    var last = utils.last(prev.nodes); // if the last parsed character was an extglob character | 
						|
    // we need to _not optimize_ the brace pattern because | 
						|
    // it might be mistaken for an extglob by a downstream parser | 
						|
 | 
						|
    if (last && last.val && isExtglobChar(last.val.slice(-1))) { | 
						|
      last.optimize = false; | 
						|
    } | 
						|
 | 
						|
    var open = pos(new Node({ | 
						|
      type: 'brace.open', | 
						|
      val: m[0] | 
						|
    })); | 
						|
    var node = pos(new Node({ | 
						|
      type: 'brace', | 
						|
      nodes: [] | 
						|
    })); | 
						|
    node.push(open); | 
						|
    prev.push(node); | 
						|
    this.push('brace', node); | 
						|
  }) | 
						|
  /** | 
						|
   * Close | 
						|
   */ | 
						|
  .set('brace.close', function () { | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\}/); | 
						|
    if (!m || !m[0]) return; | 
						|
    var brace = this.pop('brace'); | 
						|
    var node = pos(new Node({ | 
						|
      type: 'brace.close', | 
						|
      val: m[0] | 
						|
    })); | 
						|
 | 
						|
    if (!this.isType(brace, 'brace')) { | 
						|
      if (this.options.strict) { | 
						|
        throw new Error('missing opening "{"'); | 
						|
      } | 
						|
 | 
						|
      node.type = 'text'; | 
						|
      node.multiplier = 0; | 
						|
      node.escaped = true; | 
						|
      return node; | 
						|
    } | 
						|
 | 
						|
    var prev = this.prev(); | 
						|
    var last = utils.last(prev.nodes); | 
						|
 | 
						|
    if (last.text) { | 
						|
      var lastNode = utils.last(last.nodes); | 
						|
 | 
						|
      if (lastNode.val === ')' && /[!@*?+]\(/.test(last.text)) { | 
						|
        var open = last.nodes[0]; | 
						|
        var text = last.nodes[1]; | 
						|
 | 
						|
        if (open.type === 'brace.open' && text && text.type === 'text') { | 
						|
          text.optimize = false; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    if (brace.nodes.length > 2) { | 
						|
      var first = brace.nodes[1]; | 
						|
 | 
						|
      if (first.type === 'text' && first.val === ',') { | 
						|
        brace.nodes.splice(1, 1); | 
						|
        brace.nodes.push(first); | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    brace.push(node); | 
						|
  }) | 
						|
  /** | 
						|
   * Capture boundary characters | 
						|
   */ | 
						|
  .set('boundary', function () { | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^[$^](?!\{)/); | 
						|
    if (!m) return; | 
						|
    return pos(new Node({ | 
						|
      type: 'text', | 
						|
      val: m[0] | 
						|
    })); | 
						|
  }) | 
						|
  /** | 
						|
   * One or zero, non-comma characters wrapped in braces | 
						|
   */ | 
						|
  .set('nobrace', function () { | 
						|
    var isInside = this.isInside('brace'); | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\{[^,]?\}/); | 
						|
    if (!m) return; | 
						|
    var prev = this.prev(); | 
						|
    var val = m[0]; | 
						|
 | 
						|
    if (isInside && prev.type === 'brace') { | 
						|
      prev.text = prev.text || ''; | 
						|
      prev.text += val; | 
						|
    } | 
						|
 | 
						|
    return pos(new Node({ | 
						|
      type: 'text', | 
						|
      multiplier: 0, | 
						|
      val: val | 
						|
    })); | 
						|
  }) | 
						|
  /** | 
						|
   * Text | 
						|
   */ | 
						|
  .set('text', function () { | 
						|
    var isInside = this.isInside('brace'); | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^((?!\\)[^${}[\]])+/); | 
						|
    if (!m) return; | 
						|
    var prev = this.prev(); | 
						|
    var val = m[0]; | 
						|
 | 
						|
    if (isInside && prev.type === 'brace') { | 
						|
      prev.text = prev.text || ''; | 
						|
      prev.text += val; | 
						|
    } | 
						|
 | 
						|
    var node = pos(new Node({ | 
						|
      type: 'text', | 
						|
      multiplier: 1, | 
						|
      val: val | 
						|
    })); | 
						|
    return concatNodes.call(this, pos, node, prev, options); | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the character is an extglob character. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isExtglobChar(ch) { | 
						|
  return ch === '!' || ch === '@' || ch === '*' || ch === '?' || ch === '+'; | 
						|
} | 
						|
/** | 
						|
 * Combine text nodes, and calculate empty sets (`{,,}`) | 
						|
 * @param {Function} `pos` Function to calculate node position | 
						|
 * @param {Object} `node` AST node | 
						|
 * @return {Object} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function concatNodes(pos, node, parent, options) { | 
						|
  node.orig = node.val; | 
						|
  var prev = this.prev(); | 
						|
  var last = utils.last(prev.nodes); | 
						|
  var isEscaped = false; | 
						|
 | 
						|
  if (node.val.length > 1) { | 
						|
    var a = node.val.charAt(0); | 
						|
    var b = node.val.slice(-1); | 
						|
    isEscaped = a === '"' && b === '"' || a === "'" && b === "'" || a === '`' && b === '`'; | 
						|
  } | 
						|
 | 
						|
  if (isEscaped && options.unescape !== false) { | 
						|
    node.val = node.val.slice(1, node.val.length - 1); | 
						|
    node.escaped = true; | 
						|
  } | 
						|
 | 
						|
  if (node.match) { | 
						|
    var match = node.match[1]; | 
						|
 | 
						|
    if (!match || match.indexOf('}') === -1) { | 
						|
      match = node.match[0]; | 
						|
    } // replace each set with a single "," | 
						|
 | 
						|
 | 
						|
    var val = match.replace(/\{/g, ',').replace(/\}/g, ''); | 
						|
    node.multiplier *= val.length; | 
						|
    node.val = ''; | 
						|
  } | 
						|
 | 
						|
  var simpleText = last.type === 'text' && last.multiplier === 1 && node.multiplier === 1 && node.val; | 
						|
 | 
						|
  if (simpleText) { | 
						|
    last.val += node.val; | 
						|
    return; | 
						|
  } | 
						|
 | 
						|
  prev.push(node); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/braces/lib/utils.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/braces/lib/utils.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var splitString = __webpack_require__(/*! split-string */ "./node_modules/split-string/index.js"); | 
						|
 | 
						|
var utils = module.exports; | 
						|
/** | 
						|
 * Module dependencies | 
						|
 */ | 
						|
 | 
						|
utils.extend = __webpack_require__(/*! extend-shallow */ "./node_modules/extend-shallow/index.js"); | 
						|
utils.flatten = __webpack_require__(/*! arr-flatten */ "./node_modules/arr-flatten/index.js"); | 
						|
utils.isObject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
utils.fillRange = __webpack_require__(/*! fill-range */ "./node_modules/fill-range/index.js"); | 
						|
utils.repeat = __webpack_require__(/*! repeat-element */ "./node_modules/repeat-element/index.js"); | 
						|
utils.unique = __webpack_require__(/*! array-unique */ "./node_modules/array-unique/index.js"); | 
						|
 | 
						|
utils.define = function (obj, key, val) { | 
						|
  Object.defineProperty(obj, key, { | 
						|
    writable: true, | 
						|
    configurable: true, | 
						|
    enumerable: false, | 
						|
    value: val | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given string contains only empty brace sets. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isEmptySets = function (str) { | 
						|
  return /^(?:\{,\})+$/.test(str); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given string contains only empty brace sets. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isQuotedString = function (str) { | 
						|
  var open = str.charAt(0); | 
						|
 | 
						|
  if (open === '\'' || open === '"' || open === '`') { | 
						|
    return str.slice(-1) === open; | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; | 
						|
/** | 
						|
 * Create the key to use for memoization. The unique key is generated | 
						|
 * by iterating over the options and concatenating key-value pairs | 
						|
 * to the pattern string. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.createKey = function (pattern, options) { | 
						|
  var id = pattern; | 
						|
 | 
						|
  if (typeof options === 'undefined') { | 
						|
    return id; | 
						|
  } | 
						|
 | 
						|
  var keys = Object.keys(options); | 
						|
 | 
						|
  for (var i = 0; i < keys.length; i++) { | 
						|
    var key = keys[i]; | 
						|
    id += ';' + key + '=' + String(options[key]); | 
						|
  } | 
						|
 | 
						|
  return id; | 
						|
}; | 
						|
/** | 
						|
 * Normalize options | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.createOptions = function (options) { | 
						|
  var opts = utils.extend.apply(null, arguments); | 
						|
 | 
						|
  if (typeof opts.expand === 'boolean') { | 
						|
    opts.optimize = !opts.expand; | 
						|
  } | 
						|
 | 
						|
  if (typeof opts.optimize === 'boolean') { | 
						|
    opts.expand = !opts.optimize; | 
						|
  } | 
						|
 | 
						|
  if (opts.optimize === true) { | 
						|
    opts.makeRe = true; | 
						|
  } | 
						|
 | 
						|
  return opts; | 
						|
}; | 
						|
/** | 
						|
 * Join patterns in `a` to patterns in `b` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.join = function (a, b, options) { | 
						|
  options = options || {}; | 
						|
  a = utils.arrayify(a); | 
						|
  b = utils.arrayify(b); | 
						|
  if (!a.length) return b; | 
						|
  if (!b.length) return a; | 
						|
  var len = a.length; | 
						|
  var idx = -1; | 
						|
  var arr = []; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var val = a[idx]; | 
						|
 | 
						|
    if (Array.isArray(val)) { | 
						|
      for (var i = 0; i < val.length; i++) { | 
						|
        val[i] = utils.join(val[i], b, options); | 
						|
      } | 
						|
 | 
						|
      arr.push(val); | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    for (var j = 0; j < b.length; j++) { | 
						|
      var bval = b[j]; | 
						|
 | 
						|
      if (Array.isArray(bval)) { | 
						|
        arr.push(utils.join(val, bval, options)); | 
						|
      } else { | 
						|
        arr.push(val + bval); | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return arr; | 
						|
}; | 
						|
/** | 
						|
 * Split the given string on `,` if not escaped. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.split = function (str, options) { | 
						|
  var opts = utils.extend({ | 
						|
    sep: ',' | 
						|
  }, options); | 
						|
 | 
						|
  if (typeof opts.keepQuotes !== 'boolean') { | 
						|
    opts.keepQuotes = true; | 
						|
  } | 
						|
 | 
						|
  if (opts.unescape === false) { | 
						|
    opts.keepEscaping = true; | 
						|
  } | 
						|
 | 
						|
  return splitString(str, opts, utils.escapeBrackets(opts)); | 
						|
}; | 
						|
/** | 
						|
 * Expand ranges or sets in the given `pattern`. | 
						|
 * | 
						|
 * @param {String} `str` | 
						|
 * @param {Object} `options` | 
						|
 * @return {Object} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.expand = function (str, options) { | 
						|
  var opts = utils.extend({ | 
						|
    rangeLimit: 10000 | 
						|
  }, options); | 
						|
  var segs = utils.split(str, opts); | 
						|
  var tok = { | 
						|
    segs: segs | 
						|
  }; | 
						|
 | 
						|
  if (utils.isQuotedString(str)) { | 
						|
    return tok; | 
						|
  } | 
						|
 | 
						|
  if (opts.rangeLimit === true) { | 
						|
    opts.rangeLimit = 10000; | 
						|
  } | 
						|
 | 
						|
  if (segs.length > 1) { | 
						|
    if (opts.optimize === false) { | 
						|
      tok.val = segs[0]; | 
						|
      return tok; | 
						|
    } | 
						|
 | 
						|
    tok.segs = utils.stringifyArray(tok.segs); | 
						|
  } else if (segs.length === 1) { | 
						|
    var arr = str.split('..'); | 
						|
 | 
						|
    if (arr.length === 1) { | 
						|
      tok.val = tok.segs[tok.segs.length - 1] || tok.val || str; | 
						|
      tok.segs = []; | 
						|
      return tok; | 
						|
    } | 
						|
 | 
						|
    if (arr.length === 2 && arr[0] === arr[1]) { | 
						|
      tok.escaped = true; | 
						|
      tok.val = arr[0]; | 
						|
      tok.segs = []; | 
						|
      return tok; | 
						|
    } | 
						|
 | 
						|
    if (arr.length > 1) { | 
						|
      if (opts.optimize !== false) { | 
						|
        opts.optimize = true; | 
						|
        delete opts.expand; | 
						|
      } | 
						|
 | 
						|
      if (opts.optimize !== true) { | 
						|
        var min = Math.min(arr[0], arr[1]); | 
						|
        var max = Math.max(arr[0], arr[1]); | 
						|
        var step = arr[2] || 1; | 
						|
 | 
						|
        if (opts.rangeLimit !== false && (max - min) / step >= opts.rangeLimit) { | 
						|
          throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.'); | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      arr.push(opts); | 
						|
      tok.segs = utils.fillRange.apply(null, arr); | 
						|
 | 
						|
      if (!tok.segs.length) { | 
						|
        tok.escaped = true; | 
						|
        tok.val = str; | 
						|
        return tok; | 
						|
      } | 
						|
 | 
						|
      if (opts.optimize === true) { | 
						|
        tok.segs = utils.stringifyArray(tok.segs); | 
						|
      } | 
						|
 | 
						|
      if (tok.segs === '') { | 
						|
        tok.val = str; | 
						|
      } else { | 
						|
        tok.val = tok.segs[0]; | 
						|
      } | 
						|
 | 
						|
      return tok; | 
						|
    } | 
						|
  } else { | 
						|
    tok.val = str; | 
						|
  } | 
						|
 | 
						|
  return tok; | 
						|
}; | 
						|
/** | 
						|
 * Ensure commas inside brackets and parens are not split. | 
						|
 * @param {Object} `tok` Token from the `split-string` module | 
						|
 * @return {undefined} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.escapeBrackets = function (options) { | 
						|
  return function (tok) { | 
						|
    if (tok.escaped && tok.val === 'b') { | 
						|
      tok.val = '\\b'; | 
						|
      return; | 
						|
    } | 
						|
 | 
						|
    if (tok.val !== '(' && tok.val !== '[') return; | 
						|
    var opts = utils.extend({}, options); | 
						|
    var brackets = []; | 
						|
    var parens = []; | 
						|
    var stack = []; | 
						|
    var val = tok.val; | 
						|
    var str = tok.str; | 
						|
    var i = tok.idx - 1; | 
						|
 | 
						|
    while (++i < str.length) { | 
						|
      var ch = str[i]; | 
						|
 | 
						|
      if (ch === '\\') { | 
						|
        val += (opts.keepEscaping === false ? '' : ch) + str[++i]; | 
						|
        continue; | 
						|
      } | 
						|
 | 
						|
      if (ch === '(') { | 
						|
        parens.push(ch); | 
						|
        stack.push(ch); | 
						|
      } | 
						|
 | 
						|
      if (ch === '[') { | 
						|
        brackets.push(ch); | 
						|
        stack.push(ch); | 
						|
      } | 
						|
 | 
						|
      if (ch === ')') { | 
						|
        parens.pop(); | 
						|
        stack.pop(); | 
						|
 | 
						|
        if (!stack.length) { | 
						|
          val += ch; | 
						|
          break; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      if (ch === ']') { | 
						|
        brackets.pop(); | 
						|
        stack.pop(); | 
						|
 | 
						|
        if (!stack.length) { | 
						|
          val += ch; | 
						|
          break; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      val += ch; | 
						|
    } | 
						|
 | 
						|
    tok.split = false; | 
						|
    tok.val = val.slice(1); | 
						|
    tok.idx = i; | 
						|
  }; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given string looks like a regex quantifier | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isQuantifier = function (str) { | 
						|
  return /^(?:[0-9]?,[0-9]|[0-9],)$/.test(str); | 
						|
}; | 
						|
/** | 
						|
 * Cast `val` to an array. | 
						|
 * @param {*} `val` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.stringifyArray = function (arr) { | 
						|
  return [utils.arrayify(arr).join('|')]; | 
						|
}; | 
						|
/** | 
						|
 * Cast `val` to an array. | 
						|
 * @param {*} `val` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.arrayify = function (arr) { | 
						|
  if (typeof arr === 'undefined') { | 
						|
    return []; | 
						|
  } | 
						|
 | 
						|
  if (typeof arr === 'string') { | 
						|
    return [arr]; | 
						|
  } | 
						|
 | 
						|
  return arr; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given `str` is a non-empty string | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isString = function (str) { | 
						|
  return str != null && typeof str === 'string'; | 
						|
}; | 
						|
/** | 
						|
 * Get the last element from `array` | 
						|
 * @param {Array} `array` | 
						|
 * @return {*} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.last = function (arr, n) { | 
						|
  return arr[arr.length - (n || 1)]; | 
						|
}; | 
						|
 | 
						|
utils.escapeRegex = function (str) { | 
						|
  return str.replace(/\\?([!^*?()[\]{}+?/])/g, '\\$1'); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/cache-base/index.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/cache-base/index.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var isObject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
 | 
						|
var Emitter = __webpack_require__(/*! component-emitter */ "./node_modules/cache-base/node_modules/component-emitter/index.js"); | 
						|
 | 
						|
var visit = __webpack_require__(/*! collection-visit */ "./node_modules/collection-visit/index.js"); | 
						|
 | 
						|
var toPath = __webpack_require__(/*! to-object-path */ "./node_modules/to-object-path/index.js"); | 
						|
 | 
						|
var union = __webpack_require__(/*! union-value */ "./node_modules/union-value/index.js"); | 
						|
 | 
						|
var del = __webpack_require__(/*! unset-value */ "./node_modules/unset-value/index.js"); | 
						|
 | 
						|
var get = __webpack_require__(/*! get-value */ "./node_modules/get-value/index.js"); | 
						|
 | 
						|
var has = __webpack_require__(/*! has-value */ "./node_modules/has-value/index.js"); | 
						|
 | 
						|
var set = __webpack_require__(/*! set-value */ "./node_modules/set-value/index.js"); | 
						|
/** | 
						|
 * Create a `Cache` constructor that when instantiated will | 
						|
 * store values on the given `prop`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var Cache = require('cache-base').namespace('data'); | 
						|
 * var cache = new Cache(); | 
						|
 * | 
						|
 * cache.set('foo', 'bar'); | 
						|
 * //=> {data: {foo: 'bar'}} | 
						|
 * ``` | 
						|
 * @param {String} `prop` The property name to use for storing values. | 
						|
 * @return {Function} Returns a custom `Cache` constructor | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function namespace(prop) { | 
						|
  /** | 
						|
   * Create a new `Cache`. Internally the `Cache` constructor is created using | 
						|
   * the `namespace` function, with `cache` defined as the storage object. | 
						|
   * | 
						|
   * ```js | 
						|
   * var app = new Cache(); | 
						|
   * ``` | 
						|
   * @param {Object} `cache` Optionally pass an object to initialize with. | 
						|
   * @constructor | 
						|
   * @api public | 
						|
   */ | 
						|
  function Cache(cache) { | 
						|
    if (prop) { | 
						|
      this[prop] = {}; | 
						|
    } | 
						|
 | 
						|
    if (cache) { | 
						|
      this.set(cache); | 
						|
    } | 
						|
  } | 
						|
  /** | 
						|
   * Inherit Emitter | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Emitter(Cache.prototype); | 
						|
  /** | 
						|
   * Assign `value` to `key`. Also emits `set` with | 
						|
   * the key and value. | 
						|
   * | 
						|
   * ```js | 
						|
   * app.on('set', function(key, val) { | 
						|
   *   // do something when `set` is emitted | 
						|
   * }); | 
						|
   * | 
						|
   * app.set(key, value); | 
						|
   * | 
						|
   * // also takes an object or array | 
						|
   * app.set({name: 'Halle'}); | 
						|
   * app.set([{foo: 'bar'}, {baz: 'quux'}]); | 
						|
   * console.log(app); | 
						|
   * //=> {name: 'Halle', foo: 'bar', baz: 'quux'} | 
						|
   * ``` | 
						|
   * | 
						|
   * @name .set | 
						|
   * @emits `set` with `key` and `value` as arguments. | 
						|
   * @param {String} `key` | 
						|
   * @param {any} `value` | 
						|
   * @return {Object} Returns the instance for chaining. | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
  Cache.prototype.set = function (key, val) { | 
						|
    if (Array.isArray(key) && arguments.length === 2) { | 
						|
      key = toPath(key); | 
						|
    } | 
						|
 | 
						|
    if (isObject(key) || Array.isArray(key)) { | 
						|
      this.visit('set', key); | 
						|
    } else { | 
						|
      set(prop ? this[prop] : this, key, val); | 
						|
      this.emit('set', key, val); | 
						|
    } | 
						|
 | 
						|
    return this; | 
						|
  }; | 
						|
  /** | 
						|
   * Union `array` to `key`. Also emits `set` with | 
						|
   * the key and value. | 
						|
   * | 
						|
   * ```js | 
						|
   * app.union('a.b', ['foo']); | 
						|
   * app.union('a.b', ['bar']); | 
						|
   * console.log(app.get('a')); | 
						|
   * //=> {b: ['foo', 'bar']} | 
						|
   * ``` | 
						|
   * @name .union | 
						|
   * @param {String} `key` | 
						|
   * @param {any} `value` | 
						|
   * @return {Object} Returns the instance for chaining. | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Cache.prototype.union = function (key, val) { | 
						|
    if (Array.isArray(key) && arguments.length === 2) { | 
						|
      key = toPath(key); | 
						|
    } | 
						|
 | 
						|
    var ctx = prop ? this[prop] : this; | 
						|
    union(ctx, key, arrayify(val)); | 
						|
    this.emit('union', val); | 
						|
    return this; | 
						|
  }; | 
						|
  /** | 
						|
   * Return the value of `key`. Dot notation may be used | 
						|
   * to get [nested property values][get-value]. | 
						|
   * | 
						|
   * ```js | 
						|
   * app.set('a.b.c', 'd'); | 
						|
   * app.get('a.b'); | 
						|
   * //=> {c: 'd'} | 
						|
   * | 
						|
   * app.get(['a', 'b']); | 
						|
   * //=> {c: 'd'} | 
						|
   * ``` | 
						|
   * | 
						|
   * @name .get | 
						|
   * @emits `get` with `key` and `value` as arguments. | 
						|
   * @param {String} `key` The name of the property to get. Dot-notation may be used. | 
						|
   * @return {any} Returns the value of `key` | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Cache.prototype.get = function (key) { | 
						|
    key = toPath(arguments); | 
						|
    var ctx = prop ? this[prop] : this; | 
						|
    var val = get(ctx, key); | 
						|
    this.emit('get', key, val); | 
						|
    return val; | 
						|
  }; | 
						|
  /** | 
						|
   * Return true if app has a stored value for `key`, | 
						|
   * false only if value is `undefined`. | 
						|
   * | 
						|
   * ```js | 
						|
   * app.set('foo', 'bar'); | 
						|
   * app.has('foo'); | 
						|
   * //=> true | 
						|
   * ``` | 
						|
   * | 
						|
   * @name .has | 
						|
   * @emits `has` with `key` and true or false as arguments. | 
						|
   * @param {String} `key` | 
						|
   * @return {Boolean} | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Cache.prototype.has = function (key) { | 
						|
    key = toPath(arguments); | 
						|
    var ctx = prop ? this[prop] : this; | 
						|
    var val = get(ctx, key); | 
						|
    var has = typeof val !== 'undefined'; | 
						|
    this.emit('has', key, has); | 
						|
    return has; | 
						|
  }; | 
						|
  /** | 
						|
   * Delete one or more properties from the instance. | 
						|
   * | 
						|
   * ```js | 
						|
   * app.del(); // delete all | 
						|
   * // or | 
						|
   * app.del('foo'); | 
						|
   * // or | 
						|
   * app.del(['foo', 'bar']); | 
						|
   * ``` | 
						|
   * @name .del | 
						|
   * @emits `del` with the `key` as the only argument. | 
						|
   * @param {String|Array} `key` Property name or array of property names. | 
						|
   * @return {Object} Returns the instance for chaining. | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Cache.prototype.del = function (key) { | 
						|
    if (Array.isArray(key)) { | 
						|
      this.visit('del', key); | 
						|
    } else { | 
						|
      del(prop ? this[prop] : this, key); | 
						|
      this.emit('del', key); | 
						|
    } | 
						|
 | 
						|
    return this; | 
						|
  }; | 
						|
  /** | 
						|
   * Reset the entire cache to an empty object. | 
						|
   * | 
						|
   * ```js | 
						|
   * app.clear(); | 
						|
   * ``` | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Cache.prototype.clear = function () { | 
						|
    if (prop) { | 
						|
      this[prop] = {}; | 
						|
    } | 
						|
  }; | 
						|
  /** | 
						|
   * Visit `method` over the properties in the given object, or map | 
						|
   * visit over the object-elements in an array. | 
						|
   * | 
						|
   * @name .visit | 
						|
   * @param {String} `method` The name of the `base` method to call. | 
						|
   * @param {Object|Array} `val` The object or array to iterate over. | 
						|
   * @return {Object} Returns the instance for chaining. | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  Cache.prototype.visit = function (method, val) { | 
						|
    visit(this, method, val); | 
						|
    return this; | 
						|
  }; | 
						|
 | 
						|
  return Cache; | 
						|
} | 
						|
/** | 
						|
 * Cast val to an array | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function arrayify(val) { | 
						|
  return val ? Array.isArray(val) ? val : [val] : []; | 
						|
} | 
						|
/** | 
						|
 * Expose `Cache` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = namespace(); | 
						|
/** | 
						|
 * Expose `Cache.namespace` | 
						|
 */ | 
						|
 | 
						|
module.exports.namespace = namespace; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/cache-base/node_modules/component-emitter/index.js": | 
						|
/*!*************************************************************************!*\ | 
						|
  !*** ./node_modules/cache-base/node_modules/component-emitter/index.js ***! | 
						|
  \*************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/** | 
						|
 * Expose `Emitter`. | 
						|
 */ | 
						|
if (true) { | 
						|
  module.exports = Emitter; | 
						|
} | 
						|
/** | 
						|
 * Initialize a new `Emitter`. | 
						|
 * | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function Emitter(obj) { | 
						|
  if (obj) return mixin(obj); | 
						|
} | 
						|
 | 
						|
; | 
						|
/** | 
						|
 * Mixin the emitter properties. | 
						|
 * | 
						|
 * @param {Object} obj | 
						|
 * @return {Object} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
function mixin(obj) { | 
						|
  for (var key in Emitter.prototype) { | 
						|
    obj[key] = Emitter.prototype[key]; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
} | 
						|
/** | 
						|
 * Listen on the given `event` with `fn`. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @param {Function} fn | 
						|
 * @return {Emitter} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.on = Emitter.prototype.addEventListener = function (event, fn) { | 
						|
  this._callbacks = this._callbacks || {}; | 
						|
  (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(fn); | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Adds an `event` listener that will be invoked a single | 
						|
 * time then automatically removed. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @param {Function} fn | 
						|
 * @return {Emitter} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.once = function (event, fn) { | 
						|
  function on() { | 
						|
    this.off(event, on); | 
						|
    fn.apply(this, arguments); | 
						|
  } | 
						|
 | 
						|
  on.fn = fn; | 
						|
  this.on(event, on); | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Remove the given callback for `event` or all | 
						|
 * registered callbacks. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @param {Function} fn | 
						|
 * @return {Emitter} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function (event, fn) { | 
						|
  this._callbacks = this._callbacks || {}; // all | 
						|
 | 
						|
  if (0 == arguments.length) { | 
						|
    this._callbacks = {}; | 
						|
    return this; | 
						|
  } // specific event | 
						|
 | 
						|
 | 
						|
  var callbacks = this._callbacks['$' + event]; | 
						|
  if (!callbacks) return this; // remove all handlers | 
						|
 | 
						|
  if (1 == arguments.length) { | 
						|
    delete this._callbacks['$' + event]; | 
						|
    return this; | 
						|
  } // remove specific handler | 
						|
 | 
						|
 | 
						|
  var cb; | 
						|
 | 
						|
  for (var i = 0; i < callbacks.length; i++) { | 
						|
    cb = callbacks[i]; | 
						|
 | 
						|
    if (cb === fn || cb.fn === fn) { | 
						|
      callbacks.splice(i, 1); | 
						|
      break; | 
						|
    } | 
						|
  } // Remove event specific arrays for event types that no | 
						|
  // one is subscribed for to avoid memory leak. | 
						|
 | 
						|
 | 
						|
  if (callbacks.length === 0) { | 
						|
    delete this._callbacks['$' + event]; | 
						|
  } | 
						|
 | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Emit `event` with the given args. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @param {Mixed} ... | 
						|
 * @return {Emitter} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.emit = function (event) { | 
						|
  this._callbacks = this._callbacks || {}; | 
						|
  var args = new Array(arguments.length - 1), | 
						|
      callbacks = this._callbacks['$' + event]; | 
						|
 | 
						|
  for (var i = 1; i < arguments.length; i++) { | 
						|
    args[i - 1] = arguments[i]; | 
						|
  } | 
						|
 | 
						|
  if (callbacks) { | 
						|
    callbacks = callbacks.slice(0); | 
						|
 | 
						|
    for (var i = 0, len = callbacks.length; i < len; ++i) { | 
						|
      callbacks[i].apply(this, args); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Return array of callbacks for `event`. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @return {Array} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.listeners = function (event) { | 
						|
  this._callbacks = this._callbacks || {}; | 
						|
  return this._callbacks['$' + event] || []; | 
						|
}; | 
						|
/** | 
						|
 * Check if this emitter has `event` handlers. | 
						|
 * | 
						|
 * @param {String} event | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Emitter.prototype.hasListeners = function (event) { | 
						|
  return !!this.listeners(event).length; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/class-utils/index.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/class-utils/index.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var util = __webpack_require__(/*! util */ "./node_modules/util/util.js"); | 
						|
 | 
						|
var union = __webpack_require__(/*! arr-union */ "./node_modules/arr-union/index.js"); | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/define-property/index.js"); | 
						|
 | 
						|
var staticExtend = __webpack_require__(/*! static-extend */ "./node_modules/static-extend/index.js"); | 
						|
 | 
						|
var isObj = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
/** | 
						|
 * Expose class utils | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var cu = module.exports; | 
						|
/** | 
						|
 * Expose class utils: `cu` | 
						|
 */ | 
						|
 | 
						|
cu.isObject = function isObject(val) { | 
						|
  return isObj(val) || typeof val === 'function'; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if an array has any of the given elements, or an | 
						|
 * object has any of the give keys. | 
						|
 * | 
						|
 * ```js | 
						|
 * cu.has(['a', 'b', 'c'], 'c'); | 
						|
 * //=> true | 
						|
 * | 
						|
 * cu.has(['a', 'b', 'c'], ['c', 'z']); | 
						|
 * //=> true | 
						|
 * | 
						|
 * cu.has({a: 'b', c: 'd'}, ['c', 'z']); | 
						|
 * //=> true | 
						|
 * ``` | 
						|
 * @param {Object} `obj` | 
						|
 * @param {String|Array} `val` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.has = function has(obj, val) { | 
						|
  val = cu.arrayify(val); | 
						|
  var len = val.length; | 
						|
 | 
						|
  if (cu.isObject(obj)) { | 
						|
    for (var key in obj) { | 
						|
      if (val.indexOf(key) > -1) { | 
						|
        return true; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    var keys = cu.nativeKeys(obj); | 
						|
    return cu.has(keys, val); | 
						|
  } | 
						|
 | 
						|
  if (Array.isArray(obj)) { | 
						|
    var arr = obj; | 
						|
 | 
						|
    while (len--) { | 
						|
      if (arr.indexOf(val[len]) > -1) { | 
						|
        return true; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  throw new TypeError('expected an array or object.'); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if an array or object has all of the given values. | 
						|
 * | 
						|
 * ```js | 
						|
 * cu.hasAll(['a', 'b', 'c'], 'c'); | 
						|
 * //=> true | 
						|
 * | 
						|
 * cu.hasAll(['a', 'b', 'c'], ['c', 'z']); | 
						|
 * //=> false | 
						|
 * | 
						|
 * cu.hasAll({a: 'b', c: 'd'}, ['c', 'z']); | 
						|
 * //=> false | 
						|
 * ``` | 
						|
 * @param {Object|Array} `val` | 
						|
 * @param {String|Array} `values` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.hasAll = function hasAll(val, values) { | 
						|
  values = cu.arrayify(values); | 
						|
  var len = values.length; | 
						|
 | 
						|
  while (len--) { | 
						|
    if (!cu.has(val, values[len])) { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
/** | 
						|
 * Cast the given value to an array. | 
						|
 * | 
						|
 * ```js | 
						|
 * cu.arrayify('foo'); | 
						|
 * //=> ['foo'] | 
						|
 * | 
						|
 * cu.arrayify(['foo']); | 
						|
 * //=> ['foo'] | 
						|
 * ``` | 
						|
 * | 
						|
 * @param {String|Array} `val` | 
						|
 * @return {Array} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.arrayify = function arrayify(val) { | 
						|
  return val ? Array.isArray(val) ? val : [val] : []; | 
						|
}; | 
						|
/** | 
						|
 * Noop | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.noop = function noop() { | 
						|
  return; | 
						|
}; | 
						|
/** | 
						|
 * Returns the first argument passed to the function. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.identity = function identity(val) { | 
						|
  return val; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if a value has a `contructor` | 
						|
 * | 
						|
 * ```js | 
						|
 * cu.hasConstructor({}); | 
						|
 * //=> true | 
						|
 * | 
						|
 * cu.hasConstructor(Object.create(null)); | 
						|
 * //=> false | 
						|
 * ``` | 
						|
 * @param  {Object} `value` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.hasConstructor = function hasConstructor(val) { | 
						|
  return cu.isObject(val) && typeof val.constructor !== 'undefined'; | 
						|
}; | 
						|
/** | 
						|
 * Get the native `ownPropertyNames` from the constructor of the | 
						|
 * given `object`. An empty array is returned if the object does | 
						|
 * not have a constructor. | 
						|
 * | 
						|
 * ```js | 
						|
 * cu.nativeKeys({a: 'b', b: 'c', c: 'd'}) | 
						|
 * //=> ['a', 'b', 'c'] | 
						|
 * | 
						|
 * cu.nativeKeys(function(){}) | 
						|
 * //=> ['length', 'caller'] | 
						|
 * ``` | 
						|
 * | 
						|
 * @param  {Object} `obj` Object that has a `constructor`. | 
						|
 * @return {Array} Array of keys. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.nativeKeys = function nativeKeys(val) { | 
						|
  if (!cu.hasConstructor(val)) return []; | 
						|
  var keys = Object.getOwnPropertyNames(val); | 
						|
  if ('caller' in val) keys.push('caller'); | 
						|
  return keys; | 
						|
}; | 
						|
/** | 
						|
 * Returns property descriptor `key` if it's an "own" property | 
						|
 * of the given object. | 
						|
 * | 
						|
 * ```js | 
						|
 * function App() {} | 
						|
 * Object.defineProperty(App.prototype, 'count', { | 
						|
 *   get: function() { | 
						|
 *     return Object.keys(this).length; | 
						|
 *   } | 
						|
 * }); | 
						|
 * cu.getDescriptor(App.prototype, 'count'); | 
						|
 * // returns: | 
						|
 * // { | 
						|
 * //   get: [Function], | 
						|
 * //   set: undefined, | 
						|
 * //   enumerable: false, | 
						|
 * //   configurable: false | 
						|
 * // } | 
						|
 * ``` | 
						|
 * | 
						|
 * @param {Object} `obj` | 
						|
 * @param {String} `key` | 
						|
 * @return {Object} Returns descriptor `key` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.getDescriptor = function getDescriptor(obj, key) { | 
						|
  if (!cu.isObject(obj)) { | 
						|
    throw new TypeError('expected an object.'); | 
						|
  } | 
						|
 | 
						|
  if (typeof key !== 'string') { | 
						|
    throw new TypeError('expected key to be a string.'); | 
						|
  } | 
						|
 | 
						|
  return Object.getOwnPropertyDescriptor(obj, key); | 
						|
}; | 
						|
/** | 
						|
 * Copy a descriptor from one object to another. | 
						|
 * | 
						|
 * ```js | 
						|
 * function App() {} | 
						|
 * Object.defineProperty(App.prototype, 'count', { | 
						|
 *   get: function() { | 
						|
 *     return Object.keys(this).length; | 
						|
 *   } | 
						|
 * }); | 
						|
 * var obj = {}; | 
						|
 * cu.copyDescriptor(obj, App.prototype, 'count'); | 
						|
 * ``` | 
						|
 * @param {Object} `receiver` | 
						|
 * @param {Object} `provider` | 
						|
 * @param {String} `name` | 
						|
 * @return {Object} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.copyDescriptor = function copyDescriptor(receiver, provider, name) { | 
						|
  if (!cu.isObject(receiver)) { | 
						|
    throw new TypeError('expected receiving object to be an object.'); | 
						|
  } | 
						|
 | 
						|
  if (!cu.isObject(provider)) { | 
						|
    throw new TypeError('expected providing object to be an object.'); | 
						|
  } | 
						|
 | 
						|
  if (typeof name !== 'string') { | 
						|
    throw new TypeError('expected name to be a string.'); | 
						|
  } | 
						|
 | 
						|
  var val = cu.getDescriptor(provider, name); | 
						|
  if (val) Object.defineProperty(receiver, name, val); | 
						|
}; | 
						|
/** | 
						|
 * Copy static properties, prototype properties, and descriptors | 
						|
 * from one object to another. | 
						|
 * | 
						|
 * @param {Object} `receiver` | 
						|
 * @param {Object} `provider` | 
						|
 * @param {String|Array} `omit` One or more properties to omit | 
						|
 * @return {Object} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.copy = function copy(receiver, provider, omit) { | 
						|
  if (!cu.isObject(receiver)) { | 
						|
    throw new TypeError('expected receiving object to be an object.'); | 
						|
  } | 
						|
 | 
						|
  if (!cu.isObject(provider)) { | 
						|
    throw new TypeError('expected providing object to be an object.'); | 
						|
  } | 
						|
 | 
						|
  var props = Object.getOwnPropertyNames(provider); | 
						|
  var keys = Object.keys(provider); | 
						|
  var len = props.length, | 
						|
      key; | 
						|
  omit = cu.arrayify(omit); | 
						|
 | 
						|
  while (len--) { | 
						|
    key = props[len]; | 
						|
 | 
						|
    if (cu.has(keys, key)) { | 
						|
      define(receiver, key, provider[key]); | 
						|
    } else if (!(key in receiver) && !cu.has(omit, key)) { | 
						|
      cu.copyDescriptor(receiver, provider, key); | 
						|
    } | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Inherit the static properties, prototype properties, and descriptors | 
						|
 * from of an object. | 
						|
 * | 
						|
 * @param {Object} `receiver` | 
						|
 * @param {Object} `provider` | 
						|
 * @param {String|Array} `omit` One or more properties to omit | 
						|
 * @return {Object} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.inherit = function inherit(receiver, provider, omit) { | 
						|
  if (!cu.isObject(receiver)) { | 
						|
    throw new TypeError('expected receiving object to be an object.'); | 
						|
  } | 
						|
 | 
						|
  if (!cu.isObject(provider)) { | 
						|
    throw new TypeError('expected providing object to be an object.'); | 
						|
  } | 
						|
 | 
						|
  var keys = []; | 
						|
 | 
						|
  for (var key in provider) { | 
						|
    keys.push(key); | 
						|
    receiver[key] = provider[key]; | 
						|
  } | 
						|
 | 
						|
  keys = keys.concat(cu.arrayify(omit)); | 
						|
  var a = provider.prototype || provider; | 
						|
  var b = receiver.prototype || receiver; | 
						|
  cu.copy(b, a, keys); | 
						|
}; | 
						|
/** | 
						|
 * Returns a function for extending the static properties, | 
						|
 * prototype properties, and descriptors from the `Parent` | 
						|
 * constructor onto `Child` constructors. | 
						|
 * | 
						|
 * ```js | 
						|
 * var extend = cu.extend(Parent); | 
						|
 * Parent.extend(Child); | 
						|
 * | 
						|
 * // optional methods | 
						|
 * Parent.extend(Child, { | 
						|
 *   foo: function() {}, | 
						|
 *   bar: function() {} | 
						|
 * }); | 
						|
 * ``` | 
						|
 * @param {Function} `Parent` Parent ctor | 
						|
 * @param {Function} `extend` Optional extend function to handle custom extensions. Useful when updating methods that require a specific prototype. | 
						|
 *   @param {Function} `Child` Child ctor | 
						|
 *   @param {Object} `proto` Optionally pass additional prototype properties to inherit. | 
						|
 *   @return {Object} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.extend = function () { | 
						|
  // keep it lazy, instead of assigning to `cu.extend` | 
						|
  return staticExtend.apply(null, arguments); | 
						|
}; | 
						|
/** | 
						|
 * Bubble up events emitted from static methods on the Parent ctor. | 
						|
 * | 
						|
 * @param {Object} `Parent` | 
						|
 * @param {Array} `events` Event names to bubble up | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
cu.bubble = function (Parent, events) { | 
						|
  events = events || []; | 
						|
 | 
						|
  Parent.bubble = function (Child, arr) { | 
						|
    if (Array.isArray(arr)) { | 
						|
      events = union([], events, arr); | 
						|
    } | 
						|
 | 
						|
    var len = events.length; | 
						|
    var idx = -1; | 
						|
 | 
						|
    while (++idx < len) { | 
						|
      var name = events[idx]; | 
						|
      Parent.on(name, Child.emit.bind(Child, name)); | 
						|
    } | 
						|
 | 
						|
    cu.bubble(Child, events); | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/collection-visit/index.js": | 
						|
/*!************************************************!*\ | 
						|
  !*** ./node_modules/collection-visit/index.js ***! | 
						|
  \************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * collection-visit <https://github.com/jonschlinkert/collection-visit> | 
						|
 * | 
						|
 * Copyright (c) 2015, 2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var visit = __webpack_require__(/*! object-visit */ "./node_modules/object-visit/index.js"); | 
						|
 | 
						|
var mapVisit = __webpack_require__(/*! map-visit */ "./node_modules/map-visit/index.js"); | 
						|
 | 
						|
module.exports = function (collection, method, val) { | 
						|
  var result; | 
						|
 | 
						|
  if (typeof val === 'string' && method in collection) { | 
						|
    var args = [].slice.call(arguments, 2); | 
						|
    result = collection[method].apply(collection, args); | 
						|
  } else if (Array.isArray(val)) { | 
						|
    result = mapVisit.apply(null, arguments); | 
						|
  } else { | 
						|
    result = visit.apply(null, arguments); | 
						|
  } | 
						|
 | 
						|
  if (typeof result !== 'undefined') { | 
						|
    return result; | 
						|
  } | 
						|
 | 
						|
  return collection; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/color-convert/conversions.js": | 
						|
/*!***************************************************!*\ | 
						|
  !*** ./node_modules/color-convert/conversions.js ***! | 
						|
  \***************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* MIT license */ | 
						|
var cssKeywords = __webpack_require__(/*! color-name */ "./node_modules/color-name/index.js"); // NOTE: conversions should only return primitive values (i.e. arrays, or | 
						|
//       values that give correct `typeof` results). | 
						|
//       do not use box values types (i.e. Number(), String(), etc.) | 
						|
 | 
						|
 | 
						|
var reverseKeywords = {}; | 
						|
 | 
						|
for (var key in cssKeywords) { | 
						|
  if (cssKeywords.hasOwnProperty(key)) { | 
						|
    reverseKeywords[cssKeywords[key]] = key; | 
						|
  } | 
						|
} | 
						|
 | 
						|
var convert = module.exports = { | 
						|
  rgb: { | 
						|
    channels: 3, | 
						|
    labels: 'rgb' | 
						|
  }, | 
						|
  hsl: { | 
						|
    channels: 3, | 
						|
    labels: 'hsl' | 
						|
  }, | 
						|
  hsv: { | 
						|
    channels: 3, | 
						|
    labels: 'hsv' | 
						|
  }, | 
						|
  hwb: { | 
						|
    channels: 3, | 
						|
    labels: 'hwb' | 
						|
  }, | 
						|
  cmyk: { | 
						|
    channels: 4, | 
						|
    labels: 'cmyk' | 
						|
  }, | 
						|
  xyz: { | 
						|
    channels: 3, | 
						|
    labels: 'xyz' | 
						|
  }, | 
						|
  lab: { | 
						|
    channels: 3, | 
						|
    labels: 'lab' | 
						|
  }, | 
						|
  lch: { | 
						|
    channels: 3, | 
						|
    labels: 'lch' | 
						|
  }, | 
						|
  hex: { | 
						|
    channels: 1, | 
						|
    labels: ['hex'] | 
						|
  }, | 
						|
  keyword: { | 
						|
    channels: 1, | 
						|
    labels: ['keyword'] | 
						|
  }, | 
						|
  ansi16: { | 
						|
    channels: 1, | 
						|
    labels: ['ansi16'] | 
						|
  }, | 
						|
  ansi256: { | 
						|
    channels: 1, | 
						|
    labels: ['ansi256'] | 
						|
  }, | 
						|
  hcg: { | 
						|
    channels: 3, | 
						|
    labels: ['h', 'c', 'g'] | 
						|
  }, | 
						|
  apple: { | 
						|
    channels: 3, | 
						|
    labels: ['r16', 'g16', 'b16'] | 
						|
  }, | 
						|
  gray: { | 
						|
    channels: 1, | 
						|
    labels: ['gray'] | 
						|
  } | 
						|
}; // hide .channels and .labels properties | 
						|
 | 
						|
for (var model in convert) { | 
						|
  if (convert.hasOwnProperty(model)) { | 
						|
    if (!('channels' in convert[model])) { | 
						|
      throw new Error('missing channels property: ' + model); | 
						|
    } | 
						|
 | 
						|
    if (!('labels' in convert[model])) { | 
						|
      throw new Error('missing channel labels property: ' + model); | 
						|
    } | 
						|
 | 
						|
    if (convert[model].labels.length !== convert[model].channels) { | 
						|
      throw new Error('channel and label counts mismatch: ' + model); | 
						|
    } | 
						|
 | 
						|
    var channels = convert[model].channels; | 
						|
    var labels = convert[model].labels; | 
						|
    delete convert[model].channels; | 
						|
    delete convert[model].labels; | 
						|
    Object.defineProperty(convert[model], 'channels', { | 
						|
      value: channels | 
						|
    }); | 
						|
    Object.defineProperty(convert[model], 'labels', { | 
						|
      value: labels | 
						|
    }); | 
						|
  } | 
						|
} | 
						|
 | 
						|
convert.rgb.hsl = function (rgb) { | 
						|
  var r = rgb[0] / 255; | 
						|
  var g = rgb[1] / 255; | 
						|
  var b = rgb[2] / 255; | 
						|
  var min = Math.min(r, g, b); | 
						|
  var max = Math.max(r, g, b); | 
						|
  var delta = max - min; | 
						|
  var h; | 
						|
  var s; | 
						|
  var l; | 
						|
 | 
						|
  if (max === min) { | 
						|
    h = 0; | 
						|
  } else if (r === max) { | 
						|
    h = (g - b) / delta; | 
						|
  } else if (g === max) { | 
						|
    h = 2 + (b - r) / delta; | 
						|
  } else if (b === max) { | 
						|
    h = 4 + (r - g) / delta; | 
						|
  } | 
						|
 | 
						|
  h = Math.min(h * 60, 360); | 
						|
 | 
						|
  if (h < 0) { | 
						|
    h += 360; | 
						|
  } | 
						|
 | 
						|
  l = (min + max) / 2; | 
						|
 | 
						|
  if (max === min) { | 
						|
    s = 0; | 
						|
  } else if (l <= 0.5) { | 
						|
    s = delta / (max + min); | 
						|
  } else { | 
						|
    s = delta / (2 - max - min); | 
						|
  } | 
						|
 | 
						|
  return [h, s * 100, l * 100]; | 
						|
}; | 
						|
 | 
						|
convert.rgb.hsv = function (rgb) { | 
						|
  var rdif; | 
						|
  var gdif; | 
						|
  var bdif; | 
						|
  var h; | 
						|
  var s; | 
						|
  var r = rgb[0] / 255; | 
						|
  var g = rgb[1] / 255; | 
						|
  var b = rgb[2] / 255; | 
						|
  var v = Math.max(r, g, b); | 
						|
  var diff = v - Math.min(r, g, b); | 
						|
 | 
						|
  var diffc = function diffc(c) { | 
						|
    return (v - c) / 6 / diff + 1 / 2; | 
						|
  }; | 
						|
 | 
						|
  if (diff === 0) { | 
						|
    h = s = 0; | 
						|
  } else { | 
						|
    s = diff / v; | 
						|
    rdif = diffc(r); | 
						|
    gdif = diffc(g); | 
						|
    bdif = diffc(b); | 
						|
 | 
						|
    if (r === v) { | 
						|
      h = bdif - gdif; | 
						|
    } else if (g === v) { | 
						|
      h = 1 / 3 + rdif - bdif; | 
						|
    } else if (b === v) { | 
						|
      h = 2 / 3 + gdif - rdif; | 
						|
    } | 
						|
 | 
						|
    if (h < 0) { | 
						|
      h += 1; | 
						|
    } else if (h > 1) { | 
						|
      h -= 1; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return [h * 360, s * 100, v * 100]; | 
						|
}; | 
						|
 | 
						|
convert.rgb.hwb = function (rgb) { | 
						|
  var r = rgb[0]; | 
						|
  var g = rgb[1]; | 
						|
  var b = rgb[2]; | 
						|
  var h = convert.rgb.hsl(rgb)[0]; | 
						|
  var w = 1 / 255 * Math.min(r, Math.min(g, b)); | 
						|
  b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); | 
						|
  return [h, w * 100, b * 100]; | 
						|
}; | 
						|
 | 
						|
convert.rgb.cmyk = function (rgb) { | 
						|
  var r = rgb[0] / 255; | 
						|
  var g = rgb[1] / 255; | 
						|
  var b = rgb[2] / 255; | 
						|
  var c; | 
						|
  var m; | 
						|
  var y; | 
						|
  var k; | 
						|
  k = Math.min(1 - r, 1 - g, 1 - b); | 
						|
  c = (1 - r - k) / (1 - k) || 0; | 
						|
  m = (1 - g - k) / (1 - k) || 0; | 
						|
  y = (1 - b - k) / (1 - k) || 0; | 
						|
  return [c * 100, m * 100, y * 100, k * 100]; | 
						|
}; | 
						|
/** | 
						|
 * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance | 
						|
 * */ | 
						|
 | 
						|
 | 
						|
function comparativeDistance(x, y) { | 
						|
  return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2); | 
						|
} | 
						|
 | 
						|
convert.rgb.keyword = function (rgb) { | 
						|
  var reversed = reverseKeywords[rgb]; | 
						|
 | 
						|
  if (reversed) { | 
						|
    return reversed; | 
						|
  } | 
						|
 | 
						|
  var currentClosestDistance = Infinity; | 
						|
  var currentClosestKeyword; | 
						|
 | 
						|
  for (var keyword in cssKeywords) { | 
						|
    if (cssKeywords.hasOwnProperty(keyword)) { | 
						|
      var value = cssKeywords[keyword]; // Compute comparative distance | 
						|
 | 
						|
      var distance = comparativeDistance(rgb, value); // Check if its less, if so set as closest | 
						|
 | 
						|
      if (distance < currentClosestDistance) { | 
						|
        currentClosestDistance = distance; | 
						|
        currentClosestKeyword = keyword; | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return currentClosestKeyword; | 
						|
}; | 
						|
 | 
						|
convert.keyword.rgb = function (keyword) { | 
						|
  return cssKeywords[keyword]; | 
						|
}; | 
						|
 | 
						|
convert.rgb.xyz = function (rgb) { | 
						|
  var r = rgb[0] / 255; | 
						|
  var g = rgb[1] / 255; | 
						|
  var b = rgb[2] / 255; // assume sRGB | 
						|
 | 
						|
  r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92; | 
						|
  g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92; | 
						|
  b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92; | 
						|
  var x = r * 0.4124 + g * 0.3576 + b * 0.1805; | 
						|
  var y = r * 0.2126 + g * 0.7152 + b * 0.0722; | 
						|
  var z = r * 0.0193 + g * 0.1192 + b * 0.9505; | 
						|
  return [x * 100, y * 100, z * 100]; | 
						|
}; | 
						|
 | 
						|
convert.rgb.lab = function (rgb) { | 
						|
  var xyz = convert.rgb.xyz(rgb); | 
						|
  var x = xyz[0]; | 
						|
  var y = xyz[1]; | 
						|
  var z = xyz[2]; | 
						|
  var l; | 
						|
  var a; | 
						|
  var b; | 
						|
  x /= 95.047; | 
						|
  y /= 100; | 
						|
  z /= 108.883; | 
						|
  x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116; | 
						|
  y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116; | 
						|
  z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116; | 
						|
  l = 116 * y - 16; | 
						|
  a = 500 * (x - y); | 
						|
  b = 200 * (y - z); | 
						|
  return [l, a, b]; | 
						|
}; | 
						|
 | 
						|
convert.hsl.rgb = function (hsl) { | 
						|
  var h = hsl[0] / 360; | 
						|
  var s = hsl[1] / 100; | 
						|
  var l = hsl[2] / 100; | 
						|
  var t1; | 
						|
  var t2; | 
						|
  var t3; | 
						|
  var rgb; | 
						|
  var val; | 
						|
 | 
						|
  if (s === 0) { | 
						|
    val = l * 255; | 
						|
    return [val, val, val]; | 
						|
  } | 
						|
 | 
						|
  if (l < 0.5) { | 
						|
    t2 = l * (1 + s); | 
						|
  } else { | 
						|
    t2 = l + s - l * s; | 
						|
  } | 
						|
 | 
						|
  t1 = 2 * l - t2; | 
						|
  rgb = [0, 0, 0]; | 
						|
 | 
						|
  for (var i = 0; i < 3; i++) { | 
						|
    t3 = h + 1 / 3 * -(i - 1); | 
						|
 | 
						|
    if (t3 < 0) { | 
						|
      t3++; | 
						|
    } | 
						|
 | 
						|
    if (t3 > 1) { | 
						|
      t3--; | 
						|
    } | 
						|
 | 
						|
    if (6 * t3 < 1) { | 
						|
      val = t1 + (t2 - t1) * 6 * t3; | 
						|
    } else if (2 * t3 < 1) { | 
						|
      val = t2; | 
						|
    } else if (3 * t3 < 2) { | 
						|
      val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; | 
						|
    } else { | 
						|
      val = t1; | 
						|
    } | 
						|
 | 
						|
    rgb[i] = val * 255; | 
						|
  } | 
						|
 | 
						|
  return rgb; | 
						|
}; | 
						|
 | 
						|
convert.hsl.hsv = function (hsl) { | 
						|
  var h = hsl[0]; | 
						|
  var s = hsl[1] / 100; | 
						|
  var l = hsl[2] / 100; | 
						|
  var smin = s; | 
						|
  var lmin = Math.max(l, 0.01); | 
						|
  var sv; | 
						|
  var v; | 
						|
  l *= 2; | 
						|
  s *= l <= 1 ? l : 2 - l; | 
						|
  smin *= lmin <= 1 ? lmin : 2 - lmin; | 
						|
  v = (l + s) / 2; | 
						|
  sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s); | 
						|
  return [h, sv * 100, v * 100]; | 
						|
}; | 
						|
 | 
						|
convert.hsv.rgb = function (hsv) { | 
						|
  var h = hsv[0] / 60; | 
						|
  var s = hsv[1] / 100; | 
						|
  var v = hsv[2] / 100; | 
						|
  var hi = Math.floor(h) % 6; | 
						|
  var f = h - Math.floor(h); | 
						|
  var p = 255 * v * (1 - s); | 
						|
  var q = 255 * v * (1 - s * f); | 
						|
  var t = 255 * v * (1 - s * (1 - f)); | 
						|
  v *= 255; | 
						|
 | 
						|
  switch (hi) { | 
						|
    case 0: | 
						|
      return [v, t, p]; | 
						|
 | 
						|
    case 1: | 
						|
      return [q, v, p]; | 
						|
 | 
						|
    case 2: | 
						|
      return [p, v, t]; | 
						|
 | 
						|
    case 3: | 
						|
      return [p, q, v]; | 
						|
 | 
						|
    case 4: | 
						|
      return [t, p, v]; | 
						|
 | 
						|
    case 5: | 
						|
      return [v, p, q]; | 
						|
  } | 
						|
}; | 
						|
 | 
						|
convert.hsv.hsl = function (hsv) { | 
						|
  var h = hsv[0]; | 
						|
  var s = hsv[1] / 100; | 
						|
  var v = hsv[2] / 100; | 
						|
  var vmin = Math.max(v, 0.01); | 
						|
  var lmin; | 
						|
  var sl; | 
						|
  var l; | 
						|
  l = (2 - s) * v; | 
						|
  lmin = (2 - s) * vmin; | 
						|
  sl = s * vmin; | 
						|
  sl /= lmin <= 1 ? lmin : 2 - lmin; | 
						|
  sl = sl || 0; | 
						|
  l /= 2; | 
						|
  return [h, sl * 100, l * 100]; | 
						|
}; // http://dev.w3.org/csswg/css-color/#hwb-to-rgb | 
						|
 | 
						|
 | 
						|
convert.hwb.rgb = function (hwb) { | 
						|
  var h = hwb[0] / 360; | 
						|
  var wh = hwb[1] / 100; | 
						|
  var bl = hwb[2] / 100; | 
						|
  var ratio = wh + bl; | 
						|
  var i; | 
						|
  var v; | 
						|
  var f; | 
						|
  var n; // wh + bl cant be > 1 | 
						|
 | 
						|
  if (ratio > 1) { | 
						|
    wh /= ratio; | 
						|
    bl /= ratio; | 
						|
  } | 
						|
 | 
						|
  i = Math.floor(6 * h); | 
						|
  v = 1 - bl; | 
						|
  f = 6 * h - i; | 
						|
 | 
						|
  if ((i & 0x01) !== 0) { | 
						|
    f = 1 - f; | 
						|
  } | 
						|
 | 
						|
  n = wh + f * (v - wh); // linear interpolation | 
						|
 | 
						|
  var r; | 
						|
  var g; | 
						|
  var b; | 
						|
 | 
						|
  switch (i) { | 
						|
    default: | 
						|
    case 6: | 
						|
    case 0: | 
						|
      r = v; | 
						|
      g = n; | 
						|
      b = wh; | 
						|
      break; | 
						|
 | 
						|
    case 1: | 
						|
      r = n; | 
						|
      g = v; | 
						|
      b = wh; | 
						|
      break; | 
						|
 | 
						|
    case 2: | 
						|
      r = wh; | 
						|
      g = v; | 
						|
      b = n; | 
						|
      break; | 
						|
 | 
						|
    case 3: | 
						|
      r = wh; | 
						|
      g = n; | 
						|
      b = v; | 
						|
      break; | 
						|
 | 
						|
    case 4: | 
						|
      r = n; | 
						|
      g = wh; | 
						|
      b = v; | 
						|
      break; | 
						|
 | 
						|
    case 5: | 
						|
      r = v; | 
						|
      g = wh; | 
						|
      b = n; | 
						|
      break; | 
						|
  } | 
						|
 | 
						|
  return [r * 255, g * 255, b * 255]; | 
						|
}; | 
						|
 | 
						|
convert.cmyk.rgb = function (cmyk) { | 
						|
  var c = cmyk[0] / 100; | 
						|
  var m = cmyk[1] / 100; | 
						|
  var y = cmyk[2] / 100; | 
						|
  var k = cmyk[3] / 100; | 
						|
  var r; | 
						|
  var g; | 
						|
  var b; | 
						|
  r = 1 - Math.min(1, c * (1 - k) + k); | 
						|
  g = 1 - Math.min(1, m * (1 - k) + k); | 
						|
  b = 1 - Math.min(1, y * (1 - k) + k); | 
						|
  return [r * 255, g * 255, b * 255]; | 
						|
}; | 
						|
 | 
						|
convert.xyz.rgb = function (xyz) { | 
						|
  var x = xyz[0] / 100; | 
						|
  var y = xyz[1] / 100; | 
						|
  var z = xyz[2] / 100; | 
						|
  var r; | 
						|
  var g; | 
						|
  var b; | 
						|
  r = x * 3.2406 + y * -1.5372 + z * -0.4986; | 
						|
  g = x * -0.9689 + y * 1.8758 + z * 0.0415; | 
						|
  b = x * 0.0557 + y * -0.2040 + z * 1.0570; // assume sRGB | 
						|
 | 
						|
  r = r > 0.0031308 ? 1.055 * Math.pow(r, 1.0 / 2.4) - 0.055 : r * 12.92; | 
						|
  g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92; | 
						|
  b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92; | 
						|
  r = Math.min(Math.max(0, r), 1); | 
						|
  g = Math.min(Math.max(0, g), 1); | 
						|
  b = Math.min(Math.max(0, b), 1); | 
						|
  return [r * 255, g * 255, b * 255]; | 
						|
}; | 
						|
 | 
						|
convert.xyz.lab = function (xyz) { | 
						|
  var x = xyz[0]; | 
						|
  var y = xyz[1]; | 
						|
  var z = xyz[2]; | 
						|
  var l; | 
						|
  var a; | 
						|
  var b; | 
						|
  x /= 95.047; | 
						|
  y /= 100; | 
						|
  z /= 108.883; | 
						|
  x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116; | 
						|
  y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116; | 
						|
  z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116; | 
						|
  l = 116 * y - 16; | 
						|
  a = 500 * (x - y); | 
						|
  b = 200 * (y - z); | 
						|
  return [l, a, b]; | 
						|
}; | 
						|
 | 
						|
convert.lab.xyz = function (lab) { | 
						|
  var l = lab[0]; | 
						|
  var a = lab[1]; | 
						|
  var b = lab[2]; | 
						|
  var x; | 
						|
  var y; | 
						|
  var z; | 
						|
  y = (l + 16) / 116; | 
						|
  x = a / 500 + y; | 
						|
  z = y - b / 200; | 
						|
  var y2 = Math.pow(y, 3); | 
						|
  var x2 = Math.pow(x, 3); | 
						|
  var z2 = Math.pow(z, 3); | 
						|
  y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; | 
						|
  x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; | 
						|
  z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787; | 
						|
  x *= 95.047; | 
						|
  y *= 100; | 
						|
  z *= 108.883; | 
						|
  return [x, y, z]; | 
						|
}; | 
						|
 | 
						|
convert.lab.lch = function (lab) { | 
						|
  var l = lab[0]; | 
						|
  var a = lab[1]; | 
						|
  var b = lab[2]; | 
						|
  var hr; | 
						|
  var h; | 
						|
  var c; | 
						|
  hr = Math.atan2(b, a); | 
						|
  h = hr * 360 / 2 / Math.PI; | 
						|
 | 
						|
  if (h < 0) { | 
						|
    h += 360; | 
						|
  } | 
						|
 | 
						|
  c = Math.sqrt(a * a + b * b); | 
						|
  return [l, c, h]; | 
						|
}; | 
						|
 | 
						|
convert.lch.lab = function (lch) { | 
						|
  var l = lch[0]; | 
						|
  var c = lch[1]; | 
						|
  var h = lch[2]; | 
						|
  var a; | 
						|
  var b; | 
						|
  var hr; | 
						|
  hr = h / 360 * 2 * Math.PI; | 
						|
  a = c * Math.cos(hr); | 
						|
  b = c * Math.sin(hr); | 
						|
  return [l, a, b]; | 
						|
}; | 
						|
 | 
						|
convert.rgb.ansi16 = function (args) { | 
						|
  var r = args[0]; | 
						|
  var g = args[1]; | 
						|
  var b = args[2]; | 
						|
  var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization | 
						|
 | 
						|
  value = Math.round(value / 50); | 
						|
 | 
						|
  if (value === 0) { | 
						|
    return 30; | 
						|
  } | 
						|
 | 
						|
  var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255)); | 
						|
 | 
						|
  if (value === 2) { | 
						|
    ansi += 60; | 
						|
  } | 
						|
 | 
						|
  return ansi; | 
						|
}; | 
						|
 | 
						|
convert.hsv.ansi16 = function (args) { | 
						|
  // optimization here; we already know the value and don't need to get | 
						|
  // it converted for us. | 
						|
  return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); | 
						|
}; | 
						|
 | 
						|
convert.rgb.ansi256 = function (args) { | 
						|
  var r = args[0]; | 
						|
  var g = args[1]; | 
						|
  var b = args[2]; // we use the extended greyscale palette here, with the exception of | 
						|
  // black and white. normal palette only has 4 greyscale shades. | 
						|
 | 
						|
  if (r === g && g === b) { | 
						|
    if (r < 8) { | 
						|
      return 16; | 
						|
    } | 
						|
 | 
						|
    if (r > 248) { | 
						|
      return 231; | 
						|
    } | 
						|
 | 
						|
    return Math.round((r - 8) / 247 * 24) + 232; | 
						|
  } | 
						|
 | 
						|
  var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5); | 
						|
  return ansi; | 
						|
}; | 
						|
 | 
						|
convert.ansi16.rgb = function (args) { | 
						|
  var color = args % 10; // handle greyscale | 
						|
 | 
						|
  if (color === 0 || color === 7) { | 
						|
    if (args > 50) { | 
						|
      color += 3.5; | 
						|
    } | 
						|
 | 
						|
    color = color / 10.5 * 255; | 
						|
    return [color, color, color]; | 
						|
  } | 
						|
 | 
						|
  var mult = (~~(args > 50) + 1) * 0.5; | 
						|
  var r = (color & 1) * mult * 255; | 
						|
  var g = (color >> 1 & 1) * mult * 255; | 
						|
  var b = (color >> 2 & 1) * mult * 255; | 
						|
  return [r, g, b]; | 
						|
}; | 
						|
 | 
						|
convert.ansi256.rgb = function (args) { | 
						|
  // handle greyscale | 
						|
  if (args >= 232) { | 
						|
    var c = (args - 232) * 10 + 8; | 
						|
    return [c, c, c]; | 
						|
  } | 
						|
 | 
						|
  args -= 16; | 
						|
  var rem; | 
						|
  var r = Math.floor(args / 36) / 5 * 255; | 
						|
  var g = Math.floor((rem = args % 36) / 6) / 5 * 255; | 
						|
  var b = rem % 6 / 5 * 255; | 
						|
  return [r, g, b]; | 
						|
}; | 
						|
 | 
						|
convert.rgb.hex = function (args) { | 
						|
  var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF); | 
						|
  var string = integer.toString(16).toUpperCase(); | 
						|
  return '000000'.substring(string.length) + string; | 
						|
}; | 
						|
 | 
						|
convert.hex.rgb = function (args) { | 
						|
  var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); | 
						|
 | 
						|
  if (!match) { | 
						|
    return [0, 0, 0]; | 
						|
  } | 
						|
 | 
						|
  var colorString = match[0]; | 
						|
 | 
						|
  if (match[0].length === 3) { | 
						|
    colorString = colorString.split('').map(function (char) { | 
						|
      return char + char; | 
						|
    }).join(''); | 
						|
  } | 
						|
 | 
						|
  var integer = parseInt(colorString, 16); | 
						|
  var r = integer >> 16 & 0xFF; | 
						|
  var g = integer >> 8 & 0xFF; | 
						|
  var b = integer & 0xFF; | 
						|
  return [r, g, b]; | 
						|
}; | 
						|
 | 
						|
convert.rgb.hcg = function (rgb) { | 
						|
  var r = rgb[0] / 255; | 
						|
  var g = rgb[1] / 255; | 
						|
  var b = rgb[2] / 255; | 
						|
  var max = Math.max(Math.max(r, g), b); | 
						|
  var min = Math.min(Math.min(r, g), b); | 
						|
  var chroma = max - min; | 
						|
  var grayscale; | 
						|
  var hue; | 
						|
 | 
						|
  if (chroma < 1) { | 
						|
    grayscale = min / (1 - chroma); | 
						|
  } else { | 
						|
    grayscale = 0; | 
						|
  } | 
						|
 | 
						|
  if (chroma <= 0) { | 
						|
    hue = 0; | 
						|
  } else if (max === r) { | 
						|
    hue = (g - b) / chroma % 6; | 
						|
  } else if (max === g) { | 
						|
    hue = 2 + (b - r) / chroma; | 
						|
  } else { | 
						|
    hue = 4 + (r - g) / chroma + 4; | 
						|
  } | 
						|
 | 
						|
  hue /= 6; | 
						|
  hue %= 1; | 
						|
  return [hue * 360, chroma * 100, grayscale * 100]; | 
						|
}; | 
						|
 | 
						|
convert.hsl.hcg = function (hsl) { | 
						|
  var s = hsl[1] / 100; | 
						|
  var l = hsl[2] / 100; | 
						|
  var c = 1; | 
						|
  var f = 0; | 
						|
 | 
						|
  if (l < 0.5) { | 
						|
    c = 2.0 * s * l; | 
						|
  } else { | 
						|
    c = 2.0 * s * (1.0 - l); | 
						|
  } | 
						|
 | 
						|
  if (c < 1.0) { | 
						|
    f = (l - 0.5 * c) / (1.0 - c); | 
						|
  } | 
						|
 | 
						|
  return [hsl[0], c * 100, f * 100]; | 
						|
}; | 
						|
 | 
						|
convert.hsv.hcg = function (hsv) { | 
						|
  var s = hsv[1] / 100; | 
						|
  var v = hsv[2] / 100; | 
						|
  var c = s * v; | 
						|
  var f = 0; | 
						|
 | 
						|
  if (c < 1.0) { | 
						|
    f = (v - c) / (1 - c); | 
						|
  } | 
						|
 | 
						|
  return [hsv[0], c * 100, f * 100]; | 
						|
}; | 
						|
 | 
						|
convert.hcg.rgb = function (hcg) { | 
						|
  var h = hcg[0] / 360; | 
						|
  var c = hcg[1] / 100; | 
						|
  var g = hcg[2] / 100; | 
						|
 | 
						|
  if (c === 0.0) { | 
						|
    return [g * 255, g * 255, g * 255]; | 
						|
  } | 
						|
 | 
						|
  var pure = [0, 0, 0]; | 
						|
  var hi = h % 1 * 6; | 
						|
  var v = hi % 1; | 
						|
  var w = 1 - v; | 
						|
  var mg = 0; | 
						|
 | 
						|
  switch (Math.floor(hi)) { | 
						|
    case 0: | 
						|
      pure[0] = 1; | 
						|
      pure[1] = v; | 
						|
      pure[2] = 0; | 
						|
      break; | 
						|
 | 
						|
    case 1: | 
						|
      pure[0] = w; | 
						|
      pure[1] = 1; | 
						|
      pure[2] = 0; | 
						|
      break; | 
						|
 | 
						|
    case 2: | 
						|
      pure[0] = 0; | 
						|
      pure[1] = 1; | 
						|
      pure[2] = v; | 
						|
      break; | 
						|
 | 
						|
    case 3: | 
						|
      pure[0] = 0; | 
						|
      pure[1] = w; | 
						|
      pure[2] = 1; | 
						|
      break; | 
						|
 | 
						|
    case 4: | 
						|
      pure[0] = v; | 
						|
      pure[1] = 0; | 
						|
      pure[2] = 1; | 
						|
      break; | 
						|
 | 
						|
    default: | 
						|
      pure[0] = 1; | 
						|
      pure[1] = 0; | 
						|
      pure[2] = w; | 
						|
  } | 
						|
 | 
						|
  mg = (1.0 - c) * g; | 
						|
  return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255]; | 
						|
}; | 
						|
 | 
						|
convert.hcg.hsv = function (hcg) { | 
						|
  var c = hcg[1] / 100; | 
						|
  var g = hcg[2] / 100; | 
						|
  var v = c + g * (1.0 - c); | 
						|
  var f = 0; | 
						|
 | 
						|
  if (v > 0.0) { | 
						|
    f = c / v; | 
						|
  } | 
						|
 | 
						|
  return [hcg[0], f * 100, v * 100]; | 
						|
}; | 
						|
 | 
						|
convert.hcg.hsl = function (hcg) { | 
						|
  var c = hcg[1] / 100; | 
						|
  var g = hcg[2] / 100; | 
						|
  var l = g * (1.0 - c) + 0.5 * c; | 
						|
  var s = 0; | 
						|
 | 
						|
  if (l > 0.0 && l < 0.5) { | 
						|
    s = c / (2 * l); | 
						|
  } else if (l >= 0.5 && l < 1.0) { | 
						|
    s = c / (2 * (1 - l)); | 
						|
  } | 
						|
 | 
						|
  return [hcg[0], s * 100, l * 100]; | 
						|
}; | 
						|
 | 
						|
convert.hcg.hwb = function (hcg) { | 
						|
  var c = hcg[1] / 100; | 
						|
  var g = hcg[2] / 100; | 
						|
  var v = c + g * (1.0 - c); | 
						|
  return [hcg[0], (v - c) * 100, (1 - v) * 100]; | 
						|
}; | 
						|
 | 
						|
convert.hwb.hcg = function (hwb) { | 
						|
  var w = hwb[1] / 100; | 
						|
  var b = hwb[2] / 100; | 
						|
  var v = 1 - b; | 
						|
  var c = v - w; | 
						|
  var g = 0; | 
						|
 | 
						|
  if (c < 1) { | 
						|
    g = (v - c) / (1 - c); | 
						|
  } | 
						|
 | 
						|
  return [hwb[0], c * 100, g * 100]; | 
						|
}; | 
						|
 | 
						|
convert.apple.rgb = function (apple) { | 
						|
  return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255]; | 
						|
}; | 
						|
 | 
						|
convert.rgb.apple = function (rgb) { | 
						|
  return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535]; | 
						|
}; | 
						|
 | 
						|
convert.gray.rgb = function (args) { | 
						|
  return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; | 
						|
}; | 
						|
 | 
						|
convert.gray.hsl = convert.gray.hsv = function (args) { | 
						|
  return [0, 0, args[0]]; | 
						|
}; | 
						|
 | 
						|
convert.gray.hwb = function (gray) { | 
						|
  return [0, 100, gray[0]]; | 
						|
}; | 
						|
 | 
						|
convert.gray.cmyk = function (gray) { | 
						|
  return [0, 0, 0, gray[0]]; | 
						|
}; | 
						|
 | 
						|
convert.gray.lab = function (gray) { | 
						|
  return [gray[0], 0, 0]; | 
						|
}; | 
						|
 | 
						|
convert.gray.hex = function (gray) { | 
						|
  var val = Math.round(gray[0] / 100 * 255) & 0xFF; | 
						|
  var integer = (val << 16) + (val << 8) + val; | 
						|
  var string = integer.toString(16).toUpperCase(); | 
						|
  return '000000'.substring(string.length) + string; | 
						|
}; | 
						|
 | 
						|
convert.rgb.gray = function (rgb) { | 
						|
  var val = (rgb[0] + rgb[1] + rgb[2]) / 3; | 
						|
  return [val / 255 * 100]; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/color-convert/index.js": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./node_modules/color-convert/index.js ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var conversions = __webpack_require__(/*! ./conversions */ "./node_modules/color-convert/conversions.js"); | 
						|
 | 
						|
var route = __webpack_require__(/*! ./route */ "./node_modules/color-convert/route.js"); | 
						|
 | 
						|
var convert = {}; | 
						|
var models = Object.keys(conversions); | 
						|
 | 
						|
function wrapRaw(fn) { | 
						|
  var wrappedFn = function wrappedFn(args) { | 
						|
    if (args === undefined || args === null) { | 
						|
      return args; | 
						|
    } | 
						|
 | 
						|
    if (arguments.length > 1) { | 
						|
      args = Array.prototype.slice.call(arguments); | 
						|
    } | 
						|
 | 
						|
    return fn(args); | 
						|
  }; // preserve .conversion property if there is one | 
						|
 | 
						|
 | 
						|
  if ('conversion' in fn) { | 
						|
    wrappedFn.conversion = fn.conversion; | 
						|
  } | 
						|
 | 
						|
  return wrappedFn; | 
						|
} | 
						|
 | 
						|
function wrapRounded(fn) { | 
						|
  var wrappedFn = function wrappedFn(args) { | 
						|
    if (args === undefined || args === null) { | 
						|
      return args; | 
						|
    } | 
						|
 | 
						|
    if (arguments.length > 1) { | 
						|
      args = Array.prototype.slice.call(arguments); | 
						|
    } | 
						|
 | 
						|
    var result = fn(args); // we're assuming the result is an array here. | 
						|
    // see notice in conversions.js; don't use box types | 
						|
    // in conversion functions. | 
						|
 | 
						|
    if (_typeof(result) === 'object') { | 
						|
      for (var len = result.length, i = 0; i < len; i++) { | 
						|
        result[i] = Math.round(result[i]); | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return result; | 
						|
  }; // preserve .conversion property if there is one | 
						|
 | 
						|
 | 
						|
  if ('conversion' in fn) { | 
						|
    wrappedFn.conversion = fn.conversion; | 
						|
  } | 
						|
 | 
						|
  return wrappedFn; | 
						|
} | 
						|
 | 
						|
models.forEach(function (fromModel) { | 
						|
  convert[fromModel] = {}; | 
						|
  Object.defineProperty(convert[fromModel], 'channels', { | 
						|
    value: conversions[fromModel].channels | 
						|
  }); | 
						|
  Object.defineProperty(convert[fromModel], 'labels', { | 
						|
    value: conversions[fromModel].labels | 
						|
  }); | 
						|
  var routes = route(fromModel); | 
						|
  var routeModels = Object.keys(routes); | 
						|
  routeModels.forEach(function (toModel) { | 
						|
    var fn = routes[toModel]; | 
						|
    convert[fromModel][toModel] = wrapRounded(fn); | 
						|
    convert[fromModel][toModel].raw = wrapRaw(fn); | 
						|
  }); | 
						|
}); | 
						|
module.exports = convert; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/color-convert/route.js": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./node_modules/color-convert/route.js ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var conversions = __webpack_require__(/*! ./conversions */ "./node_modules/color-convert/conversions.js"); | 
						|
/* | 
						|
	this function routes a model to all other models. | 
						|
 | 
						|
	all functions that are routed have a property `.conversion` attached | 
						|
	to the returned synthetic function. This property is an array | 
						|
	of strings, each with the steps in between the 'from' and 'to' | 
						|
	color models (inclusive). | 
						|
 | 
						|
	conversions that are not possible simply are not included. | 
						|
*/ | 
						|
 | 
						|
 | 
						|
function buildGraph() { | 
						|
  var graph = {}; // https://jsperf.com/object-keys-vs-for-in-with-closure/3 | 
						|
 | 
						|
  var models = Object.keys(conversions); | 
						|
 | 
						|
  for (var len = models.length, i = 0; i < len; i++) { | 
						|
    graph[models[i]] = { | 
						|
      // http://jsperf.com/1-vs-infinity | 
						|
      // micro-opt, but this is simple. | 
						|
      distance: -1, | 
						|
      parent: null | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  return graph; | 
						|
} // https://en.wikipedia.org/wiki/Breadth-first_search | 
						|
 | 
						|
 | 
						|
function deriveBFS(fromModel) { | 
						|
  var graph = buildGraph(); | 
						|
  var queue = [fromModel]; // unshift -> queue -> pop | 
						|
 | 
						|
  graph[fromModel].distance = 0; | 
						|
 | 
						|
  while (queue.length) { | 
						|
    var current = queue.pop(); | 
						|
    var adjacents = Object.keys(conversions[current]); | 
						|
 | 
						|
    for (var len = adjacents.length, i = 0; i < len; i++) { | 
						|
      var adjacent = adjacents[i]; | 
						|
      var node = graph[adjacent]; | 
						|
 | 
						|
      if (node.distance === -1) { | 
						|
        node.distance = graph[current].distance + 1; | 
						|
        node.parent = current; | 
						|
        queue.unshift(adjacent); | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return graph; | 
						|
} | 
						|
 | 
						|
function link(from, to) { | 
						|
  return function (args) { | 
						|
    return to(from(args)); | 
						|
  }; | 
						|
} | 
						|
 | 
						|
function wrapConversion(toModel, graph) { | 
						|
  var path = [graph[toModel].parent, toModel]; | 
						|
  var fn = conversions[graph[toModel].parent][toModel]; | 
						|
  var cur = graph[toModel].parent; | 
						|
 | 
						|
  while (graph[cur].parent) { | 
						|
    path.unshift(graph[cur].parent); | 
						|
    fn = link(conversions[graph[cur].parent][cur], fn); | 
						|
    cur = graph[cur].parent; | 
						|
  } | 
						|
 | 
						|
  fn.conversion = path; | 
						|
  return fn; | 
						|
} | 
						|
 | 
						|
module.exports = function (fromModel) { | 
						|
  var graph = deriveBFS(fromModel); | 
						|
  var conversion = {}; | 
						|
  var models = Object.keys(graph); | 
						|
 | 
						|
  for (var len = models.length, i = 0; i < len; i++) { | 
						|
    var toModel = models[i]; | 
						|
    var node = graph[toModel]; | 
						|
 | 
						|
    if (node.parent === null) { | 
						|
      // no possible conversion, or this node is the source model. | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    conversion[toModel] = wrapConversion(toModel, graph); | 
						|
  } | 
						|
 | 
						|
  return conversion; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/color-name/index.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/color-name/index.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
module.exports = { | 
						|
  "aliceblue": [240, 248, 255], | 
						|
  "antiquewhite": [250, 235, 215], | 
						|
  "aqua": [0, 255, 255], | 
						|
  "aquamarine": [127, 255, 212], | 
						|
  "azure": [240, 255, 255], | 
						|
  "beige": [245, 245, 220], | 
						|
  "bisque": [255, 228, 196], | 
						|
  "black": [0, 0, 0], | 
						|
  "blanchedalmond": [255, 235, 205], | 
						|
  "blue": [0, 0, 255], | 
						|
  "blueviolet": [138, 43, 226], | 
						|
  "brown": [165, 42, 42], | 
						|
  "burlywood": [222, 184, 135], | 
						|
  "cadetblue": [95, 158, 160], | 
						|
  "chartreuse": [127, 255, 0], | 
						|
  "chocolate": [210, 105, 30], | 
						|
  "coral": [255, 127, 80], | 
						|
  "cornflowerblue": [100, 149, 237], | 
						|
  "cornsilk": [255, 248, 220], | 
						|
  "crimson": [220, 20, 60], | 
						|
  "cyan": [0, 255, 255], | 
						|
  "darkblue": [0, 0, 139], | 
						|
  "darkcyan": [0, 139, 139], | 
						|
  "darkgoldenrod": [184, 134, 11], | 
						|
  "darkgray": [169, 169, 169], | 
						|
  "darkgreen": [0, 100, 0], | 
						|
  "darkgrey": [169, 169, 169], | 
						|
  "darkkhaki": [189, 183, 107], | 
						|
  "darkmagenta": [139, 0, 139], | 
						|
  "darkolivegreen": [85, 107, 47], | 
						|
  "darkorange": [255, 140, 0], | 
						|
  "darkorchid": [153, 50, 204], | 
						|
  "darkred": [139, 0, 0], | 
						|
  "darksalmon": [233, 150, 122], | 
						|
  "darkseagreen": [143, 188, 143], | 
						|
  "darkslateblue": [72, 61, 139], | 
						|
  "darkslategray": [47, 79, 79], | 
						|
  "darkslategrey": [47, 79, 79], | 
						|
  "darkturquoise": [0, 206, 209], | 
						|
  "darkviolet": [148, 0, 211], | 
						|
  "deeppink": [255, 20, 147], | 
						|
  "deepskyblue": [0, 191, 255], | 
						|
  "dimgray": [105, 105, 105], | 
						|
  "dimgrey": [105, 105, 105], | 
						|
  "dodgerblue": [30, 144, 255], | 
						|
  "firebrick": [178, 34, 34], | 
						|
  "floralwhite": [255, 250, 240], | 
						|
  "forestgreen": [34, 139, 34], | 
						|
  "fuchsia": [255, 0, 255], | 
						|
  "gainsboro": [220, 220, 220], | 
						|
  "ghostwhite": [248, 248, 255], | 
						|
  "gold": [255, 215, 0], | 
						|
  "goldenrod": [218, 165, 32], | 
						|
  "gray": [128, 128, 128], | 
						|
  "green": [0, 128, 0], | 
						|
  "greenyellow": [173, 255, 47], | 
						|
  "grey": [128, 128, 128], | 
						|
  "honeydew": [240, 255, 240], | 
						|
  "hotpink": [255, 105, 180], | 
						|
  "indianred": [205, 92, 92], | 
						|
  "indigo": [75, 0, 130], | 
						|
  "ivory": [255, 255, 240], | 
						|
  "khaki": [240, 230, 140], | 
						|
  "lavender": [230, 230, 250], | 
						|
  "lavenderblush": [255, 240, 245], | 
						|
  "lawngreen": [124, 252, 0], | 
						|
  "lemonchiffon": [255, 250, 205], | 
						|
  "lightblue": [173, 216, 230], | 
						|
  "lightcoral": [240, 128, 128], | 
						|
  "lightcyan": [224, 255, 255], | 
						|
  "lightgoldenrodyellow": [250, 250, 210], | 
						|
  "lightgray": [211, 211, 211], | 
						|
  "lightgreen": [144, 238, 144], | 
						|
  "lightgrey": [211, 211, 211], | 
						|
  "lightpink": [255, 182, 193], | 
						|
  "lightsalmon": [255, 160, 122], | 
						|
  "lightseagreen": [32, 178, 170], | 
						|
  "lightskyblue": [135, 206, 250], | 
						|
  "lightslategray": [119, 136, 153], | 
						|
  "lightslategrey": [119, 136, 153], | 
						|
  "lightsteelblue": [176, 196, 222], | 
						|
  "lightyellow": [255, 255, 224], | 
						|
  "lime": [0, 255, 0], | 
						|
  "limegreen": [50, 205, 50], | 
						|
  "linen": [250, 240, 230], | 
						|
  "magenta": [255, 0, 255], | 
						|
  "maroon": [128, 0, 0], | 
						|
  "mediumaquamarine": [102, 205, 170], | 
						|
  "mediumblue": [0, 0, 205], | 
						|
  "mediumorchid": [186, 85, 211], | 
						|
  "mediumpurple": [147, 112, 219], | 
						|
  "mediumseagreen": [60, 179, 113], | 
						|
  "mediumslateblue": [123, 104, 238], | 
						|
  "mediumspringgreen": [0, 250, 154], | 
						|
  "mediumturquoise": [72, 209, 204], | 
						|
  "mediumvioletred": [199, 21, 133], | 
						|
  "midnightblue": [25, 25, 112], | 
						|
  "mintcream": [245, 255, 250], | 
						|
  "mistyrose": [255, 228, 225], | 
						|
  "moccasin": [255, 228, 181], | 
						|
  "navajowhite": [255, 222, 173], | 
						|
  "navy": [0, 0, 128], | 
						|
  "oldlace": [253, 245, 230], | 
						|
  "olive": [128, 128, 0], | 
						|
  "olivedrab": [107, 142, 35], | 
						|
  "orange": [255, 165, 0], | 
						|
  "orangered": [255, 69, 0], | 
						|
  "orchid": [218, 112, 214], | 
						|
  "palegoldenrod": [238, 232, 170], | 
						|
  "palegreen": [152, 251, 152], | 
						|
  "paleturquoise": [175, 238, 238], | 
						|
  "palevioletred": [219, 112, 147], | 
						|
  "papayawhip": [255, 239, 213], | 
						|
  "peachpuff": [255, 218, 185], | 
						|
  "peru": [205, 133, 63], | 
						|
  "pink": [255, 192, 203], | 
						|
  "plum": [221, 160, 221], | 
						|
  "powderblue": [176, 224, 230], | 
						|
  "purple": [128, 0, 128], | 
						|
  "rebeccapurple": [102, 51, 153], | 
						|
  "red": [255, 0, 0], | 
						|
  "rosybrown": [188, 143, 143], | 
						|
  "royalblue": [65, 105, 225], | 
						|
  "saddlebrown": [139, 69, 19], | 
						|
  "salmon": [250, 128, 114], | 
						|
  "sandybrown": [244, 164, 96], | 
						|
  "seagreen": [46, 139, 87], | 
						|
  "seashell": [255, 245, 238], | 
						|
  "sienna": [160, 82, 45], | 
						|
  "silver": [192, 192, 192], | 
						|
  "skyblue": [135, 206, 235], | 
						|
  "slateblue": [106, 90, 205], | 
						|
  "slategray": [112, 128, 144], | 
						|
  "slategrey": [112, 128, 144], | 
						|
  "snow": [255, 250, 250], | 
						|
  "springgreen": [0, 255, 127], | 
						|
  "steelblue": [70, 130, 180], | 
						|
  "tan": [210, 180, 140], | 
						|
  "teal": [0, 128, 128], | 
						|
  "thistle": [216, 191, 216], | 
						|
  "tomato": [255, 99, 71], | 
						|
  "turquoise": [64, 224, 208], | 
						|
  "violet": [238, 130, 238], | 
						|
  "wheat": [245, 222, 179], | 
						|
  "white": [255, 255, 255], | 
						|
  "whitesmoke": [245, 245, 245], | 
						|
  "yellow": [255, 255, 0], | 
						|
  "yellowgreen": [154, 205, 50] | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/copy-descriptor/index.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./node_modules/copy-descriptor/index.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * copy-descriptor <https://github.com/jonschlinkert/copy-descriptor> | 
						|
 * | 
						|
 * Copyright (c) 2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
/** | 
						|
 * Copy a descriptor from one object to another. | 
						|
 * | 
						|
 * ```js | 
						|
 * function App() { | 
						|
 *   this.cache = {}; | 
						|
 * } | 
						|
 * App.prototype.set = function(key, val) { | 
						|
 *   this.cache[key] = val; | 
						|
 *   return this; | 
						|
 * }; | 
						|
 * Object.defineProperty(App.prototype, 'count', { | 
						|
 *   get: function() { | 
						|
 *     return Object.keys(this.cache).length; | 
						|
 *   } | 
						|
 * }); | 
						|
 * | 
						|
 * copy(App.prototype, 'count', 'len'); | 
						|
 * | 
						|
 * // create an instance | 
						|
 * var app = new App(); | 
						|
 * | 
						|
 * app.set('a', true); | 
						|
 * app.set('b', true); | 
						|
 * app.set('c', true); | 
						|
 * | 
						|
 * console.log(app.count); | 
						|
 * //=> 3 | 
						|
 * console.log(app.len); | 
						|
 * //=> 3 | 
						|
 * ``` | 
						|
 * @name copy | 
						|
 * @param {Object} `receiver` The target object | 
						|
 * @param {Object} `provider` The provider object | 
						|
 * @param {String} `from` The key to copy on provider. | 
						|
 * @param {String} `to` Optionally specify a new key name to use. | 
						|
 * @return {Object} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
module.exports = function copyDescriptor(receiver, provider, from, to) { | 
						|
  if (!isObject(provider) && typeof provider !== 'function') { | 
						|
    to = from; | 
						|
    from = provider; | 
						|
    provider = receiver; | 
						|
  } | 
						|
 | 
						|
  if (!isObject(receiver) && typeof receiver !== 'function') { | 
						|
    throw new TypeError('expected the first argument to be an object'); | 
						|
  } | 
						|
 | 
						|
  if (!isObject(provider) && typeof provider !== 'function') { | 
						|
    throw new TypeError('expected provider to be an object'); | 
						|
  } | 
						|
 | 
						|
  if (typeof to !== 'string') { | 
						|
    to = from; | 
						|
  } | 
						|
 | 
						|
  if (typeof from !== 'string') { | 
						|
    throw new TypeError('expected key to be a string'); | 
						|
  } | 
						|
 | 
						|
  if (!(from in provider)) { | 
						|
    throw new Error('property "' + from + '" does not exist'); | 
						|
  } | 
						|
 | 
						|
  var val = Object.getOwnPropertyDescriptor(provider, from); | 
						|
  if (val) Object.defineProperty(receiver, to, val); | 
						|
}; | 
						|
 | 
						|
function isObject(val) { | 
						|
  return {}.toString.call(val) === '[object Object]'; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/define-property/index.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./node_modules/define-property/index.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * define-property <https://github.com/jonschlinkert/define-property> | 
						|
 * | 
						|
 * Copyright (c) 2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var isDescriptor = __webpack_require__(/*! is-descriptor */ "./node_modules/define-property/node_modules/is-descriptor/index.js"); | 
						|
 | 
						|
module.exports = function defineProperty(obj, prop, val) { | 
						|
  if (_typeof(obj) !== 'object' && typeof obj !== 'function') { | 
						|
    throw new TypeError('expected an object or function.'); | 
						|
  } | 
						|
 | 
						|
  if (typeof prop !== 'string') { | 
						|
    throw new TypeError('expected `prop` to be a string.'); | 
						|
  } | 
						|
 | 
						|
  if (isDescriptor(val) && ('set' in val || 'get' in val)) { | 
						|
    return Object.defineProperty(obj, prop, val); | 
						|
  } | 
						|
 | 
						|
  return Object.defineProperty(obj, prop, { | 
						|
    configurable: true, | 
						|
    enumerable: false, | 
						|
    writable: true, | 
						|
    value: val | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/define-property/node_modules/is-accessor-descriptor/index.js": | 
						|
/*!***********************************************************************************!*\ | 
						|
  !*** ./node_modules/define-property/node_modules/is-accessor-descriptor/index.js ***! | 
						|
  \***********************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-accessor-descriptor <https://github.com/jonschlinkert/is-accessor-descriptor> | 
						|
 * | 
						|
 * Copyright (c) 2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var typeOf = __webpack_require__(/*! kind-of */ "./node_modules/define-property/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js"); // accessor descriptor properties | 
						|
 | 
						|
 | 
						|
var accessor = { | 
						|
  get: 'function', | 
						|
  set: 'function', | 
						|
  configurable: 'boolean', | 
						|
  enumerable: 'boolean' | 
						|
}; | 
						|
 | 
						|
function isAccessorDescriptor(obj, prop) { | 
						|
  if (typeof prop === 'string') { | 
						|
    var val = Object.getOwnPropertyDescriptor(obj, prop); | 
						|
    return typeof val !== 'undefined'; | 
						|
  } | 
						|
 | 
						|
  if (typeOf(obj) !== 'object') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (has(obj, 'value') || has(obj, 'writable')) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (!has(obj, 'get') || typeof obj.get !== 'function') { | 
						|
    return false; | 
						|
  } // tldr: it's valid to have "set" be undefined | 
						|
  // "set" might be undefined if `Object.getOwnPropertyDescriptor` | 
						|
  // was used to get the value, and only `get` was defined by the user | 
						|
 | 
						|
 | 
						|
  if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  for (var key in obj) { | 
						|
    if (!accessor.hasOwnProperty(key)) { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (typeOf(obj[key]) === accessor[key]) { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (typeof obj[key] !== 'undefined') { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
} | 
						|
 | 
						|
function has(obj, key) { | 
						|
  return {}.hasOwnProperty.call(obj, key); | 
						|
} | 
						|
/** | 
						|
 * Expose `isAccessorDescriptor` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = isAccessorDescriptor; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/define-property/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js": | 
						|
/*!********************************************************************************************************!*\ | 
						|
  !*** ./node_modules/define-property/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js ***! | 
						|
  \********************************************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/is-buffer/index.js"); | 
						|
 | 
						|
var toString = Object.prototype.toString; | 
						|
/** | 
						|
 * Get the native `typeof` a value. | 
						|
 * | 
						|
 * @param  {*} `val` | 
						|
 * @return {*} Native javascript type | 
						|
 */ | 
						|
 | 
						|
module.exports = function kindOf(val) { | 
						|
  // primitivies | 
						|
  if (typeof val === 'undefined') { | 
						|
    return 'undefined'; | 
						|
  } | 
						|
 | 
						|
  if (val === null) { | 
						|
    return 'null'; | 
						|
  } | 
						|
 | 
						|
  if (val === true || val === false || val instanceof Boolean) { | 
						|
    return 'boolean'; | 
						|
  } | 
						|
 | 
						|
  if (typeof val === 'string' || val instanceof String) { | 
						|
    return 'string'; | 
						|
  } | 
						|
 | 
						|
  if (typeof val === 'number' || val instanceof Number) { | 
						|
    return 'number'; | 
						|
  } // functions | 
						|
 | 
						|
 | 
						|
  if (typeof val === 'function' || val instanceof Function) { | 
						|
    return 'function'; | 
						|
  } // array | 
						|
 | 
						|
 | 
						|
  if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { | 
						|
    return 'array'; | 
						|
  } // check for instances of RegExp and Date before calling `toString` | 
						|
 | 
						|
 | 
						|
  if (val instanceof RegExp) { | 
						|
    return 'regexp'; | 
						|
  } | 
						|
 | 
						|
  if (val instanceof Date) { | 
						|
    return 'date'; | 
						|
  } // other objects | 
						|
 | 
						|
 | 
						|
  var type = toString.call(val); | 
						|
 | 
						|
  if (type === '[object RegExp]') { | 
						|
    return 'regexp'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Date]') { | 
						|
    return 'date'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Arguments]') { | 
						|
    return 'arguments'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Error]') { | 
						|
    return 'error'; | 
						|
  } // buffer | 
						|
 | 
						|
 | 
						|
  if (isBuffer(val)) { | 
						|
    return 'buffer'; | 
						|
  } // es6: Map, WeakMap, Set, WeakSet | 
						|
 | 
						|
 | 
						|
  if (type === '[object Set]') { | 
						|
    return 'set'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object WeakSet]') { | 
						|
    return 'weakset'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Map]') { | 
						|
    return 'map'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object WeakMap]') { | 
						|
    return 'weakmap'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Symbol]') { | 
						|
    return 'symbol'; | 
						|
  } // typed arrays | 
						|
 | 
						|
 | 
						|
  if (type === '[object Int8Array]') { | 
						|
    return 'int8array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint8Array]') { | 
						|
    return 'uint8array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint8ClampedArray]') { | 
						|
    return 'uint8clampedarray'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Int16Array]') { | 
						|
    return 'int16array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint16Array]') { | 
						|
    return 'uint16array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Int32Array]') { | 
						|
    return 'int32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint32Array]') { | 
						|
    return 'uint32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Float32Array]') { | 
						|
    return 'float32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Float64Array]') { | 
						|
    return 'float64array'; | 
						|
  } // must be a plain object | 
						|
 | 
						|
 | 
						|
  return 'object'; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/define-property/node_modules/is-data-descriptor/index.js": | 
						|
/*!*******************************************************************************!*\ | 
						|
  !*** ./node_modules/define-property/node_modules/is-data-descriptor/index.js ***! | 
						|
  \*******************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-data-descriptor <https://github.com/jonschlinkert/is-data-descriptor> | 
						|
 * | 
						|
 * Copyright (c) 2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var typeOf = __webpack_require__(/*! kind-of */ "./node_modules/define-property/node_modules/is-data-descriptor/node_modules/kind-of/index.js"); // data descriptor properties | 
						|
 | 
						|
 | 
						|
var data = { | 
						|
  configurable: 'boolean', | 
						|
  enumerable: 'boolean', | 
						|
  writable: 'boolean' | 
						|
}; | 
						|
 | 
						|
function isDataDescriptor(obj, prop) { | 
						|
  if (typeOf(obj) !== 'object') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (typeof prop === 'string') { | 
						|
    var val = Object.getOwnPropertyDescriptor(obj, prop); | 
						|
    return typeof val !== 'undefined'; | 
						|
  } | 
						|
 | 
						|
  if (!('value' in obj) && !('writable' in obj)) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  for (var key in obj) { | 
						|
    if (key === 'value') continue; | 
						|
 | 
						|
    if (!data.hasOwnProperty(key)) { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (typeOf(obj[key]) === data[key]) { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (typeof obj[key] !== 'undefined') { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
} | 
						|
/** | 
						|
 * Expose `isDataDescriptor` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = isDataDescriptor; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/define-property/node_modules/is-data-descriptor/node_modules/kind-of/index.js": | 
						|
/*!****************************************************************************************************!*\ | 
						|
  !*** ./node_modules/define-property/node_modules/is-data-descriptor/node_modules/kind-of/index.js ***! | 
						|
  \****************************************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/is-buffer/index.js"); | 
						|
 | 
						|
var toString = Object.prototype.toString; | 
						|
/** | 
						|
 * Get the native `typeof` a value. | 
						|
 * | 
						|
 * @param  {*} `val` | 
						|
 * @return {*} Native javascript type | 
						|
 */ | 
						|
 | 
						|
module.exports = function kindOf(val) { | 
						|
  // primitivies | 
						|
  if (typeof val === 'undefined') { | 
						|
    return 'undefined'; | 
						|
  } | 
						|
 | 
						|
  if (val === null) { | 
						|
    return 'null'; | 
						|
  } | 
						|
 | 
						|
  if (val === true || val === false || val instanceof Boolean) { | 
						|
    return 'boolean'; | 
						|
  } | 
						|
 | 
						|
  if (typeof val === 'string' || val instanceof String) { | 
						|
    return 'string'; | 
						|
  } | 
						|
 | 
						|
  if (typeof val === 'number' || val instanceof Number) { | 
						|
    return 'number'; | 
						|
  } // functions | 
						|
 | 
						|
 | 
						|
  if (typeof val === 'function' || val instanceof Function) { | 
						|
    return 'function'; | 
						|
  } // array | 
						|
 | 
						|
 | 
						|
  if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { | 
						|
    return 'array'; | 
						|
  } // check for instances of RegExp and Date before calling `toString` | 
						|
 | 
						|
 | 
						|
  if (val instanceof RegExp) { | 
						|
    return 'regexp'; | 
						|
  } | 
						|
 | 
						|
  if (val instanceof Date) { | 
						|
    return 'date'; | 
						|
  } // other objects | 
						|
 | 
						|
 | 
						|
  var type = toString.call(val); | 
						|
 | 
						|
  if (type === '[object RegExp]') { | 
						|
    return 'regexp'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Date]') { | 
						|
    return 'date'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Arguments]') { | 
						|
    return 'arguments'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Error]') { | 
						|
    return 'error'; | 
						|
  } // buffer | 
						|
 | 
						|
 | 
						|
  if (isBuffer(val)) { | 
						|
    return 'buffer'; | 
						|
  } // es6: Map, WeakMap, Set, WeakSet | 
						|
 | 
						|
 | 
						|
  if (type === '[object Set]') { | 
						|
    return 'set'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object WeakSet]') { | 
						|
    return 'weakset'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Map]') { | 
						|
    return 'map'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object WeakMap]') { | 
						|
    return 'weakmap'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Symbol]') { | 
						|
    return 'symbol'; | 
						|
  } // typed arrays | 
						|
 | 
						|
 | 
						|
  if (type === '[object Int8Array]') { | 
						|
    return 'int8array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint8Array]') { | 
						|
    return 'uint8array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint8ClampedArray]') { | 
						|
    return 'uint8clampedarray'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Int16Array]') { | 
						|
    return 'int16array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint16Array]') { | 
						|
    return 'uint16array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Int32Array]') { | 
						|
    return 'int32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint32Array]') { | 
						|
    return 'uint32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Float32Array]') { | 
						|
    return 'float32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Float64Array]') { | 
						|
    return 'float64array'; | 
						|
  } // must be a plain object | 
						|
 | 
						|
 | 
						|
  return 'object'; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/define-property/node_modules/is-descriptor/index.js": | 
						|
/*!**************************************************************************!*\ | 
						|
  !*** ./node_modules/define-property/node_modules/is-descriptor/index.js ***! | 
						|
  \**************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-descriptor <https://github.com/jonschlinkert/is-descriptor> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var typeOf = __webpack_require__(/*! kind-of */ "./node_modules/define-property/node_modules/kind-of/index.js"); | 
						|
 | 
						|
var isAccessor = __webpack_require__(/*! is-accessor-descriptor */ "./node_modules/define-property/node_modules/is-accessor-descriptor/index.js"); | 
						|
 | 
						|
var isData = __webpack_require__(/*! is-data-descriptor */ "./node_modules/define-property/node_modules/is-data-descriptor/index.js"); | 
						|
 | 
						|
module.exports = function isDescriptor(obj, key) { | 
						|
  if (typeOf(obj) !== 'object') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if ('get' in obj) { | 
						|
    return isAccessor(obj, key); | 
						|
  } | 
						|
 | 
						|
  return isData(obj, key); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/define-property/node_modules/kind-of/index.js": | 
						|
/*!********************************************************************!*\ | 
						|
  !*** ./node_modules/define-property/node_modules/kind-of/index.js ***! | 
						|
  \********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var toString = Object.prototype.toString; | 
						|
/** | 
						|
 * Get the native `typeof` a value. | 
						|
 * | 
						|
 * @param  {*} `val` | 
						|
 * @return {*} Native javascript type | 
						|
 */ | 
						|
 | 
						|
module.exports = function kindOf(val) { | 
						|
  var type = _typeof(val); // primitivies | 
						|
 | 
						|
 | 
						|
  if (type === 'undefined') { | 
						|
    return 'undefined'; | 
						|
  } | 
						|
 | 
						|
  if (val === null) { | 
						|
    return 'null'; | 
						|
  } | 
						|
 | 
						|
  if (val === true || val === false || val instanceof Boolean) { | 
						|
    return 'boolean'; | 
						|
  } | 
						|
 | 
						|
  if (type === 'string' || val instanceof String) { | 
						|
    return 'string'; | 
						|
  } | 
						|
 | 
						|
  if (type === 'number' || val instanceof Number) { | 
						|
    return 'number'; | 
						|
  } // functions | 
						|
 | 
						|
 | 
						|
  if (type === 'function' || val instanceof Function) { | 
						|
    if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') { | 
						|
      return 'generatorfunction'; | 
						|
    } | 
						|
 | 
						|
    return 'function'; | 
						|
  } // array | 
						|
 | 
						|
 | 
						|
  if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { | 
						|
    return 'array'; | 
						|
  } // check for instances of RegExp and Date before calling `toString` | 
						|
 | 
						|
 | 
						|
  if (val instanceof RegExp) { | 
						|
    return 'regexp'; | 
						|
  } | 
						|
 | 
						|
  if (val instanceof Date) { | 
						|
    return 'date'; | 
						|
  } // other objects | 
						|
 | 
						|
 | 
						|
  type = toString.call(val); | 
						|
 | 
						|
  if (type === '[object RegExp]') { | 
						|
    return 'regexp'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Date]') { | 
						|
    return 'date'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Arguments]') { | 
						|
    return 'arguments'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Error]') { | 
						|
    return 'error'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Promise]') { | 
						|
    return 'promise'; | 
						|
  } // buffer | 
						|
 | 
						|
 | 
						|
  if (isBuffer(val)) { | 
						|
    return 'buffer'; | 
						|
  } // es6: Map, WeakMap, Set, WeakSet | 
						|
 | 
						|
 | 
						|
  if (type === '[object Set]') { | 
						|
    return 'set'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object WeakSet]') { | 
						|
    return 'weakset'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Map]') { | 
						|
    return 'map'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object WeakMap]') { | 
						|
    return 'weakmap'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Symbol]') { | 
						|
    return 'symbol'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Map Iterator]') { | 
						|
    return 'mapiterator'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Set Iterator]') { | 
						|
    return 'setiterator'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object String Iterator]') { | 
						|
    return 'stringiterator'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Array Iterator]') { | 
						|
    return 'arrayiterator'; | 
						|
  } // typed arrays | 
						|
 | 
						|
 | 
						|
  if (type === '[object Int8Array]') { | 
						|
    return 'int8array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint8Array]') { | 
						|
    return 'uint8array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint8ClampedArray]') { | 
						|
    return 'uint8clampedarray'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Int16Array]') { | 
						|
    return 'int16array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint16Array]') { | 
						|
    return 'uint16array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Int32Array]') { | 
						|
    return 'int32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint32Array]') { | 
						|
    return 'uint32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Float32Array]') { | 
						|
    return 'float32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Float64Array]') { | 
						|
    return 'float64array'; | 
						|
  } // must be a plain object | 
						|
 | 
						|
 | 
						|
  return 'object'; | 
						|
}; | 
						|
/** | 
						|
 * If you need to support Safari 5-7 (8-10 yr-old browser), | 
						|
 * take a look at https://github.com/feross/is-buffer | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isBuffer(val) { | 
						|
  return val.constructor && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/esutils/lib/ast.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/esutils/lib/ast.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* | 
						|
  Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com> | 
						|
 | 
						|
  Redistribution and use in source and binary forms, with or without | 
						|
  modification, are permitted provided that the following conditions are met: | 
						|
 | 
						|
    * Redistributions of source code must retain the above copyright | 
						|
      notice, this list of conditions and the following disclaimer. | 
						|
    * Redistributions in binary form must reproduce the above copyright | 
						|
      notice, this list of conditions and the following disclaimer in the | 
						|
      documentation and/or other materials provided with the distribution. | 
						|
 | 
						|
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' | 
						|
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
						|
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
						|
  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> 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 () { | 
						|
  'use strict'; | 
						|
 | 
						|
  function isExpression(node) { | 
						|
    if (node == null) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    switch (node.type) { | 
						|
      case 'ArrayExpression': | 
						|
      case 'AssignmentExpression': | 
						|
      case 'BinaryExpression': | 
						|
      case 'CallExpression': | 
						|
      case 'ConditionalExpression': | 
						|
      case 'FunctionExpression': | 
						|
      case 'Identifier': | 
						|
      case 'Literal': | 
						|
      case 'LogicalExpression': | 
						|
      case 'MemberExpression': | 
						|
      case 'NewExpression': | 
						|
      case 'ObjectExpression': | 
						|
      case 'SequenceExpression': | 
						|
      case 'ThisExpression': | 
						|
      case 'UnaryExpression': | 
						|
      case 'UpdateExpression': | 
						|
        return true; | 
						|
    } | 
						|
 | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  function isIterationStatement(node) { | 
						|
    if (node == null) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    switch (node.type) { | 
						|
      case 'DoWhileStatement': | 
						|
      case 'ForInStatement': | 
						|
      case 'ForStatement': | 
						|
      case 'WhileStatement': | 
						|
        return true; | 
						|
    } | 
						|
 | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  function isStatement(node) { | 
						|
    if (node == null) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    switch (node.type) { | 
						|
      case 'BlockStatement': | 
						|
      case 'BreakStatement': | 
						|
      case 'ContinueStatement': | 
						|
      case 'DebuggerStatement': | 
						|
      case 'DoWhileStatement': | 
						|
      case 'EmptyStatement': | 
						|
      case 'ExpressionStatement': | 
						|
      case 'ForInStatement': | 
						|
      case 'ForStatement': | 
						|
      case 'IfStatement': | 
						|
      case 'LabeledStatement': | 
						|
      case 'ReturnStatement': | 
						|
      case 'SwitchStatement': | 
						|
      case 'ThrowStatement': | 
						|
      case 'TryStatement': | 
						|
      case 'VariableDeclaration': | 
						|
      case 'WhileStatement': | 
						|
      case 'WithStatement': | 
						|
        return true; | 
						|
    } | 
						|
 | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  function isSourceElement(node) { | 
						|
    return isStatement(node) || node != null && node.type === 'FunctionDeclaration'; | 
						|
  } | 
						|
 | 
						|
  function trailingStatement(node) { | 
						|
    switch (node.type) { | 
						|
      case 'IfStatement': | 
						|
        if (node.alternate != null) { | 
						|
          return node.alternate; | 
						|
        } | 
						|
 | 
						|
        return node.consequent; | 
						|
 | 
						|
      case 'LabeledStatement': | 
						|
      case 'ForStatement': | 
						|
      case 'ForInStatement': | 
						|
      case 'WhileStatement': | 
						|
      case 'WithStatement': | 
						|
        return node.body; | 
						|
    } | 
						|
 | 
						|
    return null; | 
						|
  } | 
						|
 | 
						|
  function isProblematicIfStatement(node) { | 
						|
    var current; | 
						|
 | 
						|
    if (node.type !== 'IfStatement') { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    if (node.alternate == null) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    current = node.consequent; | 
						|
 | 
						|
    do { | 
						|
      if (current.type === 'IfStatement') { | 
						|
        if (current.alternate == null) { | 
						|
          return true; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      current = trailingStatement(current); | 
						|
    } while (current); | 
						|
 | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  module.exports = { | 
						|
    isExpression: isExpression, | 
						|
    isStatement: isStatement, | 
						|
    isIterationStatement: isIterationStatement, | 
						|
    isSourceElement: isSourceElement, | 
						|
    isProblematicIfStatement: isProblematicIfStatement, | 
						|
    trailingStatement: trailingStatement | 
						|
  }; | 
						|
})(); | 
						|
/* vim: set sw=4 ts=4 et tw=80 : */ | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/esutils/lib/code.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/esutils/lib/code.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* | 
						|
  Copyright (C) 2013-2014 Yusuke Suzuki <utatane.tea@gmail.com> | 
						|
  Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com> | 
						|
 | 
						|
  Redistribution and use in source and binary forms, with or without | 
						|
  modification, are permitted provided that the following conditions are met: | 
						|
 | 
						|
    * Redistributions of source code must retain the above copyright | 
						|
      notice, this list of conditions and the following disclaimer. | 
						|
    * Redistributions in binary form must reproduce the above copyright | 
						|
      notice, this list of conditions and the following disclaimer in the | 
						|
      documentation and/or other materials provided with the distribution. | 
						|
 | 
						|
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
						|
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
						|
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
						|
  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> 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 () { | 
						|
  'use strict'; | 
						|
 | 
						|
  var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; // See `tools/generate-identifier-regex.js`. | 
						|
 | 
						|
  ES5Regex = { | 
						|
    // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierStart: | 
						|
    NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\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]/, | 
						|
    // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierPart: | 
						|
    NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\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\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\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\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\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-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\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-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ | 
						|
  }; | 
						|
  ES6Regex = { | 
						|
    // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierStart: | 
						|
    NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\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\u2118-\u211D\u2124\u2126\u2128\u212A-\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\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\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]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/, | 
						|
    // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierPart: | 
						|
    NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\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\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\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\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ | 
						|
  }; | 
						|
 | 
						|
  function isDecimalDigit(ch) { | 
						|
    return 0x30 <= ch && ch <= 0x39; // 0..9 | 
						|
  } | 
						|
 | 
						|
  function isHexDigit(ch) { | 
						|
    return 0x30 <= ch && ch <= 0x39 || // 0..9 | 
						|
    0x61 <= ch && ch <= 0x66 || // a..f | 
						|
    0x41 <= ch && ch <= 0x46; // A..F | 
						|
  } | 
						|
 | 
						|
  function isOctalDigit(ch) { | 
						|
    return ch >= 0x30 && ch <= 0x37; // 0..7 | 
						|
  } // 7.2 White Space | 
						|
 | 
						|
 | 
						|
  NON_ASCII_WHITESPACES = [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF]; | 
						|
 | 
						|
  function isWhiteSpace(ch) { | 
						|
    return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0; | 
						|
  } // 7.3 Line Terminators | 
						|
 | 
						|
 | 
						|
  function isLineTerminator(ch) { | 
						|
    return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; | 
						|
  } // 7.6 Identifier Names and Identifiers | 
						|
 | 
						|
 | 
						|
  function fromCodePoint(cp) { | 
						|
    if (cp <= 0xFFFF) { | 
						|
      return String.fromCharCode(cp); | 
						|
    } | 
						|
 | 
						|
    var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800); | 
						|
    var cu2 = String.fromCharCode((cp - 0x10000) % 0x400 + 0xDC00); | 
						|
    return cu1 + cu2; | 
						|
  } | 
						|
 | 
						|
  IDENTIFIER_START = new Array(0x80); | 
						|
 | 
						|
  for (ch = 0; ch < 0x80; ++ch) { | 
						|
    IDENTIFIER_START[ch] = ch >= 0x61 && ch <= 0x7A || // a..z | 
						|
    ch >= 0x41 && ch <= 0x5A || // A..Z | 
						|
    ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) | 
						|
  } | 
						|
 | 
						|
  IDENTIFIER_PART = new Array(0x80); | 
						|
 | 
						|
  for (ch = 0; ch < 0x80; ++ch) { | 
						|
    IDENTIFIER_PART[ch] = ch >= 0x61 && ch <= 0x7A || // a..z | 
						|
    ch >= 0x41 && ch <= 0x5A || // A..Z | 
						|
    ch >= 0x30 && ch <= 0x39 || // 0..9 | 
						|
    ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) | 
						|
  } | 
						|
 | 
						|
  function isIdentifierStartES5(ch) { | 
						|
    return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); | 
						|
  } | 
						|
 | 
						|
  function isIdentifierPartES5(ch) { | 
						|
    return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); | 
						|
  } | 
						|
 | 
						|
  function isIdentifierStartES6(ch) { | 
						|
    return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); | 
						|
  } | 
						|
 | 
						|
  function isIdentifierPartES6(ch) { | 
						|
    return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); | 
						|
  } | 
						|
 | 
						|
  module.exports = { | 
						|
    isDecimalDigit: isDecimalDigit, | 
						|
    isHexDigit: isHexDigit, | 
						|
    isOctalDigit: isOctalDigit, | 
						|
    isWhiteSpace: isWhiteSpace, | 
						|
    isLineTerminator: isLineTerminator, | 
						|
    isIdentifierStartES5: isIdentifierStartES5, | 
						|
    isIdentifierPartES5: isIdentifierPartES5, | 
						|
    isIdentifierStartES6: isIdentifierStartES6, | 
						|
    isIdentifierPartES6: isIdentifierPartES6 | 
						|
  }; | 
						|
})(); | 
						|
/* vim: set sw=4 ts=4 et tw=80 : */ | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/esutils/lib/keyword.js": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./node_modules/esutils/lib/keyword.js ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* | 
						|
  Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com> | 
						|
 | 
						|
  Redistribution and use in source and binary forms, with or without | 
						|
  modification, are permitted provided that the following conditions are met: | 
						|
 | 
						|
    * Redistributions of source code must retain the above copyright | 
						|
      notice, this list of conditions and the following disclaimer. | 
						|
    * Redistributions in binary form must reproduce the above copyright | 
						|
      notice, this list of conditions and the following disclaimer in the | 
						|
      documentation and/or other materials provided with the distribution. | 
						|
 | 
						|
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
						|
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
						|
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
						|
  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> 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 () { | 
						|
  'use strict'; | 
						|
 | 
						|
  var code = __webpack_require__(/*! ./code */ "./node_modules/esutils/lib/code.js"); | 
						|
 | 
						|
  function isStrictModeReservedWordES6(id) { | 
						|
    switch (id) { | 
						|
      case 'implements': | 
						|
      case 'interface': | 
						|
      case 'package': | 
						|
      case 'private': | 
						|
      case 'protected': | 
						|
      case 'public': | 
						|
      case 'static': | 
						|
      case 'let': | 
						|
        return true; | 
						|
 | 
						|
      default: | 
						|
        return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  function isKeywordES5(id, strict) { | 
						|
    // yield should not be treated as keyword under non-strict mode. | 
						|
    if (!strict && id === 'yield') { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    return isKeywordES6(id, strict); | 
						|
  } | 
						|
 | 
						|
  function isKeywordES6(id, strict) { | 
						|
    if (strict && isStrictModeReservedWordES6(id)) { | 
						|
      return true; | 
						|
    } | 
						|
 | 
						|
    switch (id.length) { | 
						|
      case 2: | 
						|
        return id === 'if' || id === 'in' || id === 'do'; | 
						|
 | 
						|
      case 3: | 
						|
        return id === 'var' || id === 'for' || id === 'new' || id === 'try'; | 
						|
 | 
						|
      case 4: | 
						|
        return id === 'this' || id === 'else' || id === 'case' || id === 'void' || id === 'with' || id === 'enum'; | 
						|
 | 
						|
      case 5: | 
						|
        return id === 'while' || id === 'break' || id === 'catch' || id === 'throw' || id === 'const' || id === 'yield' || id === 'class' || id === 'super'; | 
						|
 | 
						|
      case 6: | 
						|
        return id === 'return' || id === 'typeof' || id === 'delete' || id === 'switch' || id === 'export' || id === 'import'; | 
						|
 | 
						|
      case 7: | 
						|
        return id === 'default' || id === 'finally' || id === 'extends'; | 
						|
 | 
						|
      case 8: | 
						|
        return id === 'function' || id === 'continue' || id === 'debugger'; | 
						|
 | 
						|
      case 10: | 
						|
        return id === 'instanceof'; | 
						|
 | 
						|
      default: | 
						|
        return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  function isReservedWordES5(id, strict) { | 
						|
    return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict); | 
						|
  } | 
						|
 | 
						|
  function isReservedWordES6(id, strict) { | 
						|
    return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict); | 
						|
  } | 
						|
 | 
						|
  function isRestrictedWord(id) { | 
						|
    return id === 'eval' || id === 'arguments'; | 
						|
  } | 
						|
 | 
						|
  function isIdentifierNameES5(id) { | 
						|
    var i, iz, ch; | 
						|
 | 
						|
    if (id.length === 0) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    ch = id.charCodeAt(0); | 
						|
 | 
						|
    if (!code.isIdentifierStartES5(ch)) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    for (i = 1, iz = id.length; i < iz; ++i) { | 
						|
      ch = id.charCodeAt(i); | 
						|
 | 
						|
      if (!code.isIdentifierPartES5(ch)) { | 
						|
        return false; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return true; | 
						|
  } | 
						|
 | 
						|
  function decodeUtf16(lead, trail) { | 
						|
    return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; | 
						|
  } | 
						|
 | 
						|
  function isIdentifierNameES6(id) { | 
						|
    var i, iz, ch, lowCh, check; | 
						|
 | 
						|
    if (id.length === 0) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    check = code.isIdentifierStartES6; | 
						|
 | 
						|
    for (i = 0, iz = id.length; i < iz; ++i) { | 
						|
      ch = id.charCodeAt(i); | 
						|
 | 
						|
      if (0xD800 <= ch && ch <= 0xDBFF) { | 
						|
        ++i; | 
						|
 | 
						|
        if (i >= iz) { | 
						|
          return false; | 
						|
        } | 
						|
 | 
						|
        lowCh = id.charCodeAt(i); | 
						|
 | 
						|
        if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) { | 
						|
          return false; | 
						|
        } | 
						|
 | 
						|
        ch = decodeUtf16(ch, lowCh); | 
						|
      } | 
						|
 | 
						|
      if (!check(ch)) { | 
						|
        return false; | 
						|
      } | 
						|
 | 
						|
      check = code.isIdentifierPartES6; | 
						|
    } | 
						|
 | 
						|
    return true; | 
						|
  } | 
						|
 | 
						|
  function isIdentifierES5(id, strict) { | 
						|
    return isIdentifierNameES5(id) && !isReservedWordES5(id, strict); | 
						|
  } | 
						|
 | 
						|
  function isIdentifierES6(id, strict) { | 
						|
    return isIdentifierNameES6(id) && !isReservedWordES6(id, strict); | 
						|
  } | 
						|
 | 
						|
  module.exports = { | 
						|
    isKeywordES5: isKeywordES5, | 
						|
    isKeywordES6: isKeywordES6, | 
						|
    isReservedWordES5: isReservedWordES5, | 
						|
    isReservedWordES6: isReservedWordES6, | 
						|
    isRestrictedWord: isRestrictedWord, | 
						|
    isIdentifierNameES5: isIdentifierNameES5, | 
						|
    isIdentifierNameES6: isIdentifierNameES6, | 
						|
    isIdentifierES5: isIdentifierES5, | 
						|
    isIdentifierES6: isIdentifierES6 | 
						|
  }; | 
						|
})(); | 
						|
/* vim: set sw=4 ts=4 et tw=80 : */ | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/esutils/lib/utils.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/esutils/lib/utils.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* | 
						|
  Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com> | 
						|
 | 
						|
  Redistribution and use in source and binary forms, with or without | 
						|
  modification, are permitted provided that the following conditions are met: | 
						|
 | 
						|
    * Redistributions of source code must retain the above copyright | 
						|
      notice, this list of conditions and the following disclaimer. | 
						|
    * Redistributions in binary form must reproduce the above copyright | 
						|
      notice, this list of conditions and the following disclaimer in the | 
						|
      documentation and/or other materials provided with the distribution. | 
						|
 | 
						|
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
						|
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
						|
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
						|
  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> 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 () { | 
						|
  'use strict'; | 
						|
 | 
						|
  exports.ast = __webpack_require__(/*! ./ast */ "./node_modules/esutils/lib/ast.js"); | 
						|
  exports.code = __webpack_require__(/*! ./code */ "./node_modules/esutils/lib/code.js"); | 
						|
  exports.keyword = __webpack_require__(/*! ./keyword */ "./node_modules/esutils/lib/keyword.js"); | 
						|
})(); | 
						|
/* vim: set sw=4 ts=4 et tw=80 : */ | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/expand-brackets/index.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./node_modules/expand-brackets/index.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(__filename) { | 
						|
/** | 
						|
 * Local dependencies | 
						|
 */ | 
						|
 | 
						|
var compilers = __webpack_require__(/*! ./lib/compilers */ "./node_modules/expand-brackets/lib/compilers.js"); | 
						|
 | 
						|
var parsers = __webpack_require__(/*! ./lib/parsers */ "./node_modules/expand-brackets/lib/parsers.js"); | 
						|
/** | 
						|
 * Module dependencies | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var debug = __webpack_require__(/*! debug */ "./node_modules/expand-brackets/node_modules/debug/src/browser.js")('expand-brackets'); | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/extend-shallow/index.js"); | 
						|
 | 
						|
var Snapdragon = __webpack_require__(/*! snapdragon */ "./node_modules/snapdragon/index.js"); | 
						|
 | 
						|
var toRegex = __webpack_require__(/*! to-regex */ "./node_modules/to-regex/index.js"); | 
						|
/** | 
						|
 * Parses the given POSIX character class `pattern` and returns a | 
						|
 * string that can be used for creating regular expressions for matching. | 
						|
 * | 
						|
 * @param {String} `pattern` | 
						|
 * @param {Object} `options` | 
						|
 * @return {Object} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function brackets(pattern, options) { | 
						|
  debug('initializing from <%s>', __filename); | 
						|
  var res = brackets.create(pattern, options); | 
						|
  return res.output; | 
						|
} | 
						|
/** | 
						|
 * Takes an array of strings and a POSIX character class pattern, and returns a new | 
						|
 * array with only the strings that matched the pattern. | 
						|
 * | 
						|
 * ```js | 
						|
 * var brackets = require('expand-brackets'); | 
						|
 * console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]')); | 
						|
 * //=> ['a'] | 
						|
 * | 
						|
 * console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]+')); | 
						|
 * //=> ['a', 'ab'] | 
						|
 * ``` | 
						|
 * @param {Array} `arr` Array of strings to match | 
						|
 * @param {String} `pattern` POSIX character class pattern(s) | 
						|
 * @param {Object} `options` | 
						|
 * @return {Array} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
brackets.match = function (arr, pattern, options) { | 
						|
  arr = [].concat(arr); | 
						|
  var opts = extend({}, options); | 
						|
  var isMatch = brackets.matcher(pattern, opts); | 
						|
  var len = arr.length; | 
						|
  var idx = -1; | 
						|
  var res = []; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var ele = arr[idx]; | 
						|
 | 
						|
    if (isMatch(ele)) { | 
						|
      res.push(ele); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (res.length === 0) { | 
						|
    if (opts.failglob === true) { | 
						|
      throw new Error('no matches found for "' + pattern + '"'); | 
						|
    } | 
						|
 | 
						|
    if (opts.nonull === true || opts.nullglob === true) { | 
						|
      return [pattern.split('\\').join('')]; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return res; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the specified `string` matches the given | 
						|
 * brackets `pattern`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var brackets = require('expand-brackets'); | 
						|
 * | 
						|
 * console.log(brackets.isMatch('a.a', '[[:alpha:]].[[:alpha:]]')); | 
						|
 * //=> true | 
						|
 * console.log(brackets.isMatch('1.2', '[[:alpha:]].[[:alpha:]]')); | 
						|
 * //=> false | 
						|
 * ``` | 
						|
 * @param {String} `string` String to match | 
						|
 * @param {String} `pattern` Poxis pattern | 
						|
 * @param {String} `options` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
brackets.isMatch = function (str, pattern, options) { | 
						|
  return brackets.matcher(pattern, options)(str); | 
						|
}; | 
						|
/** | 
						|
 * Takes a POSIX character class pattern and returns a matcher function. The returned | 
						|
 * function takes the string to match as its only argument. | 
						|
 * | 
						|
 * ```js | 
						|
 * var brackets = require('expand-brackets'); | 
						|
 * var isMatch = brackets.matcher('[[:lower:]].[[:upper:]]'); | 
						|
 * | 
						|
 * console.log(isMatch('a.a')); | 
						|
 * //=> false | 
						|
 * console.log(isMatch('a.A')); | 
						|
 * //=> true | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Poxis pattern | 
						|
 * @param {String} `options` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
brackets.matcher = function (pattern, options) { | 
						|
  var re = brackets.makeRe(pattern, options); | 
						|
  return function (str) { | 
						|
    return re.test(str); | 
						|
  }; | 
						|
}; | 
						|
/** | 
						|
 * Create a regular expression from the given `pattern`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var brackets = require('expand-brackets'); | 
						|
 * var re = brackets.makeRe('[[:alpha:]]'); | 
						|
 * console.log(re); | 
						|
 * //=> /^(?:[a-zA-Z])$/ | 
						|
 * ``` | 
						|
 * @param {String} `pattern` The pattern to convert to regex. | 
						|
 * @param {Object} `options` | 
						|
 * @return {RegExp} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
brackets.makeRe = function (pattern, options) { | 
						|
  var res = brackets.create(pattern, options); | 
						|
  var opts = extend({ | 
						|
    strictErrors: false | 
						|
  }, options); | 
						|
  return toRegex(res.output, opts); | 
						|
}; | 
						|
/** | 
						|
 * Parses the given POSIX character class `pattern` and returns an object | 
						|
 * with the compiled `output` and optional source `map`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var brackets = require('expand-brackets'); | 
						|
 * console.log(brackets('[[:alpha:]]')); | 
						|
 * // { options: { source: 'string' }, | 
						|
 * //   input: '[[:alpha:]]', | 
						|
 * //   state: {}, | 
						|
 * //   compilers: | 
						|
 * //    { eos: [Function], | 
						|
 * //      noop: [Function], | 
						|
 * //      bos: [Function], | 
						|
 * //      not: [Function], | 
						|
 * //      escape: [Function], | 
						|
 * //      text: [Function], | 
						|
 * //      posix: [Function], | 
						|
 * //      bracket: [Function], | 
						|
 * //      'bracket.open': [Function], | 
						|
 * //      'bracket.inner': [Function], | 
						|
 * //      'bracket.literal': [Function], | 
						|
 * //      'bracket.close': [Function] }, | 
						|
 * //   output: '[a-zA-Z]', | 
						|
 * //   ast: | 
						|
 * //    { type: 'root', | 
						|
 * //      errors: [], | 
						|
 * //      nodes: [ [Object], [Object], [Object] ] }, | 
						|
 * //   parsingErrors: [] } | 
						|
 * ``` | 
						|
 * @param {String} `pattern` | 
						|
 * @param {Object} `options` | 
						|
 * @return {Object} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
brackets.create = function (pattern, options) { | 
						|
  var snapdragon = options && options.snapdragon || new Snapdragon(options); | 
						|
  compilers(snapdragon); | 
						|
  parsers(snapdragon); | 
						|
  var ast = snapdragon.parse(pattern, options); | 
						|
  ast.input = pattern; | 
						|
  var res = snapdragon.compile(ast, options); | 
						|
  res.input = pattern; | 
						|
  return res; | 
						|
}; | 
						|
/** | 
						|
 * Expose `brackets` constructor, parsers and compilers | 
						|
 */ | 
						|
 | 
						|
 | 
						|
brackets.compilers = compilers; | 
						|
brackets.parsers = parsers; | 
						|
/** | 
						|
 * Expose `brackets` | 
						|
 * @type {Function} | 
						|
 */ | 
						|
 | 
						|
module.exports = brackets; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, "/index.js")) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/expand-brackets/lib/compilers.js": | 
						|
/*!*******************************************************!*\ | 
						|
  !*** ./node_modules/expand-brackets/lib/compilers.js ***! | 
						|
  \*******************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var posix = __webpack_require__(/*! posix-character-classes */ "./node_modules/posix-character-classes/index.js"); | 
						|
 | 
						|
module.exports = function (brackets) { | 
						|
  brackets.compiler | 
						|
  /** | 
						|
   * Escaped characters | 
						|
   */ | 
						|
  .set('escape', function (node) { | 
						|
    return this.emit('\\' + node.val.replace(/^\\/, ''), node); | 
						|
  }) | 
						|
  /** | 
						|
   * Text | 
						|
   */ | 
						|
  .set('text', function (node) { | 
						|
    return this.emit(node.val.replace(/([{}])/g, '\\$1'), node); | 
						|
  }) | 
						|
  /** | 
						|
   * POSIX character classes | 
						|
   */ | 
						|
  .set('posix', function (node) { | 
						|
    if (node.val === '[::]') { | 
						|
      return this.emit('\\[::\\]', node); | 
						|
    } | 
						|
 | 
						|
    var val = posix[node.inner]; | 
						|
 | 
						|
    if (typeof val === 'undefined') { | 
						|
      val = '[' + node.inner + ']'; | 
						|
    } | 
						|
 | 
						|
    return this.emit(val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Non-posix brackets | 
						|
   */ | 
						|
  .set('bracket', function (node) { | 
						|
    return this.mapVisit(node.nodes); | 
						|
  }).set('bracket.open', function (node) { | 
						|
    return this.emit(node.val, node); | 
						|
  }).set('bracket.inner', function (node) { | 
						|
    var inner = node.val; | 
						|
 | 
						|
    if (inner === '[' || inner === ']') { | 
						|
      return this.emit('\\' + node.val, node); | 
						|
    } | 
						|
 | 
						|
    if (inner === '^]') { | 
						|
      return this.emit('^\\]', node); | 
						|
    } | 
						|
 | 
						|
    if (inner === '^') { | 
						|
      return this.emit('^', node); | 
						|
    } | 
						|
 | 
						|
    if (/-/.test(inner) && !/(\d-\d|\w-\w)/.test(inner)) { | 
						|
      inner = inner.split('-').join('\\-'); | 
						|
    } | 
						|
 | 
						|
    var isNegated = inner.charAt(0) === '^'; // add slashes to negated brackets, per spec | 
						|
 | 
						|
    if (isNegated && inner.indexOf('/') === -1) { | 
						|
      inner += '/'; | 
						|
    } | 
						|
 | 
						|
    if (isNegated && inner.indexOf('.') === -1) { | 
						|
      inner += '.'; | 
						|
    } // don't unescape `0` (octal literal) | 
						|
 | 
						|
 | 
						|
    inner = inner.replace(/\\([1-9])/g, '$1'); | 
						|
    return this.emit(inner, node); | 
						|
  }).set('bracket.close', function (node) { | 
						|
    var val = node.val.replace(/^\\/, ''); | 
						|
 | 
						|
    if (node.parent.escaped === true) { | 
						|
      return this.emit('\\' + val, node); | 
						|
    } | 
						|
 | 
						|
    return this.emit(val, node); | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/expand-brackets/lib/parsers.js": | 
						|
/*!*****************************************************!*\ | 
						|
  !*** ./node_modules/expand-brackets/lib/parsers.js ***! | 
						|
  \*****************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./utils */ "./node_modules/expand-brackets/lib/utils.js"); | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/define-property/index.js"); | 
						|
/** | 
						|
 * Text regex | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var TEXT_REGEX = '(\\[(?=.*\\])|\\])+'; | 
						|
var not = utils.createRegex(TEXT_REGEX); | 
						|
/** | 
						|
 * Brackets parsers | 
						|
 */ | 
						|
 | 
						|
function parsers(brackets) { | 
						|
  brackets.state = brackets.state || {}; | 
						|
  brackets.parser.sets.bracket = brackets.parser.sets.bracket || []; | 
						|
  brackets.parser.capture('escape', function () { | 
						|
    if (this.isInside('bracket')) return; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\\(.)/); | 
						|
    if (!m) return; | 
						|
    return pos({ | 
						|
      type: 'escape', | 
						|
      val: m[0] | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Text parser | 
						|
   */ | 
						|
  .capture('text', function () { | 
						|
    if (this.isInside('bracket')) return; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(not); | 
						|
    if (!m || !m[0]) return; | 
						|
    return pos({ | 
						|
      type: 'text', | 
						|
      val: m[0] | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * POSIX character classes: "[[:alpha:][:digits:]]" | 
						|
   */ | 
						|
  .capture('posix', function () { | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\[:(.*?):\](?=.*\])/); | 
						|
    if (!m) return; | 
						|
    var inside = this.isInside('bracket'); | 
						|
 | 
						|
    if (inside) { | 
						|
      brackets.posix++; | 
						|
    } | 
						|
 | 
						|
    return pos({ | 
						|
      type: 'posix', | 
						|
      insideBracket: inside, | 
						|
      inner: m[1], | 
						|
      val: m[0] | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Bracket (noop) | 
						|
   */ | 
						|
  .capture('bracket', function () {}) | 
						|
  /** | 
						|
   * Open: '[' | 
						|
   */ | 
						|
  .capture('bracket.open', function () { | 
						|
    var parsed = this.parsed; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\[(?=.*\])/); | 
						|
    if (!m) return; | 
						|
    var prev = this.prev(); | 
						|
    var last = utils.last(prev.nodes); | 
						|
 | 
						|
    if (parsed.slice(-1) === '\\' && !this.isInside('bracket')) { | 
						|
      last.val = last.val.slice(0, last.val.length - 1); | 
						|
      return pos({ | 
						|
        type: 'escape', | 
						|
        val: m[0] | 
						|
      }); | 
						|
    } | 
						|
 | 
						|
    var open = pos({ | 
						|
      type: 'bracket.open', | 
						|
      val: m[0] | 
						|
    }); | 
						|
 | 
						|
    if (last.type === 'bracket.open' || this.isInside('bracket')) { | 
						|
      open.val = '\\' + open.val; | 
						|
      open.type = 'bracket.inner'; | 
						|
      open.escaped = true; | 
						|
      return open; | 
						|
    } | 
						|
 | 
						|
    var node = pos({ | 
						|
      type: 'bracket', | 
						|
      nodes: [open] | 
						|
    }); | 
						|
    define(node, 'parent', prev); | 
						|
    define(open, 'parent', node); | 
						|
    this.push('bracket', node); | 
						|
    prev.nodes.push(node); | 
						|
  }) | 
						|
  /** | 
						|
   * Bracket text | 
						|
   */ | 
						|
  .capture('bracket.inner', function () { | 
						|
    if (!this.isInside('bracket')) return; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(not); | 
						|
    if (!m || !m[0]) return; | 
						|
    var next = this.input.charAt(0); | 
						|
    var val = m[0]; | 
						|
    var node = pos({ | 
						|
      type: 'bracket.inner', | 
						|
      val: val | 
						|
    }); | 
						|
 | 
						|
    if (val === '\\\\') { | 
						|
      return node; | 
						|
    } | 
						|
 | 
						|
    var first = val.charAt(0); | 
						|
    var last = val.slice(-1); | 
						|
 | 
						|
    if (first === '!') { | 
						|
      val = '^' + val.slice(1); | 
						|
    } | 
						|
 | 
						|
    if (last === '\\' || val === '^' && next === ']') { | 
						|
      val += this.input[0]; | 
						|
      this.consume(1); | 
						|
    } | 
						|
 | 
						|
    node.val = val; | 
						|
    return node; | 
						|
  }) | 
						|
  /** | 
						|
   * Close: ']' | 
						|
   */ | 
						|
  .capture('bracket.close', function () { | 
						|
    var parsed = this.parsed; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\]/); | 
						|
    if (!m) return; | 
						|
    var prev = this.prev(); | 
						|
    var last = utils.last(prev.nodes); | 
						|
 | 
						|
    if (parsed.slice(-1) === '\\' && !this.isInside('bracket')) { | 
						|
      last.val = last.val.slice(0, last.val.length - 1); | 
						|
      return pos({ | 
						|
        type: 'escape', | 
						|
        val: m[0] | 
						|
      }); | 
						|
    } | 
						|
 | 
						|
    var node = pos({ | 
						|
      type: 'bracket.close', | 
						|
      rest: this.input, | 
						|
      val: m[0] | 
						|
    }); | 
						|
 | 
						|
    if (last.type === 'bracket.open') { | 
						|
      node.type = 'bracket.inner'; | 
						|
      node.escaped = true; | 
						|
      return node; | 
						|
    } | 
						|
 | 
						|
    var bracket = this.pop('bracket'); | 
						|
 | 
						|
    if (!this.isType(bracket, 'bracket')) { | 
						|
      if (this.options.strict) { | 
						|
        throw new Error('missing opening "["'); | 
						|
      } | 
						|
 | 
						|
      node.type = 'bracket.inner'; | 
						|
      node.escaped = true; | 
						|
      return node; | 
						|
    } | 
						|
 | 
						|
    bracket.nodes.push(node); | 
						|
    define(node, 'parent', bracket); | 
						|
  }); | 
						|
} | 
						|
/** | 
						|
 * Brackets parsers | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = parsers; | 
						|
/** | 
						|
 * Expose text regex | 
						|
 */ | 
						|
 | 
						|
module.exports.TEXT_REGEX = TEXT_REGEX; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/expand-brackets/lib/utils.js": | 
						|
/*!***************************************************!*\ | 
						|
  !*** ./node_modules/expand-brackets/lib/utils.js ***! | 
						|
  \***************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var toRegex = __webpack_require__(/*! to-regex */ "./node_modules/to-regex/index.js"); | 
						|
 | 
						|
var regexNot = __webpack_require__(/*! regex-not */ "./node_modules/regex-not/index.js"); | 
						|
 | 
						|
var cached; | 
						|
/** | 
						|
 * Get the last element from `array` | 
						|
 * @param {Array} `array` | 
						|
 * @return {*} | 
						|
 */ | 
						|
 | 
						|
exports.last = function (arr) { | 
						|
  return arr[arr.length - 1]; | 
						|
}; | 
						|
/** | 
						|
 * Create and cache regex to use for text nodes | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.createRegex = function (pattern, include) { | 
						|
  if (cached) return cached; | 
						|
  var opts = { | 
						|
    contains: true, | 
						|
    strictClose: false | 
						|
  }; | 
						|
  var not = regexNot.create(pattern, opts); | 
						|
  var re; | 
						|
 | 
						|
  if (typeof include === 'string') { | 
						|
    re = toRegex('^(?:' + include + '|' + not + ')', opts); | 
						|
  } else { | 
						|
    re = toRegex(not, opts); | 
						|
  } | 
						|
 | 
						|
  return cached = re; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/expand-brackets/node_modules/debug/src/browser.js": | 
						|
/*!************************************************************************!*\ | 
						|
  !*** ./node_modules/expand-brackets/node_modules/debug/src/browser.js ***! | 
						|
  \************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(process) { | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
/** | 
						|
 * This is the web browser implementation of `debug()`. | 
						|
 * | 
						|
 * Expose `debug()` as the module. | 
						|
 */ | 
						|
exports = module.exports = __webpack_require__(/*! ./debug */ "./node_modules/expand-brackets/node_modules/debug/src/debug.js"); | 
						|
exports.log = log; | 
						|
exports.formatArgs = formatArgs; | 
						|
exports.save = save; | 
						|
exports.load = load; | 
						|
exports.useColors = useColors; | 
						|
exports.storage = 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage ? chrome.storage.local : localstorage(); | 
						|
/** | 
						|
 * Colors. | 
						|
 */ | 
						|
 | 
						|
exports.colors = ['lightseagreen', 'forestgreen', 'goldenrod', 'dodgerblue', 'darkorchid', 'crimson']; | 
						|
/** | 
						|
 * Currently only WebKit-based Web Inspectors, Firefox >= v31, | 
						|
 * and the Firebug extension (any Firefox version) are known | 
						|
 * to support "%c" CSS customizations. | 
						|
 * | 
						|
 * TODO: add a `localStorage` variable to explicitly enable/disable colors | 
						|
 */ | 
						|
 | 
						|
function useColors() { | 
						|
  // NB: In an Electron preload script, document will be defined but not fully | 
						|
  // initialized. Since we know we're in Chrome, we'll just detect this case | 
						|
  // explicitly | 
						|
  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { | 
						|
    return true; | 
						|
  } // is webkit? http://stackoverflow.com/a/16459606/376773 | 
						|
  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 | 
						|
 | 
						|
 | 
						|
  return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773 | 
						|
  typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31? | 
						|
  // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages | 
						|
  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker | 
						|
  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); | 
						|
} | 
						|
/** | 
						|
 * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.formatters.j = function (v) { | 
						|
  try { | 
						|
    return JSON.stringify(v); | 
						|
  } catch (err) { | 
						|
    return '[UnexpectedJSONParseError]: ' + err.message; | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Colorize log arguments if enabled. | 
						|
 * | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function formatArgs(args) { | 
						|
  var useColors = this.useColors; | 
						|
  args[0] = (useColors ? '%c' : '') + this.namespace + (useColors ? ' %c' : ' ') + args[0] + (useColors ? '%c ' : ' ') + '+' + exports.humanize(this.diff); | 
						|
  if (!useColors) return; | 
						|
  var c = 'color: ' + this.color; | 
						|
  args.splice(1, 0, c, 'color: inherit'); // the final "%c" is somewhat tricky, because there could be other | 
						|
  // arguments passed either before or after the %c, so we need to | 
						|
  // figure out the correct index to insert the CSS into | 
						|
 | 
						|
  var index = 0; | 
						|
  var lastC = 0; | 
						|
  args[0].replace(/%[a-zA-Z%]/g, function (match) { | 
						|
    if ('%%' === match) return; | 
						|
    index++; | 
						|
 | 
						|
    if ('%c' === match) { | 
						|
      // we only are interested in the *last* %c | 
						|
      // (the user may have provided their own) | 
						|
      lastC = index; | 
						|
    } | 
						|
  }); | 
						|
  args.splice(lastC, 0, c); | 
						|
} | 
						|
/** | 
						|
 * Invokes `console.log()` when available. | 
						|
 * No-op when `console.log` is not a "function". | 
						|
 * | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function log() { | 
						|
  // this hackery is required for IE8/9, where | 
						|
  // the `console.log` function doesn't have 'apply' | 
						|
  return 'object' === (typeof console === "undefined" ? "undefined" : _typeof(console)) && console.log && Function.prototype.apply.call(console.log, console, arguments); | 
						|
} | 
						|
/** | 
						|
 * Save `namespaces`. | 
						|
 * | 
						|
 * @param {String} namespaces | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function save(namespaces) { | 
						|
  try { | 
						|
    if (null == namespaces) { | 
						|
      exports.storage.removeItem('debug'); | 
						|
    } else { | 
						|
      exports.storage.debug = namespaces; | 
						|
    } | 
						|
  } catch (e) {} | 
						|
} | 
						|
/** | 
						|
 * Load `namespaces`. | 
						|
 * | 
						|
 * @return {String} returns the previously persisted debug modes | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function load() { | 
						|
  var r; | 
						|
 | 
						|
  try { | 
						|
    r = exports.storage.debug; | 
						|
  } catch (e) {} // If debug isn't set in LS, and we're in Electron, try to load $DEBUG | 
						|
 | 
						|
 | 
						|
  if (!r && typeof process !== 'undefined' && 'env' in process) { | 
						|
    r = process.env.DEBUG; | 
						|
  } | 
						|
 | 
						|
  return r; | 
						|
} | 
						|
/** | 
						|
 * Enable namespaces listed in `localStorage.debug` initially. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.enable(load()); | 
						|
/** | 
						|
 * Localstorage attempts to return the localstorage. | 
						|
 * | 
						|
 * This is necessary because safari throws | 
						|
 * when a user disables cookies/localstorage | 
						|
 * and you attempt to access it. | 
						|
 * | 
						|
 * @return {LocalStorage} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
function localstorage() { | 
						|
  try { | 
						|
    return window.localStorage; | 
						|
  } catch (e) {} | 
						|
} | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../process/browser.js */ "./node_modules/process/browser.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/expand-brackets/node_modules/debug/src/debug.js": | 
						|
/*!**********************************************************************!*\ | 
						|
  !*** ./node_modules/expand-brackets/node_modules/debug/src/debug.js ***! | 
						|
  \**********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/** | 
						|
 * This is the common logic for both the Node.js and web browser | 
						|
 * implementations of `debug()`. | 
						|
 * | 
						|
 * Expose `debug()` as the module. | 
						|
 */ | 
						|
exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; | 
						|
exports.coerce = coerce; | 
						|
exports.disable = disable; | 
						|
exports.enable = enable; | 
						|
exports.enabled = enabled; | 
						|
exports.humanize = __webpack_require__(/*! ms */ "./node_modules/expand-brackets/node_modules/ms/index.js"); | 
						|
/** | 
						|
 * The currently active debug mode names, and names to skip. | 
						|
 */ | 
						|
 | 
						|
exports.names = []; | 
						|
exports.skips = []; | 
						|
/** | 
						|
 * Map of special "%n" handling functions, for the debug "format" argument. | 
						|
 * | 
						|
 * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". | 
						|
 */ | 
						|
 | 
						|
exports.formatters = {}; | 
						|
/** | 
						|
 * Previous log timestamp. | 
						|
 */ | 
						|
 | 
						|
var prevTime; | 
						|
/** | 
						|
 * Select a color. | 
						|
 * @param {String} namespace | 
						|
 * @return {Number} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
function selectColor(namespace) { | 
						|
  var hash = 0, | 
						|
      i; | 
						|
 | 
						|
  for (i in namespace) { | 
						|
    hash = (hash << 5) - hash + namespace.charCodeAt(i); | 
						|
    hash |= 0; // Convert to 32bit integer | 
						|
  } | 
						|
 | 
						|
  return exports.colors[Math.abs(hash) % exports.colors.length]; | 
						|
} | 
						|
/** | 
						|
 * Create a debugger with the given `namespace`. | 
						|
 * | 
						|
 * @param {String} namespace | 
						|
 * @return {Function} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function createDebug(namespace) { | 
						|
  function debug() { | 
						|
    // disabled? | 
						|
    if (!debug.enabled) return; | 
						|
    var self = debug; // set `diff` timestamp | 
						|
 | 
						|
    var curr = +new Date(); | 
						|
    var ms = curr - (prevTime || curr); | 
						|
    self.diff = ms; | 
						|
    self.prev = prevTime; | 
						|
    self.curr = curr; | 
						|
    prevTime = curr; // turn the `arguments` into a proper Array | 
						|
 | 
						|
    var args = new Array(arguments.length); | 
						|
 | 
						|
    for (var i = 0; i < args.length; i++) { | 
						|
      args[i] = arguments[i]; | 
						|
    } | 
						|
 | 
						|
    args[0] = exports.coerce(args[0]); | 
						|
 | 
						|
    if ('string' !== typeof args[0]) { | 
						|
      // anything else let's inspect with %O | 
						|
      args.unshift('%O'); | 
						|
    } // apply any `formatters` transformations | 
						|
 | 
						|
 | 
						|
    var index = 0; | 
						|
    args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) { | 
						|
      // if we encounter an escaped % then don't increase the array index | 
						|
      if (match === '%%') return match; | 
						|
      index++; | 
						|
      var formatter = exports.formatters[format]; | 
						|
 | 
						|
      if ('function' === typeof formatter) { | 
						|
        var val = args[index]; | 
						|
        match = formatter.call(self, val); // now we need to remove `args[index]` since it's inlined in the `format` | 
						|
 | 
						|
        args.splice(index, 1); | 
						|
        index--; | 
						|
      } | 
						|
 | 
						|
      return match; | 
						|
    }); // apply env-specific formatting (colors, etc.) | 
						|
 | 
						|
    exports.formatArgs.call(self, args); | 
						|
    var logFn = debug.log || exports.log || console.log.bind(console); | 
						|
    logFn.apply(self, args); | 
						|
  } | 
						|
 | 
						|
  debug.namespace = namespace; | 
						|
  debug.enabled = exports.enabled(namespace); | 
						|
  debug.useColors = exports.useColors(); | 
						|
  debug.color = selectColor(namespace); // env-specific initialization logic for debug instances | 
						|
 | 
						|
  if ('function' === typeof exports.init) { | 
						|
    exports.init(debug); | 
						|
  } | 
						|
 | 
						|
  return debug; | 
						|
} | 
						|
/** | 
						|
 * Enables a debug mode by namespaces. This can include modes | 
						|
 * separated by a colon and wildcards. | 
						|
 * | 
						|
 * @param {String} namespaces | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function enable(namespaces) { | 
						|
  exports.save(namespaces); | 
						|
  exports.names = []; | 
						|
  exports.skips = []; | 
						|
  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); | 
						|
  var len = split.length; | 
						|
 | 
						|
  for (var i = 0; i < len; i++) { | 
						|
    if (!split[i]) continue; // ignore empty strings | 
						|
 | 
						|
    namespaces = split[i].replace(/\*/g, '.*?'); | 
						|
 | 
						|
    if (namespaces[0] === '-') { | 
						|
      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); | 
						|
    } else { | 
						|
      exports.names.push(new RegExp('^' + namespaces + '$')); | 
						|
    } | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * Disable debug output. | 
						|
 * | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function disable() { | 
						|
  exports.enable(''); | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given mode name is enabled, false otherwise. | 
						|
 * | 
						|
 * @param {String} name | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function enabled(name) { | 
						|
  var i, len; | 
						|
 | 
						|
  for (i = 0, len = exports.skips.length; i < len; i++) { | 
						|
    if (exports.skips[i].test(name)) { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  for (i = 0, len = exports.names.length; i < len; i++) { | 
						|
    if (exports.names[i].test(name)) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
/** | 
						|
 * Coerce `val`. | 
						|
 * | 
						|
 * @param {Mixed} val | 
						|
 * @return {Mixed} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function coerce(val) { | 
						|
  if (val instanceof Error) return val.stack || val.message; | 
						|
  return val; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/expand-brackets/node_modules/ms/index.js": | 
						|
/*!***************************************************************!*\ | 
						|
  !*** ./node_modules/expand-brackets/node_modules/ms/index.js ***! | 
						|
  \***************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
/** | 
						|
 * Helpers. | 
						|
 */ | 
						|
var s = 1000; | 
						|
var m = s * 60; | 
						|
var h = m * 60; | 
						|
var d = h * 24; | 
						|
var y = d * 365.25; | 
						|
/** | 
						|
 * Parse or format the given `val`. | 
						|
 * | 
						|
 * Options: | 
						|
 * | 
						|
 *  - `long` verbose formatting [false] | 
						|
 * | 
						|
 * @param {String|Number} val | 
						|
 * @param {Object} [options] | 
						|
 * @throws {Error} throw an error if val is not a non-empty string or a number | 
						|
 * @return {String|Number} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
module.exports = function (val, options) { | 
						|
  options = options || {}; | 
						|
 | 
						|
  var type = _typeof(val); | 
						|
 | 
						|
  if (type === 'string' && val.length > 0) { | 
						|
    return parse(val); | 
						|
  } else if (type === 'number' && isNaN(val) === false) { | 
						|
    return options.long ? fmtLong(val) : fmtShort(val); | 
						|
  } | 
						|
 | 
						|
  throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val)); | 
						|
}; | 
						|
/** | 
						|
 * Parse the given `str` and return milliseconds. | 
						|
 * | 
						|
 * @param {String} str | 
						|
 * @return {Number} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function parse(str) { | 
						|
  str = String(str); | 
						|
 | 
						|
  if (str.length > 100) { | 
						|
    return; | 
						|
  } | 
						|
 | 
						|
  var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str); | 
						|
 | 
						|
  if (!match) { | 
						|
    return; | 
						|
  } | 
						|
 | 
						|
  var n = parseFloat(match[1]); | 
						|
  var type = (match[2] || 'ms').toLowerCase(); | 
						|
 | 
						|
  switch (type) { | 
						|
    case 'years': | 
						|
    case 'year': | 
						|
    case 'yrs': | 
						|
    case 'yr': | 
						|
    case 'y': | 
						|
      return n * y; | 
						|
 | 
						|
    case 'days': | 
						|
    case 'day': | 
						|
    case 'd': | 
						|
      return n * d; | 
						|
 | 
						|
    case 'hours': | 
						|
    case 'hour': | 
						|
    case 'hrs': | 
						|
    case 'hr': | 
						|
    case 'h': | 
						|
      return n * h; | 
						|
 | 
						|
    case 'minutes': | 
						|
    case 'minute': | 
						|
    case 'mins': | 
						|
    case 'min': | 
						|
    case 'm': | 
						|
      return n * m; | 
						|
 | 
						|
    case 'seconds': | 
						|
    case 'second': | 
						|
    case 'secs': | 
						|
    case 'sec': | 
						|
    case 's': | 
						|
      return n * s; | 
						|
 | 
						|
    case 'milliseconds': | 
						|
    case 'millisecond': | 
						|
    case 'msecs': | 
						|
    case 'msec': | 
						|
    case 'ms': | 
						|
      return n; | 
						|
 | 
						|
    default: | 
						|
      return undefined; | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * Short format for `ms`. | 
						|
 * | 
						|
 * @param {Number} ms | 
						|
 * @return {String} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function fmtShort(ms) { | 
						|
  if (ms >= d) { | 
						|
    return Math.round(ms / d) + 'd'; | 
						|
  } | 
						|
 | 
						|
  if (ms >= h) { | 
						|
    return Math.round(ms / h) + 'h'; | 
						|
  } | 
						|
 | 
						|
  if (ms >= m) { | 
						|
    return Math.round(ms / m) + 'm'; | 
						|
  } | 
						|
 | 
						|
  if (ms >= s) { | 
						|
    return Math.round(ms / s) + 's'; | 
						|
  } | 
						|
 | 
						|
  return ms + 'ms'; | 
						|
} | 
						|
/** | 
						|
 * Long format for `ms`. | 
						|
 * | 
						|
 * @param {Number} ms | 
						|
 * @return {String} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function fmtLong(ms) { | 
						|
  return plural(ms, d, 'day') || plural(ms, h, 'hour') || plural(ms, m, 'minute') || plural(ms, s, 'second') || ms + ' ms'; | 
						|
} | 
						|
/** | 
						|
 * Pluralization helper. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function plural(ms, n, name) { | 
						|
  if (ms < n) { | 
						|
    return; | 
						|
  } | 
						|
 | 
						|
  if (ms < n * 1.5) { | 
						|
    return Math.floor(ms / n) + ' ' + name; | 
						|
  } | 
						|
 | 
						|
  return Math.ceil(ms / n) + ' ' + name + 's'; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/extend-shallow/index.js": | 
						|
/*!**********************************************!*\ | 
						|
  !*** ./node_modules/extend-shallow/index.js ***! | 
						|
  \**********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var isObject = __webpack_require__(/*! is-extendable */ "./node_modules/is-extendable/index.js"); | 
						|
 | 
						|
module.exports = function extend(o | 
						|
/*, objects*/ | 
						|
) { | 
						|
  if (!isObject(o)) { | 
						|
    o = {}; | 
						|
  } | 
						|
 | 
						|
  var len = arguments.length; | 
						|
 | 
						|
  for (var i = 1; i < len; i++) { | 
						|
    var obj = arguments[i]; | 
						|
 | 
						|
    if (isObject(obj)) { | 
						|
      assign(o, obj); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return o; | 
						|
}; | 
						|
 | 
						|
function assign(a, b) { | 
						|
  for (var key in b) { | 
						|
    if (hasOwn(b, key)) { | 
						|
      a[key] = b[key]; | 
						|
    } | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given `key` is an own property of `obj`. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function hasOwn(obj, key) { | 
						|
  return Object.prototype.hasOwnProperty.call(obj, key); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/extglob/index.js": | 
						|
/*!***************************************!*\ | 
						|
  !*** ./node_modules/extglob/index.js ***! | 
						|
  \***************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
/** | 
						|
 * Module dependencies | 
						|
 */ | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/extend-shallow/index.js"); | 
						|
 | 
						|
var unique = __webpack_require__(/*! array-unique */ "./node_modules/array-unique/index.js"); | 
						|
 | 
						|
var toRegex = __webpack_require__(/*! to-regex */ "./node_modules/to-regex/index.js"); | 
						|
/** | 
						|
 * Local dependencies | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var compilers = __webpack_require__(/*! ./lib/compilers */ "./node_modules/extglob/lib/compilers.js"); | 
						|
 | 
						|
var parsers = __webpack_require__(/*! ./lib/parsers */ "./node_modules/extglob/lib/parsers.js"); | 
						|
 | 
						|
var Extglob = __webpack_require__(/*! ./lib/extglob */ "./node_modules/extglob/lib/extglob.js"); | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./lib/utils */ "./node_modules/extglob/lib/utils.js"); | 
						|
 | 
						|
var MAX_LENGTH = 1024 * 64; | 
						|
/** | 
						|
 * Convert the given `extglob` pattern into a regex-compatible string. Returns | 
						|
 * an object with the compiled result and the parsed AST. | 
						|
 * | 
						|
 * ```js | 
						|
 * var extglob = require('extglob'); | 
						|
 * console.log(extglob('*.!(*a)')); | 
						|
 * //=> '(?!\\.)[^/]*?\\.(?!(?!\\.)[^/]*?a\\b).*?' | 
						|
 * ``` | 
						|
 * @param {String} `pattern` | 
						|
 * @param {Object} `options` | 
						|
 * @return {String} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
function extglob(pattern, options) { | 
						|
  return extglob.create(pattern, options).output; | 
						|
} | 
						|
/** | 
						|
 * Takes an array of strings and an extglob pattern and returns a new | 
						|
 * array that contains only the strings that match the pattern. | 
						|
 * | 
						|
 * ```js | 
						|
 * var extglob = require('extglob'); | 
						|
 * console.log(extglob.match(['a.a', 'a.b', 'a.c'], '*.!(*a)')); | 
						|
 * //=> ['a.b', 'a.c'] | 
						|
 * ``` | 
						|
 * @param {Array} `list` Array of strings to match | 
						|
 * @param {String} `pattern` Extglob pattern | 
						|
 * @param {Object} `options` | 
						|
 * @return {Array} Returns an array of matches | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
extglob.match = function (list, pattern, options) { | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected pattern to be a string'); | 
						|
  } | 
						|
 | 
						|
  list = utils.arrayify(list); | 
						|
  var isMatch = extglob.matcher(pattern, options); | 
						|
  var len = list.length; | 
						|
  var idx = -1; | 
						|
  var matches = []; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var ele = list[idx]; | 
						|
 | 
						|
    if (isMatch(ele)) { | 
						|
      matches.push(ele); | 
						|
    } | 
						|
  } // if no options were passed, uniquify results and return | 
						|
 | 
						|
 | 
						|
  if (typeof options === 'undefined') { | 
						|
    return unique(matches); | 
						|
  } | 
						|
 | 
						|
  if (matches.length === 0) { | 
						|
    if (options.failglob === true) { | 
						|
      throw new Error('no matches found for "' + pattern + '"'); | 
						|
    } | 
						|
 | 
						|
    if (options.nonull === true || options.nullglob === true) { | 
						|
      return [pattern.split('\\').join('')]; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return options.nodupes !== false ? unique(matches) : matches; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the specified `string` matches the given | 
						|
 * extglob `pattern`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var extglob = require('extglob'); | 
						|
 * | 
						|
 * console.log(extglob.isMatch('a.a', '*.!(*a)')); | 
						|
 * //=> false | 
						|
 * console.log(extglob.isMatch('a.b', '*.!(*a)')); | 
						|
 * //=> true | 
						|
 * ``` | 
						|
 * @param {String} `string` String to match | 
						|
 * @param {String} `pattern` Extglob pattern | 
						|
 * @param {String} `options` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
extglob.isMatch = function (str, pattern, options) { | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected pattern to be a string'); | 
						|
  } | 
						|
 | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string'); | 
						|
  } | 
						|
 | 
						|
  if (pattern === str) { | 
						|
    return true; | 
						|
  } | 
						|
 | 
						|
  if (pattern === '' || pattern === ' ' || pattern === '.') { | 
						|
    return pattern === str; | 
						|
  } | 
						|
 | 
						|
  var isMatch = utils.memoize('isMatch', pattern, options, extglob.matcher); | 
						|
  return isMatch(str); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given `string` contains the given pattern. Similar to `.isMatch` but | 
						|
 * the pattern can match any part of the string. | 
						|
 * | 
						|
 * ```js | 
						|
 * var extglob = require('extglob'); | 
						|
 * console.log(extglob.contains('aa/bb/cc', '*b')); | 
						|
 * //=> true | 
						|
 * console.log(extglob.contains('aa/bb/cc', '*d')); | 
						|
 * //=> false | 
						|
 * ``` | 
						|
 * @param {String} `str` The string to match. | 
						|
 * @param {String} `pattern` Glob pattern to use for matching. | 
						|
 * @param {Object} `options` | 
						|
 * @return {Boolean} Returns true if the patter matches any part of `str`. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
extglob.contains = function (str, pattern, options) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string'); | 
						|
  } | 
						|
 | 
						|
  if (pattern === '' || pattern === ' ' || pattern === '.') { | 
						|
    return pattern === str; | 
						|
  } | 
						|
 | 
						|
  var opts = extend({}, options, { | 
						|
    contains: true | 
						|
  }); | 
						|
  opts.strictClose = false; | 
						|
  opts.strictOpen = false; | 
						|
  return extglob.isMatch(str, pattern, opts); | 
						|
}; | 
						|
/** | 
						|
 * Takes an extglob pattern and returns a matcher function. The returned | 
						|
 * function takes the string to match as its only argument. | 
						|
 * | 
						|
 * ```js | 
						|
 * var extglob = require('extglob'); | 
						|
 * var isMatch = extglob.matcher('*.!(*a)'); | 
						|
 * | 
						|
 * console.log(isMatch('a.a')); | 
						|
 * //=> false | 
						|
 * console.log(isMatch('a.b')); | 
						|
 * //=> true | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Extglob pattern | 
						|
 * @param {String} `options` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
extglob.matcher = function (pattern, options) { | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected pattern to be a string'); | 
						|
  } | 
						|
 | 
						|
  function matcher() { | 
						|
    var re = extglob.makeRe(pattern, options); | 
						|
    return function (str) { | 
						|
      return re.test(str); | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  return utils.memoize('matcher', pattern, options, matcher); | 
						|
}; | 
						|
/** | 
						|
 * Convert the given `extglob` pattern into a regex-compatible string. Returns | 
						|
 * an object with the compiled result and the parsed AST. | 
						|
 * | 
						|
 * ```js | 
						|
 * var extglob = require('extglob'); | 
						|
 * console.log(extglob.create('*.!(*a)').output); | 
						|
 * //=> '(?!\\.)[^/]*?\\.(?!(?!\\.)[^/]*?a\\b).*?' | 
						|
 * ``` | 
						|
 * @param {String} `str` | 
						|
 * @param {Object} `options` | 
						|
 * @return {String} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
extglob.create = function (pattern, options) { | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected pattern to be a string'); | 
						|
  } | 
						|
 | 
						|
  function create() { | 
						|
    var ext = new Extglob(options); | 
						|
    var ast = ext.parse(pattern, options); | 
						|
    return ext.compile(ast, options); | 
						|
  } | 
						|
 | 
						|
  return utils.memoize('create', pattern, options, create); | 
						|
}; | 
						|
/** | 
						|
 * Returns an array of matches captured by `pattern` in `string`, or `null` | 
						|
 * if the pattern did not match. | 
						|
 * | 
						|
 * ```js | 
						|
 * var extglob = require('extglob'); | 
						|
 * extglob.capture(pattern, string[, options]); | 
						|
 * | 
						|
 * console.log(extglob.capture('test/*.js', 'test/foo.js')); | 
						|
 * //=> ['foo'] | 
						|
 * console.log(extglob.capture('test/*.js', 'foo/bar.css')); | 
						|
 * //=> null | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Glob pattern to use for matching. | 
						|
 * @param {String} `string` String to match | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
extglob.capture = function (pattern, str, options) { | 
						|
  var re = extglob.makeRe(pattern, extend({ | 
						|
    capture: true | 
						|
  }, options)); | 
						|
 | 
						|
  function match() { | 
						|
    return function (string) { | 
						|
      var match = re.exec(string); | 
						|
 | 
						|
      if (!match) { | 
						|
        return null; | 
						|
      } | 
						|
 | 
						|
      return match.slice(1); | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  var capture = utils.memoize('capture', pattern, options, match); | 
						|
  return capture(str); | 
						|
}; | 
						|
/** | 
						|
 * Create a regular expression from the given `pattern` and `options`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var extglob = require('extglob'); | 
						|
 * var re = extglob.makeRe('*.!(*a)'); | 
						|
 * console.log(re); | 
						|
 * //=> /^[^\/]*?\.(?![^\/]*?a)[^\/]*?$/ | 
						|
 * ``` | 
						|
 * @param {String} `pattern` The pattern to convert to regex. | 
						|
 * @param {Object} `options` | 
						|
 * @return {RegExp} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
extglob.makeRe = function (pattern, options) { | 
						|
  if (pattern instanceof RegExp) { | 
						|
    return pattern; | 
						|
  } | 
						|
 | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected pattern to be a string'); | 
						|
  } | 
						|
 | 
						|
  if (pattern.length > MAX_LENGTH) { | 
						|
    throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters'); | 
						|
  } | 
						|
 | 
						|
  function makeRe() { | 
						|
    var opts = extend({ | 
						|
      strictErrors: false | 
						|
    }, options); | 
						|
    if (opts.strictErrors === true) opts.strict = true; | 
						|
    var res = extglob.create(pattern, opts); | 
						|
    return toRegex(res.output, opts); | 
						|
  } | 
						|
 | 
						|
  var regex = utils.memoize('makeRe', pattern, options, makeRe); | 
						|
 | 
						|
  if (regex.source.length > MAX_LENGTH) { | 
						|
    throw new SyntaxError('potentially malicious regex detected'); | 
						|
  } | 
						|
 | 
						|
  return regex; | 
						|
}; | 
						|
/** | 
						|
 * Cache | 
						|
 */ | 
						|
 | 
						|
 | 
						|
extglob.cache = utils.cache; | 
						|
 | 
						|
extglob.clearCache = function () { | 
						|
  extglob.cache.__data__ = {}; | 
						|
}; | 
						|
/** | 
						|
 * Expose `Extglob` constructor, parsers and compilers | 
						|
 */ | 
						|
 | 
						|
 | 
						|
extglob.Extglob = Extglob; | 
						|
extglob.compilers = compilers; | 
						|
extglob.parsers = parsers; | 
						|
/** | 
						|
 * Expose `extglob` | 
						|
 * @type {Function} | 
						|
 */ | 
						|
 | 
						|
module.exports = extglob; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/extglob/lib/compilers.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./node_modules/extglob/lib/compilers.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var brackets = __webpack_require__(/*! expand-brackets */ "./node_modules/expand-brackets/index.js"); | 
						|
/** | 
						|
 * Extglob compilers | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function (extglob) { | 
						|
  function star() { | 
						|
    if (typeof extglob.options.star === 'function') { | 
						|
      return extglob.options.star.apply(this, arguments); | 
						|
    } | 
						|
 | 
						|
    if (typeof extglob.options.star === 'string') { | 
						|
      return extglob.options.star; | 
						|
    } | 
						|
 | 
						|
    return '.*?'; | 
						|
  } | 
						|
  /** | 
						|
   * Use `expand-brackets` compilers | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  extglob.use(brackets.compilers); | 
						|
  extglob.compiler | 
						|
  /** | 
						|
   * Escaped: "\\*" | 
						|
   */ | 
						|
  .set('escape', function (node) { | 
						|
    return this.emit(node.val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Dot: "." | 
						|
   */ | 
						|
  .set('dot', function (node) { | 
						|
    return this.emit('\\' + node.val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Question mark: "?" | 
						|
   */ | 
						|
  .set('qmark', function (node) { | 
						|
    var val = '[^\\\\/.]'; | 
						|
    var prev = this.prev(); | 
						|
 | 
						|
    if (node.parsed.slice(-1) === '(') { | 
						|
      var ch = node.rest.charAt(0); | 
						|
 | 
						|
      if (ch !== '!' && ch !== '=' && ch !== ':') { | 
						|
        return this.emit(val, node); | 
						|
      } | 
						|
 | 
						|
      return this.emit(node.val, node); | 
						|
    } | 
						|
 | 
						|
    if (prev.type === 'text' && prev.val) { | 
						|
      return this.emit(val, node); | 
						|
    } | 
						|
 | 
						|
    if (node.val.length > 1) { | 
						|
      val += '{' + node.val.length + '}'; | 
						|
    } | 
						|
 | 
						|
    return this.emit(val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Plus: "+" | 
						|
   */ | 
						|
  .set('plus', function (node) { | 
						|
    var prev = node.parsed.slice(-1); | 
						|
 | 
						|
    if (prev === ']' || prev === ')') { | 
						|
      return this.emit(node.val, node); | 
						|
    } | 
						|
 | 
						|
    var ch = this.output.slice(-1); | 
						|
 | 
						|
    if (!this.output || /[?*+]/.test(ch) && node.parent.type !== 'bracket') { | 
						|
      return this.emit('\\+', node); | 
						|
    } | 
						|
 | 
						|
    if (/\w/.test(ch) && !node.inside) { | 
						|
      return this.emit('+\\+?', node); | 
						|
    } | 
						|
 | 
						|
    return this.emit('+', node); | 
						|
  }) | 
						|
  /** | 
						|
   * Star: "*" | 
						|
   */ | 
						|
  .set('star', function (node) { | 
						|
    var prev = this.prev(); | 
						|
    var prefix = prev.type !== 'text' && prev.type !== 'escape' ? '(?!\\.)' : ''; | 
						|
    return this.emit(prefix + star.call(this, node), node); | 
						|
  }) | 
						|
  /** | 
						|
   * Parens | 
						|
   */ | 
						|
  .set('paren', function (node) { | 
						|
    return this.mapVisit(node.nodes); | 
						|
  }).set('paren.open', function (node) { | 
						|
    var capture = this.options.capture ? '(' : ''; | 
						|
 | 
						|
    switch (node.parent.prefix) { | 
						|
      case '!': | 
						|
      case '^': | 
						|
        return this.emit(capture + '(?:(?!(?:', node); | 
						|
 | 
						|
      case '*': | 
						|
      case '+': | 
						|
      case '?': | 
						|
      case '@': | 
						|
        return this.emit(capture + '(?:', node); | 
						|
 | 
						|
      default: | 
						|
        { | 
						|
          var val = node.val; | 
						|
 | 
						|
          if (this.options.bash === true) { | 
						|
            val = '\\' + val; | 
						|
          } else if (!this.options.capture && val === '(' && node.parent.rest[0] !== '?') { | 
						|
            val += '?:'; | 
						|
          } | 
						|
 | 
						|
          return this.emit(val, node); | 
						|
        } | 
						|
    } | 
						|
  }).set('paren.close', function (node) { | 
						|
    var capture = this.options.capture ? ')' : ''; | 
						|
 | 
						|
    switch (node.prefix) { | 
						|
      case '!': | 
						|
      case '^': | 
						|
        var prefix = /^(\)|$)/.test(node.rest) ? '$' : ''; | 
						|
        var str = star.call(this, node); // if the extglob has a slash explicitly defined, we know the user wants | 
						|
        // to match slashes, so we need to ensure the "star" regex allows for it | 
						|
 | 
						|
        if (node.parent.hasSlash && !this.options.star && this.options.slash !== false) { | 
						|
          str = '.*?'; | 
						|
        } | 
						|
 | 
						|
        return this.emit(prefix + ('))' + str + ')') + capture, node); | 
						|
 | 
						|
      case '*': | 
						|
      case '+': | 
						|
      case '?': | 
						|
        return this.emit(')' + node.prefix + capture, node); | 
						|
 | 
						|
      case '@': | 
						|
        return this.emit(')' + capture, node); | 
						|
 | 
						|
      default: | 
						|
        { | 
						|
          var val = (this.options.bash === true ? '\\' : '') + ')'; | 
						|
          return this.emit(val, node); | 
						|
        } | 
						|
    } | 
						|
  }) | 
						|
  /** | 
						|
   * Text | 
						|
   */ | 
						|
  .set('text', function (node) { | 
						|
    var val = node.val.replace(/[\[\]]/g, '\\$&'); | 
						|
    return this.emit(val, node); | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/extglob/lib/extglob.js": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./node_modules/extglob/lib/extglob.js ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
/** | 
						|
 * Module dependencies | 
						|
 */ | 
						|
 | 
						|
var Snapdragon = __webpack_require__(/*! snapdragon */ "./node_modules/snapdragon/index.js"); | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/extglob/node_modules/define-property/index.js"); | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/extend-shallow/index.js"); | 
						|
/** | 
						|
 * Local dependencies | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var compilers = __webpack_require__(/*! ./compilers */ "./node_modules/extglob/lib/compilers.js"); | 
						|
 | 
						|
var parsers = __webpack_require__(/*! ./parsers */ "./node_modules/extglob/lib/parsers.js"); | 
						|
/** | 
						|
 * Customize Snapdragon parser and renderer | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function Extglob(options) { | 
						|
  this.options = extend({ | 
						|
    source: 'extglob' | 
						|
  }, options); | 
						|
  this.snapdragon = this.options.snapdragon || new Snapdragon(this.options); | 
						|
  this.snapdragon.patterns = this.snapdragon.patterns || {}; | 
						|
  this.compiler = this.snapdragon.compiler; | 
						|
  this.parser = this.snapdragon.parser; | 
						|
  compilers(this.snapdragon); | 
						|
  parsers(this.snapdragon); | 
						|
  /** | 
						|
   * Override Snapdragon `.parse` method | 
						|
   */ | 
						|
 | 
						|
  define(this.snapdragon, 'parse', function (str, options) { | 
						|
    var parsed = Snapdragon.prototype.parse.apply(this, arguments); | 
						|
    parsed.input = str; // escape unmatched brace/bracket/parens | 
						|
 | 
						|
    var last = this.parser.stack.pop(); | 
						|
 | 
						|
    if (last && this.options.strict !== true) { | 
						|
      var node = last.nodes[0]; | 
						|
      node.val = '\\' + node.val; | 
						|
      var sibling = node.parent.nodes[1]; | 
						|
 | 
						|
      if (sibling.type === 'star') { | 
						|
        sibling.loose = true; | 
						|
      } | 
						|
    } // add non-enumerable parser reference | 
						|
 | 
						|
 | 
						|
    define(parsed, 'parser', this.parser); | 
						|
    return parsed; | 
						|
  }); | 
						|
  /** | 
						|
   * Decorate `.parse` method | 
						|
   */ | 
						|
 | 
						|
  define(this, 'parse', function (ast, options) { | 
						|
    return this.snapdragon.parse.apply(this.snapdragon, arguments); | 
						|
  }); | 
						|
  /** | 
						|
   * Decorate `.compile` method | 
						|
   */ | 
						|
 | 
						|
  define(this, 'compile', function (ast, options) { | 
						|
    return this.snapdragon.compile.apply(this.snapdragon, arguments); | 
						|
  }); | 
						|
} | 
						|
/** | 
						|
 * Expose `Extglob` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = Extglob; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/extglob/lib/parsers.js": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./node_modules/extglob/lib/parsers.js ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var brackets = __webpack_require__(/*! expand-brackets */ "./node_modules/expand-brackets/index.js"); | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/extglob/node_modules/define-property/index.js"); | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./utils */ "./node_modules/extglob/lib/utils.js"); | 
						|
/** | 
						|
 * Characters to use in text regex (we want to "not" match | 
						|
 * characters that are matched by other parsers) | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var TEXT_REGEX = '([!@*?+]?\\(|\\)|[*?.+\\\\]|\\[:?(?=.*\\])|:?\\])+'; | 
						|
var not = utils.createRegex(TEXT_REGEX); | 
						|
/** | 
						|
 * Extglob parsers | 
						|
 */ | 
						|
 | 
						|
function parsers(extglob) { | 
						|
  extglob.state = extglob.state || {}; | 
						|
  /** | 
						|
   * Use `expand-brackets` parsers | 
						|
   */ | 
						|
 | 
						|
  extglob.use(brackets.parsers); | 
						|
  extglob.parser.sets.paren = extglob.parser.sets.paren || []; | 
						|
  extglob.parser | 
						|
  /** | 
						|
   * Extglob open: "*(" | 
						|
   */ | 
						|
  .capture('paren.open', function () { | 
						|
    var parsed = this.parsed; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^([!@*?+])?\(/); | 
						|
    if (!m) return; | 
						|
    var prev = this.prev(); | 
						|
    var prefix = m[1]; | 
						|
    var val = m[0]; | 
						|
    var open = pos({ | 
						|
      type: 'paren.open', | 
						|
      parsed: parsed, | 
						|
      val: val | 
						|
    }); | 
						|
    var node = pos({ | 
						|
      type: 'paren', | 
						|
      prefix: prefix, | 
						|
      nodes: [open] | 
						|
    }); // if nested negation extglobs, just cancel them out to simplify | 
						|
 | 
						|
    if (prefix === '!' && prev.type === 'paren' && prev.prefix === '!') { | 
						|
      prev.prefix = '@'; | 
						|
      node.prefix = '@'; | 
						|
    } | 
						|
 | 
						|
    define(node, 'rest', this.input); | 
						|
    define(node, 'parsed', parsed); | 
						|
    define(node, 'parent', prev); | 
						|
    define(open, 'parent', node); | 
						|
    this.push('paren', node); | 
						|
    prev.nodes.push(node); | 
						|
  }) | 
						|
  /** | 
						|
   * Extglob close: ")" | 
						|
   */ | 
						|
  .capture('paren.close', function () { | 
						|
    var parsed = this.parsed; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\)/); | 
						|
    if (!m) return; | 
						|
    var parent = this.pop('paren'); | 
						|
    var node = pos({ | 
						|
      type: 'paren.close', | 
						|
      rest: this.input, | 
						|
      parsed: parsed, | 
						|
      val: m[0] | 
						|
    }); | 
						|
 | 
						|
    if (!this.isType(parent, 'paren')) { | 
						|
      if (this.options.strict) { | 
						|
        throw new Error('missing opening paren: "("'); | 
						|
      } | 
						|
 | 
						|
      node.escaped = true; | 
						|
      return node; | 
						|
    } | 
						|
 | 
						|
    node.prefix = parent.prefix; | 
						|
    parent.nodes.push(node); | 
						|
    define(node, 'parent', parent); | 
						|
  }) | 
						|
  /** | 
						|
   * Escape: "\\." | 
						|
   */ | 
						|
  .capture('escape', function () { | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\\(.)/); | 
						|
    if (!m) return; | 
						|
    return pos({ | 
						|
      type: 'escape', | 
						|
      val: m[0], | 
						|
      ch: m[1] | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Question marks: "?" | 
						|
   */ | 
						|
  .capture('qmark', function () { | 
						|
    var parsed = this.parsed; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\?+(?!\()/); | 
						|
    if (!m) return; | 
						|
    extglob.state.metachar = true; | 
						|
    return pos({ | 
						|
      type: 'qmark', | 
						|
      rest: this.input, | 
						|
      parsed: parsed, | 
						|
      val: m[0] | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Character parsers | 
						|
   */ | 
						|
  .capture('star', /^\*(?!\()/).capture('plus', /^\+(?!\()/).capture('dot', /^\./).capture('text', not); | 
						|
} | 
						|
 | 
						|
; | 
						|
/** | 
						|
 * Expose text regex string | 
						|
 */ | 
						|
 | 
						|
module.exports.TEXT_REGEX = TEXT_REGEX; | 
						|
/** | 
						|
 * Extglob parsers | 
						|
 */ | 
						|
 | 
						|
module.exports = parsers; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/extglob/lib/utils.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/extglob/lib/utils.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var regex = __webpack_require__(/*! regex-not */ "./node_modules/regex-not/index.js"); | 
						|
 | 
						|
var Cache = __webpack_require__(/*! fragment-cache */ "./node_modules/fragment-cache/index.js"); | 
						|
/** | 
						|
 * Utils | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var utils = module.exports; | 
						|
var cache = utils.cache = new Cache(); | 
						|
/** | 
						|
 * Cast `val` to an array | 
						|
 * @return {Array} | 
						|
 */ | 
						|
 | 
						|
utils.arrayify = function (val) { | 
						|
  if (!Array.isArray(val)) { | 
						|
    return [val]; | 
						|
  } | 
						|
 | 
						|
  return val; | 
						|
}; | 
						|
/** | 
						|
 * Memoize a generated regex or function | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.memoize = function (type, pattern, options, fn) { | 
						|
  var key = utils.createKey(type + pattern, options); | 
						|
 | 
						|
  if (cache.has(type, key)) { | 
						|
    return cache.get(type, key); | 
						|
  } | 
						|
 | 
						|
  var val = fn(pattern, options); | 
						|
 | 
						|
  if (options && options.cache === false) { | 
						|
    return val; | 
						|
  } | 
						|
 | 
						|
  cache.set(type, key, val); | 
						|
  return val; | 
						|
}; | 
						|
/** | 
						|
 * Create the key to use for memoization. The key is generated | 
						|
 * by iterating over the options and concatenating key-value pairs | 
						|
 * to the pattern string. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.createKey = function (pattern, options) { | 
						|
  var key = pattern; | 
						|
 | 
						|
  if (typeof options === 'undefined') { | 
						|
    return key; | 
						|
  } | 
						|
 | 
						|
  for (var prop in options) { | 
						|
    key += ';' + prop + '=' + String(options[prop]); | 
						|
  } | 
						|
 | 
						|
  return key; | 
						|
}; | 
						|
/** | 
						|
 * Create the regex to use for matching text | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.createRegex = function (str) { | 
						|
  var opts = { | 
						|
    contains: true, | 
						|
    strictClose: false | 
						|
  }; | 
						|
  return regex(str, opts); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/extglob/node_modules/define-property/index.js": | 
						|
/*!********************************************************************!*\ | 
						|
  !*** ./node_modules/extglob/node_modules/define-property/index.js ***! | 
						|
  \********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * define-property <https://github.com/jonschlinkert/define-property> | 
						|
 * | 
						|
 * Copyright (c) 2015, 2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var isDescriptor = __webpack_require__(/*! is-descriptor */ "./node_modules/is-descriptor/index.js"); | 
						|
 | 
						|
module.exports = function defineProperty(obj, prop, val) { | 
						|
  if (_typeof(obj) !== 'object' && typeof obj !== 'function') { | 
						|
    throw new TypeError('expected an object or function.'); | 
						|
  } | 
						|
 | 
						|
  if (typeof prop !== 'string') { | 
						|
    throw new TypeError('expected `prop` to be a string.'); | 
						|
  } | 
						|
 | 
						|
  if (isDescriptor(val) && ('set' in val || 'get' in val)) { | 
						|
    return Object.defineProperty(obj, prop, val); | 
						|
  } | 
						|
 | 
						|
  return Object.defineProperty(obj, prop, { | 
						|
    configurable: true, | 
						|
    enumerable: false, | 
						|
    writable: true, | 
						|
    value: val | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/fill-range/index.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/fill-range/index.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * fill-range <https://github.com/jonschlinkert/fill-range> | 
						|
 * | 
						|
 * Copyright (c) 2014-2015, 2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var util = __webpack_require__(/*! util */ "./node_modules/util/util.js"); | 
						|
 | 
						|
var isNumber = __webpack_require__(/*! is-number */ "./node_modules/is-number/index.js"); | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/extend-shallow/index.js"); | 
						|
 | 
						|
var repeat = __webpack_require__(/*! repeat-string */ "./node_modules/repeat-string/index.js"); | 
						|
 | 
						|
var toRegex = __webpack_require__(/*! to-regex-range */ "./node_modules/to-regex-range/index.js"); | 
						|
/** | 
						|
 * Return a range of numbers or letters. | 
						|
 * | 
						|
 * @param  {String} `start` Start of the range | 
						|
 * @param  {String} `stop` End of the range | 
						|
 * @param  {String} `step` Increment or decrement to use. | 
						|
 * @param  {Function} `fn` Custom function to modify each element in the range. | 
						|
 * @return {Array} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function fillRange(start, stop, step, options) { | 
						|
  if (typeof start === 'undefined') { | 
						|
    return []; | 
						|
  } | 
						|
 | 
						|
  if (typeof stop === 'undefined' || start === stop) { | 
						|
    // special case, for handling negative zero | 
						|
    var isString = typeof start === 'string'; | 
						|
 | 
						|
    if (isNumber(start) && !toNumber(start)) { | 
						|
      return [isString ? '0' : 0]; | 
						|
    } | 
						|
 | 
						|
    return [start]; | 
						|
  } | 
						|
 | 
						|
  if (typeof step !== 'number' && typeof step !== 'string') { | 
						|
    options = step; | 
						|
    step = undefined; | 
						|
  } | 
						|
 | 
						|
  if (typeof options === 'function') { | 
						|
    options = { | 
						|
      transform: options | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  var opts = extend({ | 
						|
    step: step | 
						|
  }, options); | 
						|
 | 
						|
  if (opts.step && !isValidNumber(opts.step)) { | 
						|
    if (opts.strictRanges === true) { | 
						|
      throw new TypeError('expected options.step to be a number'); | 
						|
    } | 
						|
 | 
						|
    return []; | 
						|
  } | 
						|
 | 
						|
  opts.isNumber = isValidNumber(start) && isValidNumber(stop); | 
						|
 | 
						|
  if (!opts.isNumber && !isValid(start, stop)) { | 
						|
    if (opts.strictRanges === true) { | 
						|
      throw new RangeError('invalid range arguments: ' + util.inspect([start, stop])); | 
						|
    } | 
						|
 | 
						|
    return []; | 
						|
  } | 
						|
 | 
						|
  opts.isPadded = isPadded(start) || isPadded(stop); | 
						|
  opts.toString = opts.stringify || typeof opts.step === 'string' || typeof start === 'string' || typeof stop === 'string' || !opts.isNumber; | 
						|
 | 
						|
  if (opts.isPadded) { | 
						|
    opts.maxLength = Math.max(String(start).length, String(stop).length); | 
						|
  } // support legacy minimatch/fill-range options | 
						|
 | 
						|
 | 
						|
  if (typeof opts.optimize === 'boolean') opts.toRegex = opts.optimize; | 
						|
  if (typeof opts.makeRe === 'boolean') opts.toRegex = opts.makeRe; | 
						|
  return expand(start, stop, opts); | 
						|
} | 
						|
 | 
						|
function expand(start, stop, options) { | 
						|
  var a = options.isNumber ? toNumber(start) : start.charCodeAt(0); | 
						|
  var b = options.isNumber ? toNumber(stop) : stop.charCodeAt(0); | 
						|
  var step = Math.abs(toNumber(options.step)) || 1; | 
						|
 | 
						|
  if (options.toRegex && step === 1) { | 
						|
    return toRange(a, b, start, stop, options); | 
						|
  } | 
						|
 | 
						|
  var zero = { | 
						|
    greater: [], | 
						|
    lesser: [] | 
						|
  }; | 
						|
  var asc = a < b; | 
						|
  var arr = new Array(Math.round((asc ? b - a : a - b) / step)); | 
						|
  var idx = 0; | 
						|
 | 
						|
  while (asc ? a <= b : a >= b) { | 
						|
    var val = options.isNumber ? a : String.fromCharCode(a); | 
						|
 | 
						|
    if (options.toRegex && (val >= 0 || !options.isNumber)) { | 
						|
      zero.greater.push(val); | 
						|
    } else { | 
						|
      zero.lesser.push(Math.abs(val)); | 
						|
    } | 
						|
 | 
						|
    if (options.isPadded) { | 
						|
      val = zeros(val, options); | 
						|
    } | 
						|
 | 
						|
    if (options.toString) { | 
						|
      val = String(val); | 
						|
    } | 
						|
 | 
						|
    if (typeof options.transform === 'function') { | 
						|
      arr[idx++] = options.transform(val, a, b, step, idx, arr, options); | 
						|
    } else { | 
						|
      arr[idx++] = val; | 
						|
    } | 
						|
 | 
						|
    if (asc) { | 
						|
      a += step; | 
						|
    } else { | 
						|
      a -= step; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (options.toRegex === true) { | 
						|
    return toSequence(arr, zero, options); | 
						|
  } | 
						|
 | 
						|
  return arr; | 
						|
} | 
						|
 | 
						|
function toRange(a, b, start, stop, options) { | 
						|
  if (options.isPadded) { | 
						|
    return toRegex(start, stop, options); | 
						|
  } | 
						|
 | 
						|
  if (options.isNumber) { | 
						|
    return toRegex(Math.min(a, b), Math.max(a, b), options); | 
						|
  } | 
						|
 | 
						|
  var start = String.fromCharCode(Math.min(a, b)); | 
						|
  var stop = String.fromCharCode(Math.max(a, b)); | 
						|
  return '[' + start + '-' + stop + ']'; | 
						|
} | 
						|
 | 
						|
function toSequence(arr, zeros, options) { | 
						|
  var greater = '', | 
						|
      lesser = ''; | 
						|
 | 
						|
  if (zeros.greater.length) { | 
						|
    greater = zeros.greater.join('|'); | 
						|
  } | 
						|
 | 
						|
  if (zeros.lesser.length) { | 
						|
    lesser = '-(' + zeros.lesser.join('|') + ')'; | 
						|
  } | 
						|
 | 
						|
  var res = greater && lesser ? greater + '|' + lesser : greater || lesser; | 
						|
 | 
						|
  if (options.capture) { | 
						|
    return '(' + res + ')'; | 
						|
  } | 
						|
 | 
						|
  return res; | 
						|
} | 
						|
 | 
						|
function zeros(val, options) { | 
						|
  if (options.isPadded) { | 
						|
    var str = String(val); | 
						|
    var len = str.length; | 
						|
    var dash = ''; | 
						|
 | 
						|
    if (str.charAt(0) === '-') { | 
						|
      dash = '-'; | 
						|
      str = str.slice(1); | 
						|
    } | 
						|
 | 
						|
    var diff = options.maxLength - len; | 
						|
    var pad = repeat('0', diff); | 
						|
    val = dash + pad + str; | 
						|
  } | 
						|
 | 
						|
  if (options.stringify) { | 
						|
    return String(val); | 
						|
  } | 
						|
 | 
						|
  return val; | 
						|
} | 
						|
 | 
						|
function toNumber(val) { | 
						|
  return Number(val) || 0; | 
						|
} | 
						|
 | 
						|
function isPadded(str) { | 
						|
  return /^-?0\d/.test(str); | 
						|
} | 
						|
 | 
						|
function isValid(min, max) { | 
						|
  return (isValidNumber(min) || isValidLetter(min)) && (isValidNumber(max) || isValidLetter(max)); | 
						|
} | 
						|
 | 
						|
function isValidLetter(ch) { | 
						|
  return typeof ch === 'string' && ch.length === 1 && /^\w+$/.test(ch); | 
						|
} | 
						|
 | 
						|
function isValidNumber(n) { | 
						|
  return isNumber(n) && !/\./.test(n); | 
						|
} | 
						|
/** | 
						|
 * Expose `fillRange` | 
						|
 * @type {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = fillRange; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/for-in/index.js": | 
						|
/*!**************************************!*\ | 
						|
  !*** ./node_modules/for-in/index.js ***! | 
						|
  \**************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * for-in <https://github.com/jonschlinkert/for-in> | 
						|
 * | 
						|
 * Copyright (c) 2014-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function forIn(obj, fn, thisArg) { | 
						|
  for (var key in obj) { | 
						|
    if (fn.call(thisArg, obj[key], key, obj) === false) { | 
						|
      break; | 
						|
    } | 
						|
  } | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/fragment-cache/index.js": | 
						|
/*!**********************************************!*\ | 
						|
  !*** ./node_modules/fragment-cache/index.js ***! | 
						|
  \**********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * fragment-cache <https://github.com/jonschlinkert/fragment-cache> | 
						|
 * | 
						|
 * Copyright (c) 2016-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var MapCache = __webpack_require__(/*! map-cache */ "./node_modules/map-cache/index.js"); | 
						|
/** | 
						|
 * Create a new `FragmentCache` with an optional object to use for `caches`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var fragment = new FragmentCache(); | 
						|
 * ``` | 
						|
 * @name FragmentCache | 
						|
 * @param {String} `cacheName` | 
						|
 * @return {Object} Returns the [map-cache][] instance. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function FragmentCache(caches) { | 
						|
  this.caches = caches || {}; | 
						|
} | 
						|
/** | 
						|
 * Prototype | 
						|
 */ | 
						|
 | 
						|
 | 
						|
FragmentCache.prototype = { | 
						|
  /** | 
						|
   * Get cache `name` from the `fragment.caches` object. Creates a new | 
						|
   * `MapCache` if it doesn't already exist. | 
						|
   * | 
						|
   * ```js | 
						|
   * var cache = fragment.cache('files'); | 
						|
   * console.log(fragment.caches.hasOwnProperty('files')); | 
						|
   * //=> true | 
						|
   * ``` | 
						|
   * @name .cache | 
						|
   * @param {String} `cacheName` | 
						|
   * @return {Object} Returns the [map-cache][] instance. | 
						|
   * @api public | 
						|
   */ | 
						|
  cache: function cache(cacheName) { | 
						|
    return this.caches[cacheName] || (this.caches[cacheName] = new MapCache()); | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Set a value for property `key` on cache `name` | 
						|
   * | 
						|
   * ```js | 
						|
   * fragment.set('files', 'somefile.js', new File({path: 'somefile.js'})); | 
						|
   * ``` | 
						|
   * @name .set | 
						|
   * @param {String} `name` | 
						|
   * @param {String} `key` Property name to set | 
						|
   * @param {any} `val` The value of `key` | 
						|
   * @return {Object} The cache instance for chaining | 
						|
   * @api public | 
						|
   */ | 
						|
  set: function set(cacheName, key, val) { | 
						|
    var cache = this.cache(cacheName); | 
						|
    cache.set(key, val); | 
						|
    return cache; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Returns true if a non-undefined value is set for `key` on fragment cache `name`. | 
						|
   * | 
						|
   * ```js | 
						|
   * var cache = fragment.cache('files'); | 
						|
   * cache.set('somefile.js'); | 
						|
   * | 
						|
   * console.log(cache.has('somefile.js')); | 
						|
   * //=> true | 
						|
   * | 
						|
   * console.log(cache.has('some-other-file.js')); | 
						|
   * //=> false | 
						|
   * ``` | 
						|
   * @name .has | 
						|
   * @param {String} `name` Cache name | 
						|
   * @param {String} `key` Optionally specify a property to check for on cache `name` | 
						|
   * @return {Boolean} | 
						|
   * @api public | 
						|
   */ | 
						|
  has: function has(cacheName, key) { | 
						|
    return typeof this.get(cacheName, key) !== 'undefined'; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Get `name`, or if specified, the value of `key`. Invokes the [cache]() method, | 
						|
   * so that cache `name` will be created it doesn't already exist. If `key` is not passed, | 
						|
   * the entire cache (`name`) is returned. | 
						|
   * | 
						|
   * ```js | 
						|
   * var Vinyl = require('vinyl'); | 
						|
   * var cache = fragment.cache('files'); | 
						|
   * cache.set('somefile.js', new Vinyl({path: 'somefile.js'})); | 
						|
   * console.log(cache.get('somefile.js')); | 
						|
   * //=> <File "somefile.js"> | 
						|
   * ``` | 
						|
   * @name .get | 
						|
   * @param {String} `name` | 
						|
   * @return {Object} Returns cache `name`, or the value of `key` if specified | 
						|
   * @api public | 
						|
   */ | 
						|
  get: function get(name, key) { | 
						|
    var cache = this.cache(name); | 
						|
 | 
						|
    if (typeof key === 'string') { | 
						|
      return cache.get(key); | 
						|
    } | 
						|
 | 
						|
    return cache; | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Expose `FragmentCache` | 
						|
 */ | 
						|
 | 
						|
exports = module.exports = FragmentCache; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/get-value/index.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/get-value/index.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
/*! | 
						|
 * get-value <https://github.com/jonschlinkert/get-value> | 
						|
 * | 
						|
 * Copyright (c) 2014-2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
module.exports = function (obj, prop, a, b, c) { | 
						|
  if (!isObject(obj) || !prop) { | 
						|
    return obj; | 
						|
  } | 
						|
 | 
						|
  prop = toString(prop); // allowing for multiple properties to be passed as | 
						|
  // a string or array, but much faster (3-4x) than doing | 
						|
  // `[].slice.call(arguments)` | 
						|
 | 
						|
  if (a) prop += '.' + toString(a); | 
						|
  if (b) prop += '.' + toString(b); | 
						|
  if (c) prop += '.' + toString(c); | 
						|
 | 
						|
  if (prop in obj) { | 
						|
    return obj[prop]; | 
						|
  } | 
						|
 | 
						|
  var segs = prop.split('.'); | 
						|
  var len = segs.length; | 
						|
  var i = -1; | 
						|
 | 
						|
  while (obj && ++i < len) { | 
						|
    var key = segs[i]; | 
						|
 | 
						|
    while (key[key.length - 1] === '\\') { | 
						|
      key = key.slice(0, -1) + '.' + segs[++i]; | 
						|
    } | 
						|
 | 
						|
    obj = obj[key]; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
function isObject(val) { | 
						|
  return val !== null && (_typeof(val) === 'object' || typeof val === 'function'); | 
						|
} | 
						|
 | 
						|
function toString(val) { | 
						|
  if (!val) return ''; | 
						|
 | 
						|
  if (Array.isArray(val)) { | 
						|
    return val.join('.'); | 
						|
  } | 
						|
 | 
						|
  return val; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/has-value/index.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/has-value/index.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * has-value <https://github.com/jonschlinkert/has-value> | 
						|
 * | 
						|
 * Copyright (c) 2014-2017, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isObject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
 | 
						|
var hasValues = __webpack_require__(/*! has-values */ "./node_modules/has-values/index.js"); | 
						|
 | 
						|
var get = __webpack_require__(/*! get-value */ "./node_modules/get-value/index.js"); | 
						|
 | 
						|
module.exports = function (val, prop) { | 
						|
  return hasValues(isObject(val) && prop ? get(val, prop) : val); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/has-values/index.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/has-values/index.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * has-values <https://github.com/jonschlinkert/has-values> | 
						|
 * | 
						|
 * Copyright (c) 2014-2015, 2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var typeOf = __webpack_require__(/*! kind-of */ "./node_modules/has-values/node_modules/kind-of/index.js"); | 
						|
 | 
						|
var isNumber = __webpack_require__(/*! is-number */ "./node_modules/is-number/index.js"); | 
						|
 | 
						|
module.exports = function hasValue(val) { | 
						|
  // is-number checks for NaN and other edge cases | 
						|
  if (isNumber(val)) { | 
						|
    return true; | 
						|
  } | 
						|
 | 
						|
  switch (typeOf(val)) { | 
						|
    case 'null': | 
						|
    case 'boolean': | 
						|
    case 'function': | 
						|
      return true; | 
						|
 | 
						|
    case 'string': | 
						|
    case 'arguments': | 
						|
      return val.length !== 0; | 
						|
 | 
						|
    case 'error': | 
						|
      return val.message !== ''; | 
						|
 | 
						|
    case 'array': | 
						|
      var len = val.length; | 
						|
 | 
						|
      if (len === 0) { | 
						|
        return false; | 
						|
      } | 
						|
 | 
						|
      for (var i = 0; i < len; i++) { | 
						|
        if (hasValue(val[i])) { | 
						|
          return true; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      return false; | 
						|
 | 
						|
    case 'file': | 
						|
    case 'map': | 
						|
    case 'set': | 
						|
      return val.size !== 0; | 
						|
 | 
						|
    case 'object': | 
						|
      var keys = Object.keys(val); | 
						|
 | 
						|
      if (keys.length === 0) { | 
						|
        return false; | 
						|
      } | 
						|
 | 
						|
      for (var i = 0; i < keys.length; i++) { | 
						|
        var key = keys[i]; | 
						|
 | 
						|
        if (hasValue(val[key])) { | 
						|
          return true; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      return false; | 
						|
 | 
						|
    default: | 
						|
      { | 
						|
        return false; | 
						|
      } | 
						|
  } | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/has-values/node_modules/kind-of/index.js": | 
						|
/*!***************************************************************!*\ | 
						|
  !*** ./node_modules/has-values/node_modules/kind-of/index.js ***! | 
						|
  \***************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/is-buffer/index.js"); | 
						|
 | 
						|
var toString = Object.prototype.toString; | 
						|
/** | 
						|
 * Get the native `typeof` a value. | 
						|
 * | 
						|
 * @param  {*} `val` | 
						|
 * @return {*} Native javascript type | 
						|
 */ | 
						|
 | 
						|
module.exports = function kindOf(val) { | 
						|
  // primitivies | 
						|
  if (typeof val === 'undefined') { | 
						|
    return 'undefined'; | 
						|
  } | 
						|
 | 
						|
  if (val === null) { | 
						|
    return 'null'; | 
						|
  } | 
						|
 | 
						|
  if (val === true || val === false || val instanceof Boolean) { | 
						|
    return 'boolean'; | 
						|
  } | 
						|
 | 
						|
  if (typeof val === 'string' || val instanceof String) { | 
						|
    return 'string'; | 
						|
  } | 
						|
 | 
						|
  if (typeof val === 'number' || val instanceof Number) { | 
						|
    return 'number'; | 
						|
  } // functions | 
						|
 | 
						|
 | 
						|
  if (typeof val === 'function' || val instanceof Function) { | 
						|
    return 'function'; | 
						|
  } // array | 
						|
 | 
						|
 | 
						|
  if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { | 
						|
    return 'array'; | 
						|
  } // check for instances of RegExp and Date before calling `toString` | 
						|
 | 
						|
 | 
						|
  if (val instanceof RegExp) { | 
						|
    return 'regexp'; | 
						|
  } | 
						|
 | 
						|
  if (val instanceof Date) { | 
						|
    return 'date'; | 
						|
  } // other objects | 
						|
 | 
						|
 | 
						|
  var type = toString.call(val); | 
						|
 | 
						|
  if (type === '[object RegExp]') { | 
						|
    return 'regexp'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Date]') { | 
						|
    return 'date'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Arguments]') { | 
						|
    return 'arguments'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Error]') { | 
						|
    return 'error'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Promise]') { | 
						|
    return 'promise'; | 
						|
  } // buffer | 
						|
 | 
						|
 | 
						|
  if (isBuffer(val)) { | 
						|
    return 'buffer'; | 
						|
  } // es6: Map, WeakMap, Set, WeakSet | 
						|
 | 
						|
 | 
						|
  if (type === '[object Set]') { | 
						|
    return 'set'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object WeakSet]') { | 
						|
    return 'weakset'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Map]') { | 
						|
    return 'map'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object WeakMap]') { | 
						|
    return 'weakmap'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Symbol]') { | 
						|
    return 'symbol'; | 
						|
  } // typed arrays | 
						|
 | 
						|
 | 
						|
  if (type === '[object Int8Array]') { | 
						|
    return 'int8array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint8Array]') { | 
						|
    return 'uint8array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint8ClampedArray]') { | 
						|
    return 'uint8clampedarray'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Int16Array]') { | 
						|
    return 'int16array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint16Array]') { | 
						|
    return 'uint16array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Int32Array]') { | 
						|
    return 'int32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint32Array]') { | 
						|
    return 'uint32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Float32Array]') { | 
						|
    return 'float32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Float64Array]') { | 
						|
    return 'float64array'; | 
						|
  } // must be a plain object | 
						|
 | 
						|
 | 
						|
  return 'object'; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/is-accessor-descriptor/index.js": | 
						|
/*!******************************************************!*\ | 
						|
  !*** ./node_modules/is-accessor-descriptor/index.js ***! | 
						|
  \******************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-accessor-descriptor <https://github.com/jonschlinkert/is-accessor-descriptor> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var typeOf = __webpack_require__(/*! kind-of */ "./node_modules/is-accessor-descriptor/node_modules/kind-of/index.js"); // accessor descriptor properties | 
						|
 | 
						|
 | 
						|
var accessor = { | 
						|
  get: 'function', | 
						|
  set: 'function', | 
						|
  configurable: 'boolean', | 
						|
  enumerable: 'boolean' | 
						|
}; | 
						|
 | 
						|
function isAccessorDescriptor(obj, prop) { | 
						|
  if (typeof prop === 'string') { | 
						|
    var val = Object.getOwnPropertyDescriptor(obj, prop); | 
						|
    return typeof val !== 'undefined'; | 
						|
  } | 
						|
 | 
						|
  if (typeOf(obj) !== 'object') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (has(obj, 'value') || has(obj, 'writable')) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (!has(obj, 'get') || typeof obj.get !== 'function') { | 
						|
    return false; | 
						|
  } // tldr: it's valid to have "set" be undefined | 
						|
  // "set" might be undefined if `Object.getOwnPropertyDescriptor` | 
						|
  // was used to get the value, and only `get` was defined by the user | 
						|
 | 
						|
 | 
						|
  if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  for (var key in obj) { | 
						|
    if (!accessor.hasOwnProperty(key)) { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (typeOf(obj[key]) === accessor[key]) { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (typeof obj[key] !== 'undefined') { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
} | 
						|
 | 
						|
function has(obj, key) { | 
						|
  return {}.hasOwnProperty.call(obj, key); | 
						|
} | 
						|
/** | 
						|
 * Expose `isAccessorDescriptor` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = isAccessorDescriptor; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/is-accessor-descriptor/node_modules/kind-of/index.js": | 
						|
/*!***************************************************************************!*\ | 
						|
  !*** ./node_modules/is-accessor-descriptor/node_modules/kind-of/index.js ***! | 
						|
  \***************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var toString = Object.prototype.toString; | 
						|
 | 
						|
module.exports = function kindOf(val) { | 
						|
  if (val === void 0) return 'undefined'; | 
						|
  if (val === null) return 'null'; | 
						|
 | 
						|
  var type = _typeof(val); | 
						|
 | 
						|
  if (type === 'boolean') return 'boolean'; | 
						|
  if (type === 'string') return 'string'; | 
						|
  if (type === 'number') return 'number'; | 
						|
  if (type === 'symbol') return 'symbol'; | 
						|
 | 
						|
  if (type === 'function') { | 
						|
    return isGeneratorFn(val) ? 'generatorfunction' : 'function'; | 
						|
  } | 
						|
 | 
						|
  if (isArray(val)) return 'array'; | 
						|
  if (isBuffer(val)) return 'buffer'; | 
						|
  if (isArguments(val)) return 'arguments'; | 
						|
  if (isDate(val)) return 'date'; | 
						|
  if (isError(val)) return 'error'; | 
						|
  if (isRegexp(val)) return 'regexp'; | 
						|
 | 
						|
  switch (ctorName(val)) { | 
						|
    case 'Symbol': | 
						|
      return 'symbol'; | 
						|
 | 
						|
    case 'Promise': | 
						|
      return 'promise'; | 
						|
    // Set, Map, WeakSet, WeakMap | 
						|
 | 
						|
    case 'WeakMap': | 
						|
      return 'weakmap'; | 
						|
 | 
						|
    case 'WeakSet': | 
						|
      return 'weakset'; | 
						|
 | 
						|
    case 'Map': | 
						|
      return 'map'; | 
						|
 | 
						|
    case 'Set': | 
						|
      return 'set'; | 
						|
    // 8-bit typed arrays | 
						|
 | 
						|
    case 'Int8Array': | 
						|
      return 'int8array'; | 
						|
 | 
						|
    case 'Uint8Array': | 
						|
      return 'uint8array'; | 
						|
 | 
						|
    case 'Uint8ClampedArray': | 
						|
      return 'uint8clampedarray'; | 
						|
    // 16-bit typed arrays | 
						|
 | 
						|
    case 'Int16Array': | 
						|
      return 'int16array'; | 
						|
 | 
						|
    case 'Uint16Array': | 
						|
      return 'uint16array'; | 
						|
    // 32-bit typed arrays | 
						|
 | 
						|
    case 'Int32Array': | 
						|
      return 'int32array'; | 
						|
 | 
						|
    case 'Uint32Array': | 
						|
      return 'uint32array'; | 
						|
 | 
						|
    case 'Float32Array': | 
						|
      return 'float32array'; | 
						|
 | 
						|
    case 'Float64Array': | 
						|
      return 'float64array'; | 
						|
  } | 
						|
 | 
						|
  if (isGeneratorObj(val)) { | 
						|
    return 'generator'; | 
						|
  } // Non-plain objects | 
						|
 | 
						|
 | 
						|
  type = toString.call(val); | 
						|
 | 
						|
  switch (type) { | 
						|
    case '[object Object]': | 
						|
      return 'object'; | 
						|
    // iterators | 
						|
 | 
						|
    case '[object Map Iterator]': | 
						|
      return 'mapiterator'; | 
						|
 | 
						|
    case '[object Set Iterator]': | 
						|
      return 'setiterator'; | 
						|
 | 
						|
    case '[object String Iterator]': | 
						|
      return 'stringiterator'; | 
						|
 | 
						|
    case '[object Array Iterator]': | 
						|
      return 'arrayiterator'; | 
						|
  } // other | 
						|
 | 
						|
 | 
						|
  return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); | 
						|
}; | 
						|
 | 
						|
function ctorName(val) { | 
						|
  return val.constructor ? val.constructor.name : null; | 
						|
} | 
						|
 | 
						|
function isArray(val) { | 
						|
  if (Array.isArray) return Array.isArray(val); | 
						|
  return val instanceof Array; | 
						|
} | 
						|
 | 
						|
function isError(val) { | 
						|
  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'; | 
						|
} | 
						|
 | 
						|
function isDate(val) { | 
						|
  if (val instanceof Date) return true; | 
						|
  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function'; | 
						|
} | 
						|
 | 
						|
function isRegexp(val) { | 
						|
  if (val instanceof RegExp) return true; | 
						|
  return typeof val.flags === 'string' && typeof val.ignoreCase === 'boolean' && typeof val.multiline === 'boolean' && typeof val.global === 'boolean'; | 
						|
} | 
						|
 | 
						|
function isGeneratorFn(name, val) { | 
						|
  return ctorName(name) === 'GeneratorFunction'; | 
						|
} | 
						|
 | 
						|
function isGeneratorObj(val) { | 
						|
  return typeof val.throw === 'function' && typeof val.return === 'function' && typeof val.next === 'function'; | 
						|
} | 
						|
 | 
						|
function isArguments(val) { | 
						|
  try { | 
						|
    if (typeof val.length === 'number' && typeof val.callee === 'function') { | 
						|
      return true; | 
						|
    } | 
						|
  } catch (err) { | 
						|
    if (err.message.indexOf('callee') !== -1) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
/** | 
						|
 * If you need to support Safari 5-7 (8-10 yr-old browser), | 
						|
 * take a look at https://github.com/feross/is-buffer | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isBuffer(val) { | 
						|
  if (val.constructor && typeof val.constructor.isBuffer === 'function') { | 
						|
    return val.constructor.isBuffer(val); | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/is-buffer/index.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/is-buffer/index.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/*! | 
						|
 * 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 isBuffer(obj) { | 
						|
  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj); | 
						|
} // 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)); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/is-data-descriptor/index.js": | 
						|
/*!**************************************************!*\ | 
						|
  !*** ./node_modules/is-data-descriptor/index.js ***! | 
						|
  \**************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-data-descriptor <https://github.com/jonschlinkert/is-data-descriptor> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var typeOf = __webpack_require__(/*! kind-of */ "./node_modules/is-data-descriptor/node_modules/kind-of/index.js"); | 
						|
 | 
						|
module.exports = function isDataDescriptor(obj, prop) { | 
						|
  // data descriptor properties | 
						|
  var data = { | 
						|
    configurable: 'boolean', | 
						|
    enumerable: 'boolean', | 
						|
    writable: 'boolean' | 
						|
  }; | 
						|
 | 
						|
  if (typeOf(obj) !== 'object') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (typeof prop === 'string') { | 
						|
    var val = Object.getOwnPropertyDescriptor(obj, prop); | 
						|
    return typeof val !== 'undefined'; | 
						|
  } | 
						|
 | 
						|
  if (!('value' in obj) && !('writable' in obj)) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  for (var key in obj) { | 
						|
    if (key === 'value') continue; | 
						|
 | 
						|
    if (!data.hasOwnProperty(key)) { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (typeOf(obj[key]) === data[key]) { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (typeof obj[key] !== 'undefined') { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/is-data-descriptor/node_modules/kind-of/index.js": | 
						|
/*!***********************************************************************!*\ | 
						|
  !*** ./node_modules/is-data-descriptor/node_modules/kind-of/index.js ***! | 
						|
  \***********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var toString = Object.prototype.toString; | 
						|
 | 
						|
module.exports = function kindOf(val) { | 
						|
  if (val === void 0) return 'undefined'; | 
						|
  if (val === null) return 'null'; | 
						|
 | 
						|
  var type = _typeof(val); | 
						|
 | 
						|
  if (type === 'boolean') return 'boolean'; | 
						|
  if (type === 'string') return 'string'; | 
						|
  if (type === 'number') return 'number'; | 
						|
  if (type === 'symbol') return 'symbol'; | 
						|
 | 
						|
  if (type === 'function') { | 
						|
    return isGeneratorFn(val) ? 'generatorfunction' : 'function'; | 
						|
  } | 
						|
 | 
						|
  if (isArray(val)) return 'array'; | 
						|
  if (isBuffer(val)) return 'buffer'; | 
						|
  if (isArguments(val)) return 'arguments'; | 
						|
  if (isDate(val)) return 'date'; | 
						|
  if (isError(val)) return 'error'; | 
						|
  if (isRegexp(val)) return 'regexp'; | 
						|
 | 
						|
  switch (ctorName(val)) { | 
						|
    case 'Symbol': | 
						|
      return 'symbol'; | 
						|
 | 
						|
    case 'Promise': | 
						|
      return 'promise'; | 
						|
    // Set, Map, WeakSet, WeakMap | 
						|
 | 
						|
    case 'WeakMap': | 
						|
      return 'weakmap'; | 
						|
 | 
						|
    case 'WeakSet': | 
						|
      return 'weakset'; | 
						|
 | 
						|
    case 'Map': | 
						|
      return 'map'; | 
						|
 | 
						|
    case 'Set': | 
						|
      return 'set'; | 
						|
    // 8-bit typed arrays | 
						|
 | 
						|
    case 'Int8Array': | 
						|
      return 'int8array'; | 
						|
 | 
						|
    case 'Uint8Array': | 
						|
      return 'uint8array'; | 
						|
 | 
						|
    case 'Uint8ClampedArray': | 
						|
      return 'uint8clampedarray'; | 
						|
    // 16-bit typed arrays | 
						|
 | 
						|
    case 'Int16Array': | 
						|
      return 'int16array'; | 
						|
 | 
						|
    case 'Uint16Array': | 
						|
      return 'uint16array'; | 
						|
    // 32-bit typed arrays | 
						|
 | 
						|
    case 'Int32Array': | 
						|
      return 'int32array'; | 
						|
 | 
						|
    case 'Uint32Array': | 
						|
      return 'uint32array'; | 
						|
 | 
						|
    case 'Float32Array': | 
						|
      return 'float32array'; | 
						|
 | 
						|
    case 'Float64Array': | 
						|
      return 'float64array'; | 
						|
  } | 
						|
 | 
						|
  if (isGeneratorObj(val)) { | 
						|
    return 'generator'; | 
						|
  } // Non-plain objects | 
						|
 | 
						|
 | 
						|
  type = toString.call(val); | 
						|
 | 
						|
  switch (type) { | 
						|
    case '[object Object]': | 
						|
      return 'object'; | 
						|
    // iterators | 
						|
 | 
						|
    case '[object Map Iterator]': | 
						|
      return 'mapiterator'; | 
						|
 | 
						|
    case '[object Set Iterator]': | 
						|
      return 'setiterator'; | 
						|
 | 
						|
    case '[object String Iterator]': | 
						|
      return 'stringiterator'; | 
						|
 | 
						|
    case '[object Array Iterator]': | 
						|
      return 'arrayiterator'; | 
						|
  } // other | 
						|
 | 
						|
 | 
						|
  return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); | 
						|
}; | 
						|
 | 
						|
function ctorName(val) { | 
						|
  return val.constructor ? val.constructor.name : null; | 
						|
} | 
						|
 | 
						|
function isArray(val) { | 
						|
  if (Array.isArray) return Array.isArray(val); | 
						|
  return val instanceof Array; | 
						|
} | 
						|
 | 
						|
function isError(val) { | 
						|
  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'; | 
						|
} | 
						|
 | 
						|
function isDate(val) { | 
						|
  if (val instanceof Date) return true; | 
						|
  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function'; | 
						|
} | 
						|
 | 
						|
function isRegexp(val) { | 
						|
  if (val instanceof RegExp) return true; | 
						|
  return typeof val.flags === 'string' && typeof val.ignoreCase === 'boolean' && typeof val.multiline === 'boolean' && typeof val.global === 'boolean'; | 
						|
} | 
						|
 | 
						|
function isGeneratorFn(name, val) { | 
						|
  return ctorName(name) === 'GeneratorFunction'; | 
						|
} | 
						|
 | 
						|
function isGeneratorObj(val) { | 
						|
  return typeof val.throw === 'function' && typeof val.return === 'function' && typeof val.next === 'function'; | 
						|
} | 
						|
 | 
						|
function isArguments(val) { | 
						|
  try { | 
						|
    if (typeof val.length === 'number' && typeof val.callee === 'function') { | 
						|
      return true; | 
						|
    } | 
						|
  } catch (err) { | 
						|
    if (err.message.indexOf('callee') !== -1) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
/** | 
						|
 * If you need to support Safari 5-7 (8-10 yr-old browser), | 
						|
 * take a look at https://github.com/feross/is-buffer | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isBuffer(val) { | 
						|
  if (val.constructor && typeof val.constructor.isBuffer === 'function') { | 
						|
    return val.constructor.isBuffer(val); | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/is-descriptor/index.js": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./node_modules/is-descriptor/index.js ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-descriptor <https://github.com/jonschlinkert/is-descriptor> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var typeOf = __webpack_require__(/*! kind-of */ "./node_modules/is-descriptor/node_modules/kind-of/index.js"); | 
						|
 | 
						|
var isAccessor = __webpack_require__(/*! is-accessor-descriptor */ "./node_modules/is-accessor-descriptor/index.js"); | 
						|
 | 
						|
var isData = __webpack_require__(/*! is-data-descriptor */ "./node_modules/is-data-descriptor/index.js"); | 
						|
 | 
						|
module.exports = function isDescriptor(obj, key) { | 
						|
  if (typeOf(obj) !== 'object') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if ('get' in obj) { | 
						|
    return isAccessor(obj, key); | 
						|
  } | 
						|
 | 
						|
  return isData(obj, key); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/is-descriptor/node_modules/kind-of/index.js": | 
						|
/*!******************************************************************!*\ | 
						|
  !*** ./node_modules/is-descriptor/node_modules/kind-of/index.js ***! | 
						|
  \******************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var toString = Object.prototype.toString; | 
						|
 | 
						|
module.exports = function kindOf(val) { | 
						|
  if (val === void 0) return 'undefined'; | 
						|
  if (val === null) return 'null'; | 
						|
 | 
						|
  var type = _typeof(val); | 
						|
 | 
						|
  if (type === 'boolean') return 'boolean'; | 
						|
  if (type === 'string') return 'string'; | 
						|
  if (type === 'number') return 'number'; | 
						|
  if (type === 'symbol') return 'symbol'; | 
						|
 | 
						|
  if (type === 'function') { | 
						|
    return isGeneratorFn(val) ? 'generatorfunction' : 'function'; | 
						|
  } | 
						|
 | 
						|
  if (isArray(val)) return 'array'; | 
						|
  if (isBuffer(val)) return 'buffer'; | 
						|
  if (isArguments(val)) return 'arguments'; | 
						|
  if (isDate(val)) return 'date'; | 
						|
  if (isError(val)) return 'error'; | 
						|
  if (isRegexp(val)) return 'regexp'; | 
						|
 | 
						|
  switch (ctorName(val)) { | 
						|
    case 'Symbol': | 
						|
      return 'symbol'; | 
						|
 | 
						|
    case 'Promise': | 
						|
      return 'promise'; | 
						|
    // Set, Map, WeakSet, WeakMap | 
						|
 | 
						|
    case 'WeakMap': | 
						|
      return 'weakmap'; | 
						|
 | 
						|
    case 'WeakSet': | 
						|
      return 'weakset'; | 
						|
 | 
						|
    case 'Map': | 
						|
      return 'map'; | 
						|
 | 
						|
    case 'Set': | 
						|
      return 'set'; | 
						|
    // 8-bit typed arrays | 
						|
 | 
						|
    case 'Int8Array': | 
						|
      return 'int8array'; | 
						|
 | 
						|
    case 'Uint8Array': | 
						|
      return 'uint8array'; | 
						|
 | 
						|
    case 'Uint8ClampedArray': | 
						|
      return 'uint8clampedarray'; | 
						|
    // 16-bit typed arrays | 
						|
 | 
						|
    case 'Int16Array': | 
						|
      return 'int16array'; | 
						|
 | 
						|
    case 'Uint16Array': | 
						|
      return 'uint16array'; | 
						|
    // 32-bit typed arrays | 
						|
 | 
						|
    case 'Int32Array': | 
						|
      return 'int32array'; | 
						|
 | 
						|
    case 'Uint32Array': | 
						|
      return 'uint32array'; | 
						|
 | 
						|
    case 'Float32Array': | 
						|
      return 'float32array'; | 
						|
 | 
						|
    case 'Float64Array': | 
						|
      return 'float64array'; | 
						|
  } | 
						|
 | 
						|
  if (isGeneratorObj(val)) { | 
						|
    return 'generator'; | 
						|
  } // Non-plain objects | 
						|
 | 
						|
 | 
						|
  type = toString.call(val); | 
						|
 | 
						|
  switch (type) { | 
						|
    case '[object Object]': | 
						|
      return 'object'; | 
						|
    // iterators | 
						|
 | 
						|
    case '[object Map Iterator]': | 
						|
      return 'mapiterator'; | 
						|
 | 
						|
    case '[object Set Iterator]': | 
						|
      return 'setiterator'; | 
						|
 | 
						|
    case '[object String Iterator]': | 
						|
      return 'stringiterator'; | 
						|
 | 
						|
    case '[object Array Iterator]': | 
						|
      return 'arrayiterator'; | 
						|
  } // other | 
						|
 | 
						|
 | 
						|
  return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); | 
						|
}; | 
						|
 | 
						|
function ctorName(val) { | 
						|
  return val.constructor ? val.constructor.name : null; | 
						|
} | 
						|
 | 
						|
function isArray(val) { | 
						|
  if (Array.isArray) return Array.isArray(val); | 
						|
  return val instanceof Array; | 
						|
} | 
						|
 | 
						|
function isError(val) { | 
						|
  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'; | 
						|
} | 
						|
 | 
						|
function isDate(val) { | 
						|
  if (val instanceof Date) return true; | 
						|
  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function'; | 
						|
} | 
						|
 | 
						|
function isRegexp(val) { | 
						|
  if (val instanceof RegExp) return true; | 
						|
  return typeof val.flags === 'string' && typeof val.ignoreCase === 'boolean' && typeof val.multiline === 'boolean' && typeof val.global === 'boolean'; | 
						|
} | 
						|
 | 
						|
function isGeneratorFn(name, val) { | 
						|
  return ctorName(name) === 'GeneratorFunction'; | 
						|
} | 
						|
 | 
						|
function isGeneratorObj(val) { | 
						|
  return typeof val.throw === 'function' && typeof val.return === 'function' && typeof val.next === 'function'; | 
						|
} | 
						|
 | 
						|
function isArguments(val) { | 
						|
  try { | 
						|
    if (typeof val.length === 'number' && typeof val.callee === 'function') { | 
						|
      return true; | 
						|
    } | 
						|
  } catch (err) { | 
						|
    if (err.message.indexOf('callee') !== -1) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
/** | 
						|
 * If you need to support Safari 5-7 (8-10 yr-old browser), | 
						|
 * take a look at https://github.com/feross/is-buffer | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isBuffer(val) { | 
						|
  if (val.constructor && typeof val.constructor.isBuffer === 'function') { | 
						|
    return val.constructor.isBuffer(val); | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/is-extendable/index.js": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./node_modules/is-extendable/index.js ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-extendable <https://github.com/jonschlinkert/is-extendable> | 
						|
 * | 
						|
 * Copyright (c) 2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
module.exports = function isExtendable(val) { | 
						|
  return typeof val !== 'undefined' && val !== null && (_typeof(val) === 'object' || typeof val === 'function'); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/is-number/index.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/is-number/index.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-number <https://github.com/jonschlinkert/is-number> | 
						|
 * | 
						|
 * Copyright (c) 2014-2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var typeOf = __webpack_require__(/*! kind-of */ "./node_modules/kind-of/index.js"); | 
						|
 | 
						|
module.exports = function isNumber(num) { | 
						|
  var type = typeOf(num); | 
						|
 | 
						|
  if (type === 'string') { | 
						|
    if (!num.trim()) return false; | 
						|
  } else if (type !== 'number') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  return num - num + 1 >= 0; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/is-plain-object/index.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./node_modules/is-plain-object/index.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-plain-object <https://github.com/jonschlinkert/is-plain-object> | 
						|
 * | 
						|
 * Copyright (c) 2014-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isObject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
 | 
						|
function isObjectObject(o) { | 
						|
  return isObject(o) === true && Object.prototype.toString.call(o) === '[object Object]'; | 
						|
} | 
						|
 | 
						|
module.exports = function isPlainObject(o) { | 
						|
  var ctor, prot; | 
						|
  if (isObjectObject(o) === false) return false; // If has modified constructor | 
						|
 | 
						|
  ctor = o.constructor; | 
						|
  if (typeof ctor !== 'function') return false; // If has modified prototype | 
						|
 | 
						|
  prot = ctor.prototype; | 
						|
  if (isObjectObject(prot) === false) return false; // If constructor does not have an Object-specific method | 
						|
 | 
						|
  if (prot.hasOwnProperty('isPrototypeOf') === false) { | 
						|
    return false; | 
						|
  } // Most likely a plain Object | 
						|
 | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/is-windows/index.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/is-windows/index.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(process) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
/*! | 
						|
 * is-windows <https://github.com/jonschlinkert/is-windows> | 
						|
 * | 
						|
 * Copyright © 2015-2018, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
(function (factory) { | 
						|
  if (exports && ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined') { | 
						|
    module.exports = factory(); | 
						|
  } else if (true) { | 
						|
    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), | 
						|
				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? | 
						|
				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), | 
						|
				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); | 
						|
  } else {} | 
						|
})(function () { | 
						|
  'use strict'; | 
						|
 | 
						|
  return function isWindows() { | 
						|
    return process && (process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE)); | 
						|
  }; | 
						|
}); | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ "./node_modules/process/browser.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/isarray/index.js": | 
						|
/*!***************************************!*\ | 
						|
  !*** ./node_modules/isarray/index.js ***! | 
						|
  \***************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var toString = {}.toString; | 
						|
 | 
						|
module.exports = Array.isArray || function (arr) { | 
						|
  return toString.call(arr) == '[object Array]'; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/isobject/index.js": | 
						|
/*!****************************************!*\ | 
						|
  !*** ./node_modules/isobject/index.js ***! | 
						|
  \****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * isobject <https://github.com/jonschlinkert/isobject> | 
						|
 * | 
						|
 * Copyright (c) 2014-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
module.exports = function isObject(val) { | 
						|
  return val != null && _typeof(val) === 'object' && Array.isArray(val) === false; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/js-tokens/index.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/js-tokens/index.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell | 
						|
// License: MIT. (See LICENSE.) | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); // This regex comes from regex.coffee, and is inserted here by generate-index.js | 
						|
// (run `npm run build`). | 
						|
 | 
						|
exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g; | 
						|
 | 
						|
exports.matchToToken = function (match) { | 
						|
  var token = { | 
						|
    type: "invalid", | 
						|
    value: match[0], | 
						|
    closed: undefined | 
						|
  }; | 
						|
  if (match[1]) token.type = "string", token.closed = !!(match[3] || match[4]);else if (match[5]) token.type = "comment";else if (match[6]) token.type = "comment", token.closed = !!match[7];else if (match[8]) token.type = "regex";else if (match[9]) token.type = "number";else if (match[10]) token.type = "name";else if (match[11]) token.type = "punctuator";else if (match[12]) token.type = "whitespace"; | 
						|
  return token; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/kind-of/index.js": | 
						|
/*!***************************************!*\ | 
						|
  !*** ./node_modules/kind-of/index.js ***! | 
						|
  \***************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/is-buffer/index.js"); | 
						|
 | 
						|
var toString = Object.prototype.toString; | 
						|
/** | 
						|
 * Get the native `typeof` a value. | 
						|
 * | 
						|
 * @param  {*} `val` | 
						|
 * @return {*} Native javascript type | 
						|
 */ | 
						|
 | 
						|
module.exports = function kindOf(val) { | 
						|
  // primitivies | 
						|
  if (typeof val === 'undefined') { | 
						|
    return 'undefined'; | 
						|
  } | 
						|
 | 
						|
  if (val === null) { | 
						|
    return 'null'; | 
						|
  } | 
						|
 | 
						|
  if (val === true || val === false || val instanceof Boolean) { | 
						|
    return 'boolean'; | 
						|
  } | 
						|
 | 
						|
  if (typeof val === 'string' || val instanceof String) { | 
						|
    return 'string'; | 
						|
  } | 
						|
 | 
						|
  if (typeof val === 'number' || val instanceof Number) { | 
						|
    return 'number'; | 
						|
  } // functions | 
						|
 | 
						|
 | 
						|
  if (typeof val === 'function' || val instanceof Function) { | 
						|
    return 'function'; | 
						|
  } // array | 
						|
 | 
						|
 | 
						|
  if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { | 
						|
    return 'array'; | 
						|
  } // check for instances of RegExp and Date before calling `toString` | 
						|
 | 
						|
 | 
						|
  if (val instanceof RegExp) { | 
						|
    return 'regexp'; | 
						|
  } | 
						|
 | 
						|
  if (val instanceof Date) { | 
						|
    return 'date'; | 
						|
  } // other objects | 
						|
 | 
						|
 | 
						|
  var type = toString.call(val); | 
						|
 | 
						|
  if (type === '[object RegExp]') { | 
						|
    return 'regexp'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Date]') { | 
						|
    return 'date'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Arguments]') { | 
						|
    return 'arguments'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Error]') { | 
						|
    return 'error'; | 
						|
  } // buffer | 
						|
 | 
						|
 | 
						|
  if (isBuffer(val)) { | 
						|
    return 'buffer'; | 
						|
  } // es6: Map, WeakMap, Set, WeakSet | 
						|
 | 
						|
 | 
						|
  if (type === '[object Set]') { | 
						|
    return 'set'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object WeakSet]') { | 
						|
    return 'weakset'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Map]') { | 
						|
    return 'map'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object WeakMap]') { | 
						|
    return 'weakmap'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Symbol]') { | 
						|
    return 'symbol'; | 
						|
  } // typed arrays | 
						|
 | 
						|
 | 
						|
  if (type === '[object Int8Array]') { | 
						|
    return 'int8array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint8Array]') { | 
						|
    return 'uint8array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint8ClampedArray]') { | 
						|
    return 'uint8clampedarray'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Int16Array]') { | 
						|
    return 'int16array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint16Array]') { | 
						|
    return 'uint16array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Int32Array]') { | 
						|
    return 'int32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Uint32Array]') { | 
						|
    return 'uint32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Float32Array]') { | 
						|
    return 'float32array'; | 
						|
  } | 
						|
 | 
						|
  if (type === '[object Float64Array]') { | 
						|
    return 'float64array'; | 
						|
  } // must be a plain object | 
						|
 | 
						|
 | 
						|
  return 'object'; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/map-cache/index.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/map-cache/index.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * map-cache <https://github.com/jonschlinkert/map-cache> | 
						|
 * | 
						|
 * Copyright (c) 2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var hasOwn = Object.prototype.hasOwnProperty; | 
						|
/** | 
						|
 * Expose `MapCache` | 
						|
 */ | 
						|
 | 
						|
module.exports = MapCache; | 
						|
/** | 
						|
 * Creates a cache object to store key/value pairs. | 
						|
 * | 
						|
 * ```js | 
						|
 * var cache = new MapCache(); | 
						|
 * ``` | 
						|
 * | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
function MapCache(data) { | 
						|
  this.__data__ = data || {}; | 
						|
} | 
						|
/** | 
						|
 * Adds `value` to `key` on the cache. | 
						|
 * | 
						|
 * ```js | 
						|
 * cache.set('foo', 'bar'); | 
						|
 * ``` | 
						|
 * | 
						|
 * @param {String} `key` The key of the value to cache. | 
						|
 * @param {*} `value` The value to cache. | 
						|
 * @returns {Object} Returns the `Cache` object for chaining. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
MapCache.prototype.set = function mapSet(key, value) { | 
						|
  if (key !== '__proto__') { | 
						|
    this.__data__[key] = value; | 
						|
  } | 
						|
 | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Gets the cached value for `key`. | 
						|
 * | 
						|
 * ```js | 
						|
 * cache.get('foo'); | 
						|
 * //=> 'bar' | 
						|
 * ``` | 
						|
 * | 
						|
 * @param {String} `key` The key of the value to get. | 
						|
 * @returns {*} Returns the cached value. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
MapCache.prototype.get = function mapGet(key) { | 
						|
  return key === '__proto__' ? undefined : this.__data__[key]; | 
						|
}; | 
						|
/** | 
						|
 * Checks if a cached value for `key` exists. | 
						|
 * | 
						|
 * ```js | 
						|
 * cache.has('foo'); | 
						|
 * //=> true | 
						|
 * ``` | 
						|
 * | 
						|
 * @param {String} `key` The key of the entry to check. | 
						|
 * @returns {Boolean} Returns `true` if an entry for `key` exists, else `false`. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
MapCache.prototype.has = function mapHas(key) { | 
						|
  return key !== '__proto__' && hasOwn.call(this.__data__, key); | 
						|
}; | 
						|
/** | 
						|
 * Removes `key` and its value from the cache. | 
						|
 * | 
						|
 * ```js | 
						|
 * cache.del('foo'); | 
						|
 * ``` | 
						|
 * @title .del | 
						|
 * @param {String} `key` The key of the value to remove. | 
						|
 * @returns {Boolean} Returns `true` if the entry was removed successfully, else `false`. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
MapCache.prototype.del = function mapDelete(key) { | 
						|
  return this.has(key) && delete this.__data__[key]; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/map-visit/index.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/map-visit/index.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var util = __webpack_require__(/*! util */ "./node_modules/util/util.js"); | 
						|
 | 
						|
var visit = __webpack_require__(/*! object-visit */ "./node_modules/object-visit/index.js"); | 
						|
/** | 
						|
 * Map `visit` over an array of objects. | 
						|
 * | 
						|
 * @param  {Object} `collection` The context in which to invoke `method` | 
						|
 * @param  {String} `method` Name of the method to call on `collection` | 
						|
 * @param  {Object} `arr` Array of objects. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function mapVisit(collection, method, val) { | 
						|
  if (isObject(val)) { | 
						|
    return visit.apply(null, arguments); | 
						|
  } | 
						|
 | 
						|
  if (!Array.isArray(val)) { | 
						|
    throw new TypeError('expected an array: ' + util.inspect(val)); | 
						|
  } | 
						|
 | 
						|
  var args = [].slice.call(arguments, 3); | 
						|
 | 
						|
  for (var i = 0; i < val.length; i++) { | 
						|
    var ele = val[i]; | 
						|
 | 
						|
    if (isObject(ele)) { | 
						|
      visit.apply(null, [collection, method, ele].concat(args)); | 
						|
    } else { | 
						|
      collection[method].apply(collection, [ele].concat(args)); | 
						|
    } | 
						|
  } | 
						|
}; | 
						|
 | 
						|
function isObject(val) { | 
						|
  return val && (typeof val === 'function' || !Array.isArray(val) && _typeof(val) === 'object'); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/micromatch/index.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/micromatch/index.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
/** | 
						|
 * Module dependencies | 
						|
 */ | 
						|
 | 
						|
var util = __webpack_require__(/*! util */ "./node_modules/util/util.js"); | 
						|
 | 
						|
var braces = __webpack_require__(/*! braces */ "./node_modules/braces/index.js"); | 
						|
 | 
						|
var toRegex = __webpack_require__(/*! to-regex */ "./node_modules/to-regex/index.js"); | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/micromatch/node_modules/extend-shallow/index.js"); | 
						|
/** | 
						|
 * Local dependencies | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var compilers = __webpack_require__(/*! ./lib/compilers */ "./node_modules/micromatch/lib/compilers.js"); | 
						|
 | 
						|
var parsers = __webpack_require__(/*! ./lib/parsers */ "./node_modules/micromatch/lib/parsers.js"); | 
						|
 | 
						|
var cache = __webpack_require__(/*! ./lib/cache */ "./node_modules/micromatch/lib/cache.js"); | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./lib/utils */ "./node_modules/micromatch/lib/utils.js"); | 
						|
 | 
						|
var MAX_LENGTH = 1024 * 64; | 
						|
/** | 
						|
 * The main function takes a list of strings and one or more | 
						|
 * glob patterns to use for matching. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm(list, patterns[, options]); | 
						|
 * | 
						|
 * console.log(mm(['a.js', 'a.txt'], ['*.js'])); | 
						|
 * //=> [ 'a.js' ] | 
						|
 * ``` | 
						|
 * @param {Array} `list` A list of strings to match | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Array} Returns an array of matches | 
						|
 * @summary false | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
function micromatch(list, patterns, options) { | 
						|
  patterns = utils.arrayify(patterns); | 
						|
  list = utils.arrayify(list); | 
						|
  var len = patterns.length; | 
						|
 | 
						|
  if (list.length === 0 || len === 0) { | 
						|
    return []; | 
						|
  } | 
						|
 | 
						|
  if (len === 1) { | 
						|
    return micromatch.match(list, patterns[0], options); | 
						|
  } | 
						|
 | 
						|
  var omit = []; | 
						|
  var keep = []; | 
						|
  var idx = -1; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var pattern = patterns[idx]; | 
						|
 | 
						|
    if (typeof pattern === 'string' && pattern.charCodeAt(0) === 33 | 
						|
    /* ! */ | 
						|
    ) { | 
						|
        omit.push.apply(omit, micromatch.match(list, pattern.slice(1), options)); | 
						|
      } else { | 
						|
      keep.push.apply(keep, micromatch.match(list, pattern, options)); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var matches = utils.diff(keep, omit); | 
						|
 | 
						|
  if (!options || options.nodupes !== false) { | 
						|
    return utils.unique(matches); | 
						|
  } | 
						|
 | 
						|
  return matches; | 
						|
} | 
						|
/** | 
						|
 * Similar to the main function, but `pattern` must be a string. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.match(list, pattern[, options]); | 
						|
 * | 
						|
 * console.log(mm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a')); | 
						|
 * //=> ['a.a', 'a.aa'] | 
						|
 * ``` | 
						|
 * @param {Array} `list` Array of strings to match | 
						|
 * @param {String} `pattern` Glob pattern to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Array} Returns an array of matches | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.match = function (list, pattern, options) { | 
						|
  if (Array.isArray(pattern)) { | 
						|
    throw new TypeError('expected pattern to be a string'); | 
						|
  } | 
						|
 | 
						|
  var unixify = utils.unixify(options); | 
						|
  var isMatch = memoize('match', pattern, options, micromatch.matcher); | 
						|
  var matches = []; | 
						|
  list = utils.arrayify(list); | 
						|
  var len = list.length; | 
						|
  var idx = -1; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var ele = list[idx]; | 
						|
 | 
						|
    if (ele === pattern || isMatch(ele)) { | 
						|
      matches.push(utils.value(ele, unixify, options)); | 
						|
    } | 
						|
  } // if no options were passed, uniquify results and return | 
						|
 | 
						|
 | 
						|
  if (typeof options === 'undefined') { | 
						|
    return utils.unique(matches); | 
						|
  } | 
						|
 | 
						|
  if (matches.length === 0) { | 
						|
    if (options.failglob === true) { | 
						|
      throw new Error('no matches found for "' + pattern + '"'); | 
						|
    } | 
						|
 | 
						|
    if (options.nonull === true || options.nullglob === true) { | 
						|
      return [options.unescape ? utils.unescape(pattern) : pattern]; | 
						|
    } | 
						|
  } // if `opts.ignore` was defined, diff ignored list | 
						|
 | 
						|
 | 
						|
  if (options.ignore) { | 
						|
    matches = micromatch.not(matches, options.ignore, options); | 
						|
  } | 
						|
 | 
						|
  return options.nodupes !== false ? utils.unique(matches) : matches; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the specified `string` matches the given glob `pattern`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.isMatch(string, pattern[, options]); | 
						|
 * | 
						|
 * console.log(mm.isMatch('a.a', '*.a')); | 
						|
 * //=> true | 
						|
 * console.log(mm.isMatch('a.b', '*.a')); | 
						|
 * //=> false | 
						|
 * ``` | 
						|
 * @param {String} `string` String to match | 
						|
 * @param {String} `pattern` Glob pattern to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if the string matches the glob pattern. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.isMatch = function (str, pattern, options) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string: "' + util.inspect(str) + '"'); | 
						|
  } | 
						|
 | 
						|
  if (isEmptyString(str) || isEmptyString(pattern)) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  var equals = utils.equalsPattern(options); | 
						|
 | 
						|
  if (equals(str)) { | 
						|
    return true; | 
						|
  } | 
						|
 | 
						|
  var isMatch = memoize('isMatch', pattern, options, micromatch.matcher); | 
						|
  return isMatch(str); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if some of the strings in the given `list` match any of the | 
						|
 * given glob `patterns`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.some(list, patterns[, options]); | 
						|
 * | 
						|
 * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); | 
						|
 * // true | 
						|
 * console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); | 
						|
 * // false | 
						|
 * ``` | 
						|
 * @param  {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found. | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if any patterns match `str` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.some = function (list, patterns, options) { | 
						|
  if (typeof list === 'string') { | 
						|
    list = [list]; | 
						|
  } | 
						|
 | 
						|
  for (var i = 0; i < list.length; i++) { | 
						|
    if (micromatch(list[i], patterns, options).length === 1) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if every string in the given `list` matches | 
						|
 * any of the given glob `patterns`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.every(list, patterns[, options]); | 
						|
 * | 
						|
 * console.log(mm.every('foo.js', ['foo.js'])); | 
						|
 * // true | 
						|
 * console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); | 
						|
 * // true | 
						|
 * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); | 
						|
 * // false | 
						|
 * console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); | 
						|
 * // false | 
						|
 * ``` | 
						|
 * @param  {String|Array} `list` The string or array of strings to test. | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if any patterns match `str` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.every = function (list, patterns, options) { | 
						|
  if (typeof list === 'string') { | 
						|
    list = [list]; | 
						|
  } | 
						|
 | 
						|
  for (var i = 0; i < list.length; i++) { | 
						|
    if (micromatch(list[i], patterns, options).length !== 1) { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if **any** of the given glob `patterns` | 
						|
 * match the specified `string`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.any(string, patterns[, options]); | 
						|
 * | 
						|
 * console.log(mm.any('a.a', ['b.*', '*.a'])); | 
						|
 * //=> true | 
						|
 * console.log(mm.any('a.a', 'b.*')); | 
						|
 * //=> false | 
						|
 * ``` | 
						|
 * @param  {String|Array} `str` The string to test. | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if any patterns match `str` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.any = function (str, patterns, options) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string: "' + util.inspect(str) + '"'); | 
						|
  } | 
						|
 | 
						|
  if (isEmptyString(str) || isEmptyString(patterns)) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (typeof patterns === 'string') { | 
						|
    patterns = [patterns]; | 
						|
  } | 
						|
 | 
						|
  for (var i = 0; i < patterns.length; i++) { | 
						|
    if (micromatch.isMatch(str, patterns[i], options)) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if **all** of the given `patterns` match | 
						|
 * the specified string. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.all(string, patterns[, options]); | 
						|
 * | 
						|
 * console.log(mm.all('foo.js', ['foo.js'])); | 
						|
 * // true | 
						|
 * | 
						|
 * console.log(mm.all('foo.js', ['*.js', '!foo.js'])); | 
						|
 * // false | 
						|
 * | 
						|
 * console.log(mm.all('foo.js', ['*.js', 'foo.js'])); | 
						|
 * // true | 
						|
 * | 
						|
 * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); | 
						|
 * // true | 
						|
 * ``` | 
						|
 * @param  {String|Array} `str` The string to test. | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if any patterns match `str` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.all = function (str, patterns, options) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string: "' + util.inspect(str) + '"'); | 
						|
  } | 
						|
 | 
						|
  if (typeof patterns === 'string') { | 
						|
    patterns = [patterns]; | 
						|
  } | 
						|
 | 
						|
  for (var i = 0; i < patterns.length; i++) { | 
						|
    if (!micromatch.isMatch(str, patterns[i], options)) { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
/** | 
						|
 * Returns a list of strings that _**do not match any**_ of the given `patterns`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.not(list, patterns[, options]); | 
						|
 * | 
						|
 * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); | 
						|
 * //=> ['b.b', 'c.c'] | 
						|
 * ``` | 
						|
 * @param {Array} `list` Array of strings to match. | 
						|
 * @param {String|Array} `patterns` One or more glob pattern to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Array} Returns an array of strings that **do not match** the given patterns. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.not = function (list, patterns, options) { | 
						|
  var opts = extend({}, options); | 
						|
  var ignore = opts.ignore; | 
						|
  delete opts.ignore; | 
						|
  var unixify = utils.unixify(opts); | 
						|
  list = utils.arrayify(list).map(unixify); | 
						|
  var matches = utils.diff(list, micromatch(list, patterns, opts)); | 
						|
 | 
						|
  if (ignore) { | 
						|
    matches = utils.diff(matches, micromatch(list, ignore)); | 
						|
  } | 
						|
 | 
						|
  return opts.nodupes !== false ? utils.unique(matches) : matches; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given `string` contains the given pattern. Similar | 
						|
 * to [.isMatch](#isMatch) but the pattern can match any part of the string. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.contains(string, pattern[, options]); | 
						|
 * | 
						|
 * console.log(mm.contains('aa/bb/cc', '*b')); | 
						|
 * //=> true | 
						|
 * console.log(mm.contains('aa/bb/cc', '*d')); | 
						|
 * //=> false | 
						|
 * ``` | 
						|
 * @param {String} `str` The string to match. | 
						|
 * @param {String|Array} `patterns` Glob pattern to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if the patter matches any part of `str`. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.contains = function (str, patterns, options) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string: "' + util.inspect(str) + '"'); | 
						|
  } | 
						|
 | 
						|
  if (typeof patterns === 'string') { | 
						|
    if (isEmptyString(str) || isEmptyString(patterns)) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    var equals = utils.equalsPattern(patterns, options); | 
						|
 | 
						|
    if (equals(str)) { | 
						|
      return true; | 
						|
    } | 
						|
 | 
						|
    var contains = utils.containsPattern(patterns, options); | 
						|
 | 
						|
    if (contains(str)) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var opts = extend({}, options, { | 
						|
    contains: true | 
						|
  }); | 
						|
  return micromatch.any(str, patterns, opts); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given pattern and options should enable | 
						|
 * the `matchBase` option. | 
						|
 * @return {Boolean} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.matchBase = function (pattern, options) { | 
						|
  if (pattern && pattern.indexOf('/') !== -1 || !options) return false; | 
						|
  return options.basename === true || options.matchBase === true; | 
						|
}; | 
						|
/** | 
						|
 * Filter the keys of the given object with the given `glob` pattern | 
						|
 * and `options`. Does not attempt to match nested keys. If you need this feature, | 
						|
 * use [glob-object][] instead. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.matchKeys(object, patterns[, options]); | 
						|
 * | 
						|
 * var obj = { aa: 'a', ab: 'b', ac: 'c' }; | 
						|
 * console.log(mm.matchKeys(obj, '*b')); | 
						|
 * //=> { ab: 'b' } | 
						|
 * ``` | 
						|
 * @param {Object} `object` The object with keys to filter. | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Object} Returns an object with only keys that match the given patterns. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.matchKeys = function (obj, patterns, options) { | 
						|
  if (!utils.isObject(obj)) { | 
						|
    throw new TypeError('expected the first argument to be an object'); | 
						|
  } | 
						|
 | 
						|
  var keys = micromatch(Object.keys(obj), patterns, options); | 
						|
  return utils.pick(obj, keys); | 
						|
}; | 
						|
/** | 
						|
 * Returns a memoized matcher function from the given glob `pattern` and `options`. | 
						|
 * The returned function takes a string to match as its only argument and returns | 
						|
 * true if the string is a match. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.matcher(pattern[, options]); | 
						|
 * | 
						|
 * var isMatch = mm.matcher('*.!(*a)'); | 
						|
 * console.log(isMatch('a.a')); | 
						|
 * //=> false | 
						|
 * console.log(isMatch('a.b')); | 
						|
 * //=> true | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Glob pattern | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed. | 
						|
 * @return {Function} Returns a matcher function. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.matcher = function matcher(pattern, options) { | 
						|
  if (Array.isArray(pattern)) { | 
						|
    return compose(pattern, options, matcher); | 
						|
  } // if pattern is a regex | 
						|
 | 
						|
 | 
						|
  if (pattern instanceof RegExp) { | 
						|
    return test(pattern); | 
						|
  } // if pattern is invalid | 
						|
 | 
						|
 | 
						|
  if (!utils.isString(pattern)) { | 
						|
    throw new TypeError('expected pattern to be an array, string or regex'); | 
						|
  } // if pattern is a non-glob string | 
						|
 | 
						|
 | 
						|
  if (!utils.hasSpecialChars(pattern)) { | 
						|
    if (options && options.nocase === true) { | 
						|
      pattern = pattern.toLowerCase(); | 
						|
    } | 
						|
 | 
						|
    return utils.matchPath(pattern, options); | 
						|
  } // if pattern is a glob string | 
						|
 | 
						|
 | 
						|
  var re = micromatch.makeRe(pattern, options); // if `options.matchBase` or `options.basename` is defined | 
						|
 | 
						|
  if (micromatch.matchBase(pattern, options)) { | 
						|
    return utils.matchBasename(re, options); | 
						|
  } | 
						|
 | 
						|
  function test(regex) { | 
						|
    var equals = utils.equalsPattern(options); | 
						|
    var unixify = utils.unixify(options); | 
						|
    return function (str) { | 
						|
      if (equals(str)) { | 
						|
        return true; | 
						|
      } | 
						|
 | 
						|
      if (regex.test(unixify(str))) { | 
						|
        return true; | 
						|
      } | 
						|
 | 
						|
      return false; | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  var fn = test(re); | 
						|
  Object.defineProperty(fn, 'result', { | 
						|
    configurable: true, | 
						|
    enumerable: false, | 
						|
    value: re.result | 
						|
  }); | 
						|
  return fn; | 
						|
}; | 
						|
/** | 
						|
 * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.capture(pattern, string[, options]); | 
						|
 * | 
						|
 * console.log(mm.capture('test/*.js', 'test/foo.js')); | 
						|
 * //=> ['foo'] | 
						|
 * console.log(mm.capture('test/*.js', 'foo/bar.css')); | 
						|
 * //=> null | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Glob pattern to use for matching. | 
						|
 * @param {String} `string` String to match | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.capture = function (pattern, str, options) { | 
						|
  var re = micromatch.makeRe(pattern, extend({ | 
						|
    capture: true | 
						|
  }, options)); | 
						|
  var unixify = utils.unixify(options); | 
						|
 | 
						|
  function match() { | 
						|
    return function (string) { | 
						|
      var match = re.exec(unixify(string)); | 
						|
 | 
						|
      if (!match) { | 
						|
        return null; | 
						|
      } | 
						|
 | 
						|
      return match.slice(1); | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  var capture = memoize('capture', pattern, options, match); | 
						|
  return capture(str); | 
						|
}; | 
						|
/** | 
						|
 * Create a regular expression from the given glob `pattern`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.makeRe(pattern[, options]); | 
						|
 * | 
						|
 * console.log(mm.makeRe('*.js')); | 
						|
 * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ | 
						|
 * ``` | 
						|
 * @param {String} `pattern` A glob pattern to convert to regex. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed. | 
						|
 * @return {RegExp} Returns a regex created from the given pattern. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.makeRe = function (pattern, options) { | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected pattern to be a string'); | 
						|
  } | 
						|
 | 
						|
  if (pattern.length > MAX_LENGTH) { | 
						|
    throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters'); | 
						|
  } | 
						|
 | 
						|
  function makeRe() { | 
						|
    var result = micromatch.create(pattern, options); | 
						|
    var ast_array = []; | 
						|
    var output = result.map(function (obj) { | 
						|
      obj.ast.state = obj.state; | 
						|
      ast_array.push(obj.ast); | 
						|
      return obj.output; | 
						|
    }); | 
						|
    var regex = toRegex(output.join('|'), options); | 
						|
    Object.defineProperty(regex, 'result', { | 
						|
      configurable: true, | 
						|
      enumerable: false, | 
						|
      value: ast_array | 
						|
    }); | 
						|
    return regex; | 
						|
  } | 
						|
 | 
						|
  return memoize('makeRe', pattern, options, makeRe); | 
						|
}; | 
						|
/** | 
						|
 * Expand the given brace `pattern`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * console.log(mm.braces('foo/{a,b}/bar')); | 
						|
 * //=> ['foo/(a|b)/bar'] | 
						|
 * | 
						|
 * console.log(mm.braces('foo/{a,b}/bar', {expand: true})); | 
						|
 * //=> ['foo/(a|b)/bar'] | 
						|
 * ``` | 
						|
 * @param {String} `pattern` String with brace pattern to expand. | 
						|
 * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options. | 
						|
 * @return {Array} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.braces = function (pattern, options) { | 
						|
  if (typeof pattern !== 'string' && !Array.isArray(pattern)) { | 
						|
    throw new TypeError('expected pattern to be an array or string'); | 
						|
  } | 
						|
 | 
						|
  function expand() { | 
						|
    if (options && options.nobrace === true || !/\{.*\}/.test(pattern)) { | 
						|
      return utils.arrayify(pattern); | 
						|
    } | 
						|
 | 
						|
    return braces(pattern, options); | 
						|
  } | 
						|
 | 
						|
  return memoize('braces', pattern, options, expand); | 
						|
}; | 
						|
/** | 
						|
 * Proxy to the [micromatch.braces](#method), for parity with | 
						|
 * minimatch. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.braceExpand = function (pattern, options) { | 
						|
  var opts = extend({}, options, { | 
						|
    expand: true | 
						|
  }); | 
						|
  return micromatch.braces(pattern, opts); | 
						|
}; | 
						|
/** | 
						|
 * Parses the given glob `pattern` and returns an array of abstract syntax | 
						|
 * trees (ASTs), with the compiled `output` and optional source `map` on | 
						|
 * each AST. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.create(pattern[, options]); | 
						|
 * | 
						|
 * console.log(mm.create('abc/*.js')); | 
						|
 * // [{ options: { source: 'string', sourcemap: true }, | 
						|
 * //   state: {}, | 
						|
 * //   compilers: | 
						|
 * //    { ... }, | 
						|
 * //   output: '(\\.[\\\\\\/])?abc\\/(?!\\.)(?=.)[^\\/]*?\\.js', | 
						|
 * //   ast: | 
						|
 * //    { type: 'root', | 
						|
 * //      errors: [], | 
						|
 * //      nodes: | 
						|
 * //       [ ... ], | 
						|
 * //      dot: false, | 
						|
 * //      input: 'abc/*.js' }, | 
						|
 * //   parsingErrors: [], | 
						|
 * //   map: | 
						|
 * //    { version: 3, | 
						|
 * //      sources: [ 'string' ], | 
						|
 * //      names: [], | 
						|
 * //      mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE', | 
						|
 * //      sourcesContent: [ 'abc/*.js' ] }, | 
						|
 * //   position: { line: 1, column: 28 }, | 
						|
 * //   content: {}, | 
						|
 * //   files: {}, | 
						|
 * //   idx: 6 }] | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Glob pattern to parse and compile. | 
						|
 * @param {Object} `options` Any [options](#options) to change how parsing and compiling is performed. | 
						|
 * @return {Object} Returns an object with the parsed AST, compiled string and optional source map. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.create = function (pattern, options) { | 
						|
  return memoize('create', pattern, options, function () { | 
						|
    function create(str, opts) { | 
						|
      return micromatch.compile(micromatch.parse(str, opts), opts); | 
						|
    } | 
						|
 | 
						|
    pattern = micromatch.braces(pattern, options); | 
						|
    var len = pattern.length; | 
						|
    var idx = -1; | 
						|
    var res = []; | 
						|
 | 
						|
    while (++idx < len) { | 
						|
      res.push(create(pattern[idx], options)); | 
						|
    } | 
						|
 | 
						|
    return res; | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Parse the given `str` with the given `options`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.parse(pattern[, options]); | 
						|
 * | 
						|
 * var ast = mm.parse('a/{b,c}/d'); | 
						|
 * console.log(ast); | 
						|
 * // { type: 'root', | 
						|
 * //   errors: [], | 
						|
 * //   input: 'a/{b,c}/d', | 
						|
 * //   nodes: | 
						|
 * //    [ { type: 'bos', val: '' }, | 
						|
 * //      { type: 'text', val: 'a/' }, | 
						|
 * //      { type: 'brace', | 
						|
 * //        nodes: | 
						|
 * //         [ { type: 'brace.open', val: '{' }, | 
						|
 * //           { type: 'text', val: 'b,c' }, | 
						|
 * //           { type: 'brace.close', val: '}' } ] }, | 
						|
 * //      { type: 'text', val: '/d' }, | 
						|
 * //      { type: 'eos', val: '' } ] } | 
						|
 * ``` | 
						|
 * @param {String} `str` | 
						|
 * @param {Object} `options` | 
						|
 * @return {Object} Returns an AST | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.parse = function (pattern, options) { | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected a string'); | 
						|
  } | 
						|
 | 
						|
  function parse() { | 
						|
    var snapdragon = utils.instantiate(null, options); | 
						|
    parsers(snapdragon, options); | 
						|
    var ast = snapdragon.parse(pattern, options); | 
						|
    utils.define(ast, 'snapdragon', snapdragon); | 
						|
    ast.input = pattern; | 
						|
    return ast; | 
						|
  } | 
						|
 | 
						|
  return memoize('parse', pattern, options, parse); | 
						|
}; | 
						|
/** | 
						|
 * Compile the given `ast` or string with the given `options`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var mm = require('micromatch'); | 
						|
 * mm.compile(ast[, options]); | 
						|
 * | 
						|
 * var ast = mm.parse('a/{b,c}/d'); | 
						|
 * console.log(mm.compile(ast)); | 
						|
 * // { options: { source: 'string' }, | 
						|
 * //   state: {}, | 
						|
 * //   compilers: | 
						|
 * //    { eos: [Function], | 
						|
 * //      noop: [Function], | 
						|
 * //      bos: [Function], | 
						|
 * //      brace: [Function], | 
						|
 * //      'brace.open': [Function], | 
						|
 * //      text: [Function], | 
						|
 * //      'brace.close': [Function] }, | 
						|
 * //   output: [ 'a/(b|c)/d' ], | 
						|
 * //   ast: | 
						|
 * //    { ... }, | 
						|
 * //   parsingErrors: [] } | 
						|
 * ``` | 
						|
 * @param {Object|String} `ast` | 
						|
 * @param {Object} `options` | 
						|
 * @return {Object} Returns an object that has an `output` property with the compiled string. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.compile = function (ast, options) { | 
						|
  if (typeof ast === 'string') { | 
						|
    ast = micromatch.parse(ast, options); | 
						|
  } | 
						|
 | 
						|
  return memoize('compile', ast.input, options, function () { | 
						|
    var snapdragon = utils.instantiate(ast, options); | 
						|
    compilers(snapdragon, options); | 
						|
    return snapdragon.compile(ast, options); | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Clear the regex cache. | 
						|
 * | 
						|
 * ```js | 
						|
 * mm.clearCache(); | 
						|
 * ``` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.clearCache = function () { | 
						|
  micromatch.cache.caches = {}; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given value is effectively an empty string | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isEmptyString(val) { | 
						|
  return String(val) === '' || String(val) === './'; | 
						|
} | 
						|
/** | 
						|
 * Compose a matcher function with the given patterns. | 
						|
 * This allows matcher functions to be compiled once and | 
						|
 * called multiple times. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function compose(patterns, options, matcher) { | 
						|
  var matchers; | 
						|
  return memoize('compose', String(patterns), options, function () { | 
						|
    return function (file) { | 
						|
      // delay composition until it's invoked the first time, | 
						|
      // after that it won't be called again | 
						|
      if (!matchers) { | 
						|
        matchers = []; | 
						|
 | 
						|
        for (var i = 0; i < patterns.length; i++) { | 
						|
          matchers.push(matcher(patterns[i], options)); | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      var len = matchers.length; | 
						|
 | 
						|
      while (len--) { | 
						|
        if (matchers[len](file) === true) { | 
						|
          return true; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      return false; | 
						|
    }; | 
						|
  }); | 
						|
} | 
						|
/** | 
						|
 * Memoize a generated regex or function. A unique key is generated | 
						|
 * from the `type` (usually method name), the `pattern`, and | 
						|
 * user-defined options. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function memoize(type, pattern, options, fn) { | 
						|
  var key = utils.createKey(type + '=' + pattern, options); | 
						|
 | 
						|
  if (options && options.cache === false) { | 
						|
    return fn(pattern, options); | 
						|
  } | 
						|
 | 
						|
  if (cache.has(type, key)) { | 
						|
    return cache.get(type, key); | 
						|
  } | 
						|
 | 
						|
  var val = fn(pattern, options); | 
						|
  cache.set(type, key, val); | 
						|
  return val; | 
						|
} | 
						|
/** | 
						|
 * Expose compiler, parser and cache on `micromatch` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
micromatch.compilers = compilers; | 
						|
micromatch.parsers = parsers; | 
						|
micromatch.caches = cache.caches; | 
						|
/** | 
						|
 * Expose `micromatch` | 
						|
 * @type {Function} | 
						|
 */ | 
						|
 | 
						|
module.exports = micromatch; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/micromatch/lib/cache.js": | 
						|
/*!**********************************************!*\ | 
						|
  !*** ./node_modules/micromatch/lib/cache.js ***! | 
						|
  \**********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
module.exports = new (__webpack_require__(/*! fragment-cache */ "./node_modules/fragment-cache/index.js"))(); | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/micromatch/lib/compilers.js": | 
						|
/*!**************************************************!*\ | 
						|
  !*** ./node_modules/micromatch/lib/compilers.js ***! | 
						|
  \**************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var nanomatch = __webpack_require__(/*! nanomatch */ "./node_modules/nanomatch/index.js"); | 
						|
 | 
						|
var extglob = __webpack_require__(/*! extglob */ "./node_modules/extglob/index.js"); | 
						|
 | 
						|
module.exports = function (snapdragon) { | 
						|
  var compilers = snapdragon.compiler.compilers; | 
						|
  var opts = snapdragon.options; // register nanomatch compilers | 
						|
 | 
						|
  snapdragon.use(nanomatch.compilers); // get references to some specific nanomatch compilers before they | 
						|
  // are overridden by the extglob and/or custom compilers | 
						|
 | 
						|
  var escape = compilers.escape; | 
						|
  var qmark = compilers.qmark; | 
						|
  var slash = compilers.slash; | 
						|
  var star = compilers.star; | 
						|
  var text = compilers.text; | 
						|
  var plus = compilers.plus; | 
						|
  var dot = compilers.dot; // register extglob compilers or escape exglobs if disabled | 
						|
 | 
						|
  if (opts.extglob === false || opts.noext === true) { | 
						|
    snapdragon.compiler.use(escapeExtglobs); | 
						|
  } else { | 
						|
    snapdragon.use(extglob.compilers); | 
						|
  } | 
						|
 | 
						|
  snapdragon.use(function () { | 
						|
    this.options.star = this.options.star || function () | 
						|
    /*node*/ | 
						|
    { | 
						|
      return '[^\\\\/]*?'; | 
						|
    }; | 
						|
  }); // custom micromatch compilers | 
						|
 | 
						|
  snapdragon.compiler // reset referenced compiler | 
						|
  .set('dot', dot).set('escape', escape).set('plus', plus).set('slash', slash).set('qmark', qmark).set('star', star).set('text', text); | 
						|
}; | 
						|
 | 
						|
function escapeExtglobs(compiler) { | 
						|
  compiler.set('paren', function (node) { | 
						|
    var val = ''; | 
						|
    visit(node, function (tok) { | 
						|
      if (tok.val) val += (/^\W/.test(tok.val) ? '\\' : '') + tok.val; | 
						|
    }); | 
						|
    return this.emit(val, node); | 
						|
  }); | 
						|
  /** | 
						|
   * Visit `node` with the given `fn` | 
						|
   */ | 
						|
 | 
						|
  function visit(node, fn) { | 
						|
    return node.nodes ? mapVisit(node.nodes, fn) : fn(node); | 
						|
  } | 
						|
  /** | 
						|
   * Map visit over array of `nodes`. | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  function mapVisit(nodes, fn) { | 
						|
    var len = nodes.length; | 
						|
    var idx = -1; | 
						|
 | 
						|
    while (++idx < len) { | 
						|
      visit(nodes[idx], fn); | 
						|
    } | 
						|
  } | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/micromatch/lib/parsers.js": | 
						|
/*!************************************************!*\ | 
						|
  !*** ./node_modules/micromatch/lib/parsers.js ***! | 
						|
  \************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var extglob = __webpack_require__(/*! extglob */ "./node_modules/extglob/index.js"); | 
						|
 | 
						|
var nanomatch = __webpack_require__(/*! nanomatch */ "./node_modules/nanomatch/index.js"); | 
						|
 | 
						|
var regexNot = __webpack_require__(/*! regex-not */ "./node_modules/regex-not/index.js"); | 
						|
 | 
						|
var toRegex = __webpack_require__(/*! to-regex */ "./node_modules/to-regex/index.js"); | 
						|
 | 
						|
var not; | 
						|
/** | 
						|
 * Characters to use in negation regex (we want to "not" match | 
						|
 * characters that are matched by other parsers) | 
						|
 */ | 
						|
 | 
						|
var TEXT = '([!@*?+]?\\(|\\)|\\[:?(?=.*?:?\\])|:?\\]|[*+?!^$.\\\\/])+'; | 
						|
 | 
						|
var createNotRegex = function createNotRegex(opts) { | 
						|
  return not || (not = textRegex(TEXT)); | 
						|
}; | 
						|
/** | 
						|
 * Parsers | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function (snapdragon) { | 
						|
  var parsers = snapdragon.parser.parsers; // register nanomatch parsers | 
						|
 | 
						|
  snapdragon.use(nanomatch.parsers); // get references to some specific nanomatch parsers before they | 
						|
  // are overridden by the extglob and/or parsers | 
						|
 | 
						|
  var escape = parsers.escape; | 
						|
  var slash = parsers.slash; | 
						|
  var qmark = parsers.qmark; | 
						|
  var plus = parsers.plus; | 
						|
  var star = parsers.star; | 
						|
  var dot = parsers.dot; // register extglob parsers | 
						|
 | 
						|
  snapdragon.use(extglob.parsers); // custom micromatch parsers | 
						|
 | 
						|
  snapdragon.parser.use(function () { | 
						|
    // override "notRegex" created in nanomatch parser | 
						|
    this.notRegex = /^\!+(?!\()/; | 
						|
  }) // reset the referenced parsers | 
						|
  .capture('escape', escape).capture('slash', slash).capture('qmark', qmark).capture('star', star).capture('plus', plus).capture('dot', dot) | 
						|
  /** | 
						|
   * Override `text` parser | 
						|
   */ | 
						|
  .capture('text', function () { | 
						|
    if (this.isInside('bracket')) return; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(createNotRegex(this.options)); | 
						|
    if (!m || !m[0]) return; // escape regex boundary characters and simple brackets | 
						|
 | 
						|
    var val = m[0].replace(/([[\]^$])/g, '\\$1'); | 
						|
    return pos({ | 
						|
      type: 'text', | 
						|
      val: val | 
						|
    }); | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Create text regex | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function textRegex(pattern) { | 
						|
  var notStr = regexNot.create(pattern, { | 
						|
    contains: true, | 
						|
    strictClose: false | 
						|
  }); | 
						|
  var prefix = '(?:[\\^]|\\\\|'; | 
						|
  return toRegex(prefix + notStr + ')', { | 
						|
    strictClose: false | 
						|
  }); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/micromatch/lib/utils.js": | 
						|
/*!**********************************************!*\ | 
						|
  !*** ./node_modules/micromatch/lib/utils.js ***! | 
						|
  \**********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(process) { | 
						|
 | 
						|
var utils = module.exports; | 
						|
 | 
						|
var path = __webpack_require__(/*! path */ "./node_modules/path-browserify/index.js"); | 
						|
/** | 
						|
 * Module dependencies | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var Snapdragon = __webpack_require__(/*! snapdragon */ "./node_modules/snapdragon/index.js"); | 
						|
 | 
						|
utils.define = __webpack_require__(/*! define-property */ "./node_modules/micromatch/node_modules/define-property/index.js"); | 
						|
utils.diff = __webpack_require__(/*! arr-diff */ "./node_modules/arr-diff/index.js"); | 
						|
utils.extend = __webpack_require__(/*! extend-shallow */ "./node_modules/micromatch/node_modules/extend-shallow/index.js"); | 
						|
utils.pick = __webpack_require__(/*! object.pick */ "./node_modules/object.pick/index.js"); | 
						|
utils.typeOf = __webpack_require__(/*! kind-of */ "./node_modules/micromatch/node_modules/kind-of/index.js"); | 
						|
utils.unique = __webpack_require__(/*! array-unique */ "./node_modules/array-unique/index.js"); | 
						|
/** | 
						|
 * Returns true if the platform is windows, or `path.sep` is `\\`. | 
						|
 * This is defined as a function to allow `path.sep` to be set in unit tests, | 
						|
 * or by the user, if there is a reason to do so. | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
utils.isWindows = function () { | 
						|
  return path.sep === '\\' || process.platform === 'win32'; | 
						|
}; | 
						|
/** | 
						|
 * Get the `Snapdragon` instance to use | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.instantiate = function (ast, options) { | 
						|
  var snapdragon; // if an instance was created by `.parse`, use that instance | 
						|
 | 
						|
  if (utils.typeOf(ast) === 'object' && ast.snapdragon) { | 
						|
    snapdragon = ast.snapdragon; // if the user supplies an instance on options, use that instance | 
						|
  } else if (utils.typeOf(options) === 'object' && options.snapdragon) { | 
						|
    snapdragon = options.snapdragon; // create a new instance | 
						|
  } else { | 
						|
    snapdragon = new Snapdragon(options); | 
						|
  } | 
						|
 | 
						|
  utils.define(snapdragon, 'parse', function (str, options) { | 
						|
    var parsed = Snapdragon.prototype.parse.apply(this, arguments); | 
						|
    parsed.input = str; // escape unmatched brace/bracket/parens | 
						|
 | 
						|
    var last = this.parser.stack.pop(); | 
						|
 | 
						|
    if (last && this.options.strictErrors !== true) { | 
						|
      var open = last.nodes[0]; | 
						|
      var inner = last.nodes[1]; | 
						|
 | 
						|
      if (last.type === 'bracket') { | 
						|
        if (inner.val.charAt(0) === '[') { | 
						|
          inner.val = '\\' + inner.val; | 
						|
        } | 
						|
      } else { | 
						|
        open.val = '\\' + open.val; | 
						|
        var sibling = open.parent.nodes[1]; | 
						|
 | 
						|
        if (sibling.type === 'star') { | 
						|
          sibling.loose = true; | 
						|
        } | 
						|
      } | 
						|
    } // add non-enumerable parser reference | 
						|
 | 
						|
 | 
						|
    utils.define(parsed, 'parser', this.parser); | 
						|
    return parsed; | 
						|
  }); | 
						|
  return snapdragon; | 
						|
}; | 
						|
/** | 
						|
 * Create the key to use for memoization. The key is generated | 
						|
 * by iterating over the options and concatenating key-value pairs | 
						|
 * to the pattern string. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.createKey = function (pattern, options) { | 
						|
  if (utils.typeOf(options) !== 'object') { | 
						|
    return pattern; | 
						|
  } | 
						|
 | 
						|
  var val = pattern; | 
						|
  var keys = Object.keys(options); | 
						|
 | 
						|
  for (var i = 0; i < keys.length; i++) { | 
						|
    var key = keys[i]; | 
						|
    val += ';' + key + '=' + String(options[key]); | 
						|
  } | 
						|
 | 
						|
  return val; | 
						|
}; | 
						|
/** | 
						|
 * Cast `val` to an array | 
						|
 * @return {Array} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.arrayify = function (val) { | 
						|
  if (typeof val === 'string') return [val]; | 
						|
  return val ? Array.isArray(val) ? val : [val] : []; | 
						|
}; | 
						|
/** | 
						|
 * Return true if `val` is a non-empty string | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isString = function (val) { | 
						|
  return typeof val === 'string'; | 
						|
}; | 
						|
/** | 
						|
 * Return true if `val` is a non-empty string | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isObject = function (val) { | 
						|
  return utils.typeOf(val) === 'object'; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given `str` has special characters | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.hasSpecialChars = function (str) { | 
						|
  return /(?:(?:(^|\/)[!.])|[*?+()|\[\]{}]|[+@]\()/.test(str); | 
						|
}; | 
						|
/** | 
						|
 * Escape regex characters in the given string | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.escapeRegex = function (str) { | 
						|
  return str.replace(/[-[\]{}()^$|*+?.\\\/\s]/g, '\\$&'); | 
						|
}; | 
						|
/** | 
						|
 * Normalize slashes in the given filepath. | 
						|
 * | 
						|
 * @param {String} `filepath` | 
						|
 * @return {String} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.toPosixPath = function (str) { | 
						|
  return str.replace(/\\+/g, '/'); | 
						|
}; | 
						|
/** | 
						|
 * Strip backslashes before special characters in a string. | 
						|
 * | 
						|
 * @param {String} `str` | 
						|
 * @return {String} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.unescape = function (str) { | 
						|
  return utils.toPosixPath(str.replace(/\\(?=[*+?!.])/g, '')); | 
						|
}; | 
						|
/** | 
						|
 * Strip the prefix from a filepath | 
						|
 * @param {String} `fp` | 
						|
 * @return {String} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.stripPrefix = function (str) { | 
						|
  if (str.charAt(0) !== '.') { | 
						|
    return str; | 
						|
  } | 
						|
 | 
						|
  var ch = str.charAt(1); | 
						|
 | 
						|
  if (utils.isSlash(ch)) { | 
						|
    return str.slice(2); | 
						|
  } | 
						|
 | 
						|
  return str; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given str is an escaped or | 
						|
 * unescaped path character | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isSlash = function (str) { | 
						|
  return str === '/' || str === '\\/' || str === '\\' || str === '\\\\'; | 
						|
}; | 
						|
/** | 
						|
 * Returns a function that returns true if the given | 
						|
 * pattern matches or contains a `filepath` | 
						|
 * | 
						|
 * @param {String} `pattern` | 
						|
 * @return {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.matchPath = function (pattern, options) { | 
						|
  return options && options.contains ? utils.containsPattern(pattern, options) : utils.equalsPattern(pattern, options); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given (original) filepath or unixified path are equal | 
						|
 * to the given pattern. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils._equals = function (filepath, unixPath, pattern) { | 
						|
  return pattern === filepath || pattern === unixPath; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given (original) filepath or unixified path contain | 
						|
 * the given pattern. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils._contains = function (filepath, unixPath, pattern) { | 
						|
  return filepath.indexOf(pattern) !== -1 || unixPath.indexOf(pattern) !== -1; | 
						|
}; | 
						|
/** | 
						|
 * Returns a function that returns true if the given | 
						|
 * pattern is the same as a given `filepath` | 
						|
 * | 
						|
 * @param {String} `pattern` | 
						|
 * @return {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.equalsPattern = function (pattern, options) { | 
						|
  var unixify = utils.unixify(options); | 
						|
  options = options || {}; | 
						|
  return function fn(filepath) { | 
						|
    var equal = utils._equals(filepath, unixify(filepath), pattern); | 
						|
 | 
						|
    if (equal === true || options.nocase !== true) { | 
						|
      return equal; | 
						|
    } | 
						|
 | 
						|
    var lower = filepath.toLowerCase(); | 
						|
    return utils._equals(lower, unixify(lower), pattern); | 
						|
  }; | 
						|
}; | 
						|
/** | 
						|
 * Returns a function that returns true if the given | 
						|
 * pattern contains a `filepath` | 
						|
 * | 
						|
 * @param {String} `pattern` | 
						|
 * @return {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.containsPattern = function (pattern, options) { | 
						|
  var unixify = utils.unixify(options); | 
						|
  options = options || {}; | 
						|
  return function (filepath) { | 
						|
    var contains = utils._contains(filepath, unixify(filepath), pattern); | 
						|
 | 
						|
    if (contains === true || options.nocase !== true) { | 
						|
      return contains; | 
						|
    } | 
						|
 | 
						|
    var lower = filepath.toLowerCase(); | 
						|
    return utils._contains(lower, unixify(lower), pattern); | 
						|
  }; | 
						|
}; | 
						|
/** | 
						|
 * Returns a function that returns true if the given | 
						|
 * regex matches the `filename` of a file path. | 
						|
 * | 
						|
 * @param {RegExp} `re` Matching regex | 
						|
 * @return {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.matchBasename = function (re) { | 
						|
  return function (filepath) { | 
						|
    return re.test(path.basename(filepath)); | 
						|
  }; | 
						|
}; | 
						|
/** | 
						|
 * Determines the filepath to return based on the provided options. | 
						|
 * @return {any} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.value = function (str, unixify, options) { | 
						|
  if (options && options.unixify === false) { | 
						|
    return str; | 
						|
  } | 
						|
 | 
						|
  return unixify(str); | 
						|
}; | 
						|
/** | 
						|
 * Returns a function that normalizes slashes in a string to forward | 
						|
 * slashes, strips `./` from beginning of paths, and optionally unescapes | 
						|
 * special characters. | 
						|
 * @return {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.unixify = function (options) { | 
						|
  options = options || {}; | 
						|
  return function (filepath) { | 
						|
    if (utils.isWindows() || options.unixify === true) { | 
						|
      filepath = utils.toPosixPath(filepath); | 
						|
    } | 
						|
 | 
						|
    if (options.stripPrefix !== false) { | 
						|
      filepath = utils.stripPrefix(filepath); | 
						|
    } | 
						|
 | 
						|
    if (options.unescape === true) { | 
						|
      filepath = utils.unescape(filepath); | 
						|
    } | 
						|
 | 
						|
    return filepath; | 
						|
  }; | 
						|
}; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ "./node_modules/process/browser.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/micromatch/node_modules/define-property/index.js": | 
						|
/*!***********************************************************************!*\ | 
						|
  !*** ./node_modules/micromatch/node_modules/define-property/index.js ***! | 
						|
  \***********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * define-property <https://github.com/jonschlinkert/define-property> | 
						|
 * | 
						|
 * Copyright (c) 2015-2018, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isobject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
 | 
						|
var isDescriptor = __webpack_require__(/*! is-descriptor */ "./node_modules/is-descriptor/index.js"); | 
						|
 | 
						|
var define = typeof Reflect !== 'undefined' && Reflect.defineProperty ? Reflect.defineProperty : Object.defineProperty; | 
						|
 | 
						|
module.exports = function defineProperty(obj, key, val) { | 
						|
  if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) { | 
						|
    throw new TypeError('expected an object, function, or array'); | 
						|
  } | 
						|
 | 
						|
  if (typeof key !== 'string') { | 
						|
    throw new TypeError('expected "key" to be a string'); | 
						|
  } | 
						|
 | 
						|
  if (isDescriptor(val)) { | 
						|
    define(obj, key, val); | 
						|
    return obj; | 
						|
  } | 
						|
 | 
						|
  define(obj, key, { | 
						|
    configurable: true, | 
						|
    enumerable: false, | 
						|
    writable: true, | 
						|
    value: val | 
						|
  }); | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/micromatch/node_modules/extend-shallow/index.js": | 
						|
/*!**********************************************************************!*\ | 
						|
  !*** ./node_modules/micromatch/node_modules/extend-shallow/index.js ***! | 
						|
  \**********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var isExtendable = __webpack_require__(/*! is-extendable */ "./node_modules/micromatch/node_modules/is-extendable/index.js"); | 
						|
 | 
						|
var assignSymbols = __webpack_require__(/*! assign-symbols */ "./node_modules/assign-symbols/index.js"); | 
						|
 | 
						|
module.exports = Object.assign || function (obj | 
						|
/*, objects*/ | 
						|
) { | 
						|
  if (obj === null || typeof obj === 'undefined') { | 
						|
    throw new TypeError('Cannot convert undefined or null to object'); | 
						|
  } | 
						|
 | 
						|
  if (!isObject(obj)) { | 
						|
    obj = {}; | 
						|
  } | 
						|
 | 
						|
  for (var i = 1; i < arguments.length; i++) { | 
						|
    var val = arguments[i]; | 
						|
 | 
						|
    if (isString(val)) { | 
						|
      val = toObject(val); | 
						|
    } | 
						|
 | 
						|
    if (isObject(val)) { | 
						|
      assign(obj, val); | 
						|
      assignSymbols(obj, val); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
function assign(a, b) { | 
						|
  for (var key in b) { | 
						|
    if (hasOwn(b, key)) { | 
						|
      a[key] = b[key]; | 
						|
    } | 
						|
  } | 
						|
} | 
						|
 | 
						|
function isString(val) { | 
						|
  return val && typeof val === 'string'; | 
						|
} | 
						|
 | 
						|
function toObject(str) { | 
						|
  var obj = {}; | 
						|
 | 
						|
  for (var i in str) { | 
						|
    obj[i] = str[i]; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
} | 
						|
 | 
						|
function isObject(val) { | 
						|
  return val && _typeof(val) === 'object' || isExtendable(val); | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given `key` is an own property of `obj`. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function hasOwn(obj, key) { | 
						|
  return Object.prototype.hasOwnProperty.call(obj, key); | 
						|
} | 
						|
 | 
						|
function isEnum(obj, key) { | 
						|
  return Object.prototype.propertyIsEnumerable.call(obj, key); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/micromatch/node_modules/is-extendable/index.js": | 
						|
/*!*********************************************************************!*\ | 
						|
  !*** ./node_modules/micromatch/node_modules/is-extendable/index.js ***! | 
						|
  \*********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-extendable <https://github.com/jonschlinkert/is-extendable> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isPlainObject = __webpack_require__(/*! is-plain-object */ "./node_modules/is-plain-object/index.js"); | 
						|
 | 
						|
module.exports = function isExtendable(val) { | 
						|
  return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/micromatch/node_modules/kind-of/index.js": | 
						|
/*!***************************************************************!*\ | 
						|
  !*** ./node_modules/micromatch/node_modules/kind-of/index.js ***! | 
						|
  \***************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var toString = Object.prototype.toString; | 
						|
 | 
						|
module.exports = function kindOf(val) { | 
						|
  if (val === void 0) return 'undefined'; | 
						|
  if (val === null) return 'null'; | 
						|
 | 
						|
  var type = _typeof(val); | 
						|
 | 
						|
  if (type === 'boolean') return 'boolean'; | 
						|
  if (type === 'string') return 'string'; | 
						|
  if (type === 'number') return 'number'; | 
						|
  if (type === 'symbol') return 'symbol'; | 
						|
 | 
						|
  if (type === 'function') { | 
						|
    return isGeneratorFn(val) ? 'generatorfunction' : 'function'; | 
						|
  } | 
						|
 | 
						|
  if (isArray(val)) return 'array'; | 
						|
  if (isBuffer(val)) return 'buffer'; | 
						|
  if (isArguments(val)) return 'arguments'; | 
						|
  if (isDate(val)) return 'date'; | 
						|
  if (isError(val)) return 'error'; | 
						|
  if (isRegexp(val)) return 'regexp'; | 
						|
 | 
						|
  switch (ctorName(val)) { | 
						|
    case 'Symbol': | 
						|
      return 'symbol'; | 
						|
 | 
						|
    case 'Promise': | 
						|
      return 'promise'; | 
						|
    // Set, Map, WeakSet, WeakMap | 
						|
 | 
						|
    case 'WeakMap': | 
						|
      return 'weakmap'; | 
						|
 | 
						|
    case 'WeakSet': | 
						|
      return 'weakset'; | 
						|
 | 
						|
    case 'Map': | 
						|
      return 'map'; | 
						|
 | 
						|
    case 'Set': | 
						|
      return 'set'; | 
						|
    // 8-bit typed arrays | 
						|
 | 
						|
    case 'Int8Array': | 
						|
      return 'int8array'; | 
						|
 | 
						|
    case 'Uint8Array': | 
						|
      return 'uint8array'; | 
						|
 | 
						|
    case 'Uint8ClampedArray': | 
						|
      return 'uint8clampedarray'; | 
						|
    // 16-bit typed arrays | 
						|
 | 
						|
    case 'Int16Array': | 
						|
      return 'int16array'; | 
						|
 | 
						|
    case 'Uint16Array': | 
						|
      return 'uint16array'; | 
						|
    // 32-bit typed arrays | 
						|
 | 
						|
    case 'Int32Array': | 
						|
      return 'int32array'; | 
						|
 | 
						|
    case 'Uint32Array': | 
						|
      return 'uint32array'; | 
						|
 | 
						|
    case 'Float32Array': | 
						|
      return 'float32array'; | 
						|
 | 
						|
    case 'Float64Array': | 
						|
      return 'float64array'; | 
						|
  } | 
						|
 | 
						|
  if (isGeneratorObj(val)) { | 
						|
    return 'generator'; | 
						|
  } // Non-plain objects | 
						|
 | 
						|
 | 
						|
  type = toString.call(val); | 
						|
 | 
						|
  switch (type) { | 
						|
    case '[object Object]': | 
						|
      return 'object'; | 
						|
    // iterators | 
						|
 | 
						|
    case '[object Map Iterator]': | 
						|
      return 'mapiterator'; | 
						|
 | 
						|
    case '[object Set Iterator]': | 
						|
      return 'setiterator'; | 
						|
 | 
						|
    case '[object String Iterator]': | 
						|
      return 'stringiterator'; | 
						|
 | 
						|
    case '[object Array Iterator]': | 
						|
      return 'arrayiterator'; | 
						|
  } // other | 
						|
 | 
						|
 | 
						|
  return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); | 
						|
}; | 
						|
 | 
						|
function ctorName(val) { | 
						|
  return val.constructor ? val.constructor.name : null; | 
						|
} | 
						|
 | 
						|
function isArray(val) { | 
						|
  if (Array.isArray) return Array.isArray(val); | 
						|
  return val instanceof Array; | 
						|
} | 
						|
 | 
						|
function isError(val) { | 
						|
  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'; | 
						|
} | 
						|
 | 
						|
function isDate(val) { | 
						|
  if (val instanceof Date) return true; | 
						|
  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function'; | 
						|
} | 
						|
 | 
						|
function isRegexp(val) { | 
						|
  if (val instanceof RegExp) return true; | 
						|
  return typeof val.flags === 'string' && typeof val.ignoreCase === 'boolean' && typeof val.multiline === 'boolean' && typeof val.global === 'boolean'; | 
						|
} | 
						|
 | 
						|
function isGeneratorFn(name, val) { | 
						|
  return ctorName(name) === 'GeneratorFunction'; | 
						|
} | 
						|
 | 
						|
function isGeneratorObj(val) { | 
						|
  return typeof val.throw === 'function' && typeof val.return === 'function' && typeof val.next === 'function'; | 
						|
} | 
						|
 | 
						|
function isArguments(val) { | 
						|
  try { | 
						|
    if (typeof val.length === 'number' && typeof val.callee === 'function') { | 
						|
      return true; | 
						|
    } | 
						|
  } catch (err) { | 
						|
    if (err.message.indexOf('callee') !== -1) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
/** | 
						|
 * If you need to support Safari 5-7 (8-10 yr-old browser), | 
						|
 * take a look at https://github.com/feross/is-buffer | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isBuffer(val) { | 
						|
  if (val.constructor && typeof val.constructor.isBuffer === 'function') { | 
						|
    return val.constructor.isBuffer(val); | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/mixin-deep/index.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/mixin-deep/index.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var isExtendable = __webpack_require__(/*! is-extendable */ "./node_modules/mixin-deep/node_modules/is-extendable/index.js"); | 
						|
 | 
						|
var forIn = __webpack_require__(/*! for-in */ "./node_modules/for-in/index.js"); | 
						|
 | 
						|
function mixinDeep(target, objects) { | 
						|
  var len = arguments.length, | 
						|
      i = 0; | 
						|
 | 
						|
  while (++i < len) { | 
						|
    var obj = arguments[i]; | 
						|
 | 
						|
    if (isObject(obj)) { | 
						|
      forIn(obj, copy, target); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return target; | 
						|
} | 
						|
/** | 
						|
 * Copy properties from the source object to the | 
						|
 * target object. | 
						|
 * | 
						|
 * @param  {*} `val` | 
						|
 * @param  {String} `key` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function copy(val, key) { | 
						|
  if (!isValidKey(key)) { | 
						|
    return; | 
						|
  } | 
						|
 | 
						|
  var obj = this[key]; | 
						|
 | 
						|
  if (isObject(val) && isObject(obj)) { | 
						|
    mixinDeep(obj, val); | 
						|
  } else { | 
						|
    this[key] = val; | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * Returns true if `val` is an object or function. | 
						|
 * | 
						|
 * @param  {any} val | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isObject(val) { | 
						|
  return isExtendable(val) && !Array.isArray(val); | 
						|
} | 
						|
/** | 
						|
 * Returns true if `key` is a valid key to use when extending objects. | 
						|
 * | 
						|
 * @param  {String} `key` | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isValidKey(key) { | 
						|
  return key !== '__proto__' && key !== 'constructor' && key !== 'prototype'; | 
						|
} | 
						|
 | 
						|
; | 
						|
/** | 
						|
 * Expose `mixinDeep` | 
						|
 */ | 
						|
 | 
						|
module.exports = mixinDeep; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/mixin-deep/node_modules/is-extendable/index.js": | 
						|
/*!*********************************************************************!*\ | 
						|
  !*** ./node_modules/mixin-deep/node_modules/is-extendable/index.js ***! | 
						|
  \*********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-extendable <https://github.com/jonschlinkert/is-extendable> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isPlainObject = __webpack_require__(/*! is-plain-object */ "./node_modules/is-plain-object/index.js"); | 
						|
 | 
						|
module.exports = function isExtendable(val) { | 
						|
  return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/nanomatch/index.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/nanomatch/index.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
/** | 
						|
 * Module dependencies | 
						|
 */ | 
						|
 | 
						|
var util = __webpack_require__(/*! util */ "./node_modules/util/util.js"); | 
						|
 | 
						|
var toRegex = __webpack_require__(/*! to-regex */ "./node_modules/to-regex/index.js"); | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/nanomatch/node_modules/extend-shallow/index.js"); | 
						|
/** | 
						|
 * Local dependencies | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var compilers = __webpack_require__(/*! ./lib/compilers */ "./node_modules/nanomatch/lib/compilers.js"); | 
						|
 | 
						|
var parsers = __webpack_require__(/*! ./lib/parsers */ "./node_modules/nanomatch/lib/parsers.js"); | 
						|
 | 
						|
var cache = __webpack_require__(/*! ./lib/cache */ "./node_modules/nanomatch/lib/cache.js"); | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./lib/utils */ "./node_modules/nanomatch/lib/utils.js"); | 
						|
 | 
						|
var MAX_LENGTH = 1024 * 64; | 
						|
/** | 
						|
 * The main function takes a list of strings and one or more | 
						|
 * glob patterns to use for matching. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm(list, patterns[, options]); | 
						|
 * | 
						|
 * console.log(nm(['a.js', 'a.txt'], ['*.js'])); | 
						|
 * //=> [ 'a.js' ] | 
						|
 * ``` | 
						|
 * @param {Array} `list` A list of strings to match | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Array} Returns an array of matches | 
						|
 * @summary false | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
function nanomatch(list, patterns, options) { | 
						|
  patterns = utils.arrayify(patterns); | 
						|
  list = utils.arrayify(list); | 
						|
  var len = patterns.length; | 
						|
 | 
						|
  if (list.length === 0 || len === 0) { | 
						|
    return []; | 
						|
  } | 
						|
 | 
						|
  if (len === 1) { | 
						|
    return nanomatch.match(list, patterns[0], options); | 
						|
  } | 
						|
 | 
						|
  var negated = false; | 
						|
  var omit = []; | 
						|
  var keep = []; | 
						|
  var idx = -1; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var pattern = patterns[idx]; | 
						|
 | 
						|
    if (typeof pattern === 'string' && pattern.charCodeAt(0) === 33 | 
						|
    /* ! */ | 
						|
    ) { | 
						|
        omit.push.apply(omit, nanomatch.match(list, pattern.slice(1), options)); | 
						|
        negated = true; | 
						|
      } else { | 
						|
      keep.push.apply(keep, nanomatch.match(list, pattern, options)); | 
						|
    } | 
						|
  } // minimatch.match parity | 
						|
 | 
						|
 | 
						|
  if (negated && keep.length === 0) { | 
						|
    if (options && options.unixify === false) { | 
						|
      keep = list.slice(); | 
						|
    } else { | 
						|
      var unixify = utils.unixify(options); | 
						|
 | 
						|
      for (var i = 0; i < list.length; i++) { | 
						|
        keep.push(unixify(list[i])); | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var matches = utils.diff(keep, omit); | 
						|
 | 
						|
  if (!options || options.nodupes !== false) { | 
						|
    return utils.unique(matches); | 
						|
  } | 
						|
 | 
						|
  return matches; | 
						|
} | 
						|
/** | 
						|
 * Similar to the main function, but `pattern` must be a string. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.match(list, pattern[, options]); | 
						|
 * | 
						|
 * console.log(nm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a')); | 
						|
 * //=> ['a.a', 'a.aa'] | 
						|
 * ``` | 
						|
 * @param {Array} `list` Array of strings to match | 
						|
 * @param {String} `pattern` Glob pattern to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Array} Returns an array of matches | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.match = function (list, pattern, options) { | 
						|
  if (Array.isArray(pattern)) { | 
						|
    throw new TypeError('expected pattern to be a string'); | 
						|
  } | 
						|
 | 
						|
  var unixify = utils.unixify(options); | 
						|
  var isMatch = memoize('match', pattern, options, nanomatch.matcher); | 
						|
  var matches = []; | 
						|
  list = utils.arrayify(list); | 
						|
  var len = list.length; | 
						|
  var idx = -1; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var ele = list[idx]; | 
						|
 | 
						|
    if (ele === pattern || isMatch(ele)) { | 
						|
      matches.push(utils.value(ele, unixify, options)); | 
						|
    } | 
						|
  } // if no options were passed, uniquify results and return | 
						|
 | 
						|
 | 
						|
  if (typeof options === 'undefined') { | 
						|
    return utils.unique(matches); | 
						|
  } | 
						|
 | 
						|
  if (matches.length === 0) { | 
						|
    if (options.failglob === true) { | 
						|
      throw new Error('no matches found for "' + pattern + '"'); | 
						|
    } | 
						|
 | 
						|
    if (options.nonull === true || options.nullglob === true) { | 
						|
      return [options.unescape ? utils.unescape(pattern) : pattern]; | 
						|
    } | 
						|
  } // if `opts.ignore` was defined, diff ignored list | 
						|
 | 
						|
 | 
						|
  if (options.ignore) { | 
						|
    matches = nanomatch.not(matches, options.ignore, options); | 
						|
  } | 
						|
 | 
						|
  return options.nodupes !== false ? utils.unique(matches) : matches; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the specified `string` matches the given glob `pattern`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.isMatch(string, pattern[, options]); | 
						|
 * | 
						|
 * console.log(nm.isMatch('a.a', '*.a')); | 
						|
 * //=> true | 
						|
 * console.log(nm.isMatch('a.b', '*.a')); | 
						|
 * //=> false | 
						|
 * ``` | 
						|
 * @param {String} `string` String to match | 
						|
 * @param {String} `pattern` Glob pattern to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if the string matches the glob pattern. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.isMatch = function (str, pattern, options) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string: "' + util.inspect(str) + '"'); | 
						|
  } | 
						|
 | 
						|
  if (utils.isEmptyString(str) || utils.isEmptyString(pattern)) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  var equals = utils.equalsPattern(options); | 
						|
 | 
						|
  if (equals(str)) { | 
						|
    return true; | 
						|
  } | 
						|
 | 
						|
  var isMatch = memoize('isMatch', pattern, options, nanomatch.matcher); | 
						|
  return isMatch(str); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if some of the elements in the given `list` match any of the | 
						|
 * given glob `patterns`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.some(list, patterns[, options]); | 
						|
 * | 
						|
 * console.log(nm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); | 
						|
 * // true | 
						|
 * console.log(nm.some(['foo.js'], ['*.js', '!foo.js'])); | 
						|
 * // false | 
						|
 * ``` | 
						|
 * @param  {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found. | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if any patterns match `str` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.some = function (list, patterns, options) { | 
						|
  if (typeof list === 'string') { | 
						|
    list = [list]; | 
						|
  } | 
						|
 | 
						|
  for (var i = 0; i < list.length; i++) { | 
						|
    if (nanomatch(list[i], patterns, options).length === 1) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if every element in the given `list` matches | 
						|
 * at least one of the given glob `patterns`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.every(list, patterns[, options]); | 
						|
 * | 
						|
 * console.log(nm.every('foo.js', ['foo.js'])); | 
						|
 * // true | 
						|
 * console.log(nm.every(['foo.js', 'bar.js'], ['*.js'])); | 
						|
 * // true | 
						|
 * console.log(nm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); | 
						|
 * // false | 
						|
 * console.log(nm.every(['foo.js'], ['*.js', '!foo.js'])); | 
						|
 * // false | 
						|
 * ``` | 
						|
 * @param  {String|Array} `list` The string or array of strings to test. | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if any patterns match `str` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.every = function (list, patterns, options) { | 
						|
  if (typeof list === 'string') { | 
						|
    list = [list]; | 
						|
  } | 
						|
 | 
						|
  for (var i = 0; i < list.length; i++) { | 
						|
    if (nanomatch(list[i], patterns, options).length !== 1) { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if **any** of the given glob `patterns` | 
						|
 * match the specified `string`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.any(string, patterns[, options]); | 
						|
 * | 
						|
 * console.log(nm.any('a.a', ['b.*', '*.a'])); | 
						|
 * //=> true | 
						|
 * console.log(nm.any('a.a', 'b.*')); | 
						|
 * //=> false | 
						|
 * ``` | 
						|
 * @param  {String|Array} `str` The string to test. | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if any patterns match `str` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.any = function (str, patterns, options) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string: "' + util.inspect(str) + '"'); | 
						|
  } | 
						|
 | 
						|
  if (utils.isEmptyString(str) || utils.isEmptyString(patterns)) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (typeof patterns === 'string') { | 
						|
    patterns = [patterns]; | 
						|
  } | 
						|
 | 
						|
  for (var i = 0; i < patterns.length; i++) { | 
						|
    if (nanomatch.isMatch(str, patterns[i], options)) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if **all** of the given `patterns` | 
						|
 * match the specified string. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.all(string, patterns[, options]); | 
						|
 * | 
						|
 * console.log(nm.all('foo.js', ['foo.js'])); | 
						|
 * // true | 
						|
 * | 
						|
 * console.log(nm.all('foo.js', ['*.js', '!foo.js'])); | 
						|
 * // false | 
						|
 * | 
						|
 * console.log(nm.all('foo.js', ['*.js', 'foo.js'])); | 
						|
 * // true | 
						|
 * | 
						|
 * console.log(nm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); | 
						|
 * // true | 
						|
 * ``` | 
						|
 * @param  {String|Array} `str` The string to test. | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if any patterns match `str` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.all = function (str, patterns, options) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string: "' + util.inspect(str) + '"'); | 
						|
  } | 
						|
 | 
						|
  if (typeof patterns === 'string') { | 
						|
    patterns = [patterns]; | 
						|
  } | 
						|
 | 
						|
  for (var i = 0; i < patterns.length; i++) { | 
						|
    if (!nanomatch.isMatch(str, patterns[i], options)) { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
/** | 
						|
 * Returns a list of strings that _**do not match any**_ of the given `patterns`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.not(list, patterns[, options]); | 
						|
 * | 
						|
 * console.log(nm.not(['a.a', 'b.b', 'c.c'], '*.a')); | 
						|
 * //=> ['b.b', 'c.c'] | 
						|
 * ``` | 
						|
 * @param {Array} `list` Array of strings to match. | 
						|
 * @param {String|Array} `patterns` One or more glob pattern to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Array} Returns an array of strings that **do not match** the given patterns. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.not = function (list, patterns, options) { | 
						|
  var opts = extend({}, options); | 
						|
  var ignore = opts.ignore; | 
						|
  delete opts.ignore; | 
						|
  list = utils.arrayify(list); | 
						|
  var matches = utils.diff(list, nanomatch(list, patterns, opts)); | 
						|
 | 
						|
  if (ignore) { | 
						|
    matches = utils.diff(matches, nanomatch(list, ignore)); | 
						|
  } | 
						|
 | 
						|
  return opts.nodupes !== false ? utils.unique(matches) : matches; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given `string` contains the given pattern. Similar | 
						|
 * to [.isMatch](#isMatch) but the pattern can match any part of the string. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.contains(string, pattern[, options]); | 
						|
 * | 
						|
 * console.log(nm.contains('aa/bb/cc', '*b')); | 
						|
 * //=> true | 
						|
 * console.log(nm.contains('aa/bb/cc', '*d')); | 
						|
 * //=> false | 
						|
 * ``` | 
						|
 * @param {String} `str` The string to match. | 
						|
 * @param {String|Array} `patterns` Glob pattern to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns true if the patter matches any part of `str`. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.contains = function (str, patterns, options) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string: "' + util.inspect(str) + '"'); | 
						|
  } | 
						|
 | 
						|
  if (typeof patterns === 'string') { | 
						|
    if (utils.isEmptyString(str) || utils.isEmptyString(patterns)) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    var equals = utils.equalsPattern(patterns, options); | 
						|
 | 
						|
    if (equals(str)) { | 
						|
      return true; | 
						|
    } | 
						|
 | 
						|
    var contains = utils.containsPattern(patterns, options); | 
						|
 | 
						|
    if (contains(str)) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var opts = extend({}, options, { | 
						|
    contains: true | 
						|
  }); | 
						|
  return nanomatch.any(str, patterns, opts); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given pattern and options should enable | 
						|
 * the `matchBase` option. | 
						|
 * @return {Boolean} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.matchBase = function (pattern, options) { | 
						|
  if (pattern && pattern.indexOf('/') !== -1 || !options) return false; | 
						|
  return options.basename === true || options.matchBase === true; | 
						|
}; | 
						|
/** | 
						|
 * Filter the keys of the given object with the given `glob` pattern | 
						|
 * and `options`. Does not attempt to match nested keys. If you need this feature, | 
						|
 * use [glob-object][] instead. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.matchKeys(object, patterns[, options]); | 
						|
 * | 
						|
 * var obj = { aa: 'a', ab: 'b', ac: 'c' }; | 
						|
 * console.log(nm.matchKeys(obj, '*b')); | 
						|
 * //=> { ab: 'b' } | 
						|
 * ``` | 
						|
 * @param {Object} `object` The object with keys to filter. | 
						|
 * @param {String|Array} `patterns` One or more glob patterns to use for matching. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Object} Returns an object with only keys that match the given patterns. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.matchKeys = function (obj, patterns, options) { | 
						|
  if (!utils.isObject(obj)) { | 
						|
    throw new TypeError('expected the first argument to be an object'); | 
						|
  } | 
						|
 | 
						|
  var keys = nanomatch(Object.keys(obj), patterns, options); | 
						|
  return utils.pick(obj, keys); | 
						|
}; | 
						|
/** | 
						|
 * Returns a memoized matcher function from the given glob `pattern` and `options`. | 
						|
 * The returned function takes a string to match as its only argument and returns | 
						|
 * true if the string is a match. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.matcher(pattern[, options]); | 
						|
 * | 
						|
 * var isMatch = nm.matcher('*.!(*a)'); | 
						|
 * console.log(isMatch('a.a')); | 
						|
 * //=> false | 
						|
 * console.log(isMatch('a.b')); | 
						|
 * //=> true | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Glob pattern | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed. | 
						|
 * @return {Function} Returns a matcher function. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.matcher = function matcher(pattern, options) { | 
						|
  if (utils.isEmptyString(pattern)) { | 
						|
    return function () { | 
						|
      return false; | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  if (Array.isArray(pattern)) { | 
						|
    return compose(pattern, options, matcher); | 
						|
  } // if pattern is a regex | 
						|
 | 
						|
 | 
						|
  if (pattern instanceof RegExp) { | 
						|
    return test(pattern); | 
						|
  } // if pattern is invalid | 
						|
 | 
						|
 | 
						|
  if (!utils.isString(pattern)) { | 
						|
    throw new TypeError('expected pattern to be an array, string or regex'); | 
						|
  } // if pattern is a non-glob string | 
						|
 | 
						|
 | 
						|
  if (!utils.hasSpecialChars(pattern)) { | 
						|
    if (options && options.nocase === true) { | 
						|
      pattern = pattern.toLowerCase(); | 
						|
    } | 
						|
 | 
						|
    return utils.matchPath(pattern, options); | 
						|
  } // if pattern is a glob string | 
						|
 | 
						|
 | 
						|
  var re = nanomatch.makeRe(pattern, options); // if `options.matchBase` or `options.basename` is defined | 
						|
 | 
						|
  if (nanomatch.matchBase(pattern, options)) { | 
						|
    return utils.matchBasename(re, options); | 
						|
  } | 
						|
 | 
						|
  function test(regex) { | 
						|
    var equals = utils.equalsPattern(options); | 
						|
    var unixify = utils.unixify(options); | 
						|
    return function (str) { | 
						|
      if (equals(str)) { | 
						|
        return true; | 
						|
      } | 
						|
 | 
						|
      if (regex.test(unixify(str))) { | 
						|
        return true; | 
						|
      } | 
						|
 | 
						|
      return false; | 
						|
    }; | 
						|
  } // create matcher function | 
						|
 | 
						|
 | 
						|
  var matcherFn = test(re); // set result object from compiler on matcher function, | 
						|
  // as a non-enumerable property. useful for debugging | 
						|
 | 
						|
  utils.define(matcherFn, 'result', re.result); | 
						|
  return matcherFn; | 
						|
}; | 
						|
/** | 
						|
 * Returns an array of matches captured by `pattern` in `string, or | 
						|
 * `null` if the pattern did not match. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.capture(pattern, string[, options]); | 
						|
 * | 
						|
 * console.log(nm.capture('test/*.js', 'test/foo.js')); | 
						|
 * //=> ['foo'] | 
						|
 * console.log(nm.capture('test/*.js', 'foo/bar.css')); | 
						|
 * //=> null | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Glob pattern to use for matching. | 
						|
 * @param {String} `string` String to match | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed | 
						|
 * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.capture = function (pattern, str, options) { | 
						|
  var re = nanomatch.makeRe(pattern, extend({ | 
						|
    capture: true | 
						|
  }, options)); | 
						|
  var unixify = utils.unixify(options); | 
						|
 | 
						|
  function match() { | 
						|
    return function (string) { | 
						|
      var match = re.exec(unixify(string)); | 
						|
 | 
						|
      if (!match) { | 
						|
        return null; | 
						|
      } | 
						|
 | 
						|
      return match.slice(1); | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  var capture = memoize('capture', pattern, options, match); | 
						|
  return capture(str); | 
						|
}; | 
						|
/** | 
						|
 * Create a regular expression from the given glob `pattern`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.makeRe(pattern[, options]); | 
						|
 * | 
						|
 * console.log(nm.makeRe('*.js')); | 
						|
 * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ | 
						|
 * ``` | 
						|
 * @param {String} `pattern` A glob pattern to convert to regex. | 
						|
 * @param {Object} `options` See available [options](#options) for changing how matches are performed. | 
						|
 * @return {RegExp} Returns a regex created from the given pattern. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.makeRe = function (pattern, options) { | 
						|
  if (pattern instanceof RegExp) { | 
						|
    return pattern; | 
						|
  } | 
						|
 | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected pattern to be a string'); | 
						|
  } | 
						|
 | 
						|
  if (pattern.length > MAX_LENGTH) { | 
						|
    throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters'); | 
						|
  } | 
						|
 | 
						|
  function makeRe() { | 
						|
    var opts = utils.extend({ | 
						|
      wrap: false | 
						|
    }, options); | 
						|
    var result = nanomatch.create(pattern, opts); | 
						|
    var regex = toRegex(result.output, opts); | 
						|
    utils.define(regex, 'result', result); | 
						|
    return regex; | 
						|
  } | 
						|
 | 
						|
  return memoize('makeRe', pattern, options, makeRe); | 
						|
}; | 
						|
/** | 
						|
 * Parses the given glob `pattern` and returns an object with the compiled `output` | 
						|
 * and optional source `map`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.create(pattern[, options]); | 
						|
 * | 
						|
 * console.log(nm.create('abc/*.js')); | 
						|
 * // { options: { source: 'string', sourcemap: true }, | 
						|
 * //   state: {}, | 
						|
 * //   compilers: | 
						|
 * //    { ... }, | 
						|
 * //   output: '(\\.[\\\\\\/])?abc\\/(?!\\.)(?=.)[^\\/]*?\\.js', | 
						|
 * //   ast: | 
						|
 * //    { type: 'root', | 
						|
 * //      errors: [], | 
						|
 * //      nodes: | 
						|
 * //       [ ... ], | 
						|
 * //      dot: false, | 
						|
 * //      input: 'abc/*.js' }, | 
						|
 * //   parsingErrors: [], | 
						|
 * //   map: | 
						|
 * //    { version: 3, | 
						|
 * //      sources: [ 'string' ], | 
						|
 * //      names: [], | 
						|
 * //      mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE', | 
						|
 * //      sourcesContent: [ 'abc/*.js' ] }, | 
						|
 * //   position: { line: 1, column: 28 }, | 
						|
 * //   content: {}, | 
						|
 * //   files: {}, | 
						|
 * //   idx: 6 } | 
						|
 * ``` | 
						|
 * @param {String} `pattern` Glob pattern to parse and compile. | 
						|
 * @param {Object} `options` Any [options](#options) to change how parsing and compiling is performed. | 
						|
 * @return {Object} Returns an object with the parsed AST, compiled string and optional source map. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.create = function (pattern, options) { | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected a string'); | 
						|
  } | 
						|
 | 
						|
  function create() { | 
						|
    return nanomatch.compile(nanomatch.parse(pattern, options), options); | 
						|
  } | 
						|
 | 
						|
  return memoize('create', pattern, options, create); | 
						|
}; | 
						|
/** | 
						|
 * Parse the given `str` with the given `options`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.parse(pattern[, options]); | 
						|
 * | 
						|
 * var ast = nm.parse('a/{b,c}/d'); | 
						|
 * console.log(ast); | 
						|
 * // { type: 'root', | 
						|
 * //   errors: [], | 
						|
 * //   input: 'a/{b,c}/d', | 
						|
 * //   nodes: | 
						|
 * //    [ { type: 'bos', val: '' }, | 
						|
 * //      { type: 'text', val: 'a/' }, | 
						|
 * //      { type: 'brace', | 
						|
 * //        nodes: | 
						|
 * //         [ { type: 'brace.open', val: '{' }, | 
						|
 * //           { type: 'text', val: 'b,c' }, | 
						|
 * //           { type: 'brace.close', val: '}' } ] }, | 
						|
 * //      { type: 'text', val: '/d' }, | 
						|
 * //      { type: 'eos', val: '' } ] } | 
						|
 * ``` | 
						|
 * @param {String} `str` | 
						|
 * @param {Object} `options` | 
						|
 * @return {Object} Returns an AST | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.parse = function (pattern, options) { | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected a string'); | 
						|
  } | 
						|
 | 
						|
  function parse() { | 
						|
    var snapdragon = utils.instantiate(null, options); | 
						|
    parsers(snapdragon, options); | 
						|
    var ast = snapdragon.parse(pattern, options); | 
						|
    utils.define(ast, 'snapdragon', snapdragon); | 
						|
    ast.input = pattern; | 
						|
    return ast; | 
						|
  } | 
						|
 | 
						|
  return memoize('parse', pattern, options, parse); | 
						|
}; | 
						|
/** | 
						|
 * Compile the given `ast` or string with the given `options`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var nm = require('nanomatch'); | 
						|
 * nm.compile(ast[, options]); | 
						|
 * | 
						|
 * var ast = nm.parse('a/{b,c}/d'); | 
						|
 * console.log(nm.compile(ast)); | 
						|
 * // { options: { source: 'string' }, | 
						|
 * //   state: {}, | 
						|
 * //   compilers: | 
						|
 * //    { eos: [Function], | 
						|
 * //      noop: [Function], | 
						|
 * //      bos: [Function], | 
						|
 * //      brace: [Function], | 
						|
 * //      'brace.open': [Function], | 
						|
 * //      text: [Function], | 
						|
 * //      'brace.close': [Function] }, | 
						|
 * //   output: [ 'a/(b|c)/d' ], | 
						|
 * //   ast: | 
						|
 * //    { ... }, | 
						|
 * //   parsingErrors: [] } | 
						|
 * ``` | 
						|
 * @param {Object|String} `ast` | 
						|
 * @param {Object} `options` | 
						|
 * @return {Object} Returns an object that has an `output` property with the compiled string. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.compile = function (ast, options) { | 
						|
  if (typeof ast === 'string') { | 
						|
    ast = nanomatch.parse(ast, options); | 
						|
  } | 
						|
 | 
						|
  function compile() { | 
						|
    var snapdragon = utils.instantiate(ast, options); | 
						|
    compilers(snapdragon, options); | 
						|
    return snapdragon.compile(ast, options); | 
						|
  } | 
						|
 | 
						|
  return memoize('compile', ast.input, options, compile); | 
						|
}; | 
						|
/** | 
						|
 * Clear the regex cache. | 
						|
 * | 
						|
 * ```js | 
						|
 * nm.clearCache(); | 
						|
 * ``` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.clearCache = function () { | 
						|
  nanomatch.cache.__data__ = {}; | 
						|
}; | 
						|
/** | 
						|
 * Compose a matcher function with the given patterns. | 
						|
 * This allows matcher functions to be compiled once and | 
						|
 * called multiple times. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function compose(patterns, options, matcher) { | 
						|
  var matchers; | 
						|
  return memoize('compose', String(patterns), options, function () { | 
						|
    return function (file) { | 
						|
      // delay composition until it's invoked the first time, | 
						|
      // after that it won't be called again | 
						|
      if (!matchers) { | 
						|
        matchers = []; | 
						|
 | 
						|
        for (var i = 0; i < patterns.length; i++) { | 
						|
          matchers.push(matcher(patterns[i], options)); | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      var len = matchers.length; | 
						|
 | 
						|
      while (len--) { | 
						|
        if (matchers[len](file) === true) { | 
						|
          return true; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      return false; | 
						|
    }; | 
						|
  }); | 
						|
} | 
						|
/** | 
						|
 * Memoize a generated regex or function. A unique key is generated | 
						|
 * from the `type` (usually method name), the `pattern`, and | 
						|
 * user-defined options. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function memoize(type, pattern, options, fn) { | 
						|
  var key = utils.createKey(type + '=' + pattern, options); | 
						|
 | 
						|
  if (options && options.cache === false) { | 
						|
    return fn(pattern, options); | 
						|
  } | 
						|
 | 
						|
  if (cache.has(type, key)) { | 
						|
    return cache.get(type, key); | 
						|
  } | 
						|
 | 
						|
  var val = fn(pattern, options); | 
						|
  cache.set(type, key, val); | 
						|
  return val; | 
						|
} | 
						|
/** | 
						|
 * Expose compiler, parser and cache on `nanomatch` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
nanomatch.compilers = compilers; | 
						|
nanomatch.parsers = parsers; | 
						|
nanomatch.cache = cache; | 
						|
/** | 
						|
 * Expose `nanomatch` | 
						|
 * @type {Function} | 
						|
 */ | 
						|
 | 
						|
module.exports = nanomatch; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/nanomatch/lib/cache.js": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./node_modules/nanomatch/lib/cache.js ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
module.exports = new (__webpack_require__(/*! fragment-cache */ "./node_modules/fragment-cache/index.js"))(); | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/nanomatch/lib/compilers.js": | 
						|
/*!*************************************************!*\ | 
						|
  !*** ./node_modules/nanomatch/lib/compilers.js ***! | 
						|
  \*************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
/** | 
						|
* Nanomatch compilers | 
						|
*/ | 
						|
 | 
						|
module.exports = function (nanomatch, options) { | 
						|
  function slash() { | 
						|
    if (options && typeof options.slash === 'string') { | 
						|
      return options.slash; | 
						|
    } | 
						|
 | 
						|
    if (options && typeof options.slash === 'function') { | 
						|
      return options.slash.call(nanomatch); | 
						|
    } | 
						|
 | 
						|
    return '\\\\/'; | 
						|
  } | 
						|
 | 
						|
  function star() { | 
						|
    if (options && typeof options.star === 'string') { | 
						|
      return options.star; | 
						|
    } | 
						|
 | 
						|
    if (options && typeof options.star === 'function') { | 
						|
      return options.star.call(nanomatch); | 
						|
    } | 
						|
 | 
						|
    return '[^' + slash() + ']*?'; | 
						|
  } | 
						|
 | 
						|
  var ast = nanomatch.ast = nanomatch.parser.ast; | 
						|
  ast.state = nanomatch.parser.state; | 
						|
  nanomatch.compiler.state = ast.state; | 
						|
  nanomatch.compiler | 
						|
  /** | 
						|
   * Negation / escaping | 
						|
   */ | 
						|
  .set('not', function (node) { | 
						|
    var prev = this.prev(); | 
						|
 | 
						|
    if (this.options.nonegate === true || prev.type !== 'bos') { | 
						|
      return this.emit('\\' + node.val, node); | 
						|
    } | 
						|
 | 
						|
    return this.emit(node.val, node); | 
						|
  }).set('escape', function (node) { | 
						|
    if (this.options.unescape && /^[-\w_.]/.test(node.val)) { | 
						|
      return this.emit(node.val, node); | 
						|
    } | 
						|
 | 
						|
    return this.emit('\\' + node.val, node); | 
						|
  }).set('quoted', function (node) { | 
						|
    return this.emit(node.val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Regex | 
						|
   */ | 
						|
  .set('dollar', function (node) { | 
						|
    if (node.parent.type === 'bracket') { | 
						|
      return this.emit(node.val, node); | 
						|
    } | 
						|
 | 
						|
    return this.emit('\\' + node.val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Dot: "." | 
						|
   */ | 
						|
  .set('dot', function (node) { | 
						|
    if (node.dotfiles === true) this.dotfiles = true; | 
						|
    return this.emit('\\' + node.val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Slashes: "/" and "\" | 
						|
   */ | 
						|
  .set('backslash', function (node) { | 
						|
    return this.emit(node.val, node); | 
						|
  }).set('slash', function (node, nodes, i) { | 
						|
    var val = '[' + slash() + ']'; | 
						|
    var parent = node.parent; | 
						|
    var prev = this.prev(); // set "node.hasSlash" to true on all ancestor parens nodes | 
						|
 | 
						|
    while (parent.type === 'paren' && !parent.hasSlash) { | 
						|
      parent.hasSlash = true; | 
						|
      parent = parent.parent; | 
						|
    } | 
						|
 | 
						|
    if (prev.addQmark) { | 
						|
      val += '?'; | 
						|
    } // word boundary | 
						|
 | 
						|
 | 
						|
    if (node.rest.slice(0, 2) === '\\b') { | 
						|
      return this.emit(val, node); | 
						|
    } // globstars | 
						|
 | 
						|
 | 
						|
    if (node.parsed === '**' || node.parsed === './**') { | 
						|
      this.output = '(?:' + this.output; | 
						|
      return this.emit(val + ')?', node); | 
						|
    } // negation | 
						|
 | 
						|
 | 
						|
    if (node.parsed === '!**' && this.options.nonegate !== true) { | 
						|
      return this.emit(val + '?\\b', node); | 
						|
    } | 
						|
 | 
						|
    return this.emit(val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Square brackets | 
						|
   */ | 
						|
  .set('bracket', function (node) { | 
						|
    var close = node.close; | 
						|
    var open = !node.escaped ? '[' : '\\['; | 
						|
    var negated = node.negated; | 
						|
    var inner = node.inner; | 
						|
    var val = node.val; | 
						|
 | 
						|
    if (node.escaped === true) { | 
						|
      inner = inner.replace(/\\?(\W)/g, '\\$1'); | 
						|
      negated = ''; | 
						|
    } | 
						|
 | 
						|
    if (inner === ']-') { | 
						|
      inner = '\\]\\-'; | 
						|
    } | 
						|
 | 
						|
    if (negated && inner.indexOf('.') === -1) { | 
						|
      inner += '.'; | 
						|
    } | 
						|
 | 
						|
    if (negated && inner.indexOf('/') === -1) { | 
						|
      inner += '/'; | 
						|
    } | 
						|
 | 
						|
    val = open + negated + inner + close; | 
						|
    return this.emit(val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Square: "[.]" (only matches a single character in brackets) | 
						|
   */ | 
						|
  .set('square', function (node) { | 
						|
    var val = (/^\W/.test(node.val) ? '\\' : '') + node.val; | 
						|
    return this.emit(val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Question mark: "?" | 
						|
   */ | 
						|
  .set('qmark', function (node) { | 
						|
    var prev = this.prev(); // don't use "slash" variable so that we always avoid | 
						|
    // matching backslashes and slashes with a qmark | 
						|
 | 
						|
    var val = '[^.\\\\/]'; | 
						|
 | 
						|
    if (this.options.dot || prev.type !== 'bos' && prev.type !== 'slash') { | 
						|
      val = '[^\\\\/]'; | 
						|
    } | 
						|
 | 
						|
    if (node.parsed.slice(-1) === '(') { | 
						|
      var ch = node.rest.charAt(0); | 
						|
 | 
						|
      if (ch === '!' || ch === '=' || ch === ':') { | 
						|
        return this.emit(node.val, node); | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    if (node.val.length > 1) { | 
						|
      val += '{' + node.val.length + '}'; | 
						|
    } | 
						|
 | 
						|
    return this.emit(val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Plus | 
						|
   */ | 
						|
  .set('plus', function (node) { | 
						|
    var prev = node.parsed.slice(-1); | 
						|
 | 
						|
    if (prev === ']' || prev === ')') { | 
						|
      return this.emit(node.val, node); | 
						|
    } | 
						|
 | 
						|
    if (!this.output || /[?*+]/.test(ch) && node.parent.type !== 'bracket') { | 
						|
      return this.emit('\\+', node); | 
						|
    } | 
						|
 | 
						|
    var ch = this.output.slice(-1); | 
						|
 | 
						|
    if (/\w/.test(ch) && !node.inside) { | 
						|
      return this.emit('+\\+?', node); | 
						|
    } | 
						|
 | 
						|
    return this.emit('+', node); | 
						|
  }) | 
						|
  /** | 
						|
   * globstar: '**' | 
						|
   */ | 
						|
  .set('globstar', function (node, nodes, i) { | 
						|
    if (!this.output) { | 
						|
      this.state.leadingGlobstar = true; | 
						|
    } | 
						|
 | 
						|
    var prev = this.prev(); | 
						|
    var before = this.prev(2); | 
						|
    var next = this.next(); | 
						|
    var after = this.next(2); | 
						|
    var type = prev.type; | 
						|
    var val = node.val; | 
						|
 | 
						|
    if (prev.type === 'slash' && next.type === 'slash') { | 
						|
      if (before.type === 'text') { | 
						|
        this.output += '?'; | 
						|
 | 
						|
        if (after.type !== 'text') { | 
						|
          this.output += '\\b'; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    var parsed = node.parsed; | 
						|
 | 
						|
    if (parsed.charAt(0) === '!') { | 
						|
      parsed = parsed.slice(1); | 
						|
    } | 
						|
 | 
						|
    var isInside = node.isInside.paren || node.isInside.brace; | 
						|
 | 
						|
    if (parsed && type !== 'slash' && type !== 'bos' && !isInside) { | 
						|
      val = star(); | 
						|
    } else { | 
						|
      val = this.options.dot !== true ? '(?:(?!(?:[' + slash() + ']|^)\\.).)*?' : '(?:(?!(?:[' + slash() + ']|^)(?:\\.{1,2})($|[' + slash() + ']))(?!\\.{2}).)*?'; | 
						|
    } | 
						|
 | 
						|
    if ((type === 'slash' || type === 'bos') && this.options.dot !== true) { | 
						|
      val = '(?!\\.)' + val; | 
						|
    } | 
						|
 | 
						|
    if (prev.type === 'slash' && next.type === 'slash' && before.type !== 'text') { | 
						|
      if (after.type === 'text' || after.type === 'star') { | 
						|
        node.addQmark = true; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    if (this.options.capture) { | 
						|
      val = '(' + val + ')'; | 
						|
    } | 
						|
 | 
						|
    return this.emit(val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Star: "*" | 
						|
   */ | 
						|
  .set('star', function (node, nodes, i) { | 
						|
    var prior = nodes[i - 2] || {}; | 
						|
    var prev = this.prev(); | 
						|
    var next = this.next(); | 
						|
    var type = prev.type; | 
						|
 | 
						|
    function isStart(n) { | 
						|
      return n.type === 'bos' || n.type === 'slash'; | 
						|
    } | 
						|
 | 
						|
    if (this.output === '' && this.options.contains !== true) { | 
						|
      this.output = '(?![' + slash() + '])'; | 
						|
    } | 
						|
 | 
						|
    if (type === 'bracket' && this.options.bash === false) { | 
						|
      var str = next && next.type === 'bracket' ? star() : '*?'; | 
						|
 | 
						|
      if (!prev.nodes || prev.nodes[1].type !== 'posix') { | 
						|
        return this.emit(str, node); | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    var prefix = !this.dotfiles && type !== 'text' && type !== 'escape' ? this.options.dot ? '(?!(?:^|[' + slash() + '])\\.{1,2}(?:$|[' + slash() + ']))' : '(?!\\.)' : ''; | 
						|
 | 
						|
    if (isStart(prev) || isStart(prior) && type === 'not') { | 
						|
      if (prefix !== '(?!\\.)') { | 
						|
        prefix += '(?!(\\.{2}|\\.[' + slash() + ']))(?=.)'; | 
						|
      } else { | 
						|
        prefix += '(?=.)'; | 
						|
      } | 
						|
    } else if (prefix === '(?!\\.)') { | 
						|
      prefix = ''; | 
						|
    } | 
						|
 | 
						|
    if (prev.type === 'not' && prior.type === 'bos' && this.options.dot === true) { | 
						|
      this.output = '(?!\\.)' + this.output; | 
						|
    } | 
						|
 | 
						|
    var output = prefix + star(); | 
						|
 | 
						|
    if (this.options.capture) { | 
						|
      output = '(' + output + ')'; | 
						|
    } | 
						|
 | 
						|
    return this.emit(output, node); | 
						|
  }) | 
						|
  /** | 
						|
   * Text | 
						|
   */ | 
						|
  .set('text', function (node) { | 
						|
    return this.emit(node.val, node); | 
						|
  }) | 
						|
  /** | 
						|
   * End-of-string | 
						|
   */ | 
						|
  .set('eos', function (node) { | 
						|
    var prev = this.prev(); | 
						|
    var val = node.val; | 
						|
    this.output = '(?:\\.[' + slash() + '](?=.))?' + this.output; | 
						|
 | 
						|
    if (this.state.metachar && prev.type !== 'qmark' && prev.type !== 'slash') { | 
						|
      val += this.options.contains ? '[' + slash() + ']?' : '(?:[' + slash() + ']|$)'; | 
						|
    } | 
						|
 | 
						|
    return this.emit(val, node); | 
						|
  }); | 
						|
  /** | 
						|
   * Allow custom compilers to be passed on options | 
						|
   */ | 
						|
 | 
						|
  if (options && typeof options.compilers === 'function') { | 
						|
    options.compilers(nanomatch.compiler); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/nanomatch/lib/parsers.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./node_modules/nanomatch/lib/parsers.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var regexNot = __webpack_require__(/*! regex-not */ "./node_modules/regex-not/index.js"); | 
						|
 | 
						|
var toRegex = __webpack_require__(/*! to-regex */ "./node_modules/to-regex/index.js"); | 
						|
/** | 
						|
 * Characters to use in negation regex (we want to "not" match | 
						|
 * characters that are matched by other parsers) | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var cached; | 
						|
var NOT_REGEX = '[\\[!*+?$^"\'.\\\\/]+'; | 
						|
var not = createTextRegex(NOT_REGEX); | 
						|
/** | 
						|
 * Nanomatch parsers | 
						|
 */ | 
						|
 | 
						|
module.exports = function (nanomatch, options) { | 
						|
  var parser = nanomatch.parser; | 
						|
  var opts = parser.options; | 
						|
  parser.state = { | 
						|
    slashes: 0, | 
						|
    paths: [] | 
						|
  }; | 
						|
  parser.ast.state = parser.state; | 
						|
  parser | 
						|
  /** | 
						|
   * Beginning-of-string | 
						|
   */ | 
						|
  .capture('prefix', function () { | 
						|
    if (this.parsed) return; | 
						|
    var m = this.match(/^\.[\\/]/); | 
						|
    if (!m) return; | 
						|
    this.state.strictOpen = !!this.options.strictOpen; | 
						|
    this.state.addPrefix = true; | 
						|
  }) | 
						|
  /** | 
						|
   * Escape: "\\." | 
						|
   */ | 
						|
  .capture('escape', function () { | 
						|
    if (this.isInside('bracket')) return; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^(?:\\(.)|([$^]))/); | 
						|
    if (!m) return; | 
						|
    return pos({ | 
						|
      type: 'escape', | 
						|
      val: m[2] || m[1] | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Quoted strings | 
						|
   */ | 
						|
  .capture('quoted', function () { | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^["']/); | 
						|
    if (!m) return; | 
						|
    var quote = m[0]; | 
						|
 | 
						|
    if (this.input.indexOf(quote) === -1) { | 
						|
      return pos({ | 
						|
        type: 'escape', | 
						|
        val: quote | 
						|
      }); | 
						|
    } | 
						|
 | 
						|
    var tok = advanceTo(this.input, quote); | 
						|
    this.consume(tok.len); | 
						|
    return pos({ | 
						|
      type: 'quoted', | 
						|
      val: tok.esc | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Negations: "!" | 
						|
   */ | 
						|
  .capture('not', function () { | 
						|
    var parsed = this.parsed; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(this.notRegex || /^!+/); | 
						|
    if (!m) return; | 
						|
    var val = m[0]; | 
						|
    var isNegated = val.length % 2 === 1; | 
						|
 | 
						|
    if (parsed === '' && !isNegated) { | 
						|
      val = ''; | 
						|
    } // if nothing has been parsed, we know `!` is at the start, | 
						|
    // so we need to wrap the result in a negation regex | 
						|
 | 
						|
 | 
						|
    if (parsed === '' && isNegated && this.options.nonegate !== true) { | 
						|
      this.bos.val = '(?!^(?:'; | 
						|
      this.append = ')$).*'; | 
						|
      val = ''; | 
						|
    } | 
						|
 | 
						|
    return pos({ | 
						|
      type: 'not', | 
						|
      val: val | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Dot: "." | 
						|
   */ | 
						|
  .capture('dot', function () { | 
						|
    var parsed = this.parsed; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\.+/); | 
						|
    if (!m) return; | 
						|
    var val = m[0]; | 
						|
    this.state.dot = val === '.' && (parsed === '' || parsed.slice(-1) === '/'); | 
						|
    return pos({ | 
						|
      type: 'dot', | 
						|
      dotfiles: this.state.dot, | 
						|
      val: val | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Plus: "+" | 
						|
   */ | 
						|
  .capture('plus', /^\+(?!\()/) | 
						|
  /** | 
						|
   * Question mark: "?" | 
						|
   */ | 
						|
  .capture('qmark', function () { | 
						|
    var parsed = this.parsed; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\?+(?!\()/); | 
						|
    if (!m) return; | 
						|
    this.state.metachar = true; | 
						|
    this.state.qmark = true; | 
						|
    return pos({ | 
						|
      type: 'qmark', | 
						|
      parsed: parsed, | 
						|
      val: m[0] | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Globstar: "**" | 
						|
   */ | 
						|
  .capture('globstar', function () { | 
						|
    var parsed = this.parsed; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\*{2}(?![*(])(?=[,)/]|$)/); | 
						|
    if (!m) return; | 
						|
    var type = opts.noglobstar !== true ? 'globstar' : 'star'; | 
						|
    var node = pos({ | 
						|
      type: type, | 
						|
      parsed: parsed | 
						|
    }); | 
						|
    this.state.metachar = true; | 
						|
 | 
						|
    while (this.input.slice(0, 4) === '/**/') { | 
						|
      this.input = this.input.slice(3); | 
						|
    } | 
						|
 | 
						|
    node.isInside = { | 
						|
      brace: this.isInside('brace'), | 
						|
      paren: this.isInside('paren') | 
						|
    }; | 
						|
 | 
						|
    if (type === 'globstar') { | 
						|
      this.state.globstar = true; | 
						|
      node.val = '**'; | 
						|
    } else { | 
						|
      this.state.star = true; | 
						|
      node.val = '*'; | 
						|
    } | 
						|
 | 
						|
    return node; | 
						|
  }) | 
						|
  /** | 
						|
   * Star: "*" | 
						|
   */ | 
						|
  .capture('star', function () { | 
						|
    var pos = this.position(); | 
						|
    var starRe = /^(?:\*(?![*(])|[*]{3,}(?!\()|[*]{2}(?![(/]|$)|\*(?=\*\())/; | 
						|
    var m = this.match(starRe); | 
						|
    if (!m) return; | 
						|
    this.state.metachar = true; | 
						|
    this.state.star = true; | 
						|
    return pos({ | 
						|
      type: 'star', | 
						|
      val: m[0] | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Slash: "/" | 
						|
   */ | 
						|
  .capture('slash', function () { | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\//); | 
						|
    if (!m) return; | 
						|
    this.state.slashes++; | 
						|
    return pos({ | 
						|
      type: 'slash', | 
						|
      val: m[0] | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Backslash: "\\" | 
						|
   */ | 
						|
  .capture('backslash', function () { | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\\(?![*+?(){}[\]'"])/); | 
						|
    if (!m) return; | 
						|
    var val = m[0]; | 
						|
 | 
						|
    if (this.isInside('bracket')) { | 
						|
      val = '\\'; | 
						|
    } else if (val.length > 1) { | 
						|
      val = '\\\\'; | 
						|
    } | 
						|
 | 
						|
    return pos({ | 
						|
      type: 'backslash', | 
						|
      val: val | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Square: "[.]" | 
						|
   */ | 
						|
  .capture('square', function () { | 
						|
    if (this.isInside('bracket')) return; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^\[([^!^\\])\]/); | 
						|
    if (!m) return; | 
						|
    return pos({ | 
						|
      type: 'square', | 
						|
      val: m[1] | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Brackets: "[...]" (basic, this can be overridden by other parsers) | 
						|
   */ | 
						|
  .capture('bracket', function () { | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(/^(?:\[([!^]?)([^\]]+|\]-)(\]|[^*+?]+)|\[)/); | 
						|
    if (!m) return; | 
						|
    var val = m[0]; | 
						|
    var negated = m[1] ? '^' : ''; | 
						|
    var inner = (m[2] || '').replace(/\\\\+/, '\\\\'); | 
						|
    var close = m[3] || ''; | 
						|
 | 
						|
    if (m[2] && inner.length < m[2].length) { | 
						|
      val = val.replace(/\\\\+/, '\\\\'); | 
						|
    } | 
						|
 | 
						|
    var esc = this.input.slice(0, 2); | 
						|
 | 
						|
    if (inner === '' && esc === '\\]') { | 
						|
      inner += esc; | 
						|
      this.consume(2); | 
						|
      var str = this.input; | 
						|
      var idx = -1; | 
						|
      var ch; | 
						|
 | 
						|
      while (ch = str[++idx]) { | 
						|
        this.consume(1); | 
						|
 | 
						|
        if (ch === ']') { | 
						|
          close = ch; | 
						|
          break; | 
						|
        } | 
						|
 | 
						|
        inner += ch; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return pos({ | 
						|
      type: 'bracket', | 
						|
      val: val, | 
						|
      escaped: close !== ']', | 
						|
      negated: negated, | 
						|
      inner: inner, | 
						|
      close: close | 
						|
    }); | 
						|
  }) | 
						|
  /** | 
						|
   * Text | 
						|
   */ | 
						|
  .capture('text', function () { | 
						|
    if (this.isInside('bracket')) return; | 
						|
    var pos = this.position(); | 
						|
    var m = this.match(not); | 
						|
    if (!m || !m[0]) return; | 
						|
    return pos({ | 
						|
      type: 'text', | 
						|
      val: m[0] | 
						|
    }); | 
						|
  }); | 
						|
  /** | 
						|
   * Allow custom parsers to be passed on options | 
						|
   */ | 
						|
 | 
						|
  if (options && typeof options.parsers === 'function') { | 
						|
    options.parsers(nanomatch.parser); | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Advance to the next non-escaped character | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function advanceTo(input, endChar) { | 
						|
  var ch = input.charAt(0); | 
						|
  var tok = { | 
						|
    len: 1, | 
						|
    val: '', | 
						|
    esc: '' | 
						|
  }; | 
						|
  var idx = 0; | 
						|
 | 
						|
  function advance() { | 
						|
    if (ch !== '\\') { | 
						|
      tok.esc += '\\' + ch; | 
						|
      tok.val += ch; | 
						|
    } | 
						|
 | 
						|
    ch = input.charAt(++idx); | 
						|
    tok.len++; | 
						|
 | 
						|
    if (ch === '\\') { | 
						|
      advance(); | 
						|
      advance(); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  while (ch && ch !== endChar) { | 
						|
    advance(); | 
						|
  } | 
						|
 | 
						|
  return tok; | 
						|
} | 
						|
/** | 
						|
 * Create text regex | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function createTextRegex(pattern) { | 
						|
  if (cached) return cached; | 
						|
  var opts = { | 
						|
    contains: true, | 
						|
    strictClose: false | 
						|
  }; | 
						|
  var not = regexNot.create(pattern, opts); | 
						|
  var re = toRegex('^(?:[*]\\((?=.)|' + not + ')', opts); | 
						|
  return cached = re; | 
						|
} | 
						|
/** | 
						|
 * Expose negation string | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports.not = NOT_REGEX; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/nanomatch/lib/utils.js": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./node_modules/nanomatch/lib/utils.js ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var utils = module.exports; | 
						|
 | 
						|
var path = __webpack_require__(/*! path */ "./node_modules/path-browserify/index.js"); | 
						|
/** | 
						|
 * Module dependencies | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isWindows = __webpack_require__(/*! is-windows */ "./node_modules/is-windows/index.js")(); | 
						|
 | 
						|
var Snapdragon = __webpack_require__(/*! snapdragon */ "./node_modules/snapdragon/index.js"); | 
						|
 | 
						|
utils.define = __webpack_require__(/*! define-property */ "./node_modules/nanomatch/node_modules/define-property/index.js"); | 
						|
utils.diff = __webpack_require__(/*! arr-diff */ "./node_modules/arr-diff/index.js"); | 
						|
utils.extend = __webpack_require__(/*! extend-shallow */ "./node_modules/nanomatch/node_modules/extend-shallow/index.js"); | 
						|
utils.pick = __webpack_require__(/*! object.pick */ "./node_modules/object.pick/index.js"); | 
						|
utils.typeOf = __webpack_require__(/*! kind-of */ "./node_modules/nanomatch/node_modules/kind-of/index.js"); | 
						|
utils.unique = __webpack_require__(/*! array-unique */ "./node_modules/array-unique/index.js"); | 
						|
/** | 
						|
 * Returns true if the given value is effectively an empty string | 
						|
 */ | 
						|
 | 
						|
utils.isEmptyString = function (val) { | 
						|
  return String(val) === '' || String(val) === './'; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the platform is windows, or `path.sep` is `\\`. | 
						|
 * This is defined as a function to allow `path.sep` to be set in unit tests, | 
						|
 * or by the user, if there is a reason to do so. | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isWindows = function () { | 
						|
  return path.sep === '\\' || isWindows === true; | 
						|
}; | 
						|
/** | 
						|
 * Return the last element from an array | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.last = function (arr, n) { | 
						|
  return arr[arr.length - (n || 1)]; | 
						|
}; | 
						|
/** | 
						|
 * Get the `Snapdragon` instance to use | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.instantiate = function (ast, options) { | 
						|
  var snapdragon; // if an instance was created by `.parse`, use that instance | 
						|
 | 
						|
  if (utils.typeOf(ast) === 'object' && ast.snapdragon) { | 
						|
    snapdragon = ast.snapdragon; // if the user supplies an instance on options, use that instance | 
						|
  } else if (utils.typeOf(options) === 'object' && options.snapdragon) { | 
						|
    snapdragon = options.snapdragon; // create a new instance | 
						|
  } else { | 
						|
    snapdragon = new Snapdragon(options); | 
						|
  } | 
						|
 | 
						|
  utils.define(snapdragon, 'parse', function (str, options) { | 
						|
    var parsed = Snapdragon.prototype.parse.call(this, str, options); | 
						|
    parsed.input = str; // escape unmatched brace/bracket/parens | 
						|
 | 
						|
    var last = this.parser.stack.pop(); | 
						|
 | 
						|
    if (last && this.options.strictErrors !== true) { | 
						|
      var open = last.nodes[0]; | 
						|
      var inner = last.nodes[1]; | 
						|
 | 
						|
      if (last.type === 'bracket') { | 
						|
        if (inner.val.charAt(0) === '[') { | 
						|
          inner.val = '\\' + inner.val; | 
						|
        } | 
						|
      } else { | 
						|
        open.val = '\\' + open.val; | 
						|
        var sibling = open.parent.nodes[1]; | 
						|
 | 
						|
        if (sibling.type === 'star') { | 
						|
          sibling.loose = true; | 
						|
        } | 
						|
      } | 
						|
    } // add non-enumerable parser reference | 
						|
 | 
						|
 | 
						|
    utils.define(parsed, 'parser', this.parser); | 
						|
    return parsed; | 
						|
  }); | 
						|
  return snapdragon; | 
						|
}; | 
						|
/** | 
						|
 * Create the key to use for memoization. The key is generated | 
						|
 * by iterating over the options and concatenating key-value pairs | 
						|
 * to the pattern string. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.createKey = function (pattern, options) { | 
						|
  if (typeof options === 'undefined') { | 
						|
    return pattern; | 
						|
  } | 
						|
 | 
						|
  var key = pattern; | 
						|
 | 
						|
  for (var prop in options) { | 
						|
    if (options.hasOwnProperty(prop)) { | 
						|
      key += ';' + prop + '=' + String(options[prop]); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return key; | 
						|
}; | 
						|
/** | 
						|
 * Cast `val` to an array | 
						|
 * @return {Array} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.arrayify = function (val) { | 
						|
  if (typeof val === 'string') return [val]; | 
						|
  return val ? Array.isArray(val) ? val : [val] : []; | 
						|
}; | 
						|
/** | 
						|
 * Return true if `val` is a non-empty string | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isString = function (val) { | 
						|
  return typeof val === 'string'; | 
						|
}; | 
						|
/** | 
						|
 * Return true if `val` is a non-empty string | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isRegex = function (val) { | 
						|
  return utils.typeOf(val) === 'regexp'; | 
						|
}; | 
						|
/** | 
						|
 * Return true if `val` is a non-empty string | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isObject = function (val) { | 
						|
  return utils.typeOf(val) === 'object'; | 
						|
}; | 
						|
/** | 
						|
 * Escape regex characters in the given string | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.escapeRegex = function (str) { | 
						|
  return str.replace(/[-[\]{}()^$|*+?.\\/\s]/g, '\\$&'); | 
						|
}; | 
						|
/** | 
						|
 * Combines duplicate characters in the provided `input` string. | 
						|
 * @param {String} `input` | 
						|
 * @returns {String} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.combineDupes = function (input, patterns) { | 
						|
  patterns = utils.arrayify(patterns).join('|').split('|'); | 
						|
  patterns = patterns.map(function (s) { | 
						|
    return s.replace(/\\?([+*\\/])/g, '\\$1'); | 
						|
  }); | 
						|
  var substr = patterns.join('|'); | 
						|
  var regex = new RegExp('(' + substr + ')(?=\\1)', 'g'); | 
						|
  return input.replace(regex, ''); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given `str` has special characters | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.hasSpecialChars = function (str) { | 
						|
  return /(?:(?:(^|\/)[!.])|[*?+()|[\]{}]|[+@]\()/.test(str); | 
						|
}; | 
						|
/** | 
						|
 * Normalize slashes in the given filepath. | 
						|
 * | 
						|
 * @param {String} `filepath` | 
						|
 * @return {String} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.toPosixPath = function (str) { | 
						|
  return str.replace(/\\+/g, '/'); | 
						|
}; | 
						|
/** | 
						|
 * Strip backslashes before special characters in a string. | 
						|
 * | 
						|
 * @param {String} `str` | 
						|
 * @return {String} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.unescape = function (str) { | 
						|
  return utils.toPosixPath(str.replace(/\\(?=[*+?!.])/g, '')); | 
						|
}; | 
						|
/** | 
						|
 * Strip the drive letter from a windows filepath | 
						|
 * @param {String} `fp` | 
						|
 * @return {String} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.stripDrive = function (fp) { | 
						|
  return utils.isWindows() ? fp.replace(/^[a-z]:[\\/]+?/i, '/') : fp; | 
						|
}; | 
						|
/** | 
						|
 * Strip the prefix from a filepath | 
						|
 * @param {String} `fp` | 
						|
 * @return {String} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.stripPrefix = function (str) { | 
						|
  if (str.charAt(0) === '.' && (str.charAt(1) === '/' || str.charAt(1) === '\\')) { | 
						|
    return str.slice(2); | 
						|
  } | 
						|
 | 
						|
  return str; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if `str` is a common character that doesn't need | 
						|
 * to be processed to be used for matching. | 
						|
 * @param {String} `str` | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isSimpleChar = function (str) { | 
						|
  return str.trim() === '' || str === '.'; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given str is an escaped or | 
						|
 * unescaped path character | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isSlash = function (str) { | 
						|
  return str === '/' || str === '\\/' || str === '\\' || str === '\\\\'; | 
						|
}; | 
						|
/** | 
						|
 * Returns a function that returns true if the given | 
						|
 * pattern matches or contains a `filepath` | 
						|
 * | 
						|
 * @param {String} `pattern` | 
						|
 * @return {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.matchPath = function (pattern, options) { | 
						|
  return options && options.contains ? utils.containsPattern(pattern, options) : utils.equalsPattern(pattern, options); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given (original) filepath or unixified path are equal | 
						|
 * to the given pattern. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils._equals = function (filepath, unixPath, pattern) { | 
						|
  return pattern === filepath || pattern === unixPath; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given (original) filepath or unixified path contain | 
						|
 * the given pattern. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils._contains = function (filepath, unixPath, pattern) { | 
						|
  return filepath.indexOf(pattern) !== -1 || unixPath.indexOf(pattern) !== -1; | 
						|
}; | 
						|
/** | 
						|
 * Returns a function that returns true if the given | 
						|
 * pattern is the same as a given `filepath` | 
						|
 * | 
						|
 * @param {String} `pattern` | 
						|
 * @return {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.equalsPattern = function (pattern, options) { | 
						|
  var unixify = utils.unixify(options); | 
						|
  options = options || {}; | 
						|
  return function fn(filepath) { | 
						|
    var equal = utils._equals(filepath, unixify(filepath), pattern); | 
						|
 | 
						|
    if (equal === true || options.nocase !== true) { | 
						|
      return equal; | 
						|
    } | 
						|
 | 
						|
    var lower = filepath.toLowerCase(); | 
						|
    return utils._equals(lower, unixify(lower), pattern); | 
						|
  }; | 
						|
}; | 
						|
/** | 
						|
 * Returns a function that returns true if the given | 
						|
 * pattern contains a `filepath` | 
						|
 * | 
						|
 * @param {String} `pattern` | 
						|
 * @return {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.containsPattern = function (pattern, options) { | 
						|
  var unixify = utils.unixify(options); | 
						|
  options = options || {}; | 
						|
  return function (filepath) { | 
						|
    var contains = utils._contains(filepath, unixify(filepath), pattern); | 
						|
 | 
						|
    if (contains === true || options.nocase !== true) { | 
						|
      return contains; | 
						|
    } | 
						|
 | 
						|
    var lower = filepath.toLowerCase(); | 
						|
    return utils._contains(lower, unixify(lower), pattern); | 
						|
  }; | 
						|
}; | 
						|
/** | 
						|
 * Returns a function that returns true if the given | 
						|
 * regex matches the `filename` of a file path. | 
						|
 * | 
						|
 * @param {RegExp} `re` Matching regex | 
						|
 * @return {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.matchBasename = function (re) { | 
						|
  return function (filepath) { | 
						|
    return re.test(filepath) || re.test(path.basename(filepath)); | 
						|
  }; | 
						|
}; | 
						|
/** | 
						|
 * Returns the given value unchanced. | 
						|
 * @return {any} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.identity = function (val) { | 
						|
  return val; | 
						|
}; | 
						|
/** | 
						|
 * Determines the filepath to return based on the provided options. | 
						|
 * @return {any} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.value = function (str, unixify, options) { | 
						|
  if (options && options.unixify === false) { | 
						|
    return str; | 
						|
  } | 
						|
 | 
						|
  if (options && typeof options.unixify === 'function') { | 
						|
    return options.unixify(str); | 
						|
  } | 
						|
 | 
						|
  return unixify(str); | 
						|
}; | 
						|
/** | 
						|
 * Returns a function that normalizes slashes in a string to forward | 
						|
 * slashes, strips `./` from beginning of paths, and optionally unescapes | 
						|
 * special characters. | 
						|
 * @return {Function} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.unixify = function (options) { | 
						|
  var opts = options || {}; | 
						|
  return function (filepath) { | 
						|
    if (opts.stripPrefix !== false) { | 
						|
      filepath = utils.stripPrefix(filepath); | 
						|
    } | 
						|
 | 
						|
    if (opts.unescape === true) { | 
						|
      filepath = utils.unescape(filepath); | 
						|
    } | 
						|
 | 
						|
    if (opts.unixify === true || utils.isWindows()) { | 
						|
      filepath = utils.toPosixPath(filepath); | 
						|
    } | 
						|
 | 
						|
    return filepath; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/nanomatch/node_modules/define-property/index.js": | 
						|
/*!**********************************************************************!*\ | 
						|
  !*** ./node_modules/nanomatch/node_modules/define-property/index.js ***! | 
						|
  \**********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * define-property <https://github.com/jonschlinkert/define-property> | 
						|
 * | 
						|
 * Copyright (c) 2015-2018, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isobject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
 | 
						|
var isDescriptor = __webpack_require__(/*! is-descriptor */ "./node_modules/is-descriptor/index.js"); | 
						|
 | 
						|
var define = typeof Reflect !== 'undefined' && Reflect.defineProperty ? Reflect.defineProperty : Object.defineProperty; | 
						|
 | 
						|
module.exports = function defineProperty(obj, key, val) { | 
						|
  if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) { | 
						|
    throw new TypeError('expected an object, function, or array'); | 
						|
  } | 
						|
 | 
						|
  if (typeof key !== 'string') { | 
						|
    throw new TypeError('expected "key" to be a string'); | 
						|
  } | 
						|
 | 
						|
  if (isDescriptor(val)) { | 
						|
    define(obj, key, val); | 
						|
    return obj; | 
						|
  } | 
						|
 | 
						|
  define(obj, key, { | 
						|
    configurable: true, | 
						|
    enumerable: false, | 
						|
    writable: true, | 
						|
    value: val | 
						|
  }); | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/nanomatch/node_modules/extend-shallow/index.js": | 
						|
/*!*********************************************************************!*\ | 
						|
  !*** ./node_modules/nanomatch/node_modules/extend-shallow/index.js ***! | 
						|
  \*********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var isExtendable = __webpack_require__(/*! is-extendable */ "./node_modules/nanomatch/node_modules/is-extendable/index.js"); | 
						|
 | 
						|
var assignSymbols = __webpack_require__(/*! assign-symbols */ "./node_modules/assign-symbols/index.js"); | 
						|
 | 
						|
module.exports = Object.assign || function (obj | 
						|
/*, objects*/ | 
						|
) { | 
						|
  if (obj === null || typeof obj === 'undefined') { | 
						|
    throw new TypeError('Cannot convert undefined or null to object'); | 
						|
  } | 
						|
 | 
						|
  if (!isObject(obj)) { | 
						|
    obj = {}; | 
						|
  } | 
						|
 | 
						|
  for (var i = 1; i < arguments.length; i++) { | 
						|
    var val = arguments[i]; | 
						|
 | 
						|
    if (isString(val)) { | 
						|
      val = toObject(val); | 
						|
    } | 
						|
 | 
						|
    if (isObject(val)) { | 
						|
      assign(obj, val); | 
						|
      assignSymbols(obj, val); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
function assign(a, b) { | 
						|
  for (var key in b) { | 
						|
    if (hasOwn(b, key)) { | 
						|
      a[key] = b[key]; | 
						|
    } | 
						|
  } | 
						|
} | 
						|
 | 
						|
function isString(val) { | 
						|
  return val && typeof val === 'string'; | 
						|
} | 
						|
 | 
						|
function toObject(str) { | 
						|
  var obj = {}; | 
						|
 | 
						|
  for (var i in str) { | 
						|
    obj[i] = str[i]; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
} | 
						|
 | 
						|
function isObject(val) { | 
						|
  return val && _typeof(val) === 'object' || isExtendable(val); | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given `key` is an own property of `obj`. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function hasOwn(obj, key) { | 
						|
  return Object.prototype.hasOwnProperty.call(obj, key); | 
						|
} | 
						|
 | 
						|
function isEnum(obj, key) { | 
						|
  return Object.prototype.propertyIsEnumerable.call(obj, key); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/nanomatch/node_modules/is-extendable/index.js": | 
						|
/*!********************************************************************!*\ | 
						|
  !*** ./node_modules/nanomatch/node_modules/is-extendable/index.js ***! | 
						|
  \********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-extendable <https://github.com/jonschlinkert/is-extendable> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isPlainObject = __webpack_require__(/*! is-plain-object */ "./node_modules/is-plain-object/index.js"); | 
						|
 | 
						|
module.exports = function isExtendable(val) { | 
						|
  return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/nanomatch/node_modules/kind-of/index.js": | 
						|
/*!**************************************************************!*\ | 
						|
  !*** ./node_modules/nanomatch/node_modules/kind-of/index.js ***! | 
						|
  \**************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var toString = Object.prototype.toString; | 
						|
 | 
						|
module.exports = function kindOf(val) { | 
						|
  if (val === void 0) return 'undefined'; | 
						|
  if (val === null) return 'null'; | 
						|
 | 
						|
  var type = _typeof(val); | 
						|
 | 
						|
  if (type === 'boolean') return 'boolean'; | 
						|
  if (type === 'string') return 'string'; | 
						|
  if (type === 'number') return 'number'; | 
						|
  if (type === 'symbol') return 'symbol'; | 
						|
 | 
						|
  if (type === 'function') { | 
						|
    return isGeneratorFn(val) ? 'generatorfunction' : 'function'; | 
						|
  } | 
						|
 | 
						|
  if (isArray(val)) return 'array'; | 
						|
  if (isBuffer(val)) return 'buffer'; | 
						|
  if (isArguments(val)) return 'arguments'; | 
						|
  if (isDate(val)) return 'date'; | 
						|
  if (isError(val)) return 'error'; | 
						|
  if (isRegexp(val)) return 'regexp'; | 
						|
 | 
						|
  switch (ctorName(val)) { | 
						|
    case 'Symbol': | 
						|
      return 'symbol'; | 
						|
 | 
						|
    case 'Promise': | 
						|
      return 'promise'; | 
						|
    // Set, Map, WeakSet, WeakMap | 
						|
 | 
						|
    case 'WeakMap': | 
						|
      return 'weakmap'; | 
						|
 | 
						|
    case 'WeakSet': | 
						|
      return 'weakset'; | 
						|
 | 
						|
    case 'Map': | 
						|
      return 'map'; | 
						|
 | 
						|
    case 'Set': | 
						|
      return 'set'; | 
						|
    // 8-bit typed arrays | 
						|
 | 
						|
    case 'Int8Array': | 
						|
      return 'int8array'; | 
						|
 | 
						|
    case 'Uint8Array': | 
						|
      return 'uint8array'; | 
						|
 | 
						|
    case 'Uint8ClampedArray': | 
						|
      return 'uint8clampedarray'; | 
						|
    // 16-bit typed arrays | 
						|
 | 
						|
    case 'Int16Array': | 
						|
      return 'int16array'; | 
						|
 | 
						|
    case 'Uint16Array': | 
						|
      return 'uint16array'; | 
						|
    // 32-bit typed arrays | 
						|
 | 
						|
    case 'Int32Array': | 
						|
      return 'int32array'; | 
						|
 | 
						|
    case 'Uint32Array': | 
						|
      return 'uint32array'; | 
						|
 | 
						|
    case 'Float32Array': | 
						|
      return 'float32array'; | 
						|
 | 
						|
    case 'Float64Array': | 
						|
      return 'float64array'; | 
						|
  } | 
						|
 | 
						|
  if (isGeneratorObj(val)) { | 
						|
    return 'generator'; | 
						|
  } // Non-plain objects | 
						|
 | 
						|
 | 
						|
  type = toString.call(val); | 
						|
 | 
						|
  switch (type) { | 
						|
    case '[object Object]': | 
						|
      return 'object'; | 
						|
    // iterators | 
						|
 | 
						|
    case '[object Map Iterator]': | 
						|
      return 'mapiterator'; | 
						|
 | 
						|
    case '[object Set Iterator]': | 
						|
      return 'setiterator'; | 
						|
 | 
						|
    case '[object String Iterator]': | 
						|
      return 'stringiterator'; | 
						|
 | 
						|
    case '[object Array Iterator]': | 
						|
      return 'arrayiterator'; | 
						|
  } // other | 
						|
 | 
						|
 | 
						|
  return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); | 
						|
}; | 
						|
 | 
						|
function ctorName(val) { | 
						|
  return val.constructor ? val.constructor.name : null; | 
						|
} | 
						|
 | 
						|
function isArray(val) { | 
						|
  if (Array.isArray) return Array.isArray(val); | 
						|
  return val instanceof Array; | 
						|
} | 
						|
 | 
						|
function isError(val) { | 
						|
  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'; | 
						|
} | 
						|
 | 
						|
function isDate(val) { | 
						|
  if (val instanceof Date) return true; | 
						|
  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function'; | 
						|
} | 
						|
 | 
						|
function isRegexp(val) { | 
						|
  if (val instanceof RegExp) return true; | 
						|
  return typeof val.flags === 'string' && typeof val.ignoreCase === 'boolean' && typeof val.multiline === 'boolean' && typeof val.global === 'boolean'; | 
						|
} | 
						|
 | 
						|
function isGeneratorFn(name, val) { | 
						|
  return ctorName(name) === 'GeneratorFunction'; | 
						|
} | 
						|
 | 
						|
function isGeneratorObj(val) { | 
						|
  return typeof val.throw === 'function' && typeof val.return === 'function' && typeof val.next === 'function'; | 
						|
} | 
						|
 | 
						|
function isArguments(val) { | 
						|
  try { | 
						|
    if (typeof val.length === 'number' && typeof val.callee === 'function') { | 
						|
      return true; | 
						|
    } | 
						|
  } catch (err) { | 
						|
    if (err.message.indexOf('callee') !== -1) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
/** | 
						|
 * If you need to support Safari 5-7 (8-10 yr-old browser), | 
						|
 * take a look at https://github.com/feross/is-buffer | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isBuffer(val) { | 
						|
  if (val.constructor && typeof val.constructor.isBuffer === 'function') { | 
						|
    return val.constructor.isBuffer(val); | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/node-libs-browser/mock/empty.js": | 
						|
/*!******************************************************!*\ | 
						|
  !*** ./node_modules/node-libs-browser/mock/empty.js ***! | 
						|
  \******************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/object-copy/index.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/object-copy/index.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var typeOf = __webpack_require__(/*! kind-of */ "./node_modules/kind-of/index.js"); | 
						|
 | 
						|
var copyDescriptor = __webpack_require__(/*! copy-descriptor */ "./node_modules/copy-descriptor/index.js"); | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/define-property/index.js"); | 
						|
/** | 
						|
 * Copy static properties, prototype properties, and descriptors from one object to another. | 
						|
 * | 
						|
 * ```js | 
						|
 * function App() {} | 
						|
 * var proto = App.prototype; | 
						|
 * App.prototype.set = function() {}; | 
						|
 * App.prototype.get = function() {}; | 
						|
 * | 
						|
 * var obj = {}; | 
						|
 * copy(obj, proto); | 
						|
 * ``` | 
						|
 * @param {Object} `receiver` | 
						|
 * @param {Object} `provider` | 
						|
 * @param {String|Array} `omit` One or more properties to omit | 
						|
 * @return {Object} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function copy(receiver, provider, omit) { | 
						|
  if (!isObject(receiver)) { | 
						|
    throw new TypeError('expected receiving object to be an object.'); | 
						|
  } | 
						|
 | 
						|
  if (!isObject(provider)) { | 
						|
    throw new TypeError('expected providing object to be an object.'); | 
						|
  } | 
						|
 | 
						|
  var props = nativeKeys(provider); | 
						|
  var keys = Object.keys(provider); | 
						|
  var len = props.length; | 
						|
  omit = arrayify(omit); | 
						|
 | 
						|
  while (len--) { | 
						|
    var key = props[len]; | 
						|
 | 
						|
    if (has(keys, key)) { | 
						|
      define(receiver, key, provider[key]); | 
						|
    } else if (!(key in receiver) && !has(omit, key)) { | 
						|
      copyDescriptor(receiver, provider, key); | 
						|
    } | 
						|
  } | 
						|
} | 
						|
 | 
						|
; | 
						|
/** | 
						|
 * Return true if the given value is an object or function | 
						|
 */ | 
						|
 | 
						|
function isObject(val) { | 
						|
  return typeOf(val) === 'object' || typeof val === 'function'; | 
						|
} | 
						|
/** | 
						|
 * Returns true if an array has any of the given elements, or an | 
						|
 * object has any of the give keys. | 
						|
 * | 
						|
 * ```js | 
						|
 * has(['a', 'b', 'c'], 'c'); | 
						|
 * //=> true | 
						|
 * | 
						|
 * has(['a', 'b', 'c'], ['c', 'z']); | 
						|
 * //=> true | 
						|
 * | 
						|
 * has({a: 'b', c: 'd'}, ['c', 'z']); | 
						|
 * //=> true | 
						|
 * ``` | 
						|
 * @param {Object} `obj` | 
						|
 * @param {String|Array} `val` | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function has(obj, val) { | 
						|
  val = arrayify(val); | 
						|
  var len = val.length; | 
						|
 | 
						|
  if (isObject(obj)) { | 
						|
    for (var key in obj) { | 
						|
      if (val.indexOf(key) > -1) { | 
						|
        return true; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    var keys = nativeKeys(obj); | 
						|
    return has(keys, val); | 
						|
  } | 
						|
 | 
						|
  if (Array.isArray(obj)) { | 
						|
    var arr = obj; | 
						|
 | 
						|
    while (len--) { | 
						|
      if (arr.indexOf(val[len]) > -1) { | 
						|
        return true; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  throw new TypeError('expected an array or object.'); | 
						|
} | 
						|
/** | 
						|
 * Cast the given value to an array. | 
						|
 * | 
						|
 * ```js | 
						|
 * arrayify('foo'); | 
						|
 * //=> ['foo'] | 
						|
 * | 
						|
 * arrayify(['foo']); | 
						|
 * //=> ['foo'] | 
						|
 * ``` | 
						|
 * | 
						|
 * @param {String|Array} `val` | 
						|
 * @return {Array} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function arrayify(val) { | 
						|
  return val ? Array.isArray(val) ? val : [val] : []; | 
						|
} | 
						|
/** | 
						|
 * Returns true if a value has a `contructor` | 
						|
 * | 
						|
 * ```js | 
						|
 * hasConstructor({}); | 
						|
 * //=> true | 
						|
 * | 
						|
 * hasConstructor(Object.create(null)); | 
						|
 * //=> false | 
						|
 * ``` | 
						|
 * @param  {Object} `value` | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function hasConstructor(val) { | 
						|
  return isObject(val) && typeof val.constructor !== 'undefined'; | 
						|
} | 
						|
/** | 
						|
 * Get the native `ownPropertyNames` from the constructor of the | 
						|
 * given `object`. An empty array is returned if the object does | 
						|
 * not have a constructor. | 
						|
 * | 
						|
 * ```js | 
						|
 * nativeKeys({a: 'b', b: 'c', c: 'd'}) | 
						|
 * //=> ['a', 'b', 'c'] | 
						|
 * | 
						|
 * nativeKeys(function(){}) | 
						|
 * //=> ['length', 'caller'] | 
						|
 * ``` | 
						|
 * | 
						|
 * @param  {Object} `obj` Object that has a `constructor`. | 
						|
 * @return {Array} Array of keys. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function nativeKeys(val) { | 
						|
  if (!hasConstructor(val)) return []; | 
						|
  return Object.getOwnPropertyNames(val); | 
						|
} | 
						|
/** | 
						|
 * Expose `copy` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = copy; | 
						|
/** | 
						|
 * Expose `copy.has` for tests | 
						|
 */ | 
						|
 | 
						|
module.exports.has = has; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/object-visit/index.js": | 
						|
/*!********************************************!*\ | 
						|
  !*** ./node_modules/object-visit/index.js ***! | 
						|
  \********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * object-visit <https://github.com/jonschlinkert/object-visit> | 
						|
 * | 
						|
 * Copyright (c) 2015, 2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isObject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
 | 
						|
module.exports = function visit(thisArg, method, target, val) { | 
						|
  if (!isObject(thisArg) && typeof thisArg !== 'function') { | 
						|
    throw new Error('object-visit expects `thisArg` to be an object.'); | 
						|
  } | 
						|
 | 
						|
  if (typeof method !== 'string') { | 
						|
    throw new Error('object-visit expects `method` name to be a string'); | 
						|
  } | 
						|
 | 
						|
  if (typeof thisArg[method] !== 'function') { | 
						|
    return thisArg; | 
						|
  } | 
						|
 | 
						|
  var args = [].slice.call(arguments, 3); | 
						|
  target = target || {}; | 
						|
 | 
						|
  for (var key in target) { | 
						|
    var arr = [key, target[key]].concat(args); | 
						|
    thisArg[method].apply(thisArg, arr); | 
						|
  } | 
						|
 | 
						|
  return thisArg; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/object.pick/index.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/object.pick/index.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * object.pick <https://github.com/jonschlinkert/object.pick> | 
						|
 * | 
						|
 * Copyright (c) 2014-2015 Jon Schlinkert, contributors. | 
						|
 * Licensed under the MIT License | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isObject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
 | 
						|
module.exports = function pick(obj, keys) { | 
						|
  if (!isObject(obj) && typeof obj !== 'function') { | 
						|
    return {}; | 
						|
  } | 
						|
 | 
						|
  var res = {}; | 
						|
 | 
						|
  if (typeof keys === 'string') { | 
						|
    if (keys in obj) { | 
						|
      res[keys] = obj[keys]; | 
						|
    } | 
						|
 | 
						|
    return res; | 
						|
  } | 
						|
 | 
						|
  var len = keys.length; | 
						|
  var idx = -1; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var key = keys[idx]; | 
						|
 | 
						|
    if (key in obj) { | 
						|
      res[key] = obj[key]; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return res; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/pascalcase/index.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/pascalcase/index.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/*! | 
						|
 * pascalcase <https://github.com/jonschlinkert/pascalcase> | 
						|
 * | 
						|
 * Copyright (c) 2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
function pascalcase(str) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string.'); | 
						|
  } | 
						|
 | 
						|
  str = str.replace(/([A-Z])/g, ' $1'); | 
						|
 | 
						|
  if (str.length === 1) { | 
						|
    return str.toUpperCase(); | 
						|
  } | 
						|
 | 
						|
  str = str.replace(/^[\W_]+|[\W_]+$/g, '').toLowerCase(); | 
						|
  str = str.charAt(0).toUpperCase() + str.slice(1); | 
						|
  return str.replace(/[\W_]+(\w|$)/g, function (_, ch) { | 
						|
    return ch.toUpperCase(); | 
						|
  }); | 
						|
} | 
						|
 | 
						|
module.exports = pascalcase; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/path-browserify/index.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./node_modules/path-browserify/index.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(process) { | 
						|
 | 
						|
// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1, | 
						|
// backported and transplited with Babel, with backwards-compat fixes | 
						|
// 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. | 
						|
// 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--; | 
						|
    } | 
						|
  } // if the path is allowed to go above the root, restore leading ..s | 
						|
 | 
						|
 | 
						|
  if (allowAboveRoot) { | 
						|
    for (; up--; up) { | 
						|
      parts.unshift('..'); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return parts; | 
						|
} // 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(); // Skip empty and invalid entries | 
						|
 | 
						|
    if (typeof path !== 'string') { | 
						|
      throw new TypeError('Arguments to path.resolve must be strings'); | 
						|
    } else if (!path) { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    resolvedPath = path + '/' + resolvedPath; | 
						|
    resolvedAbsolute = path.charAt(0) === '/'; | 
						|
  } // 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) | 
						|
  // Normalize the path | 
						|
 | 
						|
 | 
						|
  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function (p) { | 
						|
    return !!p; | 
						|
  }), !resolvedAbsolute).join('/'); | 
						|
  return (resolvedAbsolute ? '/' : '') + resolvedPath || '.'; | 
						|
}; // path.normalize(path) | 
						|
// posix version | 
						|
 | 
						|
 | 
						|
exports.normalize = function (path) { | 
						|
  var isAbsolute = exports.isAbsolute(path), | 
						|
      trailingSlash = substr(path, -1) === '/'; // Normalize the path | 
						|
 | 
						|
  path = normalizeArray(filter(path.split('/'), function (p) { | 
						|
    return !!p; | 
						|
  }), !isAbsolute).join('/'); | 
						|
 | 
						|
  if (!path && !isAbsolute) { | 
						|
    path = '.'; | 
						|
  } | 
						|
 | 
						|
  if (path && trailingSlash) { | 
						|
    path += '/'; | 
						|
  } | 
						|
 | 
						|
  return (isAbsolute ? '/' : '') + path; | 
						|
}; // posix version | 
						|
 | 
						|
 | 
						|
exports.isAbsolute = function (path) { | 
						|
  return path.charAt(0) === '/'; | 
						|
}; // 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('/')); | 
						|
}; // path.relative(from, to) | 
						|
// posix version | 
						|
 | 
						|
 | 
						|
exports.relative = function (from, to) { | 
						|
  from = exports.resolve(from).substr(1); | 
						|
  to = exports.resolve(to).substr(1); | 
						|
 | 
						|
  function trim(arr) { | 
						|
    var start = 0; | 
						|
 | 
						|
    for (; start < arr.length; start++) { | 
						|
      if (arr[start] !== '') break; | 
						|
    } | 
						|
 | 
						|
    var end = arr.length - 1; | 
						|
 | 
						|
    for (; end >= 0; end--) { | 
						|
      if (arr[end] !== '') break; | 
						|
    } | 
						|
 | 
						|
    if (start > end) return []; | 
						|
    return arr.slice(start, end - start + 1); | 
						|
  } | 
						|
 | 
						|
  var fromParts = trim(from.split('/')); | 
						|
  var toParts = trim(to.split('/')); | 
						|
  var length = Math.min(fromParts.length, toParts.length); | 
						|
  var samePartsLength = length; | 
						|
 | 
						|
  for (var i = 0; i < length; i++) { | 
						|
    if (fromParts[i] !== toParts[i]) { | 
						|
      samePartsLength = i; | 
						|
      break; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var outputParts = []; | 
						|
 | 
						|
  for (var i = samePartsLength; i < fromParts.length; i++) { | 
						|
    outputParts.push('..'); | 
						|
  } | 
						|
 | 
						|
  outputParts = outputParts.concat(toParts.slice(samePartsLength)); | 
						|
  return outputParts.join('/'); | 
						|
}; | 
						|
 | 
						|
exports.sep = '/'; | 
						|
exports.delimiter = ':'; | 
						|
 | 
						|
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; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (end === -1) return hasRoot ? '/' : '.'; | 
						|
 | 
						|
  if (hasRoot && end === 1) { | 
						|
    // return '//'; | 
						|
    // Backwards-compat fix: | 
						|
    return '/'; | 
						|
  } | 
						|
 | 
						|
  return path.slice(0, end); | 
						|
}; | 
						|
 | 
						|
function basename(path) { | 
						|
  if (typeof path !== 'string') path = path + ''; | 
						|
  var start = 0; | 
						|
  var end = -1; | 
						|
  var matchedSlash = true; | 
						|
  var i; | 
						|
 | 
						|
  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 (end === -1) return ''; | 
						|
  return path.slice(start, end); | 
						|
} // 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; | 
						|
}; | 
						|
 | 
						|
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; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  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); | 
						|
}; | 
						|
 | 
						|
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; | 
						|
} // 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); | 
						|
}; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ "./node_modules/process/browser.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/posix-character-classes/index.js": | 
						|
/*!*******************************************************!*\ | 
						|
  !*** ./node_modules/posix-character-classes/index.js ***! | 
						|
  \*******************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
/** | 
						|
 * POSIX character classes | 
						|
 */ | 
						|
 | 
						|
module.exports = { | 
						|
  alnum: 'a-zA-Z0-9', | 
						|
  alpha: 'a-zA-Z', | 
						|
  ascii: '\\x00-\\x7F', | 
						|
  blank: ' \\t', | 
						|
  cntrl: '\\x00-\\x1F\\x7F', | 
						|
  digit: '0-9', | 
						|
  graph: '\\x21-\\x7E', | 
						|
  lower: 'a-z', | 
						|
  print: '\\x20-\\x7E ', | 
						|
  punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', | 
						|
  space: ' \\t\\r\\n\\v\\f', | 
						|
  upper: 'A-Z', | 
						|
  word: 'A-Za-z0-9_', | 
						|
  xdigit: 'A-Fa-f0-9' | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/process/browser.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/process/browser.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
// 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. | 
						|
 | 
						|
var cachedSetTimeout; | 
						|
var cachedClearTimeout; | 
						|
 | 
						|
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); | 
						|
    } | 
						|
  } | 
						|
} | 
						|
 | 
						|
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); | 
						|
    } | 
						|
  } | 
						|
} | 
						|
 | 
						|
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 drainQueue() { | 
						|
  if (draining) { | 
						|
    return; | 
						|
  } | 
						|
 | 
						|
  var timeout = runTimeout(cleanUpNextTick); | 
						|
  draining = true; | 
						|
  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); | 
						|
} | 
						|
 | 
						|
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); | 
						|
  } | 
						|
}; // 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 = {}; | 
						|
 | 
						|
function noop() {} | 
						|
 | 
						|
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; | 
						|
 | 
						|
process.listeners = function (name) { | 
						|
  return []; | 
						|
}; | 
						|
 | 
						|
process.binding = function (name) { | 
						|
  throw new Error('process.binding is not supported'); | 
						|
}; | 
						|
 | 
						|
process.cwd = function () { | 
						|
  return '/'; | 
						|
}; | 
						|
 | 
						|
process.chdir = function (dir) { | 
						|
  throw new Error('process.chdir is not supported'); | 
						|
}; | 
						|
 | 
						|
process.umask = function () { | 
						|
  return 0; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/react-is/cjs/react-is.development.js": | 
						|
/*!***********************************************************!*\ | 
						|
  !*** ./node_modules/react-is/cjs/react-is.development.js ***! | 
						|
  \***********************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/** @license React v16.8.6 | 
						|
 * react-is.development.js | 
						|
 * | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
if (true) { | 
						|
  (function () { | 
						|
    'use strict'; | 
						|
 | 
						|
    Object.defineProperty(exports, '__esModule', { | 
						|
      value: true | 
						|
    }); // The Symbol used to tag the ReactElement-like types. If there is no native Symbol | 
						|
    // nor polyfill, then a plain number is used for performance. | 
						|
 | 
						|
    var hasSymbol = typeof Symbol === 'function' && Symbol.for; | 
						|
    var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; | 
						|
    var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; | 
						|
    var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; | 
						|
    var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; | 
						|
    var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; | 
						|
    var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; | 
						|
    var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; | 
						|
    var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; | 
						|
    var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; | 
						|
    var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; | 
						|
    var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; | 
						|
    var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; | 
						|
    var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; | 
						|
 | 
						|
    function isValidElementType(type) { | 
						|
      return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. | 
						|
      type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || _typeof(type) === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE); | 
						|
    } | 
						|
    /** | 
						|
     * Forked from fbjs/warning: | 
						|
     * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js | 
						|
     * | 
						|
     * Only change is we use console.warn instead of console.error, | 
						|
     * and do nothing when 'console' is not supported. | 
						|
     * This really simplifies the code. | 
						|
     * --- | 
						|
     * Similar to invariant but only logs a warning if the condition is not met. | 
						|
     * This can be used to log issues in development environments in critical | 
						|
     * paths. Removing the logging code for production environments will keep the | 
						|
     * same logic and follow the same code paths. | 
						|
     */ | 
						|
 | 
						|
 | 
						|
    var lowPriorityWarning = function lowPriorityWarning() {}; | 
						|
 | 
						|
    { | 
						|
      var printWarning = function printWarning(format) { | 
						|
        for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | 
						|
          args[_key - 1] = arguments[_key]; | 
						|
        } | 
						|
 | 
						|
        var argIndex = 0; | 
						|
        var message = 'Warning: ' + format.replace(/%s/g, function () { | 
						|
          return args[argIndex++]; | 
						|
        }); | 
						|
 | 
						|
        if (typeof console !== 'undefined') { | 
						|
          console.warn(message); | 
						|
        } | 
						|
 | 
						|
        try { | 
						|
          // --- Welcome to debugging React --- | 
						|
          // This error was thrown as a convenience so that you can use this stack | 
						|
          // to find the callsite that caused this warning to fire. | 
						|
          throw new Error(message); | 
						|
        } catch (x) {} | 
						|
      }; | 
						|
 | 
						|
      lowPriorityWarning = function lowPriorityWarning(condition, format) { | 
						|
        if (format === undefined) { | 
						|
          throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument'); | 
						|
        } | 
						|
 | 
						|
        if (!condition) { | 
						|
          for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { | 
						|
            args[_key2 - 2] = arguments[_key2]; | 
						|
          } | 
						|
 | 
						|
          printWarning.apply(undefined, [format].concat(args)); | 
						|
        } | 
						|
      }; | 
						|
    } | 
						|
    var lowPriorityWarning$1 = lowPriorityWarning; | 
						|
 | 
						|
    function typeOf(object) { | 
						|
      if (_typeof(object) === 'object' && object !== null) { | 
						|
        var $$typeof = object.$$typeof; | 
						|
 | 
						|
        switch ($$typeof) { | 
						|
          case REACT_ELEMENT_TYPE: | 
						|
            var type = object.type; | 
						|
 | 
						|
            switch (type) { | 
						|
              case REACT_ASYNC_MODE_TYPE: | 
						|
              case REACT_CONCURRENT_MODE_TYPE: | 
						|
              case REACT_FRAGMENT_TYPE: | 
						|
              case REACT_PROFILER_TYPE: | 
						|
              case REACT_STRICT_MODE_TYPE: | 
						|
              case REACT_SUSPENSE_TYPE: | 
						|
                return type; | 
						|
 | 
						|
              default: | 
						|
                var $$typeofType = type && type.$$typeof; | 
						|
 | 
						|
                switch ($$typeofType) { | 
						|
                  case REACT_CONTEXT_TYPE: | 
						|
                  case REACT_FORWARD_REF_TYPE: | 
						|
                  case REACT_PROVIDER_TYPE: | 
						|
                    return $$typeofType; | 
						|
 | 
						|
                  default: | 
						|
                    return $$typeof; | 
						|
                } | 
						|
 | 
						|
            } | 
						|
 | 
						|
          case REACT_LAZY_TYPE: | 
						|
          case REACT_MEMO_TYPE: | 
						|
          case REACT_PORTAL_TYPE: | 
						|
            return $$typeof; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      return undefined; | 
						|
    } // AsyncMode is deprecated along with isAsyncMode | 
						|
 | 
						|
 | 
						|
    var AsyncMode = REACT_ASYNC_MODE_TYPE; | 
						|
    var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; | 
						|
    var ContextConsumer = REACT_CONTEXT_TYPE; | 
						|
    var ContextProvider = REACT_PROVIDER_TYPE; | 
						|
    var Element = REACT_ELEMENT_TYPE; | 
						|
    var ForwardRef = REACT_FORWARD_REF_TYPE; | 
						|
    var Fragment = REACT_FRAGMENT_TYPE; | 
						|
    var Lazy = REACT_LAZY_TYPE; | 
						|
    var Memo = REACT_MEMO_TYPE; | 
						|
    var Portal = REACT_PORTAL_TYPE; | 
						|
    var Profiler = REACT_PROFILER_TYPE; | 
						|
    var StrictMode = REACT_STRICT_MODE_TYPE; | 
						|
    var Suspense = REACT_SUSPENSE_TYPE; | 
						|
    var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated | 
						|
 | 
						|
    function isAsyncMode(object) { | 
						|
      { | 
						|
        if (!hasWarnedAboutDeprecatedIsAsyncMode) { | 
						|
          hasWarnedAboutDeprecatedIsAsyncMode = true; | 
						|
          lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); | 
						|
        } | 
						|
      } | 
						|
      return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isConcurrentMode(object) { | 
						|
      return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isContextConsumer(object) { | 
						|
      return typeOf(object) === REACT_CONTEXT_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isContextProvider(object) { | 
						|
      return typeOf(object) === REACT_PROVIDER_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isElement(object) { | 
						|
      return _typeof(object) === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isForwardRef(object) { | 
						|
      return typeOf(object) === REACT_FORWARD_REF_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isFragment(object) { | 
						|
      return typeOf(object) === REACT_FRAGMENT_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isLazy(object) { | 
						|
      return typeOf(object) === REACT_LAZY_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isMemo(object) { | 
						|
      return typeOf(object) === REACT_MEMO_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isPortal(object) { | 
						|
      return typeOf(object) === REACT_PORTAL_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isProfiler(object) { | 
						|
      return typeOf(object) === REACT_PROFILER_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isStrictMode(object) { | 
						|
      return typeOf(object) === REACT_STRICT_MODE_TYPE; | 
						|
    } | 
						|
 | 
						|
    function isSuspense(object) { | 
						|
      return typeOf(object) === REACT_SUSPENSE_TYPE; | 
						|
    } | 
						|
 | 
						|
    exports.typeOf = typeOf; | 
						|
    exports.AsyncMode = AsyncMode; | 
						|
    exports.ConcurrentMode = ConcurrentMode; | 
						|
    exports.ContextConsumer = ContextConsumer; | 
						|
    exports.ContextProvider = ContextProvider; | 
						|
    exports.Element = Element; | 
						|
    exports.ForwardRef = ForwardRef; | 
						|
    exports.Fragment = Fragment; | 
						|
    exports.Lazy = Lazy; | 
						|
    exports.Memo = Memo; | 
						|
    exports.Portal = Portal; | 
						|
    exports.Profiler = Profiler; | 
						|
    exports.StrictMode = StrictMode; | 
						|
    exports.Suspense = Suspense; | 
						|
    exports.isValidElementType = isValidElementType; | 
						|
    exports.isAsyncMode = isAsyncMode; | 
						|
    exports.isConcurrentMode = isConcurrentMode; | 
						|
    exports.isContextConsumer = isContextConsumer; | 
						|
    exports.isContextProvider = isContextProvider; | 
						|
    exports.isElement = isElement; | 
						|
    exports.isForwardRef = isForwardRef; | 
						|
    exports.isFragment = isFragment; | 
						|
    exports.isLazy = isLazy; | 
						|
    exports.isMemo = isMemo; | 
						|
    exports.isPortal = isPortal; | 
						|
    exports.isProfiler = isProfiler; | 
						|
    exports.isStrictMode = isStrictMode; | 
						|
    exports.isSuspense = isSuspense; | 
						|
  })(); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/react-is/index.js": | 
						|
/*!****************************************!*\ | 
						|
  !*** ./node_modules/react-is/index.js ***! | 
						|
  \****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
if (false) {} else { | 
						|
  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "./node_modules/react-is/cjs/react-is.development.js"); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/regex-not/index.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/regex-not/index.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/regex-not/node_modules/extend-shallow/index.js"); | 
						|
 | 
						|
var safe = __webpack_require__(/*! safe-regex */ "./node_modules/safe-regex/index.js"); | 
						|
/** | 
						|
 * The main export is a function that takes a `pattern` string and an `options` object. | 
						|
 * | 
						|
 * ```js | 
						|
 & var not = require('regex-not'); | 
						|
 & console.log(not('foo')); | 
						|
 & //=> /^(?:(?!^(?:foo)$).)*$/ | 
						|
 * ``` | 
						|
 * | 
						|
 * @param {String} `pattern` | 
						|
 * @param {Object} `options` | 
						|
 * @return {RegExp} Converts the given `pattern` to a regex using the specified `options`. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function toRegex(pattern, options) { | 
						|
  return new RegExp(toRegex.create(pattern, options)); | 
						|
} | 
						|
/** | 
						|
 * Create a regex-compatible string from the given `pattern` and `options`. | 
						|
 * | 
						|
 * ```js | 
						|
 & var not = require('regex-not'); | 
						|
 & console.log(not.create('foo')); | 
						|
 & //=> '^(?:(?!^(?:foo)$).)*$' | 
						|
 * ``` | 
						|
 * @param {String} `pattern` | 
						|
 * @param {Object} `options` | 
						|
 * @return {String} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
toRegex.create = function (pattern, options) { | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected a string'); | 
						|
  } | 
						|
 | 
						|
  var opts = extend({}, options); | 
						|
 | 
						|
  if (opts.contains === true) { | 
						|
    opts.strictNegate = false; | 
						|
  } | 
						|
 | 
						|
  var open = opts.strictOpen !== false ? '^' : ''; | 
						|
  var close = opts.strictClose !== false ? '$' : ''; | 
						|
  var endChar = opts.endChar ? opts.endChar : '+'; | 
						|
  var str = pattern; | 
						|
 | 
						|
  if (opts.strictNegate === false) { | 
						|
    str = '(?:(?!(?:' + pattern + ')).)' + endChar; | 
						|
  } else { | 
						|
    str = '(?:(?!^(?:' + pattern + ')$).)' + endChar; | 
						|
  } | 
						|
 | 
						|
  var res = open + str + close; | 
						|
 | 
						|
  if (opts.safe === true && safe(res) === false) { | 
						|
    throw new Error('potentially unsafe regular expression: ' + res); | 
						|
  } | 
						|
 | 
						|
  return res; | 
						|
}; | 
						|
/** | 
						|
 * Expose `toRegex` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = toRegex; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/regex-not/node_modules/extend-shallow/index.js": | 
						|
/*!*********************************************************************!*\ | 
						|
  !*** ./node_modules/regex-not/node_modules/extend-shallow/index.js ***! | 
						|
  \*********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var isExtendable = __webpack_require__(/*! is-extendable */ "./node_modules/regex-not/node_modules/is-extendable/index.js"); | 
						|
 | 
						|
var assignSymbols = __webpack_require__(/*! assign-symbols */ "./node_modules/assign-symbols/index.js"); | 
						|
 | 
						|
module.exports = Object.assign || function (obj | 
						|
/*, objects*/ | 
						|
) { | 
						|
  if (obj === null || typeof obj === 'undefined') { | 
						|
    throw new TypeError('Cannot convert undefined or null to object'); | 
						|
  } | 
						|
 | 
						|
  if (!isObject(obj)) { | 
						|
    obj = {}; | 
						|
  } | 
						|
 | 
						|
  for (var i = 1; i < arguments.length; i++) { | 
						|
    var val = arguments[i]; | 
						|
 | 
						|
    if (isString(val)) { | 
						|
      val = toObject(val); | 
						|
    } | 
						|
 | 
						|
    if (isObject(val)) { | 
						|
      assign(obj, val); | 
						|
      assignSymbols(obj, val); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
function assign(a, b) { | 
						|
  for (var key in b) { | 
						|
    if (hasOwn(b, key)) { | 
						|
      a[key] = b[key]; | 
						|
    } | 
						|
  } | 
						|
} | 
						|
 | 
						|
function isString(val) { | 
						|
  return val && typeof val === 'string'; | 
						|
} | 
						|
 | 
						|
function toObject(str) { | 
						|
  var obj = {}; | 
						|
 | 
						|
  for (var i in str) { | 
						|
    obj[i] = str[i]; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
} | 
						|
 | 
						|
function isObject(val) { | 
						|
  return val && _typeof(val) === 'object' || isExtendable(val); | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given `key` is an own property of `obj`. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function hasOwn(obj, key) { | 
						|
  return Object.prototype.hasOwnProperty.call(obj, key); | 
						|
} | 
						|
 | 
						|
function isEnum(obj, key) { | 
						|
  return Object.prototype.propertyIsEnumerable.call(obj, key); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/regex-not/node_modules/is-extendable/index.js": | 
						|
/*!********************************************************************!*\ | 
						|
  !*** ./node_modules/regex-not/node_modules/is-extendable/index.js ***! | 
						|
  \********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-extendable <https://github.com/jonschlinkert/is-extendable> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isPlainObject = __webpack_require__(/*! is-plain-object */ "./node_modules/is-plain-object/index.js"); | 
						|
 | 
						|
module.exports = function isExtendable(val) { | 
						|
  return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/repeat-element/index.js": | 
						|
/*!**********************************************!*\ | 
						|
  !*** ./node_modules/repeat-element/index.js ***! | 
						|
  \**********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * repeat-element <https://github.com/jonschlinkert/repeat-element> | 
						|
 * | 
						|
 * Copyright (c) 2015-present, Jon Schlinkert. | 
						|
 * Licensed under the MIT license. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function repeat(ele, num) { | 
						|
  var arr = new Array(num); | 
						|
 | 
						|
  for (var i = 0; i < num; i++) { | 
						|
    arr[i] = ele; | 
						|
  } | 
						|
 | 
						|
  return arr; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/repeat-string/index.js": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./node_modules/repeat-string/index.js ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * repeat-string <https://github.com/jonschlinkert/repeat-string> | 
						|
 * | 
						|
 * Copyright (c) 2014-2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
/** | 
						|
 * Results cache | 
						|
 */ | 
						|
 | 
						|
var res = ''; | 
						|
var cache; | 
						|
/** | 
						|
 * Expose `repeat` | 
						|
 */ | 
						|
 | 
						|
module.exports = repeat; | 
						|
/** | 
						|
 * Repeat the given `string` the specified `number` | 
						|
 * of times. | 
						|
 * | 
						|
 * **Example:** | 
						|
 * | 
						|
 * ```js | 
						|
 * var repeat = require('repeat-string'); | 
						|
 * repeat('A', 5); | 
						|
 * //=> AAAAA | 
						|
 * ``` | 
						|
 * | 
						|
 * @param {String} `string` The string to repeat | 
						|
 * @param {Number} `number` The number of times to repeat the string | 
						|
 * @return {String} Repeated string | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
function repeat(str, num) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string'); | 
						|
  } // cover common, quick use cases | 
						|
 | 
						|
 | 
						|
  if (num === 1) return str; | 
						|
  if (num === 2) return str + str; | 
						|
  var max = str.length * num; | 
						|
 | 
						|
  if (cache !== str || typeof cache === 'undefined') { | 
						|
    cache = str; | 
						|
    res = ''; | 
						|
  } else if (res.length >= max) { | 
						|
    return res.substr(0, max); | 
						|
  } | 
						|
 | 
						|
  while (max > res.length && num > 1) { | 
						|
    if (num & 1) { | 
						|
      res += str; | 
						|
    } | 
						|
 | 
						|
    num >>= 1; | 
						|
    str += str; | 
						|
  } | 
						|
 | 
						|
  res += str; | 
						|
  res = res.substr(0, max); | 
						|
  return res; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/resolve-url/resolve-url.js": | 
						|
/*!*************************************************!*\ | 
						|
  !*** ./node_modules/resolve-url/resolve-url.js ***! | 
						|
  \*************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__; | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
// Copyright 2014 Simon Lydell | 
						|
// X11 (“MIT”) Licensed. (See LICENSE.) | 
						|
void function (root, factory) { | 
						|
  if (true) { | 
						|
    !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), | 
						|
				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? | 
						|
				(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : | 
						|
				__WEBPACK_AMD_DEFINE_FACTORY__), | 
						|
				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); | 
						|
  } else {} | 
						|
}(void 0, function () { | 
						|
  function resolveUrl() | 
						|
  /* ...urls */ | 
						|
  { | 
						|
    var numUrls = arguments.length; | 
						|
 | 
						|
    if (numUrls === 0) { | 
						|
      throw new Error("resolveUrl requires at least one argument; got none."); | 
						|
    } | 
						|
 | 
						|
    var base = document.createElement("base"); | 
						|
    base.href = arguments[0]; | 
						|
 | 
						|
    if (numUrls === 1) { | 
						|
      return base.href; | 
						|
    } | 
						|
 | 
						|
    var head = document.getElementsByTagName("head")[0]; | 
						|
    head.insertBefore(base, head.firstChild); | 
						|
    var a = document.createElement("a"); | 
						|
    var resolved; | 
						|
 | 
						|
    for (var index = 1; index < numUrls; index++) { | 
						|
      a.href = arguments[index]; | 
						|
      resolved = a.href; | 
						|
      base.href = resolved; | 
						|
    } | 
						|
 | 
						|
    head.removeChild(base); | 
						|
    return resolved; | 
						|
  } | 
						|
 | 
						|
  return resolveUrl; | 
						|
}); | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/ret/lib/index.js": | 
						|
/*!***************************************!*\ | 
						|
  !*** ./node_modules/ret/lib/index.js ***! | 
						|
  \***************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var util = __webpack_require__(/*! ./util */ "./node_modules/ret/lib/util.js"); | 
						|
 | 
						|
var types = __webpack_require__(/*! ./types */ "./node_modules/ret/lib/types.js"); | 
						|
 | 
						|
var sets = __webpack_require__(/*! ./sets */ "./node_modules/ret/lib/sets.js"); | 
						|
 | 
						|
var positions = __webpack_require__(/*! ./positions */ "./node_modules/ret/lib/positions.js"); | 
						|
 | 
						|
module.exports = function (regexpStr) { | 
						|
  var i = 0, | 
						|
      l, | 
						|
      c, | 
						|
      start = { | 
						|
    type: types.ROOT, | 
						|
    stack: [] | 
						|
  }, | 
						|
      // Keep track of last clause/group and stack. | 
						|
  lastGroup = start, | 
						|
      last = start.stack, | 
						|
      groupStack = []; | 
						|
 | 
						|
  var repeatErr = function repeatErr(i) { | 
						|
    util.error(regexpStr, 'Nothing to repeat at column ' + (i - 1)); | 
						|
  }; // Decode a few escaped characters. | 
						|
 | 
						|
 | 
						|
  var str = util.strToChars(regexpStr); | 
						|
  l = str.length; // Iterate through each character in string. | 
						|
 | 
						|
  while (i < l) { | 
						|
    c = str[i++]; | 
						|
 | 
						|
    switch (c) { | 
						|
      // Handle escaped characters, inclues a few sets. | 
						|
      case '\\': | 
						|
        c = str[i++]; | 
						|
 | 
						|
        switch (c) { | 
						|
          case 'b': | 
						|
            last.push(positions.wordBoundary()); | 
						|
            break; | 
						|
 | 
						|
          case 'B': | 
						|
            last.push(positions.nonWordBoundary()); | 
						|
            break; | 
						|
 | 
						|
          case 'w': | 
						|
            last.push(sets.words()); | 
						|
            break; | 
						|
 | 
						|
          case 'W': | 
						|
            last.push(sets.notWords()); | 
						|
            break; | 
						|
 | 
						|
          case 'd': | 
						|
            last.push(sets.ints()); | 
						|
            break; | 
						|
 | 
						|
          case 'D': | 
						|
            last.push(sets.notInts()); | 
						|
            break; | 
						|
 | 
						|
          case 's': | 
						|
            last.push(sets.whitespace()); | 
						|
            break; | 
						|
 | 
						|
          case 'S': | 
						|
            last.push(sets.notWhitespace()); | 
						|
            break; | 
						|
 | 
						|
          default: | 
						|
            // Check if c is integer. | 
						|
            // In which case it's a reference. | 
						|
            if (/\d/.test(c)) { | 
						|
              last.push({ | 
						|
                type: types.REFERENCE, | 
						|
                value: parseInt(c, 10) | 
						|
              }); // Escaped character. | 
						|
            } else { | 
						|
              last.push({ | 
						|
                type: types.CHAR, | 
						|
                value: c.charCodeAt(0) | 
						|
              }); | 
						|
            } | 
						|
 | 
						|
        } | 
						|
 | 
						|
        break; | 
						|
      // Positionals. | 
						|
 | 
						|
      case '^': | 
						|
        last.push(positions.begin()); | 
						|
        break; | 
						|
 | 
						|
      case '$': | 
						|
        last.push(positions.end()); | 
						|
        break; | 
						|
      // Handle custom sets. | 
						|
 | 
						|
      case '[': | 
						|
        // Check if this class is 'anti' i.e. [^abc]. | 
						|
        var not; | 
						|
 | 
						|
        if (str[i] === '^') { | 
						|
          not = true; | 
						|
          i++; | 
						|
        } else { | 
						|
          not = false; | 
						|
        } // Get all the characters in class. | 
						|
 | 
						|
 | 
						|
        var classTokens = util.tokenizeClass(str.slice(i), regexpStr); // Increase index by length of class. | 
						|
 | 
						|
        i += classTokens[1]; | 
						|
        last.push({ | 
						|
          type: types.SET, | 
						|
          set: classTokens[0], | 
						|
          not: not | 
						|
        }); | 
						|
        break; | 
						|
      // Class of any character except \n. | 
						|
 | 
						|
      case '.': | 
						|
        last.push(sets.anyChar()); | 
						|
        break; | 
						|
      // Push group onto stack. | 
						|
 | 
						|
      case '(': | 
						|
        // Create group. | 
						|
        var group = { | 
						|
          type: types.GROUP, | 
						|
          stack: [], | 
						|
          remember: true | 
						|
        }; | 
						|
        c = str[i]; // If if this is a special kind of group. | 
						|
 | 
						|
        if (c === '?') { | 
						|
          c = str[i + 1]; | 
						|
          i += 2; // Match if followed by. | 
						|
 | 
						|
          if (c === '=') { | 
						|
            group.followedBy = true; // Match if not followed by. | 
						|
          } else if (c === '!') { | 
						|
            group.notFollowedBy = true; | 
						|
          } else if (c !== ':') { | 
						|
            util.error(regexpStr, 'Invalid group, character \'' + c + '\' after \'?\' at column ' + (i - 1)); | 
						|
          } | 
						|
 | 
						|
          group.remember = false; | 
						|
        } // Insert subgroup into current group stack. | 
						|
 | 
						|
 | 
						|
        last.push(group); // Remember the current group for when the group closes. | 
						|
 | 
						|
        groupStack.push(lastGroup); // Make this new group the current group. | 
						|
 | 
						|
        lastGroup = group; | 
						|
        last = group.stack; | 
						|
        break; | 
						|
      // Pop group out of stack. | 
						|
 | 
						|
      case ')': | 
						|
        if (groupStack.length === 0) { | 
						|
          util.error(regexpStr, 'Unmatched ) at column ' + (i - 1)); | 
						|
        } | 
						|
 | 
						|
        lastGroup = groupStack.pop(); // Check if this group has a PIPE. | 
						|
        // To get back the correct last stack. | 
						|
 | 
						|
        last = lastGroup.options ? lastGroup.options[lastGroup.options.length - 1] : lastGroup.stack; | 
						|
        break; | 
						|
      // Use pipe character to give more choices. | 
						|
 | 
						|
      case '|': | 
						|
        // Create array where options are if this is the first PIPE | 
						|
        // in this clause. | 
						|
        if (!lastGroup.options) { | 
						|
          lastGroup.options = [lastGroup.stack]; | 
						|
          delete lastGroup.stack; | 
						|
        } // Create a new stack and add to options for rest of clause. | 
						|
 | 
						|
 | 
						|
        var stack = []; | 
						|
        lastGroup.options.push(stack); | 
						|
        last = stack; | 
						|
        break; | 
						|
      // Repetition. | 
						|
      // For every repetition, remove last element from last stack | 
						|
      // then insert back a RANGE object. | 
						|
      // This design is chosen because there could be more than | 
						|
      // one repetition symbols in a regex i.e. `a?+{2,3}`. | 
						|
 | 
						|
      case '{': | 
						|
        var rs = /^(\d+)(,(\d+)?)?\}/.exec(str.slice(i)), | 
						|
            min, | 
						|
            max; | 
						|
 | 
						|
        if (rs !== null) { | 
						|
          if (last.length === 0) { | 
						|
            repeatErr(i); | 
						|
          } | 
						|
 | 
						|
          min = parseInt(rs[1], 10); | 
						|
          max = rs[2] ? rs[3] ? parseInt(rs[3], 10) : Infinity : min; | 
						|
          i += rs[0].length; | 
						|
          last.push({ | 
						|
            type: types.REPETITION, | 
						|
            min: min, | 
						|
            max: max, | 
						|
            value: last.pop() | 
						|
          }); | 
						|
        } else { | 
						|
          last.push({ | 
						|
            type: types.CHAR, | 
						|
            value: 123 | 
						|
          }); | 
						|
        } | 
						|
 | 
						|
        break; | 
						|
 | 
						|
      case '?': | 
						|
        if (last.length === 0) { | 
						|
          repeatErr(i); | 
						|
        } | 
						|
 | 
						|
        last.push({ | 
						|
          type: types.REPETITION, | 
						|
          min: 0, | 
						|
          max: 1, | 
						|
          value: last.pop() | 
						|
        }); | 
						|
        break; | 
						|
 | 
						|
      case '+': | 
						|
        if (last.length === 0) { | 
						|
          repeatErr(i); | 
						|
        } | 
						|
 | 
						|
        last.push({ | 
						|
          type: types.REPETITION, | 
						|
          min: 1, | 
						|
          max: Infinity, | 
						|
          value: last.pop() | 
						|
        }); | 
						|
        break; | 
						|
 | 
						|
      case '*': | 
						|
        if (last.length === 0) { | 
						|
          repeatErr(i); | 
						|
        } | 
						|
 | 
						|
        last.push({ | 
						|
          type: types.REPETITION, | 
						|
          min: 0, | 
						|
          max: Infinity, | 
						|
          value: last.pop() | 
						|
        }); | 
						|
        break; | 
						|
      // Default is a character that is not `\[](){}?+*^$`. | 
						|
 | 
						|
      default: | 
						|
        last.push({ | 
						|
          type: types.CHAR, | 
						|
          value: c.charCodeAt(0) | 
						|
        }); | 
						|
    } | 
						|
  } // Check if any groups have not been closed. | 
						|
 | 
						|
 | 
						|
  if (groupStack.length !== 0) { | 
						|
    util.error(regexpStr, 'Unterminated group'); | 
						|
  } | 
						|
 | 
						|
  return start; | 
						|
}; | 
						|
 | 
						|
module.exports.types = types; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/ret/lib/positions.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/ret/lib/positions.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var types = __webpack_require__(/*! ./types */ "./node_modules/ret/lib/types.js"); | 
						|
 | 
						|
exports.wordBoundary = function () { | 
						|
  return { | 
						|
    type: types.POSITION, | 
						|
    value: 'b' | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.nonWordBoundary = function () { | 
						|
  return { | 
						|
    type: types.POSITION, | 
						|
    value: 'B' | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.begin = function () { | 
						|
  return { | 
						|
    type: types.POSITION, | 
						|
    value: '^' | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.end = function () { | 
						|
  return { | 
						|
    type: types.POSITION, | 
						|
    value: '$' | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/ret/lib/sets.js": | 
						|
/*!**************************************!*\ | 
						|
  !*** ./node_modules/ret/lib/sets.js ***! | 
						|
  \**************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var types = __webpack_require__(/*! ./types */ "./node_modules/ret/lib/types.js"); | 
						|
 | 
						|
var INTS = function INTS() { | 
						|
  return [{ | 
						|
    type: types.RANGE, | 
						|
    from: 48, | 
						|
    to: 57 | 
						|
  }]; | 
						|
}; | 
						|
 | 
						|
var WORDS = function WORDS() { | 
						|
  return [{ | 
						|
    type: types.CHAR, | 
						|
    value: 95 | 
						|
  }, { | 
						|
    type: types.RANGE, | 
						|
    from: 97, | 
						|
    to: 122 | 
						|
  }, { | 
						|
    type: types.RANGE, | 
						|
    from: 65, | 
						|
    to: 90 | 
						|
  }].concat(INTS()); | 
						|
}; | 
						|
 | 
						|
var WHITESPACE = function WHITESPACE() { | 
						|
  return [{ | 
						|
    type: types.CHAR, | 
						|
    value: 9 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 10 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 11 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 12 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 13 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 32 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 160 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 5760 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 6158 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8192 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8193 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8194 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8195 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8196 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8197 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8198 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8199 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8200 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8201 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8202 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8232 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8233 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8239 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8287 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 12288 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 65279 | 
						|
  }]; | 
						|
}; | 
						|
 | 
						|
var NOTANYCHAR = function NOTANYCHAR() { | 
						|
  return [{ | 
						|
    type: types.CHAR, | 
						|
    value: 10 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 13 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8232 | 
						|
  }, { | 
						|
    type: types.CHAR, | 
						|
    value: 8233 | 
						|
  }]; | 
						|
}; // Predefined class objects. | 
						|
 | 
						|
 | 
						|
exports.words = function () { | 
						|
  return { | 
						|
    type: types.SET, | 
						|
    set: WORDS(), | 
						|
    not: false | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.notWords = function () { | 
						|
  return { | 
						|
    type: types.SET, | 
						|
    set: WORDS(), | 
						|
    not: true | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.ints = function () { | 
						|
  return { | 
						|
    type: types.SET, | 
						|
    set: INTS(), | 
						|
    not: false | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.notInts = function () { | 
						|
  return { | 
						|
    type: types.SET, | 
						|
    set: INTS(), | 
						|
    not: true | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.whitespace = function () { | 
						|
  return { | 
						|
    type: types.SET, | 
						|
    set: WHITESPACE(), | 
						|
    not: false | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.notWhitespace = function () { | 
						|
  return { | 
						|
    type: types.SET, | 
						|
    set: WHITESPACE(), | 
						|
    not: true | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.anyChar = function () { | 
						|
  return { | 
						|
    type: types.SET, | 
						|
    set: NOTANYCHAR(), | 
						|
    not: true | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/ret/lib/types.js": | 
						|
/*!***************************************!*\ | 
						|
  !*** ./node_modules/ret/lib/types.js ***! | 
						|
  \***************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
module.exports = { | 
						|
  ROOT: 0, | 
						|
  GROUP: 1, | 
						|
  POSITION: 2, | 
						|
  SET: 3, | 
						|
  RANGE: 4, | 
						|
  REPETITION: 5, | 
						|
  REFERENCE: 6, | 
						|
  CHAR: 7 | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/ret/lib/util.js": | 
						|
/*!**************************************!*\ | 
						|
  !*** ./node_modules/ret/lib/util.js ***! | 
						|
  \**************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var types = __webpack_require__(/*! ./types */ "./node_modules/ret/lib/types.js"); | 
						|
 | 
						|
var sets = __webpack_require__(/*! ./sets */ "./node_modules/ret/lib/sets.js"); // All of these are private and only used by randexp. | 
						|
// It's assumed that they will always be called with the correct input. | 
						|
 | 
						|
 | 
						|
var CTRL = '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ?'; | 
						|
var SLSH = { | 
						|
  '0': 0, | 
						|
  't': 9, | 
						|
  'n': 10, | 
						|
  'v': 11, | 
						|
  'f': 12, | 
						|
  'r': 13 | 
						|
}; | 
						|
/** | 
						|
 * Finds character representations in str and convert all to | 
						|
 * their respective characters | 
						|
 * | 
						|
 * @param {String} str | 
						|
 * @return {String} | 
						|
 */ | 
						|
 | 
						|
exports.strToChars = function (str) { | 
						|
  /* jshint maxlen: false */ | 
						|
  var chars_regex = /(\[\\b\])|(\\)?\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z\[\\\]\^?])|([0tnvfr]))/g; | 
						|
  str = str.replace(chars_regex, function (s, b, lbs, a16, b16, c8, dctrl, eslsh) { | 
						|
    if (lbs) { | 
						|
      return s; | 
						|
    } | 
						|
 | 
						|
    var code = b ? 8 : a16 ? parseInt(a16, 16) : b16 ? parseInt(b16, 16) : c8 ? parseInt(c8, 8) : dctrl ? CTRL.indexOf(dctrl) : SLSH[eslsh]; | 
						|
    var c = String.fromCharCode(code); // Escape special regex characters. | 
						|
 | 
						|
    if (/[\[\]{}\^$.|?*+()]/.test(c)) { | 
						|
      c = '\\' + c; | 
						|
    } | 
						|
 | 
						|
    return c; | 
						|
  }); | 
						|
  return str; | 
						|
}; | 
						|
/** | 
						|
 * turns class into tokens | 
						|
 * reads str until it encounters a ] not preceeded by a \ | 
						|
 * | 
						|
 * @param {String} str | 
						|
 * @param {String} regexpStr | 
						|
 * @return {Array.<Array.<Object>, Number>} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.tokenizeClass = function (str, regexpStr) { | 
						|
  /* jshint maxlen: false */ | 
						|
  var tokens = []; | 
						|
  var regexp = /\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\)(.)|([^\]\\]))-(?:\\)?([^\]]))|(\])|(?:\\)?(.)/g; | 
						|
  var rs, c; | 
						|
 | 
						|
  while ((rs = regexp.exec(str)) != null) { | 
						|
    if (rs[1]) { | 
						|
      tokens.push(sets.words()); | 
						|
    } else if (rs[2]) { | 
						|
      tokens.push(sets.ints()); | 
						|
    } else if (rs[3]) { | 
						|
      tokens.push(sets.whitespace()); | 
						|
    } else if (rs[4]) { | 
						|
      tokens.push(sets.notWords()); | 
						|
    } else if (rs[5]) { | 
						|
      tokens.push(sets.notInts()); | 
						|
    } else if (rs[6]) { | 
						|
      tokens.push(sets.notWhitespace()); | 
						|
    } else if (rs[7]) { | 
						|
      tokens.push({ | 
						|
        type: types.RANGE, | 
						|
        from: (rs[8] || rs[9]).charCodeAt(0), | 
						|
        to: rs[10].charCodeAt(0) | 
						|
      }); | 
						|
    } else if (c = rs[12]) { | 
						|
      tokens.push({ | 
						|
        type: types.CHAR, | 
						|
        value: c.charCodeAt(0) | 
						|
      }); | 
						|
    } else { | 
						|
      return [tokens, regexp.lastIndex]; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  exports.error(regexpStr, 'Unterminated character class'); | 
						|
}; | 
						|
/** | 
						|
 * Shortcut to throw errors. | 
						|
 * | 
						|
 * @param {String} regexp | 
						|
 * @param {String} msg | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.error = function (regexp, msg) { | 
						|
  throw new SyntaxError('Invalid regular expression: /' + regexp + '/: ' + msg); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/safe-regex/index.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/safe-regex/index.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var parse = __webpack_require__(/*! ret */ "./node_modules/ret/lib/index.js"); | 
						|
 | 
						|
var types = parse.types; | 
						|
 | 
						|
module.exports = function (re, opts) { | 
						|
  if (!opts) opts = {}; | 
						|
  var replimit = opts.limit === undefined ? 25 : opts.limit; | 
						|
  if (isRegExp(re)) re = re.source;else if (typeof re !== 'string') re = String(re); | 
						|
 | 
						|
  try { | 
						|
    re = parse(re); | 
						|
  } catch (err) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  var reps = 0; | 
						|
  return function walk(node, starHeight) { | 
						|
    if (node.type === types.REPETITION) { | 
						|
      starHeight++; | 
						|
      reps++; | 
						|
      if (starHeight > 1) return false; | 
						|
      if (reps > replimit) return false; | 
						|
    } | 
						|
 | 
						|
    if (node.options) { | 
						|
      for (var i = 0, len = node.options.length; i < len; i++) { | 
						|
        var ok = walk({ | 
						|
          stack: node.options[i] | 
						|
        }, starHeight); | 
						|
        if (!ok) return false; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    var stack = node.stack || node.value && node.value.stack; | 
						|
    if (!stack) return true; | 
						|
 | 
						|
    for (var i = 0; i < stack.length; i++) { | 
						|
      var ok = walk(stack[i], starHeight); | 
						|
      if (!ok) return false; | 
						|
    } | 
						|
 | 
						|
    return true; | 
						|
  }(re, 0); | 
						|
}; | 
						|
 | 
						|
function isRegExp(x) { | 
						|
  return {}.toString.call(x) === '[object RegExp]'; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/set-value/index.js": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./node_modules/set-value/index.js ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * set-value <https://github.com/jonschlinkert/set-value> | 
						|
 * | 
						|
 * Copyright (c) 2014-2015, 2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var split = __webpack_require__(/*! split-string */ "./node_modules/split-string/index.js"); | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/extend-shallow/index.js"); | 
						|
 | 
						|
var isPlainObject = __webpack_require__(/*! is-plain-object */ "./node_modules/is-plain-object/index.js"); | 
						|
 | 
						|
var isObject = __webpack_require__(/*! is-extendable */ "./node_modules/is-extendable/index.js"); | 
						|
 | 
						|
module.exports = function (obj, prop, val) { | 
						|
  if (!isObject(obj)) { | 
						|
    return obj; | 
						|
  } | 
						|
 | 
						|
  if (Array.isArray(prop)) { | 
						|
    prop = [].concat.apply([], prop).join('.'); | 
						|
  } | 
						|
 | 
						|
  if (typeof prop !== 'string') { | 
						|
    return obj; | 
						|
  } | 
						|
 | 
						|
  var keys = split(prop, { | 
						|
    sep: '.', | 
						|
    brackets: true | 
						|
  }).filter(isValidKey); | 
						|
  var len = keys.length; | 
						|
  var idx = -1; | 
						|
  var current = obj; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var key = keys[idx]; | 
						|
 | 
						|
    if (idx !== len - 1) { | 
						|
      if (!isObject(current[key])) { | 
						|
        current[key] = {}; | 
						|
      } | 
						|
 | 
						|
      current = current[key]; | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (isPlainObject(current[key]) && isPlainObject(val)) { | 
						|
      current[key] = extend({}, current[key], val); | 
						|
    } else { | 
						|
      current[key] = val; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
function isValidKey(key) { | 
						|
  return key !== '__proto__' && key !== 'constructor' && key !== 'prototype'; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/setimmediate/setImmediate.js": | 
						|
/*!***************************************************!*\ | 
						|
  !*** ./node_modules/setimmediate/setImmediate.js ***! | 
						|
  \***************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(global, process) { | 
						|
 | 
						|
(function (global, undefined) { | 
						|
  "use strict"; | 
						|
 | 
						|
  if (global.setImmediate) { | 
						|
    return; | 
						|
  } | 
						|
 | 
						|
  var nextHandle = 1; // Spec says greater than zero | 
						|
 | 
						|
  var tasksByHandle = {}; | 
						|
  var currentlyRunningATask = false; | 
						|
  var doc = global.document; | 
						|
  var registerImmediate; | 
						|
 | 
						|
  function setImmediate(callback) { | 
						|
    // Callback can either be a function or a string | 
						|
    if (typeof callback !== "function") { | 
						|
      callback = new Function("" + callback); | 
						|
    } // Copy function arguments | 
						|
 | 
						|
 | 
						|
    var args = new Array(arguments.length - 1); | 
						|
 | 
						|
    for (var i = 0; i < args.length; i++) { | 
						|
      args[i] = arguments[i + 1]; | 
						|
    } // Store and register the task | 
						|
 | 
						|
 | 
						|
    var task = { | 
						|
      callback: callback, | 
						|
      args: args | 
						|
    }; | 
						|
    tasksByHandle[nextHandle] = task; | 
						|
    registerImmediate(nextHandle); | 
						|
    return nextHandle++; | 
						|
  } | 
						|
 | 
						|
  function clearImmediate(handle) { | 
						|
    delete tasksByHandle[handle]; | 
						|
  } | 
						|
 | 
						|
  function run(task) { | 
						|
    var callback = task.callback; | 
						|
    var args = task.args; | 
						|
 | 
						|
    switch (args.length) { | 
						|
      case 0: | 
						|
        callback(); | 
						|
        break; | 
						|
 | 
						|
      case 1: | 
						|
        callback(args[0]); | 
						|
        break; | 
						|
 | 
						|
      case 2: | 
						|
        callback(args[0], args[1]); | 
						|
        break; | 
						|
 | 
						|
      case 3: | 
						|
        callback(args[0], args[1], args[2]); | 
						|
        break; | 
						|
 | 
						|
      default: | 
						|
        callback.apply(undefined, args); | 
						|
        break; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  function runIfPresent(handle) { | 
						|
    // From the spec: "Wait until any invocations of this algorithm started before this one have completed." | 
						|
    // So if we're currently running a task, we'll need to delay this invocation. | 
						|
    if (currentlyRunningATask) { | 
						|
      // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a | 
						|
      // "too much recursion" error. | 
						|
      setTimeout(runIfPresent, 0, handle); | 
						|
    } else { | 
						|
      var task = tasksByHandle[handle]; | 
						|
 | 
						|
      if (task) { | 
						|
        currentlyRunningATask = true; | 
						|
 | 
						|
        try { | 
						|
          run(task); | 
						|
        } finally { | 
						|
          clearImmediate(handle); | 
						|
          currentlyRunningATask = false; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  function installNextTickImplementation() { | 
						|
    registerImmediate = function registerImmediate(handle) { | 
						|
      process.nextTick(function () { | 
						|
        runIfPresent(handle); | 
						|
      }); | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  function canUsePostMessage() { | 
						|
    // The test against `importScripts` prevents this implementation from being installed inside a web worker, | 
						|
    // where `global.postMessage` means something completely different and can't be used for this purpose. | 
						|
    if (global.postMessage && !global.importScripts) { | 
						|
      var postMessageIsAsynchronous = true; | 
						|
      var oldOnMessage = global.onmessage; | 
						|
 | 
						|
      global.onmessage = function () { | 
						|
        postMessageIsAsynchronous = false; | 
						|
      }; | 
						|
 | 
						|
      global.postMessage("", "*"); | 
						|
      global.onmessage = oldOnMessage; | 
						|
      return postMessageIsAsynchronous; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  function installPostMessageImplementation() { | 
						|
    // Installs an event handler on `global` for the `message` event: see | 
						|
    // * https://developer.mozilla.org/en/DOM/window.postMessage | 
						|
    // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages | 
						|
    var messagePrefix = "setImmediate$" + Math.random() + "$"; | 
						|
 | 
						|
    var onGlobalMessage = function onGlobalMessage(event) { | 
						|
      if (event.source === global && typeof event.data === "string" && event.data.indexOf(messagePrefix) === 0) { | 
						|
        runIfPresent(+event.data.slice(messagePrefix.length)); | 
						|
      } | 
						|
    }; | 
						|
 | 
						|
    if (global.addEventListener) { | 
						|
      global.addEventListener("message", onGlobalMessage, false); | 
						|
    } else { | 
						|
      global.attachEvent("onmessage", onGlobalMessage); | 
						|
    } | 
						|
 | 
						|
    registerImmediate = function registerImmediate(handle) { | 
						|
      global.postMessage(messagePrefix + handle, "*"); | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  function installMessageChannelImplementation() { | 
						|
    var channel = new MessageChannel(); | 
						|
 | 
						|
    channel.port1.onmessage = function (event) { | 
						|
      var handle = event.data; | 
						|
      runIfPresent(handle); | 
						|
    }; | 
						|
 | 
						|
    registerImmediate = function registerImmediate(handle) { | 
						|
      channel.port2.postMessage(handle); | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  function installReadyStateChangeImplementation() { | 
						|
    var html = doc.documentElement; | 
						|
 | 
						|
    registerImmediate = function registerImmediate(handle) { | 
						|
      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted | 
						|
      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. | 
						|
      var script = doc.createElement("script"); | 
						|
 | 
						|
      script.onreadystatechange = function () { | 
						|
        runIfPresent(handle); | 
						|
        script.onreadystatechange = null; | 
						|
        html.removeChild(script); | 
						|
        script = null; | 
						|
      }; | 
						|
 | 
						|
      html.appendChild(script); | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  function installSetTimeoutImplementation() { | 
						|
    registerImmediate = function registerImmediate(handle) { | 
						|
      setTimeout(runIfPresent, 0, handle); | 
						|
    }; | 
						|
  } // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. | 
						|
 | 
						|
 | 
						|
  var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); | 
						|
  attachTo = attachTo && attachTo.setTimeout ? attachTo : global; // Don't get fooled by e.g. browserify environments. | 
						|
 | 
						|
  if ({}.toString.call(global.process) === "[object process]") { | 
						|
    // For Node.js before 0.9 | 
						|
    installNextTickImplementation(); | 
						|
  } else if (canUsePostMessage()) { | 
						|
    // For non-IE10 modern browsers | 
						|
    installPostMessageImplementation(); | 
						|
  } else if (global.MessageChannel) { | 
						|
    // For web workers, where supported | 
						|
    installMessageChannelImplementation(); | 
						|
  } else if (doc && "onreadystatechange" in doc.createElement("script")) { | 
						|
    // For IE 6–8 | 
						|
    installReadyStateChangeImplementation(); | 
						|
  } else { | 
						|
    // For older browsers | 
						|
    installSetTimeoutImplementation(); | 
						|
  } | 
						|
 | 
						|
  attachTo.setImmediate = setImmediate; | 
						|
  attachTo.clearImmediate = clearImmediate; | 
						|
})(typeof self === "undefined" ? typeof global === "undefined" ? void 0 : global : self); | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"), __webpack_require__(/*! ./../process/browser.js */ "./node_modules/process/browser.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/slash/index.js": | 
						|
/*!*************************************!*\ | 
						|
  !*** ./node_modules/slash/index.js ***! | 
						|
  \*************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
module.exports = function (input) { | 
						|
  var isExtendedLengthPath = /^\\\\\?\\/.test(input); | 
						|
  var hasNonAscii = /[^\u0000-\u0080]+/.test(input); // eslint-disable-line no-control-regex | 
						|
 | 
						|
  if (isExtendedLengthPath || hasNonAscii) { | 
						|
    return input; | 
						|
  } | 
						|
 | 
						|
  return input.replace(/\\/g, '/'); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon-node/index.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./node_modules/snapdragon-node/index.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var isObject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/snapdragon-node/node_modules/define-property/index.js"); | 
						|
 | 
						|
var utils = __webpack_require__(/*! snapdragon-util */ "./node_modules/snapdragon-util/index.js"); | 
						|
 | 
						|
var ownNames; | 
						|
/** | 
						|
 * Create a new AST `Node` with the given `val` and `type`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var node = new Node('*', 'Star'); | 
						|
 * var node = new Node({type: 'star', val: '*'}); | 
						|
 * ``` | 
						|
 * @name Node | 
						|
 * @param {String|Object} `val` Pass a matched substring, or an object to merge onto the node. | 
						|
 * @param {String} `type` The node type to use when `val` is a string. | 
						|
 * @return {Object} node instance | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
function Node(val, type, parent) { | 
						|
  if (typeof type !== 'string') { | 
						|
    parent = type; | 
						|
    type = null; | 
						|
  } | 
						|
 | 
						|
  define(this, 'parent', parent); | 
						|
  define(this, 'isNode', true); | 
						|
  define(this, 'expect', null); | 
						|
 | 
						|
  if (typeof type !== 'string' && isObject(val)) { | 
						|
    lazyKeys(); | 
						|
    var keys = Object.keys(val); | 
						|
 | 
						|
    for (var i = 0; i < keys.length; i++) { | 
						|
      var key = keys[i]; | 
						|
 | 
						|
      if (ownNames.indexOf(key) === -1) { | 
						|
        this[key] = val[key]; | 
						|
      } | 
						|
    } | 
						|
  } else { | 
						|
    this.type = type; | 
						|
    this.val = val; | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given value is a node. | 
						|
 * | 
						|
 * ```js | 
						|
 * var Node = require('snapdragon-node'); | 
						|
 * var node = new Node({type: 'foo'}); | 
						|
 * console.log(Node.isNode(node)); //=> true | 
						|
 * console.log(Node.isNode({})); //=> false | 
						|
 * ``` | 
						|
 * @param {Object} `node` | 
						|
 * @returns {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Node.isNode = function (node) { | 
						|
  return utils.isNode(node); | 
						|
}; | 
						|
/** | 
						|
 * Define a non-enumberable property on the node instance. | 
						|
 * Useful for adding properties that shouldn't be extended | 
						|
 * or visible during debugging. | 
						|
 * | 
						|
 * ```js | 
						|
 * var node = new Node(); | 
						|
 * node.define('foo', 'something non-enumerable'); | 
						|
 * ``` | 
						|
 * @param {String} `name` | 
						|
 * @param {any} `val` | 
						|
 * @return {Object} returns the node instance | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Node.prototype.define = function (name, val) { | 
						|
  define(this, name, val); | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if `node.val` is an empty string, or `node.nodes` does | 
						|
 * not contain any non-empty text nodes. | 
						|
 * | 
						|
 * ```js | 
						|
 * var node = new Node({type: 'text'}); | 
						|
 * node.isEmpty(); //=> true | 
						|
 * node.val = 'foo'; | 
						|
 * node.isEmpty(); //=> false | 
						|
 * ``` | 
						|
 * @param {Function} `fn` (optional) Filter function that is called on `node` and/or child nodes. `isEmpty` will return false immediately when the filter function returns false on any nodes. | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Node.prototype.isEmpty = function (fn) { | 
						|
  return utils.isEmpty(this, fn); | 
						|
}; | 
						|
/** | 
						|
 * Given node `foo` and node `bar`, push node `bar` onto `foo.nodes`, and | 
						|
 * set `foo` as `bar.parent`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var foo = new Node({type: 'foo'}); | 
						|
 * var bar = new Node({type: 'bar'}); | 
						|
 * foo.push(bar); | 
						|
 * ``` | 
						|
 * @param {Object} `node` | 
						|
 * @return {Number} Returns the length of `node.nodes` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Node.prototype.push = function (node) { | 
						|
  assert(Node.isNode(node), 'expected node to be an instance of Node'); | 
						|
  define(node, 'parent', this); | 
						|
  this.nodes = this.nodes || []; | 
						|
  return this.nodes.push(node); | 
						|
}; | 
						|
/** | 
						|
 * Given node `foo` and node `bar`, unshift node `bar` onto `foo.nodes`, and | 
						|
 * set `foo` as `bar.parent`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var foo = new Node({type: 'foo'}); | 
						|
 * var bar = new Node({type: 'bar'}); | 
						|
 * foo.unshift(bar); | 
						|
 * ``` | 
						|
 * @param {Object} `node` | 
						|
 * @return {Number} Returns the length of `node.nodes` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Node.prototype.unshift = function (node) { | 
						|
  assert(Node.isNode(node), 'expected node to be an instance of Node'); | 
						|
  define(node, 'parent', this); | 
						|
  this.nodes = this.nodes || []; | 
						|
  return this.nodes.unshift(node); | 
						|
}; | 
						|
/** | 
						|
 * Pop a node from `node.nodes`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var node = new Node({type: 'foo'}); | 
						|
 * node.push(new Node({type: 'a'})); | 
						|
 * node.push(new Node({type: 'b'})); | 
						|
 * node.push(new Node({type: 'c'})); | 
						|
 * node.push(new Node({type: 'd'})); | 
						|
 * console.log(node.nodes.length); | 
						|
 * //=> 4 | 
						|
 * node.pop(); | 
						|
 * console.log(node.nodes.length); | 
						|
 * //=> 3 | 
						|
 * ``` | 
						|
 * @return {Number} Returns the popped `node` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Node.prototype.pop = function () { | 
						|
  return this.nodes && this.nodes.pop(); | 
						|
}; | 
						|
/** | 
						|
 * Shift a node from `node.nodes`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var node = new Node({type: 'foo'}); | 
						|
 * node.push(new Node({type: 'a'})); | 
						|
 * node.push(new Node({type: 'b'})); | 
						|
 * node.push(new Node({type: 'c'})); | 
						|
 * node.push(new Node({type: 'd'})); | 
						|
 * console.log(node.nodes.length); | 
						|
 * //=> 4 | 
						|
 * node.shift(); | 
						|
 * console.log(node.nodes.length); | 
						|
 * //=> 3 | 
						|
 * ``` | 
						|
 * @return {Object} Returns the shifted `node` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Node.prototype.shift = function () { | 
						|
  return this.nodes && this.nodes.shift(); | 
						|
}; | 
						|
/** | 
						|
 * Remove `node` from `node.nodes`. | 
						|
 * | 
						|
 * ```js | 
						|
 * node.remove(childNode); | 
						|
 * ``` | 
						|
 * @param {Object} `node` | 
						|
 * @return {Object} Returns the removed node. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Node.prototype.remove = function (node) { | 
						|
  assert(Node.isNode(node), 'expected node to be an instance of Node'); | 
						|
  this.nodes = this.nodes || []; | 
						|
  var idx = node.index; | 
						|
 | 
						|
  if (idx !== -1) { | 
						|
    node.index = -1; | 
						|
    return this.nodes.splice(idx, 1); | 
						|
  } | 
						|
 | 
						|
  return null; | 
						|
}; | 
						|
/** | 
						|
 * Get the first child node from `node.nodes` that matches the given `type`. | 
						|
 * If `type` is a number, the child node at that index is returned. | 
						|
 * | 
						|
 * ```js | 
						|
 * var child = node.find(1); //<= index of the node to get | 
						|
 * var child = node.find('foo'); //<= node.type of a child node | 
						|
 * var child = node.find(/^(foo|bar)$/); //<= regex to match node.type | 
						|
 * var child = node.find(['foo', 'bar']); //<= array of node.type(s) | 
						|
 * ``` | 
						|
 * @param {String} `type` | 
						|
 * @return {Object} Returns a child node or undefined. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Node.prototype.find = function (type) { | 
						|
  return utils.findNode(this.nodes, type); | 
						|
}; | 
						|
/** | 
						|
 * Return true if the node is the given `type`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var node = new Node({type: 'bar'}); | 
						|
 * cosole.log(node.isType('foo'));          // false | 
						|
 * cosole.log(node.isType(/^(foo|bar)$/));  // true | 
						|
 * cosole.log(node.isType(['foo', 'bar'])); // true | 
						|
 * ``` | 
						|
 * @param {String} `type` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Node.prototype.isType = function (type) { | 
						|
  return utils.isType(this, type); | 
						|
}; | 
						|
/** | 
						|
 * Return true if the `node.nodes` has the given `type`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var foo = new Node({type: 'foo'}); | 
						|
 * var bar = new Node({type: 'bar'}); | 
						|
 * foo.push(bar); | 
						|
 * | 
						|
 * cosole.log(foo.hasType('qux'));          // false | 
						|
 * cosole.log(foo.hasType(/^(qux|bar)$/));  // true | 
						|
 * cosole.log(foo.hasType(['qux', 'bar'])); // true | 
						|
 * ``` | 
						|
 * @param {String} `type` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Node.prototype.hasType = function (type) { | 
						|
  return utils.hasType(this, type); | 
						|
}; | 
						|
/** | 
						|
 * Get the siblings array, or `null` if it doesn't exist. | 
						|
 * | 
						|
 * ```js | 
						|
 * var foo = new Node({type: 'foo'}); | 
						|
 * var bar = new Node({type: 'bar'}); | 
						|
 * var baz = new Node({type: 'baz'}); | 
						|
 * foo.push(bar); | 
						|
 * foo.push(baz); | 
						|
 * | 
						|
 * console.log(bar.siblings.length) // 2 | 
						|
 * console.log(baz.siblings.length) // 2 | 
						|
 * ``` | 
						|
 * @return {Array} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Object.defineProperty(Node.prototype, 'siblings', { | 
						|
  set: function set() { | 
						|
    throw new Error('node.siblings is a getter and cannot be defined'); | 
						|
  }, | 
						|
  get: function get() { | 
						|
    return this.parent ? this.parent.nodes : null; | 
						|
  } | 
						|
}); | 
						|
/** | 
						|
 * Get the node's current index from `node.parent.nodes`. | 
						|
 * This should always be correct, even when the parent adds nodes. | 
						|
 * | 
						|
 * ```js | 
						|
 * var foo = new Node({type: 'foo'}); | 
						|
 * var bar = new Node({type: 'bar'}); | 
						|
 * var baz = new Node({type: 'baz'}); | 
						|
 * var qux = new Node({type: 'qux'}); | 
						|
 * foo.push(bar); | 
						|
 * foo.push(baz); | 
						|
 * foo.unshift(qux); | 
						|
 * | 
						|
 * console.log(bar.index) // 1 | 
						|
 * console.log(baz.index) // 2 | 
						|
 * console.log(qux.index) // 0 | 
						|
 * ``` | 
						|
 * @return {Number} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
Object.defineProperty(Node.prototype, 'index', { | 
						|
  set: function set(index) { | 
						|
    define(this, 'idx', index); | 
						|
  }, | 
						|
  get: function get() { | 
						|
    if (!Array.isArray(this.siblings)) { | 
						|
      return -1; | 
						|
    } | 
						|
 | 
						|
    var tok = this.idx !== -1 ? this.siblings[this.idx] : null; | 
						|
 | 
						|
    if (tok !== this) { | 
						|
      this.idx = this.siblings.indexOf(this); | 
						|
    } | 
						|
 | 
						|
    return this.idx; | 
						|
  } | 
						|
}); | 
						|
/** | 
						|
 * Get the previous node from the siblings array or `null`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var foo = new Node({type: 'foo'}); | 
						|
 * var bar = new Node({type: 'bar'}); | 
						|
 * var baz = new Node({type: 'baz'}); | 
						|
 * foo.push(bar); | 
						|
 * foo.push(baz); | 
						|
 * | 
						|
 * console.log(baz.prev.type) // 'bar' | 
						|
 * ``` | 
						|
 * @return {Object} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
Object.defineProperty(Node.prototype, 'prev', { | 
						|
  set: function set() { | 
						|
    throw new Error('node.prev is a getter and cannot be defined'); | 
						|
  }, | 
						|
  get: function get() { | 
						|
    if (Array.isArray(this.siblings)) { | 
						|
      return this.siblings[this.index - 1] || this.parent.prev; | 
						|
    } | 
						|
 | 
						|
    return null; | 
						|
  } | 
						|
}); | 
						|
/** | 
						|
 * Get the siblings array, or `null` if it doesn't exist. | 
						|
 * | 
						|
 * ```js | 
						|
 * var foo = new Node({type: 'foo'}); | 
						|
 * var bar = new Node({type: 'bar'}); | 
						|
 * var baz = new Node({type: 'baz'}); | 
						|
 * foo.push(bar); | 
						|
 * foo.push(baz); | 
						|
 * | 
						|
 * console.log(bar.siblings.length) // 2 | 
						|
 * console.log(baz.siblings.length) // 2 | 
						|
 * ``` | 
						|
 * @return {Object} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
Object.defineProperty(Node.prototype, 'next', { | 
						|
  set: function set() { | 
						|
    throw new Error('node.next is a getter and cannot be defined'); | 
						|
  }, | 
						|
  get: function get() { | 
						|
    if (Array.isArray(this.siblings)) { | 
						|
      return this.siblings[this.index + 1] || this.parent.next; | 
						|
    } | 
						|
 | 
						|
    return null; | 
						|
  } | 
						|
}); | 
						|
/** | 
						|
 * Get the first node from `node.nodes`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var foo = new Node({type: 'foo'}); | 
						|
 * var bar = new Node({type: 'bar'}); | 
						|
 * var baz = new Node({type: 'baz'}); | 
						|
 * var qux = new Node({type: 'qux'}); | 
						|
 * foo.push(bar); | 
						|
 * foo.push(baz); | 
						|
 * foo.push(qux); | 
						|
 * | 
						|
 * console.log(foo.first.type) // 'bar' | 
						|
 * ``` | 
						|
 * @return {Object} The first node, or undefiend | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
Object.defineProperty(Node.prototype, 'first', { | 
						|
  get: function get() { | 
						|
    return this.nodes ? this.nodes[0] : null; | 
						|
  } | 
						|
}); | 
						|
/** | 
						|
 * Get the last node from `node.nodes`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var foo = new Node({type: 'foo'}); | 
						|
 * var bar = new Node({type: 'bar'}); | 
						|
 * var baz = new Node({type: 'baz'}); | 
						|
 * var qux = new Node({type: 'qux'}); | 
						|
 * foo.push(bar); | 
						|
 * foo.push(baz); | 
						|
 * foo.push(qux); | 
						|
 * | 
						|
 * console.log(foo.last.type) // 'qux' | 
						|
 * ``` | 
						|
 * @return {Object} The last node, or undefiend | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
Object.defineProperty(Node.prototype, 'last', { | 
						|
  get: function get() { | 
						|
    return this.nodes ? utils.last(this.nodes) : null; | 
						|
  } | 
						|
}); | 
						|
/** | 
						|
 * Get the last node from `node.nodes`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var foo = new Node({type: 'foo'}); | 
						|
 * var bar = new Node({type: 'bar'}); | 
						|
 * var baz = new Node({type: 'baz'}); | 
						|
 * var qux = new Node({type: 'qux'}); | 
						|
 * foo.push(bar); | 
						|
 * foo.push(baz); | 
						|
 * foo.push(qux); | 
						|
 * | 
						|
 * console.log(foo.last.type) // 'qux' | 
						|
 * ``` | 
						|
 * @return {Object} The last node, or undefiend | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
Object.defineProperty(Node.prototype, 'scope', { | 
						|
  get: function get() { | 
						|
    if (this.isScope !== true) { | 
						|
      return this.parent ? this.parent.scope : this; | 
						|
    } | 
						|
 | 
						|
    return this; | 
						|
  } | 
						|
}); | 
						|
/** | 
						|
 * Get own property names from Node prototype, but only the | 
						|
 * first time `Node` is instantiated | 
						|
 */ | 
						|
 | 
						|
function lazyKeys() { | 
						|
  if (!ownNames) { | 
						|
    ownNames = Object.getOwnPropertyNames(Node.prototype); | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * Simplified assertion. Throws an error is `val` is falsey. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function assert(val, message) { | 
						|
  if (!val) throw new Error(message); | 
						|
} | 
						|
/** | 
						|
 * Expose `Node` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports = module.exports = Node; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon-node/node_modules/define-property/index.js": | 
						|
/*!****************************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon-node/node_modules/define-property/index.js ***! | 
						|
  \****************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * define-property <https://github.com/jonschlinkert/define-property> | 
						|
 * | 
						|
 * Copyright (c) 2015, 2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var isDescriptor = __webpack_require__(/*! is-descriptor */ "./node_modules/is-descriptor/index.js"); | 
						|
 | 
						|
module.exports = function defineProperty(obj, prop, val) { | 
						|
  if (_typeof(obj) !== 'object' && typeof obj !== 'function') { | 
						|
    throw new TypeError('expected an object or function.'); | 
						|
  } | 
						|
 | 
						|
  if (typeof prop !== 'string') { | 
						|
    throw new TypeError('expected `prop` to be a string.'); | 
						|
  } | 
						|
 | 
						|
  if (isDescriptor(val) && ('set' in val || 'get' in val)) { | 
						|
    return Object.defineProperty(obj, prop, val); | 
						|
  } | 
						|
 | 
						|
  return Object.defineProperty(obj, prop, { | 
						|
    configurable: true, | 
						|
    enumerable: false, | 
						|
    writable: true, | 
						|
    value: val | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon-util/index.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./node_modules/snapdragon-util/index.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var typeOf = __webpack_require__(/*! kind-of */ "./node_modules/kind-of/index.js"); | 
						|
 | 
						|
var utils = module.exports; | 
						|
/** | 
						|
 * Returns true if the given value is a node. | 
						|
 * | 
						|
 * ```js | 
						|
 * var Node = require('snapdragon-node'); | 
						|
 * var node = new Node({type: 'foo'}); | 
						|
 * console.log(utils.isNode(node)); //=> true | 
						|
 * console.log(utils.isNode({})); //=> false | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @returns {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
utils.isNode = function (node) { | 
						|
  return typeOf(node) === 'object' && node.isNode === true; | 
						|
}; | 
						|
/** | 
						|
 * Emit an empty string for the given `node`. | 
						|
 * | 
						|
 * ```js | 
						|
 * // do nothing for beginning-of-string | 
						|
 * snapdragon.compiler.set('bos', utils.noop); | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @returns {undefined} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.noop = function (node) { | 
						|
  append(this, '', node); | 
						|
}; | 
						|
/** | 
						|
 * Appdend `node.val` to `compiler.output`, exactly as it was created | 
						|
 * by the parser. | 
						|
 * | 
						|
 * ```js | 
						|
 * snapdragon.compiler.set('text', utils.identity); | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @returns {undefined} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.identity = function (node) { | 
						|
  append(this, node.val, node); | 
						|
}; | 
						|
/** | 
						|
 * Previously named `.emit`, this method appends the given `val` | 
						|
 * to `compiler.output` for the given node. Useful when you know | 
						|
 * what value should be appended advance, regardless of the actual | 
						|
 * value of `node.val`. | 
						|
 * | 
						|
 * ```js | 
						|
 * snapdragon.compiler | 
						|
 *   .set('i', function(node) { | 
						|
 *     this.mapVisit(node); | 
						|
 *   }) | 
						|
 *   .set('i.open', utils.append('<i>')) | 
						|
 *   .set('i.close', utils.append('</i>')) | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @returns {Function} Returns a compiler middleware function. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.append = function (val) { | 
						|
  return function (node) { | 
						|
    append(this, val, node); | 
						|
  }; | 
						|
}; | 
						|
/** | 
						|
 * Used in compiler middleware, this onverts an AST node into | 
						|
 * an empty `text` node and deletes `node.nodes` if it exists. | 
						|
 * The advantage of this method is that, as opposed to completely | 
						|
 * removing the node, indices will not need to be re-calculated | 
						|
 * in sibling nodes, and nothing is appended to the output. | 
						|
 * | 
						|
 * ```js | 
						|
 * utils.toNoop(node); | 
						|
 * // convert `node.nodes` to the given value instead of deleting it | 
						|
 * utils.toNoop(node, []); | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @param {Array} `nodes` Optionally pass a new `nodes` value, to replace the existing `node.nodes` array. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.toNoop = function (node, nodes) { | 
						|
  if (nodes) { | 
						|
    node.nodes = nodes; | 
						|
  } else { | 
						|
    delete node.nodes; | 
						|
    node.type = 'text'; | 
						|
    node.val = ''; | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Visit `node` with the given `fn`. The built-in `.visit` method in snapdragon | 
						|
 * automatically calls registered compilers, this allows you to pass a visitor | 
						|
 * function. | 
						|
 * | 
						|
 * ```js | 
						|
 * snapdragon.compiler.set('i', function(node) { | 
						|
 *   utils.visit(node, function(childNode) { | 
						|
 *     // do stuff with "childNode" | 
						|
 *     return childNode; | 
						|
 *   }); | 
						|
 * }); | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @param {Function} `fn` | 
						|
 * @return {Object} returns the node after recursively visiting all child nodes. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.visit = function (node, fn) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  assert(isFunction(fn), 'expected a visitor function'); | 
						|
  fn(node); | 
						|
  return node.nodes ? utils.mapVisit(node, fn) : node; | 
						|
}; | 
						|
/** | 
						|
 * Map [visit](#visit) the given `fn` over `node.nodes`. This is called by | 
						|
 * [visit](#visit), use this method if you do not want `fn` to be called on | 
						|
 * the first node. | 
						|
 * | 
						|
 * ```js | 
						|
 * snapdragon.compiler.set('i', function(node) { | 
						|
 *   utils.mapVisit(node, function(childNode) { | 
						|
 *     // do stuff with "childNode" | 
						|
 *     return childNode; | 
						|
 *   }); | 
						|
 * }); | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @param {Object} `options` | 
						|
 * @param {Function} `fn` | 
						|
 * @return {Object} returns the node | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.mapVisit = function (node, fn) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  assert(isArray(node.nodes), 'expected node.nodes to be an array'); | 
						|
  assert(isFunction(fn), 'expected a visitor function'); | 
						|
 | 
						|
  for (var i = 0; i < node.nodes.length; i++) { | 
						|
    utils.visit(node.nodes[i], fn); | 
						|
  } | 
						|
 | 
						|
  return node; | 
						|
}; | 
						|
/** | 
						|
 * Unshift an `*.open` node onto `node.nodes`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var Node = require('snapdragon-node'); | 
						|
 * snapdragon.parser.set('brace', function(node) { | 
						|
 *   var match = this.match(/^{/); | 
						|
 *   if (match) { | 
						|
 *     var parent = new Node({type: 'brace'}); | 
						|
 *     utils.addOpen(parent, Node); | 
						|
 *     console.log(parent.nodes[0]): | 
						|
 *     // { type: 'brace.open', val: '' }; | 
						|
 * | 
						|
 *     // push the parent "brace" node onto the stack | 
						|
 *     this.push(parent); | 
						|
 * | 
						|
 *     // return the parent node, so it's also added to the AST | 
						|
 *     return brace; | 
						|
 *   } | 
						|
 * }); | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][]. | 
						|
 * @param {Function} `filter` Optionaly specify a filter function to exclude the node. | 
						|
 * @return {Object} Returns the created opening node. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.addOpen = function (node, Node, val, filter) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  assert(isFunction(Node), 'expected Node to be a constructor function'); | 
						|
 | 
						|
  if (typeof val === 'function') { | 
						|
    filter = val; | 
						|
    val = ''; | 
						|
  } | 
						|
 | 
						|
  if (typeof filter === 'function' && !filter(node)) return; | 
						|
  var open = new Node({ | 
						|
    type: node.type + '.open', | 
						|
    val: val | 
						|
  }); | 
						|
  var unshift = node.unshift || node.unshiftNode; | 
						|
 | 
						|
  if (typeof unshift === 'function') { | 
						|
    unshift.call(node, open); | 
						|
  } else { | 
						|
    utils.unshiftNode(node, open); | 
						|
  } | 
						|
 | 
						|
  return open; | 
						|
}; | 
						|
/** | 
						|
 * Push a `*.close` node onto `node.nodes`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var Node = require('snapdragon-node'); | 
						|
 * snapdragon.parser.set('brace', function(node) { | 
						|
 *   var match = this.match(/^}/); | 
						|
 *   if (match) { | 
						|
 *     var parent = this.parent(); | 
						|
 *     if (parent.type !== 'brace') { | 
						|
 *       throw new Error('missing opening: ' + '}'); | 
						|
 *     } | 
						|
 * | 
						|
 *     utils.addClose(parent, Node); | 
						|
 *     console.log(parent.nodes[parent.nodes.length - 1]): | 
						|
 *     // { type: 'brace.close', val: '' }; | 
						|
 * | 
						|
 *     // no need to return a node, since the parent | 
						|
 *     // was already added to the AST | 
						|
 *     return; | 
						|
 *   } | 
						|
 * }); | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][]. | 
						|
 * @param {Function} `filter` Optionaly specify a filter function to exclude the node. | 
						|
 * @return {Object} Returns the created closing node. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.addClose = function (node, Node, val, filter) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  assert(isFunction(Node), 'expected Node to be a constructor function'); | 
						|
 | 
						|
  if (typeof val === 'function') { | 
						|
    filter = val; | 
						|
    val = ''; | 
						|
  } | 
						|
 | 
						|
  if (typeof filter === 'function' && !filter(node)) return; | 
						|
  var close = new Node({ | 
						|
    type: node.type + '.close', | 
						|
    val: val | 
						|
  }); | 
						|
  var push = node.push || node.pushNode; | 
						|
 | 
						|
  if (typeof push === 'function') { | 
						|
    push.call(node, close); | 
						|
  } else { | 
						|
    utils.pushNode(node, close); | 
						|
  } | 
						|
 | 
						|
  return close; | 
						|
}; | 
						|
/** | 
						|
 * Wraps the given `node` with `*.open` and `*.close` nodes. | 
						|
 * | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][]. | 
						|
 * @param {Function} `filter` Optionaly specify a filter function to exclude the node. | 
						|
 * @return {Object} Returns the node | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.wrapNodes = function (node, Node, filter) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  assert(isFunction(Node), 'expected Node to be a constructor function'); | 
						|
  utils.addOpen(node, Node, filter); | 
						|
  utils.addClose(node, Node, filter); | 
						|
  return node; | 
						|
}; | 
						|
/** | 
						|
 * Push the given `node` onto `parent.nodes`, and set `parent` as `node.parent. | 
						|
 * | 
						|
 * ```js | 
						|
 * var parent = new Node({type: 'foo'}); | 
						|
 * var node = new Node({type: 'bar'}); | 
						|
 * utils.pushNode(parent, node); | 
						|
 * console.log(parent.nodes[0].type) // 'bar' | 
						|
 * console.log(node.parent.type) // 'foo' | 
						|
 * ``` | 
						|
 * @param {Object} `parent` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {Object} Returns the child node | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.pushNode = function (parent, node) { | 
						|
  assert(utils.isNode(parent), 'expected parent node to be an instance of Node'); | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  node.define('parent', parent); | 
						|
  parent.nodes = parent.nodes || []; | 
						|
  parent.nodes.push(node); | 
						|
  return node; | 
						|
}; | 
						|
/** | 
						|
 * Unshift `node` onto `parent.nodes`, and set `parent` as `node.parent. | 
						|
 * | 
						|
 * ```js | 
						|
 * var parent = new Node({type: 'foo'}); | 
						|
 * var node = new Node({type: 'bar'}); | 
						|
 * utils.unshiftNode(parent, node); | 
						|
 * console.log(parent.nodes[0].type) // 'bar' | 
						|
 * console.log(node.parent.type) // 'foo' | 
						|
 * ``` | 
						|
 * @param {Object} `parent` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {undefined} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.unshiftNode = function (parent, node) { | 
						|
  assert(utils.isNode(parent), 'expected parent node to be an instance of Node'); | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  node.define('parent', parent); | 
						|
  parent.nodes = parent.nodes || []; | 
						|
  parent.nodes.unshift(node); | 
						|
}; | 
						|
/** | 
						|
 * Pop the last `node` off of `parent.nodes`. The advantage of | 
						|
 * using this method is that it checks for `node.nodes` and works | 
						|
 * with any version of `snapdragon-node`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var parent = new Node({type: 'foo'}); | 
						|
 * utils.pushNode(parent, new Node({type: 'foo'})); | 
						|
 * utils.pushNode(parent, new Node({type: 'bar'})); | 
						|
 * utils.pushNode(parent, new Node({type: 'baz'})); | 
						|
 * console.log(parent.nodes.length); //=> 3 | 
						|
 * utils.popNode(parent); | 
						|
 * console.log(parent.nodes.length); //=> 2 | 
						|
 * ``` | 
						|
 * @param {Object} `parent` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {Number|Undefined} Returns the length of `node.nodes` or undefined. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.popNode = function (node) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
 | 
						|
  if (typeof node.pop === 'function') { | 
						|
    return node.pop(); | 
						|
  } | 
						|
 | 
						|
  return node.nodes && node.nodes.pop(); | 
						|
}; | 
						|
/** | 
						|
 * Shift the first `node` off of `parent.nodes`. The advantage of | 
						|
 * using this method is that it checks for `node.nodes` and works | 
						|
 * with any version of `snapdragon-node`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var parent = new Node({type: 'foo'}); | 
						|
 * utils.pushNode(parent, new Node({type: 'foo'})); | 
						|
 * utils.pushNode(parent, new Node({type: 'bar'})); | 
						|
 * utils.pushNode(parent, new Node({type: 'baz'})); | 
						|
 * console.log(parent.nodes.length); //=> 3 | 
						|
 * utils.shiftNode(parent); | 
						|
 * console.log(parent.nodes.length); //=> 2 | 
						|
 * ``` | 
						|
 * @param {Object} `parent` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {Number|Undefined} Returns the length of `node.nodes` or undefined. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.shiftNode = function (node) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
 | 
						|
  if (typeof node.shift === 'function') { | 
						|
    return node.shift(); | 
						|
  } | 
						|
 | 
						|
  return node.nodes && node.nodes.shift(); | 
						|
}; | 
						|
/** | 
						|
 * Remove the specified `node` from `parent.nodes`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var parent = new Node({type: 'abc'}); | 
						|
 * var foo = new Node({type: 'foo'}); | 
						|
 * utils.pushNode(parent, foo); | 
						|
 * utils.pushNode(parent, new Node({type: 'bar'})); | 
						|
 * utils.pushNode(parent, new Node({type: 'baz'})); | 
						|
 * console.log(parent.nodes.length); //=> 3 | 
						|
 * utils.removeNode(parent, foo); | 
						|
 * console.log(parent.nodes.length); //=> 2 | 
						|
 * ``` | 
						|
 * @param {Object} `parent` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {Object|undefined} Returns the removed node, if successful, or undefined if it does not exist on `parent.nodes`. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.removeNode = function (parent, node) { | 
						|
  assert(utils.isNode(parent), 'expected parent.node to be an instance of Node'); | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
 | 
						|
  if (!parent.nodes) { | 
						|
    return null; | 
						|
  } | 
						|
 | 
						|
  if (typeof parent.remove === 'function') { | 
						|
    return parent.remove(node); | 
						|
  } | 
						|
 | 
						|
  var idx = parent.nodes.indexOf(node); | 
						|
 | 
						|
  if (idx !== -1) { | 
						|
    return parent.nodes.splice(idx, 1); | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Returns true if `node.type` matches the given `type`. Throws a | 
						|
 * `TypeError` if `node` is not an instance of `Node`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var Node = require('snapdragon-node'); | 
						|
 * var node = new Node({type: 'foo'}); | 
						|
 * console.log(utils.isType(node, 'foo')); // false | 
						|
 * console.log(utils.isType(node, 'bar')); // true | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @param {String} `type` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isType = function (node, type) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
 | 
						|
  switch (typeOf(type)) { | 
						|
    case 'array': | 
						|
      var types = type.slice(); | 
						|
 | 
						|
      for (var i = 0; i < types.length; i++) { | 
						|
        if (utils.isType(node, types[i])) { | 
						|
          return true; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      return false; | 
						|
 | 
						|
    case 'string': | 
						|
      return node.type === type; | 
						|
 | 
						|
    case 'regexp': | 
						|
      return type.test(node.type); | 
						|
 | 
						|
    default: | 
						|
      { | 
						|
        throw new TypeError('expected "type" to be an array, string or regexp'); | 
						|
      } | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given `node` has the given `type` in `node.nodes`. | 
						|
 * Throws a `TypeError` if `node` is not an instance of `Node`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var Node = require('snapdragon-node'); | 
						|
 * var node = new Node({ | 
						|
 *   type: 'foo', | 
						|
 *   nodes: [ | 
						|
 *     new Node({type: 'bar'}), | 
						|
 *     new Node({type: 'baz'}) | 
						|
 *   ] | 
						|
 * }); | 
						|
 * console.log(utils.hasType(node, 'xyz')); // false | 
						|
 * console.log(utils.hasType(node, 'baz')); // true | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @param {String} `type` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.hasType = function (node, type) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  if (!Array.isArray(node.nodes)) return false; | 
						|
 | 
						|
  for (var i = 0; i < node.nodes.length; i++) { | 
						|
    if (utils.isType(node.nodes[i], type)) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; | 
						|
/** | 
						|
 * Returns the first node from `node.nodes` of the given `type` | 
						|
 * | 
						|
 * ```js | 
						|
 * var node = new Node({ | 
						|
 *   type: 'foo', | 
						|
 *   nodes: [ | 
						|
 *     new Node({type: 'text', val: 'abc'}), | 
						|
 *     new Node({type: 'text', val: 'xyz'}) | 
						|
 *   ] | 
						|
 * }); | 
						|
 * | 
						|
 * var textNode = utils.firstOfType(node.nodes, 'text'); | 
						|
 * console.log(textNode.val); | 
						|
 * //=> 'abc' | 
						|
 * ``` | 
						|
 * @param {Array} `nodes` | 
						|
 * @param {String} `type` | 
						|
 * @return {Object|undefined} Returns the first matching node or undefined. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.firstOfType = function (nodes, type) { | 
						|
  for (var i = 0; i < nodes.length; i++) { | 
						|
    var node = nodes[i]; | 
						|
 | 
						|
    if (utils.isType(node, type)) { | 
						|
      return node; | 
						|
    } | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Returns the node at the specified index, or the first node of the | 
						|
 * given `type` from `node.nodes`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var node = new Node({ | 
						|
 *   type: 'foo', | 
						|
 *   nodes: [ | 
						|
 *     new Node({type: 'text', val: 'abc'}), | 
						|
 *     new Node({type: 'text', val: 'xyz'}) | 
						|
 *   ] | 
						|
 * }); | 
						|
 * | 
						|
 * var nodeOne = utils.findNode(node.nodes, 'text'); | 
						|
 * console.log(nodeOne.val); | 
						|
 * //=> 'abc' | 
						|
 * | 
						|
 * var nodeTwo = utils.findNode(node.nodes, 1); | 
						|
 * console.log(nodeTwo.val); | 
						|
 * //=> 'xyz' | 
						|
 * ``` | 
						|
 * | 
						|
 * @param {Array} `nodes` | 
						|
 * @param {String|Number} `type` Node type or index. | 
						|
 * @return {Object} Returns a node or undefined. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.findNode = function (nodes, type) { | 
						|
  if (!Array.isArray(nodes)) { | 
						|
    return null; | 
						|
  } | 
						|
 | 
						|
  if (typeof type === 'number') { | 
						|
    return nodes[type]; | 
						|
  } | 
						|
 | 
						|
  return utils.firstOfType(nodes, type); | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given node is an "*.open" node. | 
						|
 * | 
						|
 * ```js | 
						|
 * var Node = require('snapdragon-node'); | 
						|
 * var brace = new Node({type: 'brace'}); | 
						|
 * var open = new Node({type: 'brace.open'}); | 
						|
 * var close = new Node({type: 'brace.close'}); | 
						|
 * | 
						|
 * console.log(utils.isOpen(brace)); // false | 
						|
 * console.log(utils.isOpen(open)); // true | 
						|
 * console.log(utils.isOpen(close)); // false | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isOpen = function (node) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  return node.type.slice(-5) === '.open'; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the given node is a "*.close" node. | 
						|
 * | 
						|
 * ```js | 
						|
 * var Node = require('snapdragon-node'); | 
						|
 * var brace = new Node({type: 'brace'}); | 
						|
 * var open = new Node({type: 'brace.open'}); | 
						|
 * var close = new Node({type: 'brace.close'}); | 
						|
 * | 
						|
 * console.log(utils.isClose(brace)); // false | 
						|
 * console.log(utils.isClose(open)); // false | 
						|
 * console.log(utils.isClose(close)); // true | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isClose = function (node) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  return node.type.slice(-6) === '.close'; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if `node.nodes` **has** an `.open` node | 
						|
 * | 
						|
 * ```js | 
						|
 * var Node = require('snapdragon-node'); | 
						|
 * var brace = new Node({ | 
						|
 *   type: 'brace', | 
						|
 *   nodes: [] | 
						|
 * }); | 
						|
 * | 
						|
 * var open = new Node({type: 'brace.open'}); | 
						|
 * console.log(utils.hasOpen(brace)); // false | 
						|
 * | 
						|
 * brace.pushNode(open); | 
						|
 * console.log(utils.hasOpen(brace)); // true | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.hasOpen = function (node) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  var first = node.first || node.nodes ? node.nodes[0] : null; | 
						|
 | 
						|
  if (utils.isNode(first)) { | 
						|
    return first.type === node.type + '.open'; | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if `node.nodes` **has** a `.close` node | 
						|
 * | 
						|
 * ```js | 
						|
 * var Node = require('snapdragon-node'); | 
						|
 * var brace = new Node({ | 
						|
 *   type: 'brace', | 
						|
 *   nodes: [] | 
						|
 * }); | 
						|
 * | 
						|
 * var close = new Node({type: 'brace.close'}); | 
						|
 * console.log(utils.hasClose(brace)); // false | 
						|
 * | 
						|
 * brace.pushNode(close); | 
						|
 * console.log(utils.hasClose(brace)); // true | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.hasClose = function (node) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  var last = node.last || node.nodes ? node.nodes[node.nodes.length - 1] : null; | 
						|
 | 
						|
  if (utils.isNode(last)) { | 
						|
    return last.type === node.type + '.close'; | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if `node.nodes` has both `.open` and `.close` nodes | 
						|
 * | 
						|
 * ```js | 
						|
 * var Node = require('snapdragon-node'); | 
						|
 * var brace = new Node({ | 
						|
 *   type: 'brace', | 
						|
 *   nodes: [] | 
						|
 * }); | 
						|
 * | 
						|
 * var open = new Node({type: 'brace.open'}); | 
						|
 * var close = new Node({type: 'brace.close'}); | 
						|
 * console.log(utils.hasOpen(brace)); // false | 
						|
 * console.log(utils.hasClose(brace)); // false | 
						|
 * | 
						|
 * brace.pushNode(open); | 
						|
 * brace.pushNode(close); | 
						|
 * console.log(utils.hasOpen(brace)); // true | 
						|
 * console.log(utils.hasClose(brace)); // true | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.hasOpenAndClose = function (node) { | 
						|
  return utils.hasOpen(node) && utils.hasClose(node); | 
						|
}; | 
						|
/** | 
						|
 * Push the given `node` onto the `state.inside` array for the | 
						|
 * given type. This array is used as a specialized "stack" for | 
						|
 * only the given `node.type`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var state = { inside: {}}; | 
						|
 * var node = new Node({type: 'brace'}); | 
						|
 * utils.addType(state, node); | 
						|
 * console.log(state.inside); | 
						|
 * //=> { brace: [{type: 'brace'}] } | 
						|
 * ``` | 
						|
 * @param {Object} `state` The `compiler.state` object or custom state object. | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {Array} Returns the `state.inside` stack for the given type. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.addType = function (state, node) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  assert(isObject(state), 'expected state to be an object'); | 
						|
  var type = node.parent ? node.parent.type : node.type.replace(/\.open$/, ''); | 
						|
 | 
						|
  if (!state.hasOwnProperty('inside')) { | 
						|
    state.inside = {}; | 
						|
  } | 
						|
 | 
						|
  if (!state.inside.hasOwnProperty(type)) { | 
						|
    state.inside[type] = []; | 
						|
  } | 
						|
 | 
						|
  var arr = state.inside[type]; | 
						|
  arr.push(node); | 
						|
  return arr; | 
						|
}; | 
						|
/** | 
						|
 * Remove the given `node` from the `state.inside` array for the | 
						|
 * given type. This array is used as a specialized "stack" for | 
						|
 * only the given `node.type`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var state = { inside: {}}; | 
						|
 * var node = new Node({type: 'brace'}); | 
						|
 * utils.addType(state, node); | 
						|
 * console.log(state.inside); | 
						|
 * //=> { brace: [{type: 'brace'}] } | 
						|
 * utils.removeType(state, node); | 
						|
 * //=> { brace: [] } | 
						|
 * ``` | 
						|
 * @param {Object} `state` The `compiler.state` object or custom state object. | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @return {Array} Returns the `state.inside` stack for the given type. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.removeType = function (state, node) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  assert(isObject(state), 'expected state to be an object'); | 
						|
  var type = node.parent ? node.parent.type : node.type.replace(/\.close$/, ''); | 
						|
 | 
						|
  if (state.inside.hasOwnProperty(type)) { | 
						|
    return state.inside[type].pop(); | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Returns true if `node.val` is an empty string, or `node.nodes` does | 
						|
 * not contain any non-empty text nodes. | 
						|
 * | 
						|
 * ```js | 
						|
 * var node = new Node({type: 'text'}); | 
						|
 * utils.isEmpty(node); //=> true | 
						|
 * node.val = 'foo'; | 
						|
 * utils.isEmpty(node); //=> false | 
						|
 * ``` | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @param {Function} `fn` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isEmpty = function (node, fn) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
 | 
						|
  if (!Array.isArray(node.nodes)) { | 
						|
    if (node.type !== 'text') { | 
						|
      return true; | 
						|
    } | 
						|
 | 
						|
    if (typeof fn === 'function') { | 
						|
      return fn(node, node.parent); | 
						|
    } | 
						|
 | 
						|
    return !utils.trim(node.val); | 
						|
  } | 
						|
 | 
						|
  for (var i = 0; i < node.nodes.length; i++) { | 
						|
    var child = node.nodes[i]; | 
						|
 | 
						|
    if (utils.isOpen(child) || utils.isClose(child)) { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (!utils.isEmpty(child, fn)) { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if the `state.inside` stack for the given type exists | 
						|
 * and has one or more nodes on it. | 
						|
 * | 
						|
 * ```js | 
						|
 * var state = { inside: {}}; | 
						|
 * var node = new Node({type: 'brace'}); | 
						|
 * console.log(utils.isInsideType(state, 'brace')); //=> false | 
						|
 * utils.addType(state, node); | 
						|
 * console.log(utils.isInsideType(state, 'brace')); //=> true | 
						|
 * utils.removeType(state, node); | 
						|
 * console.log(utils.isInsideType(state, 'brace')); //=> false | 
						|
 * ``` | 
						|
 * @param {Object} `state` | 
						|
 * @param {String} `type` | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isInsideType = function (state, type) { | 
						|
  assert(isObject(state), 'expected state to be an object'); | 
						|
  assert(isString(type), 'expected type to be a string'); | 
						|
 | 
						|
  if (!state.hasOwnProperty('inside')) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (!state.inside.hasOwnProperty(type)) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  return state.inside[type].length > 0; | 
						|
}; | 
						|
/** | 
						|
 * Returns true if `node` is either a child or grand-child of the given `type`, | 
						|
 * or `state.inside[type]` is a non-empty array. | 
						|
 * | 
						|
 * ```js | 
						|
 * var state = { inside: {}}; | 
						|
 * var node = new Node({type: 'brace'}); | 
						|
 * var open = new Node({type: 'brace.open'}); | 
						|
 * console.log(utils.isInside(state, open, 'brace')); //=> false | 
						|
 * utils.pushNode(node, open); | 
						|
 * console.log(utils.isInside(state, open, 'brace')); //=> true | 
						|
 * ``` | 
						|
 * @param {Object} `state` Either the `compiler.state` object, if it exists, or a user-supplied state object. | 
						|
 * @param {Object} `node` Instance of [snapdragon-node][] | 
						|
 * @param {String} `type` The `node.type` to check for. | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.isInside = function (state, node, type) { | 
						|
  assert(utils.isNode(node), 'expected node to be an instance of Node'); | 
						|
  assert(isObject(state), 'expected state to be an object'); | 
						|
 | 
						|
  if (Array.isArray(type)) { | 
						|
    for (var i = 0; i < type.length; i++) { | 
						|
      if (utils.isInside(state, node, type[i])) { | 
						|
        return true; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  var parent = node.parent; | 
						|
 | 
						|
  if (typeof type === 'string') { | 
						|
    return parent && parent.type === type || utils.isInsideType(state, type); | 
						|
  } | 
						|
 | 
						|
  if (typeOf(type) === 'regexp') { | 
						|
    if (parent && parent.type && type.test(parent.type)) { | 
						|
      return true; | 
						|
    } | 
						|
 | 
						|
    var keys = Object.keys(state.inside); | 
						|
    var len = keys.length; | 
						|
    var idx = -1; | 
						|
 | 
						|
    while (++idx < len) { | 
						|
      var key = keys[idx]; | 
						|
      var val = state.inside[key]; | 
						|
 | 
						|
      if (Array.isArray(val) && val.length !== 0 && type.test(key)) { | 
						|
        return true; | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; | 
						|
/** | 
						|
 * Get the last `n` element from the given `array`. Used for getting | 
						|
 * a node from `node.nodes.` | 
						|
 * | 
						|
 * @param {Array} `array` | 
						|
 * @param {Number} `n` | 
						|
 * @return {undefined} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.last = function (arr, n) { | 
						|
  return arr[arr.length - (n || 1)]; | 
						|
}; | 
						|
/** | 
						|
 * Cast the given `val` to an array. | 
						|
 * | 
						|
 * ```js | 
						|
 * console.log(utils.arrayify('')); | 
						|
 * //=> [] | 
						|
 * console.log(utils.arrayify('foo')); | 
						|
 * //=> ['foo'] | 
						|
 * console.log(utils.arrayify(['foo'])); | 
						|
 * //=> ['foo'] | 
						|
 * ``` | 
						|
 * @param {any} `val` | 
						|
 * @return {Array} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.arrayify = function (val) { | 
						|
  if (typeof val === 'string' && val !== '') { | 
						|
    return [val]; | 
						|
  } | 
						|
 | 
						|
  if (!Array.isArray(val)) { | 
						|
    return []; | 
						|
  } | 
						|
 | 
						|
  return val; | 
						|
}; | 
						|
/** | 
						|
 * Convert the given `val` to a string by joining with `,`. Useful | 
						|
 * for creating a cheerio/CSS/DOM-style selector from a list of strings. | 
						|
 * | 
						|
 * @param {any} `val` | 
						|
 * @return {Array} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.stringify = function (val) { | 
						|
  return utils.arrayify(val).join(','); | 
						|
}; | 
						|
/** | 
						|
 * Ensure that the given value is a string and call `.trim()` on it, | 
						|
 * or return an empty string. | 
						|
 * | 
						|
 * @param {String} `str` | 
						|
 * @return {String} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
utils.trim = function (str) { | 
						|
  return typeof str === 'string' ? str.trim() : ''; | 
						|
}; | 
						|
/** | 
						|
 * Return true if val is an object | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isObject(val) { | 
						|
  return typeOf(val) === 'object'; | 
						|
} | 
						|
/** | 
						|
 * Return true if val is a string | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isString(val) { | 
						|
  return typeof val === 'string'; | 
						|
} | 
						|
/** | 
						|
 * Return true if val is a function | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isFunction(val) { | 
						|
  return typeof val === 'function'; | 
						|
} | 
						|
/** | 
						|
 * Return true if val is an array | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function isArray(val) { | 
						|
  return Array.isArray(val); | 
						|
} | 
						|
/** | 
						|
 * Shim to ensure the `.append` methods work with any version of snapdragon | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function append(compiler, val, node) { | 
						|
  if (typeof compiler.append !== 'function') { | 
						|
    return compiler.emit(val, node); | 
						|
  } | 
						|
 | 
						|
  return compiler.append(val, node); | 
						|
} | 
						|
/** | 
						|
 * Simplified assertion. Throws an error is `val` is falsey. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function assert(val, message) { | 
						|
  if (!val) throw new Error(message); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/index.js": | 
						|
/*!******************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/index.js ***! | 
						|
  \******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var Base = __webpack_require__(/*! base */ "./node_modules/base/index.js"); | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/define-property/index.js"); | 
						|
 | 
						|
var Compiler = __webpack_require__(/*! ./lib/compiler */ "./node_modules/snapdragon/lib/compiler.js"); | 
						|
 | 
						|
var Parser = __webpack_require__(/*! ./lib/parser */ "./node_modules/snapdragon/lib/parser.js"); | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./lib/utils */ "./node_modules/snapdragon/lib/utils.js"); | 
						|
 | 
						|
var regexCache = {}; | 
						|
var cache = {}; | 
						|
/** | 
						|
 * Create a new instance of `Snapdragon` with the given `options`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var snapdragon = new Snapdragon(); | 
						|
 * ``` | 
						|
 * | 
						|
 * @param {Object} `options` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
function Snapdragon(options) { | 
						|
  Base.call(this, null, options); | 
						|
  this.options = utils.extend({ | 
						|
    source: 'string' | 
						|
  }, this.options); | 
						|
  this.compiler = new Compiler(this.options); | 
						|
  this.parser = new Parser(this.options); | 
						|
  Object.defineProperty(this, 'compilers', { | 
						|
    get: function get() { | 
						|
      return this.compiler.compilers; | 
						|
    } | 
						|
  }); | 
						|
  Object.defineProperty(this, 'parsers', { | 
						|
    get: function get() { | 
						|
      return this.parser.parsers; | 
						|
    } | 
						|
  }); | 
						|
  Object.defineProperty(this, 'regex', { | 
						|
    get: function get() { | 
						|
      return this.parser.regex; | 
						|
    } | 
						|
  }); | 
						|
} | 
						|
/** | 
						|
 * Inherit Base | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Base.extend(Snapdragon); | 
						|
/** | 
						|
 * Add a parser to `snapdragon.parsers` for capturing the given `type` using | 
						|
 * the specified regex or parser function. A function is useful if you need | 
						|
 * to customize how the token is created and/or have access to the parser | 
						|
 * instance to check options, etc. | 
						|
 * | 
						|
 * ```js | 
						|
 * snapdragon | 
						|
 *   .capture('slash', /^\//) | 
						|
 *   .capture('dot', function() { | 
						|
 *     var pos = this.position(); | 
						|
 *     var m = this.match(/^\./); | 
						|
 *     if (!m) return; | 
						|
 *     return pos({ | 
						|
 *       type: 'dot', | 
						|
 *       val: m[0] | 
						|
 *     }); | 
						|
 *   }); | 
						|
 * ``` | 
						|
 * @param {String} `type` | 
						|
 * @param {RegExp|Function} `regex` | 
						|
 * @return {Object} Returns the parser instance for chaining | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
Snapdragon.prototype.capture = function () { | 
						|
  return this.parser.capture.apply(this.parser, arguments); | 
						|
}; | 
						|
/** | 
						|
 * Register a plugin `fn`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var snapdragon = new Snapdgragon([options]); | 
						|
 * snapdragon.use(function() { | 
						|
 *   console.log(this);          //<= snapdragon instance | 
						|
 *   console.log(this.parser);   //<= parser instance | 
						|
 *   console.log(this.compiler); //<= compiler instance | 
						|
 * }); | 
						|
 * ``` | 
						|
 * @param {Object} `fn` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Snapdragon.prototype.use = function (fn) { | 
						|
  fn.call(this, this); | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Parse the given `str`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var snapdragon = new Snapdgragon([options]); | 
						|
 * // register parsers | 
						|
 * snapdragon.parser.use(function() {}); | 
						|
 * | 
						|
 * // parse | 
						|
 * var ast = snapdragon.parse('foo/bar'); | 
						|
 * console.log(ast); | 
						|
 * ``` | 
						|
 * @param {String} `str` | 
						|
 * @param {Object} `options` Set `options.sourcemap` to true to enable source maps. | 
						|
 * @return {Object} Returns an AST. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Snapdragon.prototype.parse = function (str, options) { | 
						|
  this.options = utils.extend({}, this.options, options); | 
						|
  var parsed = this.parser.parse(str, this.options); // add non-enumerable parser reference | 
						|
 | 
						|
  define(parsed, 'parser', this.parser); | 
						|
  return parsed; | 
						|
}; | 
						|
/** | 
						|
 * Compile the given `AST`. | 
						|
 * | 
						|
 * ```js | 
						|
 * var snapdragon = new Snapdgragon([options]); | 
						|
 * // register plugins | 
						|
 * snapdragon.use(function() {}); | 
						|
 * // register parser plugins | 
						|
 * snapdragon.parser.use(function() {}); | 
						|
 * // register compiler plugins | 
						|
 * snapdragon.compiler.use(function() {}); | 
						|
 * | 
						|
 * // parse | 
						|
 * var ast = snapdragon.parse('foo/bar'); | 
						|
 * | 
						|
 * // compile | 
						|
 * var res = snapdragon.compile(ast); | 
						|
 * console.log(res.output); | 
						|
 * ``` | 
						|
 * @param {Object} `ast` | 
						|
 * @param {Object} `options` | 
						|
 * @return {Object} Returns an object with an `output` property with the rendered string. | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Snapdragon.prototype.compile = function (ast, options) { | 
						|
  this.options = utils.extend({}, this.options, options); | 
						|
  var compiled = this.compiler.compile(ast, this.options); // add non-enumerable compiler reference | 
						|
 | 
						|
  define(compiled, 'compiler', this.compiler); | 
						|
  return compiled; | 
						|
}; | 
						|
/** | 
						|
 * Expose `Snapdragon` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = Snapdragon; | 
						|
/** | 
						|
 * Expose `Parser` and `Compiler` | 
						|
 */ | 
						|
 | 
						|
module.exports.Compiler = Compiler; | 
						|
module.exports.Parser = Parser; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/lib/compiler.js": | 
						|
/*!*************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/lib/compiler.js ***! | 
						|
  \*************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(__filename) { | 
						|
 | 
						|
var use = __webpack_require__(/*! use */ "./node_modules/use/index.js"); | 
						|
 | 
						|
var _define = __webpack_require__(/*! define-property */ "./node_modules/define-property/index.js"); | 
						|
 | 
						|
var debug = __webpack_require__(/*! debug */ "./node_modules/snapdragon/node_modules/debug/src/browser.js")('snapdragon:compiler'); | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./utils */ "./node_modules/snapdragon/lib/utils.js"); | 
						|
/** | 
						|
 * Create a new `Compiler` with the given `options`. | 
						|
 * @param {Object} `options` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function Compiler(options, state) { | 
						|
  debug('initializing', __filename); | 
						|
  this.options = utils.extend({ | 
						|
    source: 'string' | 
						|
  }, options); | 
						|
  this.state = state || {}; | 
						|
  this.compilers = {}; | 
						|
  this.output = ''; | 
						|
  this.set('eos', function (node) { | 
						|
    return this.emit(node.val, node); | 
						|
  }); | 
						|
  this.set('noop', function (node) { | 
						|
    return this.emit(node.val, node); | 
						|
  }); | 
						|
  this.set('bos', function (node) { | 
						|
    return this.emit(node.val, node); | 
						|
  }); | 
						|
  use(this); | 
						|
} | 
						|
/** | 
						|
 * Prototype methods | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Compiler.prototype = { | 
						|
  /** | 
						|
   * Throw an error message with details including the cursor position. | 
						|
   * @param {String} `msg` Message to use in the Error. | 
						|
   */ | 
						|
  error: function error(msg, node) { | 
						|
    var pos = node.position || { | 
						|
      start: { | 
						|
        column: 0 | 
						|
      } | 
						|
    }; | 
						|
    var message = this.options.source + ' column:' + pos.start.column + ': ' + msg; | 
						|
    var err = new Error(message); | 
						|
    err.reason = msg; | 
						|
    err.column = pos.start.column; | 
						|
    err.source = this.pattern; | 
						|
 | 
						|
    if (this.options.silent) { | 
						|
      this.errors.push(err); | 
						|
    } else { | 
						|
      throw err; | 
						|
    } | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Define a non-enumberable property on the `Compiler` instance. | 
						|
   * | 
						|
   * ```js | 
						|
   * compiler.define('foo', 'bar'); | 
						|
   * ``` | 
						|
   * @name .define | 
						|
   * @param {String} `key` propery name | 
						|
   * @param {any} `val` property value | 
						|
   * @return {Object} Returns the Compiler instance for chaining. | 
						|
   * @api public | 
						|
   */ | 
						|
  define: function define(key, val) { | 
						|
    _define(this, key, val); | 
						|
 | 
						|
    return this; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Emit `node.val` | 
						|
   */ | 
						|
  emit: function emit(str, node) { | 
						|
    this.output += str; | 
						|
    return str; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Add a compiler `fn` with the given `name` | 
						|
   */ | 
						|
  set: function set(name, fn) { | 
						|
    this.compilers[name] = fn; | 
						|
    return this; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Get compiler `name`. | 
						|
   */ | 
						|
  get: function get(name) { | 
						|
    return this.compilers[name]; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Get the previous AST node. | 
						|
   */ | 
						|
  prev: function prev(n) { | 
						|
    return this.ast.nodes[this.idx - (n || 1)] || { | 
						|
      type: 'bos', | 
						|
      val: '' | 
						|
    }; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Get the next AST node. | 
						|
   */ | 
						|
  next: function next(n) { | 
						|
    return this.ast.nodes[this.idx + (n || 1)] || { | 
						|
      type: 'eos', | 
						|
      val: '' | 
						|
    }; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Visit `node`. | 
						|
   */ | 
						|
  visit: function visit(node, nodes, i) { | 
						|
    var fn = this.compilers[node.type]; | 
						|
    this.idx = i; | 
						|
 | 
						|
    if (typeof fn !== 'function') { | 
						|
      throw this.error('compiler "' + node.type + '" is not registered', node); | 
						|
    } | 
						|
 | 
						|
    return fn.call(this, node, nodes, i); | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Map visit over array of `nodes`. | 
						|
   */ | 
						|
  mapVisit: function mapVisit(nodes) { | 
						|
    if (!Array.isArray(nodes)) { | 
						|
      throw new TypeError('expected an array'); | 
						|
    } | 
						|
 | 
						|
    var len = nodes.length; | 
						|
    var idx = -1; | 
						|
 | 
						|
    while (++idx < len) { | 
						|
      this.visit(nodes[idx], nodes, idx); | 
						|
    } | 
						|
 | 
						|
    return this; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Compile `ast`. | 
						|
   */ | 
						|
  compile: function compile(ast, options) { | 
						|
    var opts = utils.extend({}, this.options, options); | 
						|
    this.ast = ast; | 
						|
    this.parsingErrors = this.ast.errors; | 
						|
    this.output = ''; // source map support | 
						|
 | 
						|
    if (opts.sourcemap) { | 
						|
      var sourcemaps = __webpack_require__(/*! ./source-maps */ "./node_modules/snapdragon/lib/source-maps.js"); | 
						|
 | 
						|
      sourcemaps(this); | 
						|
      this.mapVisit(this.ast.nodes); | 
						|
      this.applySourceMaps(); | 
						|
      this.map = opts.sourcemap === 'generator' ? this.map : this.map.toJSON(); | 
						|
      return this; | 
						|
    } | 
						|
 | 
						|
    this.mapVisit(this.ast.nodes); | 
						|
    return this; | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Expose `Compiler` | 
						|
 */ | 
						|
 | 
						|
module.exports = Compiler; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, "/index.js")) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/lib/parser.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/lib/parser.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(__filename) { | 
						|
 | 
						|
var use = __webpack_require__(/*! use */ "./node_modules/use/index.js"); | 
						|
 | 
						|
var util = __webpack_require__(/*! util */ "./node_modules/util/util.js"); | 
						|
 | 
						|
var Cache = __webpack_require__(/*! map-cache */ "./node_modules/map-cache/index.js"); | 
						|
 | 
						|
var _define = __webpack_require__(/*! define-property */ "./node_modules/define-property/index.js"); | 
						|
 | 
						|
var debug = __webpack_require__(/*! debug */ "./node_modules/snapdragon/node_modules/debug/src/browser.js")('snapdragon:parser'); | 
						|
 | 
						|
var Position = __webpack_require__(/*! ./position */ "./node_modules/snapdragon/lib/position.js"); | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./utils */ "./node_modules/snapdragon/lib/utils.js"); | 
						|
/** | 
						|
 * Create a new `Parser` with the given `input` and `options`. | 
						|
 * @param {String} `input` | 
						|
 * @param {Object} `options` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function Parser(options) { | 
						|
  debug('initializing', __filename); | 
						|
  this.options = utils.extend({ | 
						|
    source: 'string' | 
						|
  }, options); | 
						|
  this.init(this.options); | 
						|
  use(this); | 
						|
} | 
						|
/** | 
						|
 * Prototype methods | 
						|
 */ | 
						|
 | 
						|
 | 
						|
Parser.prototype = { | 
						|
  constructor: Parser, | 
						|
  init: function init(options) { | 
						|
    this.orig = ''; | 
						|
    this.input = ''; | 
						|
    this.parsed = ''; | 
						|
    this.column = 1; | 
						|
    this.line = 1; | 
						|
    this.regex = new Cache(); | 
						|
    this.errors = this.errors || []; | 
						|
    this.parsers = this.parsers || {}; | 
						|
    this.types = this.types || []; | 
						|
    this.sets = this.sets || {}; | 
						|
    this.fns = this.fns || []; | 
						|
    this.currentType = 'root'; | 
						|
    var pos = this.position(); | 
						|
    this.bos = pos({ | 
						|
      type: 'bos', | 
						|
      val: '' | 
						|
    }); | 
						|
    this.ast = { | 
						|
      type: 'root', | 
						|
      errors: this.errors, | 
						|
      nodes: [this.bos] | 
						|
    }; | 
						|
 | 
						|
    _define(this.bos, 'parent', this.ast); | 
						|
 | 
						|
    this.nodes = [this.ast]; | 
						|
    this.count = 0; | 
						|
    this.setCount = 0; | 
						|
    this.stack = []; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Throw a formatted error with the cursor column and `msg`. | 
						|
   * @param {String} `msg` Message to use in the Error. | 
						|
   */ | 
						|
  error: function error(msg, node) { | 
						|
    var pos = node.position || { | 
						|
      start: { | 
						|
        column: 0, | 
						|
        line: 0 | 
						|
      } | 
						|
    }; | 
						|
    var line = pos.start.line; | 
						|
    var column = pos.start.column; | 
						|
    var source = this.options.source; | 
						|
    var message = source + ' <line:' + line + ' column:' + column + '>: ' + msg; | 
						|
    var err = new Error(message); | 
						|
    err.source = source; | 
						|
    err.reason = msg; | 
						|
    err.pos = pos; | 
						|
 | 
						|
    if (this.options.silent) { | 
						|
      this.errors.push(err); | 
						|
    } else { | 
						|
      throw err; | 
						|
    } | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Define a non-enumberable property on the `Parser` instance. | 
						|
   * | 
						|
   * ```js | 
						|
   * parser.define('foo', 'bar'); | 
						|
   * ``` | 
						|
   * @name .define | 
						|
   * @param {String} `key` propery name | 
						|
   * @param {any} `val` property value | 
						|
   * @return {Object} Returns the Parser instance for chaining. | 
						|
   * @api public | 
						|
   */ | 
						|
  define: function define(key, val) { | 
						|
    _define(this, key, val); | 
						|
 | 
						|
    return this; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Mark position and patch `node.position`. | 
						|
   */ | 
						|
  position: function position() { | 
						|
    var start = { | 
						|
      line: this.line, | 
						|
      column: this.column | 
						|
    }; | 
						|
    var self = this; | 
						|
    return function (node) { | 
						|
      _define(node, 'position', new Position(start, self)); | 
						|
 | 
						|
      return node; | 
						|
    }; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Set parser `name` with the given `fn` | 
						|
   * @param {String} `name` | 
						|
   * @param {Function} `fn` | 
						|
   * @api public | 
						|
   */ | 
						|
  set: function set(type, fn) { | 
						|
    if (this.types.indexOf(type) === -1) { | 
						|
      this.types.push(type); | 
						|
    } | 
						|
 | 
						|
    this.parsers[type] = fn.bind(this); | 
						|
    return this; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Get parser `name` | 
						|
   * @param {String} `name` | 
						|
   * @api public | 
						|
   */ | 
						|
  get: function get(name) { | 
						|
    return this.parsers[name]; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Push a `token` onto the `type` stack. | 
						|
   * | 
						|
   * @param {String} `type` | 
						|
   * @return {Object} `token` | 
						|
   * @api public | 
						|
   */ | 
						|
  push: function push(type, token) { | 
						|
    this.sets[type] = this.sets[type] || []; | 
						|
    this.count++; | 
						|
    this.stack.push(token); | 
						|
    return this.sets[type].push(token); | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Pop a token off of the `type` stack | 
						|
   * @param {String} `type` | 
						|
   * @returns {Object} Returns a token | 
						|
   * @api public | 
						|
   */ | 
						|
  pop: function pop(type) { | 
						|
    this.sets[type] = this.sets[type] || []; | 
						|
    this.count--; | 
						|
    this.stack.pop(); | 
						|
    return this.sets[type].pop(); | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Return true if inside a `stack` node. Types are `braces`, `parens` or `brackets`. | 
						|
   * | 
						|
   * @param {String} `type` | 
						|
   * @return {Boolean} | 
						|
   * @api public | 
						|
   */ | 
						|
  isInside: function isInside(type) { | 
						|
    this.sets[type] = this.sets[type] || []; | 
						|
    return this.sets[type].length > 0; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Return true if `node` is the given `type`. | 
						|
   * | 
						|
   * ```js | 
						|
   * parser.isType(node, 'brace'); | 
						|
   * ``` | 
						|
   * @param {Object} `node` | 
						|
   * @param {String} `type` | 
						|
   * @return {Boolean} | 
						|
   * @api public | 
						|
   */ | 
						|
  isType: function isType(node, type) { | 
						|
    return node && node.type === type; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Get the previous AST node | 
						|
   * @return {Object} | 
						|
   */ | 
						|
  prev: function prev(n) { | 
						|
    return this.stack.length > 0 ? utils.last(this.stack, n) : utils.last(this.nodes, n); | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Update line and column based on `str`. | 
						|
   */ | 
						|
  consume: function consume(len) { | 
						|
    this.input = this.input.substr(len); | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Update column based on `str`. | 
						|
   */ | 
						|
  updatePosition: function updatePosition(str, len) { | 
						|
    var lines = str.match(/\n/g); | 
						|
    if (lines) this.line += lines.length; | 
						|
    var i = str.lastIndexOf('\n'); | 
						|
    this.column = ~i ? len - i : this.column + len; | 
						|
    this.parsed += str; | 
						|
    this.consume(len); | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Match `regex`, return captures, and update the cursor position by `match[0]` length. | 
						|
   * @param {RegExp} `regex` | 
						|
   * @return {Object} | 
						|
   */ | 
						|
  match: function match(regex) { | 
						|
    var m = regex.exec(this.input); | 
						|
 | 
						|
    if (m) { | 
						|
      this.updatePosition(m[0], m[0].length); | 
						|
      return m; | 
						|
    } | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Capture `type` with the given regex. | 
						|
   * @param {String} `type` | 
						|
   * @param {RegExp} `regex` | 
						|
   * @return {Function} | 
						|
   */ | 
						|
  capture: function capture(type, regex) { | 
						|
    if (typeof regex === 'function') { | 
						|
      return this.set.apply(this, arguments); | 
						|
    } | 
						|
 | 
						|
    this.regex.set(type, regex); | 
						|
    this.set(type, function () { | 
						|
      var parsed = this.parsed; | 
						|
      var pos = this.position(); | 
						|
      var m = this.match(regex); | 
						|
      if (!m || !m[0]) return; | 
						|
      var prev = this.prev(); | 
						|
      var node = pos({ | 
						|
        type: type, | 
						|
        val: m[0], | 
						|
        parsed: parsed, | 
						|
        rest: this.input | 
						|
      }); | 
						|
 | 
						|
      if (m[1]) { | 
						|
        node.inner = m[1]; | 
						|
      } | 
						|
 | 
						|
      _define(node, 'inside', this.stack.length > 0); | 
						|
 | 
						|
      _define(node, 'parent', prev); | 
						|
 | 
						|
      prev.nodes.push(node); | 
						|
    }.bind(this)); | 
						|
    return this; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Create a parser with open and close for parens, | 
						|
   * brackets or braces | 
						|
   */ | 
						|
  capturePair: function capturePair(type, openRegex, closeRegex, fn) { | 
						|
    this.sets[type] = this.sets[type] || []; | 
						|
    /** | 
						|
     * Open | 
						|
     */ | 
						|
 | 
						|
    this.set(type + '.open', function () { | 
						|
      var parsed = this.parsed; | 
						|
      var pos = this.position(); | 
						|
      var m = this.match(openRegex); | 
						|
      if (!m || !m[0]) return; | 
						|
      var val = m[0]; | 
						|
      this.setCount++; | 
						|
      this.specialChars = true; | 
						|
      var open = pos({ | 
						|
        type: type + '.open', | 
						|
        val: val, | 
						|
        rest: this.input | 
						|
      }); | 
						|
 | 
						|
      if (typeof m[1] !== 'undefined') { | 
						|
        open.inner = m[1]; | 
						|
      } | 
						|
 | 
						|
      var prev = this.prev(); | 
						|
      var node = pos({ | 
						|
        type: type, | 
						|
        nodes: [open] | 
						|
      }); | 
						|
 | 
						|
      _define(node, 'rest', this.input); | 
						|
 | 
						|
      _define(node, 'parsed', parsed); | 
						|
 | 
						|
      _define(node, 'prefix', m[1]); | 
						|
 | 
						|
      _define(node, 'parent', prev); | 
						|
 | 
						|
      _define(open, 'parent', node); | 
						|
 | 
						|
      if (typeof fn === 'function') { | 
						|
        fn.call(this, open, node); | 
						|
      } | 
						|
 | 
						|
      this.push(type, node); | 
						|
      prev.nodes.push(node); | 
						|
    }); | 
						|
    /** | 
						|
     * Close | 
						|
     */ | 
						|
 | 
						|
    this.set(type + '.close', function () { | 
						|
      var pos = this.position(); | 
						|
      var m = this.match(closeRegex); | 
						|
      if (!m || !m[0]) return; | 
						|
      var parent = this.pop(type); | 
						|
      var node = pos({ | 
						|
        type: type + '.close', | 
						|
        rest: this.input, | 
						|
        suffix: m[1], | 
						|
        val: m[0] | 
						|
      }); | 
						|
 | 
						|
      if (!this.isType(parent, type)) { | 
						|
        if (this.options.strict) { | 
						|
          throw new Error('missing opening "' + type + '"'); | 
						|
        } | 
						|
 | 
						|
        this.setCount--; | 
						|
        node.escaped = true; | 
						|
        return node; | 
						|
      } | 
						|
 | 
						|
      if (node.suffix === '\\') { | 
						|
        parent.escaped = true; | 
						|
        node.escaped = true; | 
						|
      } | 
						|
 | 
						|
      parent.nodes.push(node); | 
						|
 | 
						|
      _define(node, 'parent', parent); | 
						|
    }); | 
						|
    return this; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Capture end-of-string | 
						|
   */ | 
						|
  eos: function eos() { | 
						|
    var pos = this.position(); | 
						|
    if (this.input) return; | 
						|
    var prev = this.prev(); | 
						|
 | 
						|
    while (prev.type !== 'root' && !prev.visited) { | 
						|
      if (this.options.strict === true) { | 
						|
        throw new SyntaxError('invalid syntax:' + util.inspect(prev, null, 2)); | 
						|
      } | 
						|
 | 
						|
      if (!hasDelims(prev)) { | 
						|
        prev.parent.escaped = true; | 
						|
        prev.escaped = true; | 
						|
      } | 
						|
 | 
						|
      visit(prev, function (node) { | 
						|
        if (!hasDelims(node.parent)) { | 
						|
          node.parent.escaped = true; | 
						|
          node.escaped = true; | 
						|
        } | 
						|
      }); | 
						|
      prev = prev.parent; | 
						|
    } | 
						|
 | 
						|
    var tok = pos({ | 
						|
      type: 'eos', | 
						|
      val: this.append || '' | 
						|
    }); | 
						|
 | 
						|
    _define(tok, 'parent', this.ast); | 
						|
 | 
						|
    return tok; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Run parsers to advance the cursor position | 
						|
   */ | 
						|
  next: function next() { | 
						|
    var parsed = this.parsed; | 
						|
    var len = this.types.length; | 
						|
    var idx = -1; | 
						|
    var tok; | 
						|
 | 
						|
    while (++idx < len) { | 
						|
      if (tok = this.parsers[this.types[idx]].call(this)) { | 
						|
        _define(tok, 'rest', this.input); | 
						|
 | 
						|
        _define(tok, 'parsed', parsed); | 
						|
 | 
						|
        this.last = tok; | 
						|
        return tok; | 
						|
      } | 
						|
    } | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * Parse the given string. | 
						|
   * @return {Array} | 
						|
   */ | 
						|
  parse: function parse(input) { | 
						|
    if (typeof input !== 'string') { | 
						|
      throw new TypeError('expected a string'); | 
						|
    } | 
						|
 | 
						|
    this.init(this.options); | 
						|
    this.orig = input; | 
						|
    this.input = input; | 
						|
    var self = this; | 
						|
 | 
						|
    function parse() { | 
						|
      // check input before calling `.next()` | 
						|
      input = self.input; // get the next AST ndoe | 
						|
 | 
						|
      var node = self.next(); | 
						|
 | 
						|
      if (node) { | 
						|
        var prev = self.prev(); | 
						|
 | 
						|
        if (prev) { | 
						|
          _define(node, 'parent', prev); | 
						|
 | 
						|
          if (prev.nodes) { | 
						|
            prev.nodes.push(node); | 
						|
          } | 
						|
        } | 
						|
 | 
						|
        if (self.sets.hasOwnProperty(prev.type)) { | 
						|
          self.currentType = prev.type; | 
						|
        } | 
						|
      } // if we got here but input is not changed, throw an error | 
						|
 | 
						|
 | 
						|
      if (self.input && input === self.input) { | 
						|
        throw new Error('no parsers registered for: "' + self.input.slice(0, 5) + '"'); | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    while (this.input) { | 
						|
      parse(); | 
						|
    } | 
						|
 | 
						|
    if (this.stack.length && this.options.strict) { | 
						|
      var node = this.stack.pop(); | 
						|
      throw this.error('missing opening ' + node.type + ': "' + this.orig + '"'); | 
						|
    } | 
						|
 | 
						|
    var eos = this.eos(); | 
						|
    var tok = this.prev(); | 
						|
 | 
						|
    if (tok.type !== 'eos') { | 
						|
      this.ast.nodes.push(eos); | 
						|
    } | 
						|
 | 
						|
    return this.ast; | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Visit `node` with the given `fn` | 
						|
 */ | 
						|
 | 
						|
function visit(node, fn) { | 
						|
  if (!node.visited) { | 
						|
    _define(node, 'visited', true); | 
						|
 | 
						|
    return node.nodes ? mapVisit(node.nodes, fn) : fn(node); | 
						|
  } | 
						|
 | 
						|
  return node; | 
						|
} | 
						|
/** | 
						|
 * Map visit over array of `nodes`. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function mapVisit(nodes, fn) { | 
						|
  var len = nodes.length; | 
						|
  var idx = -1; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    visit(nodes[idx], fn); | 
						|
  } | 
						|
} | 
						|
 | 
						|
function hasOpen(node) { | 
						|
  return node.nodes && node.nodes[0].type === node.type + '.open'; | 
						|
} | 
						|
 | 
						|
function hasClose(node) { | 
						|
  return node.nodes && utils.last(node.nodes).type === node.type + '.close'; | 
						|
} | 
						|
 | 
						|
function hasDelims(node) { | 
						|
  return hasOpen(node) && hasClose(node); | 
						|
} | 
						|
/** | 
						|
 * Expose `Parser` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = Parser; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, "/index.js")) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/lib/position.js": | 
						|
/*!*************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/lib/position.js ***! | 
						|
  \*************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/define-property/index.js"); | 
						|
/** | 
						|
 * Store position for a node | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function Position(start, parser) { | 
						|
  this.start = start; | 
						|
  this.end = { | 
						|
    line: parser.line, | 
						|
    column: parser.column | 
						|
  }; | 
						|
  define(this, 'content', parser.orig); | 
						|
  define(this, 'source', parser.options.source); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/lib/source-maps.js": | 
						|
/*!****************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/lib/source-maps.js ***! | 
						|
  \****************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var fs = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js"); | 
						|
 | 
						|
var path = __webpack_require__(/*! path */ "./node_modules/path-browserify/index.js"); | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/define-property/index.js"); | 
						|
 | 
						|
var utils = __webpack_require__(/*! ./utils */ "./node_modules/snapdragon/lib/utils.js"); | 
						|
/** | 
						|
 * Expose `mixin()`. | 
						|
 * This code is based on `source-maps-support.js` in reworkcss/css | 
						|
 * https://github.com/reworkcss/css/blob/master/lib/stringify/source-map-support.js | 
						|
 * Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = mixin; | 
						|
/** | 
						|
 * Mixin source map support into `compiler`. | 
						|
 * | 
						|
 * @param {Object} `compiler` | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
function mixin(compiler) { | 
						|
  define(compiler, '_comment', compiler.comment); | 
						|
  compiler.map = new utils.SourceMap.SourceMapGenerator(); | 
						|
  compiler.position = { | 
						|
    line: 1, | 
						|
    column: 1 | 
						|
  }; | 
						|
  compiler.content = {}; | 
						|
  compiler.files = {}; | 
						|
 | 
						|
  for (var key in exports) { | 
						|
    define(compiler, key, exports[key]); | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * Update position. | 
						|
 * | 
						|
 * @param {String} str | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.updatePosition = function (str) { | 
						|
  var lines = str.match(/\n/g); | 
						|
  if (lines) this.position.line += lines.length; | 
						|
  var i = str.lastIndexOf('\n'); | 
						|
  this.position.column = ~i ? str.length - i : this.position.column + str.length; | 
						|
}; | 
						|
/** | 
						|
 * Emit `str` with `position`. | 
						|
 * | 
						|
 * @param {String} str | 
						|
 * @param {Object} [pos] | 
						|
 * @return {String} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.emit = function (str, node) { | 
						|
  var position = node.position || {}; | 
						|
  var source = position.source; | 
						|
 | 
						|
  if (source) { | 
						|
    if (position.filepath) { | 
						|
      source = utils.unixify(position.filepath); | 
						|
    } | 
						|
 | 
						|
    this.map.addMapping({ | 
						|
      source: source, | 
						|
      generated: { | 
						|
        line: this.position.line, | 
						|
        column: Math.max(this.position.column - 1, 0) | 
						|
      }, | 
						|
      original: { | 
						|
        line: position.start.line, | 
						|
        column: position.start.column - 1 | 
						|
      } | 
						|
    }); | 
						|
 | 
						|
    if (position.content) { | 
						|
      this.addContent(source, position); | 
						|
    } | 
						|
 | 
						|
    if (position.filepath) { | 
						|
      this.addFile(source, position); | 
						|
    } | 
						|
 | 
						|
    this.updatePosition(str); | 
						|
    this.output += str; | 
						|
  } | 
						|
 | 
						|
  return str; | 
						|
}; | 
						|
/** | 
						|
 * Adds a file to the source map output if it has not already been added | 
						|
 * @param {String} `file` | 
						|
 * @param {Object} `pos` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.addFile = function (file, position) { | 
						|
  if (typeof position.content !== 'string') return; | 
						|
  if (Object.prototype.hasOwnProperty.call(this.files, file)) return; | 
						|
  this.files[file] = position.content; | 
						|
}; | 
						|
/** | 
						|
 * Adds a content source to the source map output if it has not already been added | 
						|
 * @param {String} `source` | 
						|
 * @param {Object} `position` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.addContent = function (source, position) { | 
						|
  if (typeof position.content !== 'string') return; | 
						|
  if (Object.prototype.hasOwnProperty.call(this.content, source)) return; | 
						|
  this.map.setSourceContent(source, position.content); | 
						|
}; | 
						|
/** | 
						|
 * Applies any original source maps to the output and embeds the source file | 
						|
 * contents in the source map. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.applySourceMaps = function () { | 
						|
  Object.keys(this.files).forEach(function (file) { | 
						|
    var content = this.files[file]; | 
						|
    this.map.setSourceContent(file, content); | 
						|
 | 
						|
    if (this.options.inputSourcemaps === true) { | 
						|
      var originalMap = utils.sourceMapResolve.resolveSync(content, file, fs.readFileSync); | 
						|
 | 
						|
      if (originalMap) { | 
						|
        var map = new utils.SourceMap.SourceMapConsumer(originalMap.map); | 
						|
        var relativeTo = originalMap.sourcesRelativeTo; | 
						|
        this.map.applySourceMap(map, file, utils.unixify(path.dirname(relativeTo))); | 
						|
      } | 
						|
    } | 
						|
  }, this); | 
						|
}; | 
						|
/** | 
						|
 * Process comments, drops sourceMap comments. | 
						|
 * @param {Object} node | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.comment = function (node) { | 
						|
  if (/^# sourceMappingURL=/.test(node.comment)) { | 
						|
    return this.emit('', node.position); | 
						|
  } | 
						|
 | 
						|
  return this._comment(node); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/lib/utils.js": | 
						|
/*!**********************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/lib/utils.js ***! | 
						|
  \**********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
/** | 
						|
 * Module dependencies | 
						|
 */ | 
						|
 | 
						|
exports.extend = __webpack_require__(/*! extend-shallow */ "./node_modules/extend-shallow/index.js"); | 
						|
exports.SourceMap = __webpack_require__(/*! source-map */ "./node_modules/snapdragon/node_modules/source-map/source-map.js"); | 
						|
exports.sourceMapResolve = __webpack_require__(/*! source-map-resolve */ "./node_modules/source-map-resolve/source-map-resolve.js"); | 
						|
/** | 
						|
 * Convert backslash in the given string to forward slashes | 
						|
 */ | 
						|
 | 
						|
exports.unixify = function (fp) { | 
						|
  return fp.split(/\\+/).join('/'); | 
						|
}; | 
						|
/** | 
						|
 * Return true if `val` is a non-empty string | 
						|
 * | 
						|
 * @param {String} `str` | 
						|
 * @return {Boolean} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.isString = function (str) { | 
						|
  return str && typeof str === 'string'; | 
						|
}; | 
						|
/** | 
						|
 * Cast `val` to an array | 
						|
 * @return {Array} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.arrayify = function (val) { | 
						|
  if (typeof val === 'string') return [val]; | 
						|
  return val ? Array.isArray(val) ? val : [val] : []; | 
						|
}; | 
						|
/** | 
						|
 * Get the last `n` element from the given `array` | 
						|
 * @param {Array} `array` | 
						|
 * @return {*} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.last = function (arr, n) { | 
						|
  return arr[arr.length - (n || 1)]; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/debug/src/browser.js": | 
						|
/*!*******************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/debug/src/browser.js ***! | 
						|
  \*******************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(process) { | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
/** | 
						|
 * This is the web browser implementation of `debug()`. | 
						|
 * | 
						|
 * Expose `debug()` as the module. | 
						|
 */ | 
						|
exports = module.exports = __webpack_require__(/*! ./debug */ "./node_modules/snapdragon/node_modules/debug/src/debug.js"); | 
						|
exports.log = log; | 
						|
exports.formatArgs = formatArgs; | 
						|
exports.save = save; | 
						|
exports.load = load; | 
						|
exports.useColors = useColors; | 
						|
exports.storage = 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage ? chrome.storage.local : localstorage(); | 
						|
/** | 
						|
 * Colors. | 
						|
 */ | 
						|
 | 
						|
exports.colors = ['lightseagreen', 'forestgreen', 'goldenrod', 'dodgerblue', 'darkorchid', 'crimson']; | 
						|
/** | 
						|
 * Currently only WebKit-based Web Inspectors, Firefox >= v31, | 
						|
 * and the Firebug extension (any Firefox version) are known | 
						|
 * to support "%c" CSS customizations. | 
						|
 * | 
						|
 * TODO: add a `localStorage` variable to explicitly enable/disable colors | 
						|
 */ | 
						|
 | 
						|
function useColors() { | 
						|
  // NB: In an Electron preload script, document will be defined but not fully | 
						|
  // initialized. Since we know we're in Chrome, we'll just detect this case | 
						|
  // explicitly | 
						|
  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { | 
						|
    return true; | 
						|
  } // is webkit? http://stackoverflow.com/a/16459606/376773 | 
						|
  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 | 
						|
 | 
						|
 | 
						|
  return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773 | 
						|
  typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31? | 
						|
  // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages | 
						|
  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker | 
						|
  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); | 
						|
} | 
						|
/** | 
						|
 * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.formatters.j = function (v) { | 
						|
  try { | 
						|
    return JSON.stringify(v); | 
						|
  } catch (err) { | 
						|
    return '[UnexpectedJSONParseError]: ' + err.message; | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Colorize log arguments if enabled. | 
						|
 * | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function formatArgs(args) { | 
						|
  var useColors = this.useColors; | 
						|
  args[0] = (useColors ? '%c' : '') + this.namespace + (useColors ? ' %c' : ' ') + args[0] + (useColors ? '%c ' : ' ') + '+' + exports.humanize(this.diff); | 
						|
  if (!useColors) return; | 
						|
  var c = 'color: ' + this.color; | 
						|
  args.splice(1, 0, c, 'color: inherit'); // the final "%c" is somewhat tricky, because there could be other | 
						|
  // arguments passed either before or after the %c, so we need to | 
						|
  // figure out the correct index to insert the CSS into | 
						|
 | 
						|
  var index = 0; | 
						|
  var lastC = 0; | 
						|
  args[0].replace(/%[a-zA-Z%]/g, function (match) { | 
						|
    if ('%%' === match) return; | 
						|
    index++; | 
						|
 | 
						|
    if ('%c' === match) { | 
						|
      // we only are interested in the *last* %c | 
						|
      // (the user may have provided their own) | 
						|
      lastC = index; | 
						|
    } | 
						|
  }); | 
						|
  args.splice(lastC, 0, c); | 
						|
} | 
						|
/** | 
						|
 * Invokes `console.log()` when available. | 
						|
 * No-op when `console.log` is not a "function". | 
						|
 * | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function log() { | 
						|
  // this hackery is required for IE8/9, where | 
						|
  // the `console.log` function doesn't have 'apply' | 
						|
  return 'object' === (typeof console === "undefined" ? "undefined" : _typeof(console)) && console.log && Function.prototype.apply.call(console.log, console, arguments); | 
						|
} | 
						|
/** | 
						|
 * Save `namespaces`. | 
						|
 * | 
						|
 * @param {String} namespaces | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function save(namespaces) { | 
						|
  try { | 
						|
    if (null == namespaces) { | 
						|
      exports.storage.removeItem('debug'); | 
						|
    } else { | 
						|
      exports.storage.debug = namespaces; | 
						|
    } | 
						|
  } catch (e) {} | 
						|
} | 
						|
/** | 
						|
 * Load `namespaces`. | 
						|
 * | 
						|
 * @return {String} returns the previously persisted debug modes | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function load() { | 
						|
  var r; | 
						|
 | 
						|
  try { | 
						|
    r = exports.storage.debug; | 
						|
  } catch (e) {} // If debug isn't set in LS, and we're in Electron, try to load $DEBUG | 
						|
 | 
						|
 | 
						|
  if (!r && typeof process !== 'undefined' && 'env' in process) { | 
						|
    r = process.env.DEBUG; | 
						|
  } | 
						|
 | 
						|
  return r; | 
						|
} | 
						|
/** | 
						|
 * Enable namespaces listed in `localStorage.debug` initially. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.enable(load()); | 
						|
/** | 
						|
 * Localstorage attempts to return the localstorage. | 
						|
 * | 
						|
 * This is necessary because safari throws | 
						|
 * when a user disables cookies/localstorage | 
						|
 * and you attempt to access it. | 
						|
 * | 
						|
 * @return {LocalStorage} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
function localstorage() { | 
						|
  try { | 
						|
    return window.localStorage; | 
						|
  } catch (e) {} | 
						|
} | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../process/browser.js */ "./node_modules/process/browser.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/debug/src/debug.js": | 
						|
/*!*****************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/debug/src/debug.js ***! | 
						|
  \*****************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/** | 
						|
 * This is the common logic for both the Node.js and web browser | 
						|
 * implementations of `debug()`. | 
						|
 * | 
						|
 * Expose `debug()` as the module. | 
						|
 */ | 
						|
exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; | 
						|
exports.coerce = coerce; | 
						|
exports.disable = disable; | 
						|
exports.enable = enable; | 
						|
exports.enabled = enabled; | 
						|
exports.humanize = __webpack_require__(/*! ms */ "./node_modules/snapdragon/node_modules/ms/index.js"); | 
						|
/** | 
						|
 * The currently active debug mode names, and names to skip. | 
						|
 */ | 
						|
 | 
						|
exports.names = []; | 
						|
exports.skips = []; | 
						|
/** | 
						|
 * Map of special "%n" handling functions, for the debug "format" argument. | 
						|
 * | 
						|
 * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". | 
						|
 */ | 
						|
 | 
						|
exports.formatters = {}; | 
						|
/** | 
						|
 * Previous log timestamp. | 
						|
 */ | 
						|
 | 
						|
var prevTime; | 
						|
/** | 
						|
 * Select a color. | 
						|
 * @param {String} namespace | 
						|
 * @return {Number} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
function selectColor(namespace) { | 
						|
  var hash = 0, | 
						|
      i; | 
						|
 | 
						|
  for (i in namespace) { | 
						|
    hash = (hash << 5) - hash + namespace.charCodeAt(i); | 
						|
    hash |= 0; // Convert to 32bit integer | 
						|
  } | 
						|
 | 
						|
  return exports.colors[Math.abs(hash) % exports.colors.length]; | 
						|
} | 
						|
/** | 
						|
 * Create a debugger with the given `namespace`. | 
						|
 * | 
						|
 * @param {String} namespace | 
						|
 * @return {Function} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function createDebug(namespace) { | 
						|
  function debug() { | 
						|
    // disabled? | 
						|
    if (!debug.enabled) return; | 
						|
    var self = debug; // set `diff` timestamp | 
						|
 | 
						|
    var curr = +new Date(); | 
						|
    var ms = curr - (prevTime || curr); | 
						|
    self.diff = ms; | 
						|
    self.prev = prevTime; | 
						|
    self.curr = curr; | 
						|
    prevTime = curr; // turn the `arguments` into a proper Array | 
						|
 | 
						|
    var args = new Array(arguments.length); | 
						|
 | 
						|
    for (var i = 0; i < args.length; i++) { | 
						|
      args[i] = arguments[i]; | 
						|
    } | 
						|
 | 
						|
    args[0] = exports.coerce(args[0]); | 
						|
 | 
						|
    if ('string' !== typeof args[0]) { | 
						|
      // anything else let's inspect with %O | 
						|
      args.unshift('%O'); | 
						|
    } // apply any `formatters` transformations | 
						|
 | 
						|
 | 
						|
    var index = 0; | 
						|
    args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) { | 
						|
      // if we encounter an escaped % then don't increase the array index | 
						|
      if (match === '%%') return match; | 
						|
      index++; | 
						|
      var formatter = exports.formatters[format]; | 
						|
 | 
						|
      if ('function' === typeof formatter) { | 
						|
        var val = args[index]; | 
						|
        match = formatter.call(self, val); // now we need to remove `args[index]` since it's inlined in the `format` | 
						|
 | 
						|
        args.splice(index, 1); | 
						|
        index--; | 
						|
      } | 
						|
 | 
						|
      return match; | 
						|
    }); // apply env-specific formatting (colors, etc.) | 
						|
 | 
						|
    exports.formatArgs.call(self, args); | 
						|
    var logFn = debug.log || exports.log || console.log.bind(console); | 
						|
    logFn.apply(self, args); | 
						|
  } | 
						|
 | 
						|
  debug.namespace = namespace; | 
						|
  debug.enabled = exports.enabled(namespace); | 
						|
  debug.useColors = exports.useColors(); | 
						|
  debug.color = selectColor(namespace); // env-specific initialization logic for debug instances | 
						|
 | 
						|
  if ('function' === typeof exports.init) { | 
						|
    exports.init(debug); | 
						|
  } | 
						|
 | 
						|
  return debug; | 
						|
} | 
						|
/** | 
						|
 * Enables a debug mode by namespaces. This can include modes | 
						|
 * separated by a colon and wildcards. | 
						|
 * | 
						|
 * @param {String} namespaces | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function enable(namespaces) { | 
						|
  exports.save(namespaces); | 
						|
  exports.names = []; | 
						|
  exports.skips = []; | 
						|
  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); | 
						|
  var len = split.length; | 
						|
 | 
						|
  for (var i = 0; i < len; i++) { | 
						|
    if (!split[i]) continue; // ignore empty strings | 
						|
 | 
						|
    namespaces = split[i].replace(/\*/g, '.*?'); | 
						|
 | 
						|
    if (namespaces[0] === '-') { | 
						|
      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); | 
						|
    } else { | 
						|
      exports.names.push(new RegExp('^' + namespaces + '$')); | 
						|
    } | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * Disable debug output. | 
						|
 * | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function disable() { | 
						|
  exports.enable(''); | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given mode name is enabled, false otherwise. | 
						|
 * | 
						|
 * @param {String} name | 
						|
 * @return {Boolean} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function enabled(name) { | 
						|
  var i, len; | 
						|
 | 
						|
  for (i = 0, len = exports.skips.length; i < len; i++) { | 
						|
    if (exports.skips[i].test(name)) { | 
						|
      return false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  for (i = 0, len = exports.names.length; i < len; i++) { | 
						|
    if (exports.names[i].test(name)) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
/** | 
						|
 * Coerce `val`. | 
						|
 * | 
						|
 * @param {Mixed} val | 
						|
 * @return {Mixed} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function coerce(val) { | 
						|
  if (val instanceof Error) return val.stack || val.message; | 
						|
  return val; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/ms/index.js": | 
						|
/*!**********************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/ms/index.js ***! | 
						|
  \**********************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
/** | 
						|
 * Helpers. | 
						|
 */ | 
						|
var s = 1000; | 
						|
var m = s * 60; | 
						|
var h = m * 60; | 
						|
var d = h * 24; | 
						|
var y = d * 365.25; | 
						|
/** | 
						|
 * Parse or format the given `val`. | 
						|
 * | 
						|
 * Options: | 
						|
 * | 
						|
 *  - `long` verbose formatting [false] | 
						|
 * | 
						|
 * @param {String|Number} val | 
						|
 * @param {Object} [options] | 
						|
 * @throws {Error} throw an error if val is not a non-empty string or a number | 
						|
 * @return {String|Number} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
module.exports = function (val, options) { | 
						|
  options = options || {}; | 
						|
 | 
						|
  var type = _typeof(val); | 
						|
 | 
						|
  if (type === 'string' && val.length > 0) { | 
						|
    return parse(val); | 
						|
  } else if (type === 'number' && isNaN(val) === false) { | 
						|
    return options.long ? fmtLong(val) : fmtShort(val); | 
						|
  } | 
						|
 | 
						|
  throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val)); | 
						|
}; | 
						|
/** | 
						|
 * Parse the given `str` and return milliseconds. | 
						|
 * | 
						|
 * @param {String} str | 
						|
 * @return {Number} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function parse(str) { | 
						|
  str = String(str); | 
						|
 | 
						|
  if (str.length > 100) { | 
						|
    return; | 
						|
  } | 
						|
 | 
						|
  var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str); | 
						|
 | 
						|
  if (!match) { | 
						|
    return; | 
						|
  } | 
						|
 | 
						|
  var n = parseFloat(match[1]); | 
						|
  var type = (match[2] || 'ms').toLowerCase(); | 
						|
 | 
						|
  switch (type) { | 
						|
    case 'years': | 
						|
    case 'year': | 
						|
    case 'yrs': | 
						|
    case 'yr': | 
						|
    case 'y': | 
						|
      return n * y; | 
						|
 | 
						|
    case 'days': | 
						|
    case 'day': | 
						|
    case 'd': | 
						|
      return n * d; | 
						|
 | 
						|
    case 'hours': | 
						|
    case 'hour': | 
						|
    case 'hrs': | 
						|
    case 'hr': | 
						|
    case 'h': | 
						|
      return n * h; | 
						|
 | 
						|
    case 'minutes': | 
						|
    case 'minute': | 
						|
    case 'mins': | 
						|
    case 'min': | 
						|
    case 'm': | 
						|
      return n * m; | 
						|
 | 
						|
    case 'seconds': | 
						|
    case 'second': | 
						|
    case 'secs': | 
						|
    case 'sec': | 
						|
    case 's': | 
						|
      return n * s; | 
						|
 | 
						|
    case 'milliseconds': | 
						|
    case 'millisecond': | 
						|
    case 'msecs': | 
						|
    case 'msec': | 
						|
    case 'ms': | 
						|
      return n; | 
						|
 | 
						|
    default: | 
						|
      return undefined; | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * Short format for `ms`. | 
						|
 * | 
						|
 * @param {Number} ms | 
						|
 * @return {String} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function fmtShort(ms) { | 
						|
  if (ms >= d) { | 
						|
    return Math.round(ms / d) + 'd'; | 
						|
  } | 
						|
 | 
						|
  if (ms >= h) { | 
						|
    return Math.round(ms / h) + 'h'; | 
						|
  } | 
						|
 | 
						|
  if (ms >= m) { | 
						|
    return Math.round(ms / m) + 'm'; | 
						|
  } | 
						|
 | 
						|
  if (ms >= s) { | 
						|
    return Math.round(ms / s) + 's'; | 
						|
  } | 
						|
 | 
						|
  return ms + 'ms'; | 
						|
} | 
						|
/** | 
						|
 * Long format for `ms`. | 
						|
 * | 
						|
 * @param {Number} ms | 
						|
 * @return {String} | 
						|
 * @api private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function fmtLong(ms) { | 
						|
  return plural(ms, d, 'day') || plural(ms, h, 'hour') || plural(ms, m, 'minute') || plural(ms, s, 'second') || ms + ' ms'; | 
						|
} | 
						|
/** | 
						|
 * Pluralization helper. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function plural(ms, n, name) { | 
						|
  if (ms < n) { | 
						|
    return; | 
						|
  } | 
						|
 | 
						|
  if (ms < n * 1.5) { | 
						|
    return Math.floor(ms / n) + ' ' + name; | 
						|
  } | 
						|
 | 
						|
  return Math.ceil(ms / n) + ' ' + name + 's'; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/source-map/lib/array-set.js": | 
						|
/*!**************************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/source-map/lib/array-set.js ***! | 
						|
  \**************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* -*- Mode: js; js-indent-level: 2; -*- */ | 
						|
 | 
						|
/* | 
						|
 * Copyright 2011 Mozilla Foundation and contributors | 
						|
 * Licensed under the New BSD license. See LICENSE or: | 
						|
 * http://opensource.org/licenses/BSD-3-Clause | 
						|
 */ | 
						|
var util = __webpack_require__(/*! ./util */ "./node_modules/snapdragon/node_modules/source-map/lib/util.js"); | 
						|
 | 
						|
var has = Object.prototype.hasOwnProperty; | 
						|
var hasNativeMap = typeof Map !== "undefined"; | 
						|
/** | 
						|
 * A data structure which is a combination of an array and a set. Adding a new | 
						|
 * member is O(1), testing for membership is O(1), and finding the index of an | 
						|
 * element is O(1). Removing elements from the set is not supported. Only | 
						|
 * strings are supported for membership. | 
						|
 */ | 
						|
 | 
						|
function ArraySet() { | 
						|
  this._array = []; | 
						|
  this._set = hasNativeMap ? new Map() : Object.create(null); | 
						|
} | 
						|
/** | 
						|
 * Static method for creating ArraySet instances from an existing array. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { | 
						|
  var set = new ArraySet(); | 
						|
 | 
						|
  for (var i = 0, len = aArray.length; i < len; i++) { | 
						|
    set.add(aArray[i], aAllowDuplicates); | 
						|
  } | 
						|
 | 
						|
  return set; | 
						|
}; | 
						|
/** | 
						|
 * Return how many unique items are in this ArraySet. If duplicates have been | 
						|
 * added, than those do not count towards the size. | 
						|
 * | 
						|
 * @returns Number | 
						|
 */ | 
						|
 | 
						|
 | 
						|
ArraySet.prototype.size = function ArraySet_size() { | 
						|
  return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; | 
						|
}; | 
						|
/** | 
						|
 * Add the given string to this set. | 
						|
 * | 
						|
 * @param String aStr | 
						|
 */ | 
						|
 | 
						|
 | 
						|
ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { | 
						|
  var sStr = hasNativeMap ? aStr : util.toSetString(aStr); | 
						|
  var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); | 
						|
  var idx = this._array.length; | 
						|
 | 
						|
  if (!isDuplicate || aAllowDuplicates) { | 
						|
    this._array.push(aStr); | 
						|
  } | 
						|
 | 
						|
  if (!isDuplicate) { | 
						|
    if (hasNativeMap) { | 
						|
      this._set.set(aStr, idx); | 
						|
    } else { | 
						|
      this._set[sStr] = idx; | 
						|
    } | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Is the given string a member of this set? | 
						|
 * | 
						|
 * @param String aStr | 
						|
 */ | 
						|
 | 
						|
 | 
						|
ArraySet.prototype.has = function ArraySet_has(aStr) { | 
						|
  if (hasNativeMap) { | 
						|
    return this._set.has(aStr); | 
						|
  } else { | 
						|
    var sStr = util.toSetString(aStr); | 
						|
    return has.call(this._set, sStr); | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * What is the index of the given string in the array? | 
						|
 * | 
						|
 * @param String aStr | 
						|
 */ | 
						|
 | 
						|
 | 
						|
ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { | 
						|
  if (hasNativeMap) { | 
						|
    var idx = this._set.get(aStr); | 
						|
 | 
						|
    if (idx >= 0) { | 
						|
      return idx; | 
						|
    } | 
						|
  } else { | 
						|
    var sStr = util.toSetString(aStr); | 
						|
 | 
						|
    if (has.call(this._set, sStr)) { | 
						|
      return this._set[sStr]; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  throw new Error('"' + aStr + '" is not in the set.'); | 
						|
}; | 
						|
/** | 
						|
 * What is the element at the given index? | 
						|
 * | 
						|
 * @param Number aIdx | 
						|
 */ | 
						|
 | 
						|
 | 
						|
ArraySet.prototype.at = function ArraySet_at(aIdx) { | 
						|
  if (aIdx >= 0 && aIdx < this._array.length) { | 
						|
    return this._array[aIdx]; | 
						|
  } | 
						|
 | 
						|
  throw new Error('No element indexed by ' + aIdx); | 
						|
}; | 
						|
/** | 
						|
 * Returns the array representation of this set (which has the proper indices | 
						|
 * indicated by indexOf). Note that this is a copy of the internal array used | 
						|
 * for storing the members so that no one can mess with internal state. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
ArraySet.prototype.toArray = function ArraySet_toArray() { | 
						|
  return this._array.slice(); | 
						|
}; | 
						|
 | 
						|
exports.ArraySet = ArraySet; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/source-map/lib/base64-vlq.js": | 
						|
/*!***************************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/source-map/lib/base64-vlq.js ***! | 
						|
  \***************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* -*- Mode: js; js-indent-level: 2; -*- */ | 
						|
 | 
						|
/* | 
						|
 * Copyright 2011 Mozilla Foundation and contributors | 
						|
 * Licensed under the New BSD license. See LICENSE or: | 
						|
 * http://opensource.org/licenses/BSD-3-Clause | 
						|
 * | 
						|
 * Based on the Base 64 VLQ implementation in Closure Compiler: | 
						|
 * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java | 
						|
 * | 
						|
 * Copyright 2011 The Closure Compiler Authors. All rights reserved. | 
						|
 * Redistribution and use in source and binary forms, with or without | 
						|
 * modification, are permitted provided that the following conditions are | 
						|
 * met: | 
						|
 * | 
						|
 *  * Redistributions of source code must retain the above copyright | 
						|
 *    notice, this list of conditions and the following disclaimer. | 
						|
 *  * Redistributions in binary form must reproduce the above | 
						|
 *    copyright notice, this list of conditions and the following | 
						|
 *    disclaimer in the documentation and/or other materials provided | 
						|
 *    with the distribution. | 
						|
 *  * Neither the name of Google Inc. nor the names of its | 
						|
 *    contributors may be used to endorse or promote products derived | 
						|
 *    from this software without specific prior written permission. | 
						|
 * | 
						|
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 
						|
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 
						|
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 
						|
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 
						|
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
						|
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 
						|
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
						|
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
						|
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
						|
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
						|
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
						|
 */ | 
						|
var base64 = __webpack_require__(/*! ./base64 */ "./node_modules/snapdragon/node_modules/source-map/lib/base64.js"); // A single base 64 digit can contain 6 bits of data. For the base 64 variable | 
						|
// length quantities we use in the source map spec, the first bit is the sign, | 
						|
// the next four bits are the actual value, and the 6th bit is the | 
						|
// continuation bit. The continuation bit tells us whether there are more | 
						|
// digits in this value following this digit. | 
						|
// | 
						|
//   Continuation | 
						|
//   |    Sign | 
						|
//   |    | | 
						|
//   V    V | 
						|
//   101011 | 
						|
 | 
						|
 | 
						|
var VLQ_BASE_SHIFT = 5; // binary: 100000 | 
						|
 | 
						|
var VLQ_BASE = 1 << VLQ_BASE_SHIFT; // binary: 011111 | 
						|
 | 
						|
var VLQ_BASE_MASK = VLQ_BASE - 1; // binary: 100000 | 
						|
 | 
						|
var VLQ_CONTINUATION_BIT = VLQ_BASE; | 
						|
/** | 
						|
 * Converts from a two-complement value to a value where the sign bit is | 
						|
 * placed in the least significant bit.  For example, as decimals: | 
						|
 *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary) | 
						|
 *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary) | 
						|
 */ | 
						|
 | 
						|
function toVLQSigned(aValue) { | 
						|
  return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0; | 
						|
} | 
						|
/** | 
						|
 * Converts to a two-complement value from a value where the sign bit is | 
						|
 * placed in the least significant bit.  For example, as decimals: | 
						|
 *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1 | 
						|
 *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2 | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function fromVLQSigned(aValue) { | 
						|
  var isNegative = (aValue & 1) === 1; | 
						|
  var shifted = aValue >> 1; | 
						|
  return isNegative ? -shifted : shifted; | 
						|
} | 
						|
/** | 
						|
 * Returns the base 64 VLQ encoded value. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.encode = function base64VLQ_encode(aValue) { | 
						|
  var encoded = ""; | 
						|
  var digit; | 
						|
  var vlq = toVLQSigned(aValue); | 
						|
 | 
						|
  do { | 
						|
    digit = vlq & VLQ_BASE_MASK; | 
						|
    vlq >>>= VLQ_BASE_SHIFT; | 
						|
 | 
						|
    if (vlq > 0) { | 
						|
      // There are still more digits in this value, so we must make sure the | 
						|
      // continuation bit is marked. | 
						|
      digit |= VLQ_CONTINUATION_BIT; | 
						|
    } | 
						|
 | 
						|
    encoded += base64.encode(digit); | 
						|
  } while (vlq > 0); | 
						|
 | 
						|
  return encoded; | 
						|
}; | 
						|
/** | 
						|
 * Decodes the next base 64 VLQ value from the given string and returns the | 
						|
 * value and the rest of the string via the out parameter. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { | 
						|
  var strLen = aStr.length; | 
						|
  var result = 0; | 
						|
  var shift = 0; | 
						|
  var continuation, digit; | 
						|
 | 
						|
  do { | 
						|
    if (aIndex >= strLen) { | 
						|
      throw new Error("Expected more digits in base 64 VLQ value."); | 
						|
    } | 
						|
 | 
						|
    digit = base64.decode(aStr.charCodeAt(aIndex++)); | 
						|
 | 
						|
    if (digit === -1) { | 
						|
      throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); | 
						|
    } | 
						|
 | 
						|
    continuation = !!(digit & VLQ_CONTINUATION_BIT); | 
						|
    digit &= VLQ_BASE_MASK; | 
						|
    result = result + (digit << shift); | 
						|
    shift += VLQ_BASE_SHIFT; | 
						|
  } while (continuation); | 
						|
 | 
						|
  aOutParam.value = fromVLQSigned(result); | 
						|
  aOutParam.rest = aIndex; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/source-map/lib/base64.js": | 
						|
/*!***********************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/source-map/lib/base64.js ***! | 
						|
  \***********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* -*- Mode: js; js-indent-level: 2; -*- */ | 
						|
 | 
						|
/* | 
						|
 * Copyright 2011 Mozilla Foundation and contributors | 
						|
 * Licensed under the New BSD license. See LICENSE or: | 
						|
 * http://opensource.org/licenses/BSD-3-Clause | 
						|
 */ | 
						|
var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); | 
						|
/** | 
						|
 * Encode an integer in the range of 0 to 63 to a single base 64 digit. | 
						|
 */ | 
						|
 | 
						|
exports.encode = function (number) { | 
						|
  if (0 <= number && number < intToCharMap.length) { | 
						|
    return intToCharMap[number]; | 
						|
  } | 
						|
 | 
						|
  throw new TypeError("Must be between 0 and 63: " + number); | 
						|
}; | 
						|
/** | 
						|
 * Decode a single base 64 character code digit to an integer. Returns -1 on | 
						|
 * failure. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.decode = function (charCode) { | 
						|
  var bigA = 65; // 'A' | 
						|
 | 
						|
  var bigZ = 90; // 'Z' | 
						|
 | 
						|
  var littleA = 97; // 'a' | 
						|
 | 
						|
  var littleZ = 122; // 'z' | 
						|
 | 
						|
  var zero = 48; // '0' | 
						|
 | 
						|
  var nine = 57; // '9' | 
						|
 | 
						|
  var plus = 43; // '+' | 
						|
 | 
						|
  var slash = 47; // '/' | 
						|
 | 
						|
  var littleOffset = 26; | 
						|
  var numberOffset = 52; // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ | 
						|
 | 
						|
  if (bigA <= charCode && charCode <= bigZ) { | 
						|
    return charCode - bigA; | 
						|
  } // 26 - 51: abcdefghijklmnopqrstuvwxyz | 
						|
 | 
						|
 | 
						|
  if (littleA <= charCode && charCode <= littleZ) { | 
						|
    return charCode - littleA + littleOffset; | 
						|
  } // 52 - 61: 0123456789 | 
						|
 | 
						|
 | 
						|
  if (zero <= charCode && charCode <= nine) { | 
						|
    return charCode - zero + numberOffset; | 
						|
  } // 62: + | 
						|
 | 
						|
 | 
						|
  if (charCode == plus) { | 
						|
    return 62; | 
						|
  } // 63: / | 
						|
 | 
						|
 | 
						|
  if (charCode == slash) { | 
						|
    return 63; | 
						|
  } // Invalid base64 digit. | 
						|
 | 
						|
 | 
						|
  return -1; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/source-map/lib/binary-search.js": | 
						|
/*!******************************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/source-map/lib/binary-search.js ***! | 
						|
  \******************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* -*- Mode: js; js-indent-level: 2; -*- */ | 
						|
 | 
						|
/* | 
						|
 * Copyright 2011 Mozilla Foundation and contributors | 
						|
 * Licensed under the New BSD license. See LICENSE or: | 
						|
 * http://opensource.org/licenses/BSD-3-Clause | 
						|
 */ | 
						|
exports.GREATEST_LOWER_BOUND = 1; | 
						|
exports.LEAST_UPPER_BOUND = 2; | 
						|
/** | 
						|
 * Recursive implementation of binary search. | 
						|
 * | 
						|
 * @param aLow Indices here and lower do not contain the needle. | 
						|
 * @param aHigh Indices here and higher do not contain the needle. | 
						|
 * @param aNeedle The element being searched for. | 
						|
 * @param aHaystack The non-empty array being searched. | 
						|
 * @param aCompare Function which takes two elements and returns -1, 0, or 1. | 
						|
 * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or | 
						|
 *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the | 
						|
 *     closest element that is smaller than or greater than the one we are | 
						|
 *     searching for, respectively, if the exact element cannot be found. | 
						|
 */ | 
						|
 | 
						|
function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { | 
						|
  // This function terminates when one of the following is true: | 
						|
  // | 
						|
  //   1. We find the exact element we are looking for. | 
						|
  // | 
						|
  //   2. We did not find the exact element, but we can return the index of | 
						|
  //      the next-closest element. | 
						|
  // | 
						|
  //   3. We did not find the exact element, and there is no next-closest | 
						|
  //      element than the one we are searching for, so we return -1. | 
						|
  var mid = Math.floor((aHigh - aLow) / 2) + aLow; | 
						|
  var cmp = aCompare(aNeedle, aHaystack[mid], true); | 
						|
 | 
						|
  if (cmp === 0) { | 
						|
    // Found the element we are looking for. | 
						|
    return mid; | 
						|
  } else if (cmp > 0) { | 
						|
    // Our needle is greater than aHaystack[mid]. | 
						|
    if (aHigh - mid > 1) { | 
						|
      // The element is in the upper half. | 
						|
      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); | 
						|
    } // The exact needle element was not found in this haystack. Determine if | 
						|
    // we are in termination case (3) or (2) and return the appropriate thing. | 
						|
 | 
						|
 | 
						|
    if (aBias == exports.LEAST_UPPER_BOUND) { | 
						|
      return aHigh < aHaystack.length ? aHigh : -1; | 
						|
    } else { | 
						|
      return mid; | 
						|
    } | 
						|
  } else { | 
						|
    // Our needle is less than aHaystack[mid]. | 
						|
    if (mid - aLow > 1) { | 
						|
      // The element is in the lower half. | 
						|
      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); | 
						|
    } // we are in termination case (3) or (2) and return the appropriate thing. | 
						|
 | 
						|
 | 
						|
    if (aBias == exports.LEAST_UPPER_BOUND) { | 
						|
      return mid; | 
						|
    } else { | 
						|
      return aLow < 0 ? -1 : aLow; | 
						|
    } | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * This is an implementation of binary search which will always try and return | 
						|
 * the index of the closest element if there is no exact hit. This is because | 
						|
 * mappings between original and generated line/col pairs are single points, | 
						|
 * and there is an implicit region between each of them, so a miss just means | 
						|
 * that you aren't on the very start of a region. | 
						|
 * | 
						|
 * @param aNeedle The element you are looking for. | 
						|
 * @param aHaystack The array that is being searched. | 
						|
 * @param aCompare A function which takes the needle and an element in the | 
						|
 *     array and returns -1, 0, or 1 depending on whether the needle is less | 
						|
 *     than, equal to, or greater than the element, respectively. | 
						|
 * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or | 
						|
 *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the | 
						|
 *     closest element that is smaller than or greater than the one we are | 
						|
 *     searching for, respectively, if the exact element cannot be found. | 
						|
 *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { | 
						|
  if (aHaystack.length === 0) { | 
						|
    return -1; | 
						|
  } | 
						|
 | 
						|
  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare, aBias || exports.GREATEST_LOWER_BOUND); | 
						|
 | 
						|
  if (index < 0) { | 
						|
    return -1; | 
						|
  } // We have found either the exact element, or the next-closest element than | 
						|
  // the one we are searching for. However, there may be more than one such | 
						|
  // element. Make sure we always return the smallest of these. | 
						|
 | 
						|
 | 
						|
  while (index - 1 >= 0) { | 
						|
    if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { | 
						|
      break; | 
						|
    } | 
						|
 | 
						|
    --index; | 
						|
  } | 
						|
 | 
						|
  return index; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/source-map/lib/mapping-list.js": | 
						|
/*!*****************************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/source-map/lib/mapping-list.js ***! | 
						|
  \*****************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* -*- Mode: js; js-indent-level: 2; -*- */ | 
						|
 | 
						|
/* | 
						|
 * Copyright 2014 Mozilla Foundation and contributors | 
						|
 * Licensed under the New BSD license. See LICENSE or: | 
						|
 * http://opensource.org/licenses/BSD-3-Clause | 
						|
 */ | 
						|
var util = __webpack_require__(/*! ./util */ "./node_modules/snapdragon/node_modules/source-map/lib/util.js"); | 
						|
/** | 
						|
 * Determine whether mappingB is after mappingA with respect to generated | 
						|
 * position. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function generatedPositionAfter(mappingA, mappingB) { | 
						|
  // Optimized for most common case | 
						|
  var lineA = mappingA.generatedLine; | 
						|
  var lineB = mappingB.generatedLine; | 
						|
  var columnA = mappingA.generatedColumn; | 
						|
  var columnB = mappingB.generatedColumn; | 
						|
  return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; | 
						|
} | 
						|
/** | 
						|
 * A data structure to provide a sorted view of accumulated mappings in a | 
						|
 * performance conscious manner. It trades a neglibable overhead in general | 
						|
 * case for a large speedup in case of mappings being added in order. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function MappingList() { | 
						|
  this._array = []; | 
						|
  this._sorted = true; // Serves as infimum | 
						|
 | 
						|
  this._last = { | 
						|
    generatedLine: -1, | 
						|
    generatedColumn: 0 | 
						|
  }; | 
						|
} | 
						|
/** | 
						|
 * Iterate through internal items. This method takes the same arguments that | 
						|
 * `Array.prototype.forEach` takes. | 
						|
 * | 
						|
 * NOTE: The order of the mappings is NOT guaranteed. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
MappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) { | 
						|
  this._array.forEach(aCallback, aThisArg); | 
						|
}; | 
						|
/** | 
						|
 * Add the given source mapping. | 
						|
 * | 
						|
 * @param Object aMapping | 
						|
 */ | 
						|
 | 
						|
 | 
						|
MappingList.prototype.add = function MappingList_add(aMapping) { | 
						|
  if (generatedPositionAfter(this._last, aMapping)) { | 
						|
    this._last = aMapping; | 
						|
 | 
						|
    this._array.push(aMapping); | 
						|
  } else { | 
						|
    this._sorted = false; | 
						|
 | 
						|
    this._array.push(aMapping); | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Returns the flat, sorted array of mappings. The mappings are sorted by | 
						|
 * generated position. | 
						|
 * | 
						|
 * WARNING: This method returns internal data without copying, for | 
						|
 * performance. The return value must NOT be mutated, and should be treated as | 
						|
 * an immutable borrow. If you want to take ownership, you must make your own | 
						|
 * copy. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
MappingList.prototype.toArray = function MappingList_toArray() { | 
						|
  if (!this._sorted) { | 
						|
    this._array.sort(util.compareByGeneratedPositionsInflated); | 
						|
 | 
						|
    this._sorted = true; | 
						|
  } | 
						|
 | 
						|
  return this._array; | 
						|
}; | 
						|
 | 
						|
exports.MappingList = MappingList; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/source-map/lib/quick-sort.js": | 
						|
/*!***************************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/source-map/lib/quick-sort.js ***! | 
						|
  \***************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* -*- Mode: js; js-indent-level: 2; -*- */ | 
						|
 | 
						|
/* | 
						|
 * Copyright 2011 Mozilla Foundation and contributors | 
						|
 * Licensed under the New BSD license. See LICENSE or: | 
						|
 * http://opensource.org/licenses/BSD-3-Clause | 
						|
 */ | 
						|
// It turns out that some (most?) JavaScript engines don't self-host | 
						|
// `Array.prototype.sort`. This makes sense because C++ will likely remain | 
						|
// faster than JS when doing raw CPU-intensive sorting. However, when using a | 
						|
// custom comparator function, calling back and forth between the VM's C++ and | 
						|
// JIT'd JS is rather slow *and* loses JIT type information, resulting in | 
						|
// worse generated code for the comparator function than would be optimal. In | 
						|
// fact, when sorting with a comparator, these costs outweigh the benefits of | 
						|
// sorting in C++. By using our own JS-implemented Quick Sort (below), we get | 
						|
// a ~3500ms mean speed-up in `bench/bench.html`. | 
						|
 | 
						|
/** | 
						|
 * Swap the elements indexed by `x` and `y` in the array `ary`. | 
						|
 * | 
						|
 * @param {Array} ary | 
						|
 *        The array. | 
						|
 * @param {Number} x | 
						|
 *        The index of the first item. | 
						|
 * @param {Number} y | 
						|
 *        The index of the second item. | 
						|
 */ | 
						|
function swap(ary, x, y) { | 
						|
  var temp = ary[x]; | 
						|
  ary[x] = ary[y]; | 
						|
  ary[y] = temp; | 
						|
} | 
						|
/** | 
						|
 * Returns a random integer within the range `low .. high` inclusive. | 
						|
 * | 
						|
 * @param {Number} low | 
						|
 *        The lower bound on the range. | 
						|
 * @param {Number} high | 
						|
 *        The upper bound on the range. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function randomIntInRange(low, high) { | 
						|
  return Math.round(low + Math.random() * (high - low)); | 
						|
} | 
						|
/** | 
						|
 * The Quick Sort algorithm. | 
						|
 * | 
						|
 * @param {Array} ary | 
						|
 *        An array to sort. | 
						|
 * @param {function} comparator | 
						|
 *        Function to use to compare two items. | 
						|
 * @param {Number} p | 
						|
 *        Start index of the array | 
						|
 * @param {Number} r | 
						|
 *        End index of the array | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function doQuickSort(ary, comparator, p, r) { | 
						|
  // If our lower bound is less than our upper bound, we (1) partition the | 
						|
  // array into two pieces and (2) recurse on each half. If it is not, this is | 
						|
  // the empty array and our base case. | 
						|
  if (p < r) { | 
						|
    // (1) Partitioning. | 
						|
    // | 
						|
    // The partitioning chooses a pivot between `p` and `r` and moves all | 
						|
    // elements that are less than or equal to the pivot to the before it, and | 
						|
    // all the elements that are greater than it after it. The effect is that | 
						|
    // once partition is done, the pivot is in the exact place it will be when | 
						|
    // the array is put in sorted order, and it will not need to be moved | 
						|
    // again. This runs in O(n) time. | 
						|
    // Always choose a random pivot so that an input array which is reverse | 
						|
    // sorted does not cause O(n^2) running time. | 
						|
    var pivotIndex = randomIntInRange(p, r); | 
						|
    var i = p - 1; | 
						|
    swap(ary, pivotIndex, r); | 
						|
    var pivot = ary[r]; // Immediately after `j` is incremented in this loop, the following hold | 
						|
    // true: | 
						|
    // | 
						|
    //   * Every element in `ary[p .. i]` is less than or equal to the pivot. | 
						|
    // | 
						|
    //   * Every element in `ary[i+1 .. j-1]` is greater than the pivot. | 
						|
 | 
						|
    for (var j = p; j < r; j++) { | 
						|
      if (comparator(ary[j], pivot) <= 0) { | 
						|
        i += 1; | 
						|
        swap(ary, i, j); | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    swap(ary, i + 1, j); | 
						|
    var q = i + 1; // (2) Recurse on each half. | 
						|
 | 
						|
    doQuickSort(ary, comparator, p, q - 1); | 
						|
    doQuickSort(ary, comparator, q + 1, r); | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * Sort the given array in-place with the given comparator function. | 
						|
 * | 
						|
 * @param {Array} ary | 
						|
 *        An array to sort. | 
						|
 * @param {function} comparator | 
						|
 *        Function to use to compare two items. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.quickSort = function (ary, comparator) { | 
						|
  doQuickSort(ary, comparator, 0, ary.length - 1); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/source-map/lib/source-map-consumer.js": | 
						|
/*!************************************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/source-map/lib/source-map-consumer.js ***! | 
						|
  \************************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* -*- Mode: js; js-indent-level: 2; -*- */ | 
						|
 | 
						|
/* | 
						|
 * Copyright 2011 Mozilla Foundation and contributors | 
						|
 * Licensed under the New BSD license. See LICENSE or: | 
						|
 * http://opensource.org/licenses/BSD-3-Clause | 
						|
 */ | 
						|
var util = __webpack_require__(/*! ./util */ "./node_modules/snapdragon/node_modules/source-map/lib/util.js"); | 
						|
 | 
						|
var binarySearch = __webpack_require__(/*! ./binary-search */ "./node_modules/snapdragon/node_modules/source-map/lib/binary-search.js"); | 
						|
 | 
						|
var ArraySet = __webpack_require__(/*! ./array-set */ "./node_modules/snapdragon/node_modules/source-map/lib/array-set.js").ArraySet; | 
						|
 | 
						|
var base64VLQ = __webpack_require__(/*! ./base64-vlq */ "./node_modules/snapdragon/node_modules/source-map/lib/base64-vlq.js"); | 
						|
 | 
						|
var quickSort = __webpack_require__(/*! ./quick-sort */ "./node_modules/snapdragon/node_modules/source-map/lib/quick-sort.js").quickSort; | 
						|
 | 
						|
function SourceMapConsumer(aSourceMap) { | 
						|
  var sourceMap = aSourceMap; | 
						|
 | 
						|
  if (typeof aSourceMap === 'string') { | 
						|
    sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); | 
						|
  } | 
						|
 | 
						|
  return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap) : new BasicSourceMapConsumer(sourceMap); | 
						|
} | 
						|
 | 
						|
SourceMapConsumer.fromSourceMap = function (aSourceMap) { | 
						|
  return BasicSourceMapConsumer.fromSourceMap(aSourceMap); | 
						|
}; | 
						|
/** | 
						|
 * The version of the source mapping spec that we are consuming. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceMapConsumer.prototype._version = 3; // `__generatedMappings` and `__originalMappings` are arrays that hold the | 
						|
// parsed mapping coordinates from the source map's "mappings" attribute. They | 
						|
// are lazily instantiated, accessed via the `_generatedMappings` and | 
						|
// `_originalMappings` getters respectively, and we only parse the mappings | 
						|
// and create these arrays once queried for a source location. We jump through | 
						|
// these hoops because there can be many thousands of mappings, and parsing | 
						|
// them is expensive, so we only want to do it if we must. | 
						|
// | 
						|
// Each object in the arrays is of the form: | 
						|
// | 
						|
//     { | 
						|
//       generatedLine: The line number in the generated code, | 
						|
//       generatedColumn: The column number in the generated code, | 
						|
//       source: The path to the original source file that generated this | 
						|
//               chunk of code, | 
						|
//       originalLine: The line number in the original source that | 
						|
//                     corresponds to this chunk of generated code, | 
						|
//       originalColumn: The column number in the original source that | 
						|
//                       corresponds to this chunk of generated code, | 
						|
//       name: The name of the original symbol which generated this chunk of | 
						|
//             code. | 
						|
//     } | 
						|
// | 
						|
// All properties except for `generatedLine` and `generatedColumn` can be | 
						|
// `null`. | 
						|
// | 
						|
// `_generatedMappings` is ordered by the generated positions. | 
						|
// | 
						|
// `_originalMappings` is ordered by the original positions. | 
						|
 | 
						|
SourceMapConsumer.prototype.__generatedMappings = null; | 
						|
Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { | 
						|
  get: function get() { | 
						|
    if (!this.__generatedMappings) { | 
						|
      this._parseMappings(this._mappings, this.sourceRoot); | 
						|
    } | 
						|
 | 
						|
    return this.__generatedMappings; | 
						|
  } | 
						|
}); | 
						|
SourceMapConsumer.prototype.__originalMappings = null; | 
						|
Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { | 
						|
  get: function get() { | 
						|
    if (!this.__originalMappings) { | 
						|
      this._parseMappings(this._mappings, this.sourceRoot); | 
						|
    } | 
						|
 | 
						|
    return this.__originalMappings; | 
						|
  } | 
						|
}); | 
						|
 | 
						|
SourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) { | 
						|
  var c = aStr.charAt(index); | 
						|
  return c === ";" || c === ","; | 
						|
}; | 
						|
/** | 
						|
 * Parse the mappings in a string in to a data structure which we can easily | 
						|
 * query (the ordered arrays in the `this.__generatedMappings` and | 
						|
 * `this.__originalMappings` properties). | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { | 
						|
  throw new Error("Subclasses must implement _parseMappings"); | 
						|
}; | 
						|
 | 
						|
SourceMapConsumer.GENERATED_ORDER = 1; | 
						|
SourceMapConsumer.ORIGINAL_ORDER = 2; | 
						|
SourceMapConsumer.GREATEST_LOWER_BOUND = 1; | 
						|
SourceMapConsumer.LEAST_UPPER_BOUND = 2; | 
						|
/** | 
						|
 * Iterate over each mapping between an original source/line/column and a | 
						|
 * generated line/column in this source map. | 
						|
 * | 
						|
 * @param Function aCallback | 
						|
 *        The function that is called with each mapping. | 
						|
 * @param Object aContext | 
						|
 *        Optional. If specified, this object will be the value of `this` every | 
						|
 *        time that `aCallback` is called. | 
						|
 * @param aOrder | 
						|
 *        Either `SourceMapConsumer.GENERATED_ORDER` or | 
						|
 *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to | 
						|
 *        iterate over the mappings sorted by the generated file's line/column | 
						|
 *        order or the original's source/line/column order, respectively. Defaults to | 
						|
 *        `SourceMapConsumer.GENERATED_ORDER`. | 
						|
 */ | 
						|
 | 
						|
SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { | 
						|
  var context = aContext || null; | 
						|
  var order = aOrder || SourceMapConsumer.GENERATED_ORDER; | 
						|
  var mappings; | 
						|
 | 
						|
  switch (order) { | 
						|
    case SourceMapConsumer.GENERATED_ORDER: | 
						|
      mappings = this._generatedMappings; | 
						|
      break; | 
						|
 | 
						|
    case SourceMapConsumer.ORIGINAL_ORDER: | 
						|
      mappings = this._originalMappings; | 
						|
      break; | 
						|
 | 
						|
    default: | 
						|
      throw new Error("Unknown order of iteration."); | 
						|
  } | 
						|
 | 
						|
  var sourceRoot = this.sourceRoot; | 
						|
  mappings.map(function (mapping) { | 
						|
    var source = mapping.source === null ? null : this._sources.at(mapping.source); | 
						|
 | 
						|
    if (source != null && sourceRoot != null) { | 
						|
      source = util.join(sourceRoot, source); | 
						|
    } | 
						|
 | 
						|
    return { | 
						|
      source: source, | 
						|
      generatedLine: mapping.generatedLine, | 
						|
      generatedColumn: mapping.generatedColumn, | 
						|
      originalLine: mapping.originalLine, | 
						|
      originalColumn: mapping.originalColumn, | 
						|
      name: mapping.name === null ? null : this._names.at(mapping.name) | 
						|
    }; | 
						|
  }, this).forEach(aCallback, context); | 
						|
}; | 
						|
/** | 
						|
 * Returns all generated line and column information for the original source, | 
						|
 * line, and column provided. If no column is provided, returns all mappings | 
						|
 * corresponding to a either the line we are searching for or the next | 
						|
 * closest line that has any mappings. Otherwise, returns all mappings | 
						|
 * corresponding to the given line and either the column we are searching for | 
						|
 * or the next closest column that has any offsets. | 
						|
 * | 
						|
 * The only argument is an object with the following properties: | 
						|
 * | 
						|
 *   - source: The filename of the original source. | 
						|
 *   - line: The line number in the original source. | 
						|
 *   - column: Optional. the column number in the original source. | 
						|
 * | 
						|
 * and an array of objects is returned, each with the following properties: | 
						|
 * | 
						|
 *   - line: The line number in the generated source, or null. | 
						|
 *   - column: The column number in the generated source, or null. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { | 
						|
  var line = util.getArg(aArgs, 'line'); // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping | 
						|
  // returns the index of the closest mapping less than the needle. By | 
						|
  // setting needle.originalColumn to 0, we thus find the last mapping for | 
						|
  // the given line, provided such a mapping exists. | 
						|
 | 
						|
  var needle = { | 
						|
    source: util.getArg(aArgs, 'source'), | 
						|
    originalLine: line, | 
						|
    originalColumn: util.getArg(aArgs, 'column', 0) | 
						|
  }; | 
						|
 | 
						|
  if (this.sourceRoot != null) { | 
						|
    needle.source = util.relative(this.sourceRoot, needle.source); | 
						|
  } | 
						|
 | 
						|
  if (!this._sources.has(needle.source)) { | 
						|
    return []; | 
						|
  } | 
						|
 | 
						|
  needle.source = this._sources.indexOf(needle.source); | 
						|
  var mappings = []; | 
						|
 | 
						|
  var index = this._findMapping(needle, this._originalMappings, "originalLine", "originalColumn", util.compareByOriginalPositions, binarySearch.LEAST_UPPER_BOUND); | 
						|
 | 
						|
  if (index >= 0) { | 
						|
    var mapping = this._originalMappings[index]; | 
						|
 | 
						|
    if (aArgs.column === undefined) { | 
						|
      var originalLine = mapping.originalLine; // Iterate until either we run out of mappings, or we run into | 
						|
      // a mapping for a different line than the one we found. Since | 
						|
      // mappings are sorted, this is guaranteed to find all mappings for | 
						|
      // the line we found. | 
						|
 | 
						|
      while (mapping && mapping.originalLine === originalLine) { | 
						|
        mappings.push({ | 
						|
          line: util.getArg(mapping, 'generatedLine', null), | 
						|
          column: util.getArg(mapping, 'generatedColumn', null), | 
						|
          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) | 
						|
        }); | 
						|
        mapping = this._originalMappings[++index]; | 
						|
      } | 
						|
    } else { | 
						|
      var originalColumn = mapping.originalColumn; // Iterate until either we run out of mappings, or we run into | 
						|
      // a mapping for a different line than the one we were searching for. | 
						|
      // Since mappings are sorted, this is guaranteed to find all mappings for | 
						|
      // the line we are searching for. | 
						|
 | 
						|
      while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) { | 
						|
        mappings.push({ | 
						|
          line: util.getArg(mapping, 'generatedLine', null), | 
						|
          column: util.getArg(mapping, 'generatedColumn', null), | 
						|
          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) | 
						|
        }); | 
						|
        mapping = this._originalMappings[++index]; | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return mappings; | 
						|
}; | 
						|
 | 
						|
exports.SourceMapConsumer = SourceMapConsumer; | 
						|
/** | 
						|
 * A BasicSourceMapConsumer instance represents a parsed source map which we can | 
						|
 * query for information about the original file positions by giving it a file | 
						|
 * position in the generated source. | 
						|
 * | 
						|
 * The only 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;" | 
						|
 *     } | 
						|
 * | 
						|
 * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# | 
						|
 */ | 
						|
 | 
						|
function BasicSourceMapConsumer(aSourceMap) { | 
						|
  var sourceMap = aSourceMap; | 
						|
 | 
						|
  if (typeof aSourceMap === 'string') { | 
						|
    sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); | 
						|
  } | 
						|
 | 
						|
  var version = util.getArg(sourceMap, 'version'); | 
						|
  var sources = util.getArg(sourceMap, 'sources'); // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which | 
						|
  // requires the array) to play nice here. | 
						|
 | 
						|
  var names = util.getArg(sourceMap, 'names', []); | 
						|
  var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); | 
						|
  var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); | 
						|
  var mappings = util.getArg(sourceMap, 'mappings'); | 
						|
  var file = util.getArg(sourceMap, 'file', null); // Once again, Sass deviates from the spec and supplies the version as a | 
						|
  // string rather than a number, so we use loose equality checking here. | 
						|
 | 
						|
  if (version != this._version) { | 
						|
    throw new Error('Unsupported version: ' + version); | 
						|
  } | 
						|
 | 
						|
  sources = sources.map(String) // Some source maps produce relative source paths like "./foo.js" instead of | 
						|
  // "foo.js".  Normalize these first so that future comparisons will succeed. | 
						|
  // See bugzil.la/1090768. | 
						|
  .map(util.normalize) // Always ensure that absolute sources are internally stored relative to | 
						|
  // the source root, if the source root is absolute. Not doing this would | 
						|
  // be particularly problematic when the source root is a prefix of the | 
						|
  // source (valid, but why??). See github issue #199 and bugzil.la/1188982. | 
						|
  .map(function (source) { | 
						|
    return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source; | 
						|
  }); // Pass `true` below to allow duplicate names and sources. While source maps | 
						|
  // are intended to be compressed and deduplicated, the TypeScript compiler | 
						|
  // sometimes generates source maps with duplicates in them. See Github issue | 
						|
  // #72 and bugzil.la/889492. | 
						|
 | 
						|
  this._names = ArraySet.fromArray(names.map(String), true); | 
						|
  this._sources = ArraySet.fromArray(sources, true); | 
						|
  this.sourceRoot = sourceRoot; | 
						|
  this.sourcesContent = sourcesContent; | 
						|
  this._mappings = mappings; | 
						|
  this.file = file; | 
						|
} | 
						|
 | 
						|
BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); | 
						|
BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; | 
						|
/** | 
						|
 * Create a BasicSourceMapConsumer from a SourceMapGenerator. | 
						|
 * | 
						|
 * @param SourceMapGenerator aSourceMap | 
						|
 *        The source map that will be consumed. | 
						|
 * @returns BasicSourceMapConsumer | 
						|
 */ | 
						|
 | 
						|
BasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap) { | 
						|
  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; // Because we are modifying the entries (by converting string sources and | 
						|
  // names to indices into the sources and names ArraySets), we have to make | 
						|
  // a copy of the entry or else bad things happen. Shared mutable state | 
						|
  // strikes again! See github issue #191. | 
						|
 | 
						|
  var generatedMappings = aSourceMap._mappings.toArray().slice(); | 
						|
 | 
						|
  var destGeneratedMappings = smc.__generatedMappings = []; | 
						|
  var destOriginalMappings = smc.__originalMappings = []; | 
						|
 | 
						|
  for (var i = 0, length = generatedMappings.length; i < length; i++) { | 
						|
    var srcMapping = generatedMappings[i]; | 
						|
    var destMapping = new Mapping(); | 
						|
    destMapping.generatedLine = srcMapping.generatedLine; | 
						|
    destMapping.generatedColumn = srcMapping.generatedColumn; | 
						|
 | 
						|
    if (srcMapping.source) { | 
						|
      destMapping.source = sources.indexOf(srcMapping.source); | 
						|
      destMapping.originalLine = srcMapping.originalLine; | 
						|
      destMapping.originalColumn = srcMapping.originalColumn; | 
						|
 | 
						|
      if (srcMapping.name) { | 
						|
        destMapping.name = names.indexOf(srcMapping.name); | 
						|
      } | 
						|
 | 
						|
      destOriginalMappings.push(destMapping); | 
						|
    } | 
						|
 | 
						|
    destGeneratedMappings.push(destMapping); | 
						|
  } | 
						|
 | 
						|
  quickSort(smc.__originalMappings, util.compareByOriginalPositions); | 
						|
  return smc; | 
						|
}; | 
						|
/** | 
						|
 * The version of the source mapping spec that we are consuming. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
BasicSourceMapConsumer.prototype._version = 3; | 
						|
/** | 
						|
 * The list of original sources. | 
						|
 */ | 
						|
 | 
						|
Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { | 
						|
  get: function get() { | 
						|
    return this._sources.toArray().map(function (s) { | 
						|
      return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; | 
						|
    }, this); | 
						|
  } | 
						|
}); | 
						|
/** | 
						|
 * Provide the JIT with a nice shape / hidden class. | 
						|
 */ | 
						|
 | 
						|
function Mapping() { | 
						|
  this.generatedLine = 0; | 
						|
  this.generatedColumn = 0; | 
						|
  this.source = null; | 
						|
  this.originalLine = null; | 
						|
  this.originalColumn = null; | 
						|
  this.name = null; | 
						|
} | 
						|
/** | 
						|
 * Parse the mappings in a string in to a data structure which we can easily | 
						|
 * query (the ordered arrays in the `this.__generatedMappings` and | 
						|
 * `this.__originalMappings` properties). | 
						|
 */ | 
						|
 | 
						|
 | 
						|
BasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { | 
						|
  var generatedLine = 1; | 
						|
  var previousGeneratedColumn = 0; | 
						|
  var previousOriginalLine = 0; | 
						|
  var previousOriginalColumn = 0; | 
						|
  var previousSource = 0; | 
						|
  var previousName = 0; | 
						|
  var length = aStr.length; | 
						|
  var index = 0; | 
						|
  var cachedSegments = {}; | 
						|
  var temp = {}; | 
						|
  var originalMappings = []; | 
						|
  var generatedMappings = []; | 
						|
  var mapping, str, segment, end, value; | 
						|
 | 
						|
  while (index < length) { | 
						|
    if (aStr.charAt(index) === ';') { | 
						|
      generatedLine++; | 
						|
      index++; | 
						|
      previousGeneratedColumn = 0; | 
						|
    } else if (aStr.charAt(index) === ',') { | 
						|
      index++; | 
						|
    } else { | 
						|
      mapping = new Mapping(); | 
						|
      mapping.generatedLine = generatedLine; // Because each offset is encoded relative to the previous one, | 
						|
      // many segments often have the same encoding. We can exploit this | 
						|
      // fact by caching the parsed variable length fields of each segment, | 
						|
      // allowing us to avoid a second parse if we encounter the same | 
						|
      // segment again. | 
						|
 | 
						|
      for (end = index; end < length; end++) { | 
						|
        if (this._charIsMappingSeparator(aStr, end)) { | 
						|
          break; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      str = aStr.slice(index, end); | 
						|
      segment = cachedSegments[str]; | 
						|
 | 
						|
      if (segment) { | 
						|
        index += str.length; | 
						|
      } else { | 
						|
        segment = []; | 
						|
 | 
						|
        while (index < end) { | 
						|
          base64VLQ.decode(aStr, index, temp); | 
						|
          value = temp.value; | 
						|
          index = temp.rest; | 
						|
          segment.push(value); | 
						|
        } | 
						|
 | 
						|
        if (segment.length === 2) { | 
						|
          throw new Error('Found a source, but no line and column'); | 
						|
        } | 
						|
 | 
						|
        if (segment.length === 3) { | 
						|
          throw new Error('Found a source and line, but no column'); | 
						|
        } | 
						|
 | 
						|
        cachedSegments[str] = segment; | 
						|
      } // Generated column. | 
						|
 | 
						|
 | 
						|
      mapping.generatedColumn = previousGeneratedColumn + segment[0]; | 
						|
      previousGeneratedColumn = mapping.generatedColumn; | 
						|
 | 
						|
      if (segment.length > 1) { | 
						|
        // Original source. | 
						|
        mapping.source = previousSource + segment[1]; | 
						|
        previousSource += segment[1]; // Original line. | 
						|
 | 
						|
        mapping.originalLine = previousOriginalLine + segment[2]; | 
						|
        previousOriginalLine = mapping.originalLine; // Lines are stored 0-based | 
						|
 | 
						|
        mapping.originalLine += 1; // Original column. | 
						|
 | 
						|
        mapping.originalColumn = previousOriginalColumn + segment[3]; | 
						|
        previousOriginalColumn = mapping.originalColumn; | 
						|
 | 
						|
        if (segment.length > 4) { | 
						|
          // Original name. | 
						|
          mapping.name = previousName + segment[4]; | 
						|
          previousName += segment[4]; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      generatedMappings.push(mapping); | 
						|
 | 
						|
      if (typeof mapping.originalLine === 'number') { | 
						|
        originalMappings.push(mapping); | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); | 
						|
  this.__generatedMappings = generatedMappings; | 
						|
  quickSort(originalMappings, util.compareByOriginalPositions); | 
						|
  this.__originalMappings = originalMappings; | 
						|
}; | 
						|
/** | 
						|
 * Find the mapping that best matches the hypothetical "needle" mapping that | 
						|
 * we are searching for in the given "haystack" of mappings. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
BasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) { | 
						|
  // To return the position we are searching for, we must first find the | 
						|
  // mapping for the given position and then return the opposite position it | 
						|
  // points to. Because the mappings are sorted, we can use binary search to | 
						|
  // find the best mapping. | 
						|
  if (aNeedle[aLineName] <= 0) { | 
						|
    throw new TypeError('Line must be greater than or equal to 1, got ' + aNeedle[aLineName]); | 
						|
  } | 
						|
 | 
						|
  if (aNeedle[aColumnName] < 0) { | 
						|
    throw new TypeError('Column must be greater than or equal to 0, got ' + aNeedle[aColumnName]); | 
						|
  } | 
						|
 | 
						|
  return binarySearch.search(aNeedle, aMappings, aComparator, aBias); | 
						|
}; | 
						|
/** | 
						|
 * Compute the last column for each generated mapping. The last column is | 
						|
 * inclusive. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
BasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() { | 
						|
  for (var index = 0; index < this._generatedMappings.length; ++index) { | 
						|
    var mapping = this._generatedMappings[index]; // Mappings do not contain a field for the last generated columnt. We | 
						|
    // can come up with an optimistic estimate, however, by assuming that | 
						|
    // mappings are contiguous (i.e. given two consecutive mappings, the | 
						|
    // first mapping ends where the second one starts). | 
						|
 | 
						|
    if (index + 1 < this._generatedMappings.length) { | 
						|
      var nextMapping = this._generatedMappings[index + 1]; | 
						|
 | 
						|
      if (mapping.generatedLine === nextMapping.generatedLine) { | 
						|
        mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; | 
						|
        continue; | 
						|
      } | 
						|
    } // The last mapping for each line spans the entire line. | 
						|
 | 
						|
 | 
						|
    mapping.lastGeneratedColumn = Infinity; | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Returns the original source, line, and column information for the generated | 
						|
 * source's line and column positions provided. The only argument is an object | 
						|
 * with the following properties: | 
						|
 * | 
						|
 *   - line: The line number in the generated source. | 
						|
 *   - column: The column number in the generated source. | 
						|
 *   - 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. | 
						|
 *   - column: The column number in the original source, or null. | 
						|
 *   - name: The original identifier, or null. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
BasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) { | 
						|
  var needle = { | 
						|
    generatedLine: util.getArg(aArgs, 'line'), | 
						|
    generatedColumn: util.getArg(aArgs, 'column') | 
						|
  }; | 
						|
 | 
						|
  var index = this._findMapping(needle, this._generatedMappings, "generatedLine", "generatedColumn", util.compareByGeneratedPositionsDeflated, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)); | 
						|
 | 
						|
  if (index >= 0) { | 
						|
    var mapping = this._generatedMappings[index]; | 
						|
 | 
						|
    if (mapping.generatedLine === needle.generatedLine) { | 
						|
      var source = util.getArg(mapping, 'source', null); | 
						|
 | 
						|
      if (source !== null) { | 
						|
        source = this._sources.at(source); | 
						|
 | 
						|
        if (this.sourceRoot != null) { | 
						|
          source = util.join(this.sourceRoot, source); | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      var name = util.getArg(mapping, 'name', null); | 
						|
 | 
						|
      if (name !== null) { | 
						|
        name = this._names.at(name); | 
						|
      } | 
						|
 | 
						|
      return { | 
						|
        source: source, | 
						|
        line: util.getArg(mapping, 'originalLine', null), | 
						|
        column: util.getArg(mapping, 'originalColumn', null), | 
						|
        name: name | 
						|
      }; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return { | 
						|
    source: null, | 
						|
    line: null, | 
						|
    column: null, | 
						|
    name: null | 
						|
  }; | 
						|
}; | 
						|
/** | 
						|
 * Return true if we have the source content for every source in the source | 
						|
 * map, false otherwise. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
BasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() { | 
						|
  if (!this.sourcesContent) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function (sc) { | 
						|
    return sc == null; | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Returns the original source content. The only argument is the url of the | 
						|
 * original source file. Returns null if no original source content is | 
						|
 * available. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
BasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { | 
						|
  if (!this.sourcesContent) { | 
						|
    return null; | 
						|
  } | 
						|
 | 
						|
  if (this.sourceRoot != null) { | 
						|
    aSource = util.relative(this.sourceRoot, aSource); | 
						|
  } | 
						|
 | 
						|
  if (this._sources.has(aSource)) { | 
						|
    return this.sourcesContent[this._sources.indexOf(aSource)]; | 
						|
  } | 
						|
 | 
						|
  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 = aSource.replace(/^file:\/\//, ""); | 
						|
 | 
						|
    if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) { | 
						|
      return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]; | 
						|
    } | 
						|
 | 
						|
    if ((!url.path || url.path == "/") && this._sources.has("/" + aSource)) { | 
						|
      return this.sourcesContent[this._sources.indexOf("/" + aSource)]; | 
						|
    } | 
						|
  } // 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('"' + 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. | 
						|
 *   - column: The column number in the original source. | 
						|
 *   - 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. | 
						|
 *   - column: The column number in the generated source, or null. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) { | 
						|
  var source = util.getArg(aArgs, 'source'); | 
						|
 | 
						|
  if (this.sourceRoot != null) { | 
						|
    source = util.relative(this.sourceRoot, source); | 
						|
  } | 
						|
 | 
						|
  if (!this._sources.has(source)) { | 
						|
    return { | 
						|
      line: null, | 
						|
      column: null, | 
						|
      lastColumn: null | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  source = this._sources.indexOf(source); | 
						|
  var needle = { | 
						|
    source: source, | 
						|
    originalLine: util.getArg(aArgs, 'line'), | 
						|
    originalColumn: util.getArg(aArgs, 'column') | 
						|
  }; | 
						|
 | 
						|
  var index = this._findMapping(needle, this._originalMappings, "originalLine", "originalColumn", util.compareByOriginalPositions, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)); | 
						|
 | 
						|
  if (index >= 0) { | 
						|
    var mapping = this._originalMappings[index]; | 
						|
 | 
						|
    if (mapping.source === needle.source) { | 
						|
      return { | 
						|
        line: util.getArg(mapping, 'generatedLine', null), | 
						|
        column: util.getArg(mapping, 'generatedColumn', null), | 
						|
        lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) | 
						|
      }; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return { | 
						|
    line: null, | 
						|
    column: null, | 
						|
    lastColumn: null | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.BasicSourceMapConsumer = BasicSourceMapConsumer; | 
						|
/** | 
						|
 * An IndexedSourceMapConsumer instance represents a parsed source map which | 
						|
 * we can query for information. It differs from BasicSourceMapConsumer in | 
						|
 * that it takes "indexed" source maps (i.e. ones with a "sections" field) as | 
						|
 * input. | 
						|
 * | 
						|
 * The only 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;" | 
						|
 *      } | 
						|
 *    }], | 
						|
 *  } | 
						|
 * | 
						|
 * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt | 
						|
 */ | 
						|
 | 
						|
function IndexedSourceMapConsumer(aSourceMap) { | 
						|
  var sourceMap = aSourceMap; | 
						|
 | 
						|
  if (typeof aSourceMap === 'string') { | 
						|
    sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); | 
						|
  } | 
						|
 | 
						|
  var version = util.getArg(sourceMap, 'version'); | 
						|
  var sections = util.getArg(sourceMap, 'sections'); | 
						|
 | 
						|
  if (version != this._version) { | 
						|
    throw new Error('Unsupported version: ' + version); | 
						|
  } | 
						|
 | 
						|
  this._sources = new ArraySet(); | 
						|
  this._names = new ArraySet(); | 
						|
  var lastOffset = { | 
						|
    line: -1, | 
						|
    column: 0 | 
						|
  }; | 
						|
  this._sections = sections.map(function (s) { | 
						|
    if (s.url) { | 
						|
      // The url field will require support for asynchronicity. | 
						|
      // See https://github.com/mozilla/source-map/issues/16 | 
						|
      throw new Error('Support for url field in sections not implemented.'); | 
						|
    } | 
						|
 | 
						|
    var offset = util.getArg(s, 'offset'); | 
						|
    var offsetLine = util.getArg(offset, 'line'); | 
						|
    var offsetColumn = util.getArg(offset, 'column'); | 
						|
 | 
						|
    if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) { | 
						|
      throw new Error('Section offsets must be ordered and non-overlapping.'); | 
						|
    } | 
						|
 | 
						|
    lastOffset = offset; | 
						|
    return { | 
						|
      generatedOffset: { | 
						|
        // The offset fields are 0-based, but we use 1-based indices when | 
						|
        // encoding/decoding from VLQ. | 
						|
        generatedLine: offsetLine + 1, | 
						|
        generatedColumn: offsetColumn + 1 | 
						|
      }, | 
						|
      consumer: new SourceMapConsumer(util.getArg(s, 'map')) | 
						|
    }; | 
						|
  }); | 
						|
} | 
						|
 | 
						|
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 get() { | 
						|
    var sources = []; | 
						|
 | 
						|
    for (var i = 0; i < this._sections.length; i++) { | 
						|
      for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { | 
						|
        sources.push(this._sections[i].consumer.sources[j]); | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return sources; | 
						|
  } | 
						|
}); | 
						|
/** | 
						|
 * Returns the original source, line, and column information for the generated | 
						|
 * source's line and column positions provided. The only argument is an object | 
						|
 * with the following properties: | 
						|
 * | 
						|
 *   - line: The line number in the generated source. | 
						|
 *   - column: The column number in the generated source. | 
						|
 * | 
						|
 * 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. | 
						|
 *   - column: The column number in the original source, or null. | 
						|
 *   - name: The original identifier, or null. | 
						|
 */ | 
						|
 | 
						|
IndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) { | 
						|
  var needle = { | 
						|
    generatedLine: util.getArg(aArgs, 'line'), | 
						|
    generatedColumn: util.getArg(aArgs, 'column') | 
						|
  }; // Find the section containing the generated position we're trying to map | 
						|
  // to an original position. | 
						|
 | 
						|
  var sectionIndex = binarySearch.search(needle, this._sections, function (needle, section) { | 
						|
    var cmp = needle.generatedLine - section.generatedOffset.generatedLine; | 
						|
 | 
						|
    if (cmp) { | 
						|
      return cmp; | 
						|
    } | 
						|
 | 
						|
    return needle.generatedColumn - section.generatedOffset.generatedColumn; | 
						|
  }); | 
						|
  var section = this._sections[sectionIndex]; | 
						|
 | 
						|
  if (!section) { | 
						|
    return { | 
						|
      source: null, | 
						|
      line: null, | 
						|
      column: null, | 
						|
      name: null | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  return section.consumer.originalPositionFor({ | 
						|
    line: needle.generatedLine - (section.generatedOffset.generatedLine - 1), | 
						|
    column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), | 
						|
    bias: aArgs.bias | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Return true if we have the source content for every source in the source | 
						|
 * map, false otherwise. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() { | 
						|
  return this._sections.every(function (s) { | 
						|
    return s.consumer.hasContentsOfAllSources(); | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Returns the original source content. The only argument is the url of the | 
						|
 * original source file. Returns null if no original source content is | 
						|
 * available. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
IndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { | 
						|
  for (var i = 0; i < this._sections.length; i++) { | 
						|
    var section = this._sections[i]; | 
						|
    var content = section.consumer.sourceContentFor(aSource, true); | 
						|
 | 
						|
    if (content) { | 
						|
      return content; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (nullOnMissing) { | 
						|
    return null; | 
						|
  } else { | 
						|
    throw new Error('"' + aSource + '" is not in the SourceMap.'); | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Returns the generated line and column information for the original source, | 
						|
 * line, and column positions provided. The only argument is an object with | 
						|
 * the following properties: | 
						|
 * | 
						|
 *   - source: The filename of the original source. | 
						|
 *   - line: The line number in the original source. | 
						|
 *   - column: The column number in the original source. | 
						|
 * | 
						|
 * and an object is returned with the following properties: | 
						|
 * | 
						|
 *   - line: The line number in the generated source, or null. | 
						|
 *   - column: The column number in the generated source, or null. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { | 
						|
  for (var i = 0; i < this._sections.length; i++) { | 
						|
    var section = this._sections[i]; // Only consider this section if the requested source is in the list of | 
						|
    // sources of the consumer. | 
						|
 | 
						|
    if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    var generatedPosition = section.consumer.generatedPositionFor(aArgs); | 
						|
 | 
						|
    if (generatedPosition) { | 
						|
      var ret = { | 
						|
        line: generatedPosition.line + (section.generatedOffset.generatedLine - 1), | 
						|
        column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0) | 
						|
      }; | 
						|
      return ret; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return { | 
						|
    line: null, | 
						|
    column: null | 
						|
  }; | 
						|
}; | 
						|
/** | 
						|
 * Parse the mappings in a string in to a data structure which we can easily | 
						|
 * query (the ordered arrays in the `this.__generatedMappings` and | 
						|
 * `this.__originalMappings` properties). | 
						|
 */ | 
						|
 | 
						|
 | 
						|
IndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { | 
						|
  this.__generatedMappings = []; | 
						|
  this.__originalMappings = []; | 
						|
 | 
						|
  for (var i = 0; i < this._sections.length; i++) { | 
						|
    var section = this._sections[i]; | 
						|
    var sectionMappings = section.consumer._generatedMappings; | 
						|
 | 
						|
    for (var j = 0; j < sectionMappings.length; j++) { | 
						|
      var mapping = sectionMappings[j]; | 
						|
 | 
						|
      var source = section.consumer._sources.at(mapping.source); | 
						|
 | 
						|
      if (section.consumer.sourceRoot !== null) { | 
						|
        source = util.join(section.consumer.sourceRoot, source); | 
						|
      } | 
						|
 | 
						|
      this._sources.add(source); | 
						|
 | 
						|
      source = this._sources.indexOf(source); | 
						|
 | 
						|
      var name = section.consumer._names.at(mapping.name); | 
						|
 | 
						|
      this._names.add(name); | 
						|
 | 
						|
      name = this._names.indexOf(name); // The mappings coming from the consumer for the section have | 
						|
      // generated positions relative to the start of the section, so we | 
						|
      // need to offset them to be relative to the start of the concatenated | 
						|
      // generated file. | 
						|
 | 
						|
      var adjustedMapping = { | 
						|
        source: source, | 
						|
        generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1), | 
						|
        generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), | 
						|
        originalLine: mapping.originalLine, | 
						|
        originalColumn: mapping.originalColumn, | 
						|
        name: name | 
						|
      }; | 
						|
 | 
						|
      this.__generatedMappings.push(adjustedMapping); | 
						|
 | 
						|
      if (typeof adjustedMapping.originalLine === 'number') { | 
						|
        this.__originalMappings.push(adjustedMapping); | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); | 
						|
  quickSort(this.__originalMappings, util.compareByOriginalPositions); | 
						|
}; | 
						|
 | 
						|
exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/source-map/lib/source-map-generator.js": | 
						|
/*!*************************************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/source-map/lib/source-map-generator.js ***! | 
						|
  \*************************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* -*- Mode: js; js-indent-level: 2; -*- */ | 
						|
 | 
						|
/* | 
						|
 * Copyright 2011 Mozilla Foundation and contributors | 
						|
 * Licensed under the New BSD license. See LICENSE or: | 
						|
 * http://opensource.org/licenses/BSD-3-Clause | 
						|
 */ | 
						|
var base64VLQ = __webpack_require__(/*! ./base64-vlq */ "./node_modules/snapdragon/node_modules/source-map/lib/base64-vlq.js"); | 
						|
 | 
						|
var util = __webpack_require__(/*! ./util */ "./node_modules/snapdragon/node_modules/source-map/lib/util.js"); | 
						|
 | 
						|
var ArraySet = __webpack_require__(/*! ./array-set */ "./node_modules/snapdragon/node_modules/source-map/lib/array-set.js").ArraySet; | 
						|
 | 
						|
var MappingList = __webpack_require__(/*! ./mapping-list */ "./node_modules/snapdragon/node_modules/source-map/lib/mapping-list.js").MappingList; | 
						|
/** | 
						|
 * An instance of the SourceMapGenerator represents a source map which is | 
						|
 * being built incrementally. You may pass an object with the following | 
						|
 * properties: | 
						|
 * | 
						|
 *   - file: The filename of the generated source. | 
						|
 *   - sourceRoot: A root for all relative URLs in this source map. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function SourceMapGenerator(aArgs) { | 
						|
  if (!aArgs) { | 
						|
    aArgs = {}; | 
						|
  } | 
						|
 | 
						|
  this._file = util.getArg(aArgs, 'file', null); | 
						|
  this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); | 
						|
  this._skipValidation = util.getArg(aArgs, 'skipValidation', false); | 
						|
  this._sources = new ArraySet(); | 
						|
  this._names = new ArraySet(); | 
						|
  this._mappings = new MappingList(); | 
						|
  this._sourcesContents = null; | 
						|
} | 
						|
 | 
						|
SourceMapGenerator.prototype._version = 3; | 
						|
/** | 
						|
 * Creates a new SourceMapGenerator based on a SourceMapConsumer | 
						|
 * | 
						|
 * @param aSourceMapConsumer The SourceMap. | 
						|
 */ | 
						|
 | 
						|
SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { | 
						|
  var sourceRoot = aSourceMapConsumer.sourceRoot; | 
						|
  var generator = new SourceMapGenerator({ | 
						|
    file: aSourceMapConsumer.file, | 
						|
    sourceRoot: sourceRoot | 
						|
  }); | 
						|
  aSourceMapConsumer.eachMapping(function (mapping) { | 
						|
    var newMapping = { | 
						|
      generated: { | 
						|
        line: mapping.generatedLine, | 
						|
        column: mapping.generatedColumn | 
						|
      } | 
						|
    }; | 
						|
 | 
						|
    if (mapping.source != null) { | 
						|
      newMapping.source = mapping.source; | 
						|
 | 
						|
      if (sourceRoot != null) { | 
						|
        newMapping.source = util.relative(sourceRoot, newMapping.source); | 
						|
      } | 
						|
 | 
						|
      newMapping.original = { | 
						|
        line: mapping.originalLine, | 
						|
        column: mapping.originalColumn | 
						|
      }; | 
						|
 | 
						|
      if (mapping.name != null) { | 
						|
        newMapping.name = mapping.name; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    generator.addMapping(newMapping); | 
						|
  }); | 
						|
  aSourceMapConsumer.sources.forEach(function (sourceFile) { | 
						|
    var content = aSourceMapConsumer.sourceContentFor(sourceFile); | 
						|
 | 
						|
    if (content != null) { | 
						|
      generator.setSourceContent(sourceFile, content); | 
						|
    } | 
						|
  }); | 
						|
  return generator; | 
						|
}; | 
						|
/** | 
						|
 * Add a single mapping from original source line and column to the generated | 
						|
 * source's line and column for this source map being created. The mapping | 
						|
 * object should have the following properties: | 
						|
 * | 
						|
 *   - generated: An object with the generated line and column positions. | 
						|
 *   - original: An object with the original line and column positions. | 
						|
 *   - source: The original source file (relative to the sourceRoot). | 
						|
 *   - name: An optional original token name for this mapping. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) { | 
						|
  var generated = util.getArg(aArgs, 'generated'); | 
						|
  var original = util.getArg(aArgs, 'original', null); | 
						|
  var source = util.getArg(aArgs, 'source', null); | 
						|
  var name = util.getArg(aArgs, 'name', null); | 
						|
 | 
						|
  if (!this._skipValidation) { | 
						|
    this._validateMapping(generated, original, source, name); | 
						|
  } | 
						|
 | 
						|
  if (source != null) { | 
						|
    source = String(source); | 
						|
 | 
						|
    if (!this._sources.has(source)) { | 
						|
      this._sources.add(source); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (name != null) { | 
						|
    name = String(name); | 
						|
 | 
						|
    if (!this._names.has(name)) { | 
						|
      this._names.add(name); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  this._mappings.add({ | 
						|
    generatedLine: generated.line, | 
						|
    generatedColumn: generated.column, | 
						|
    originalLine: original != null && original.line, | 
						|
    originalColumn: original != null && original.column, | 
						|
    source: source, | 
						|
    name: name | 
						|
  }); | 
						|
}; | 
						|
/** | 
						|
 * Set the source content for a source file. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { | 
						|
  var source = aSourceFile; | 
						|
 | 
						|
  if (this._sourceRoot != null) { | 
						|
    source = util.relative(this._sourceRoot, source); | 
						|
  } | 
						|
 | 
						|
  if (aSourceContent != null) { | 
						|
    // Add the source content to the _sourcesContents map. | 
						|
    // Create a new _sourcesContents map if the property is null. | 
						|
    if (!this._sourcesContents) { | 
						|
      this._sourcesContents = Object.create(null); | 
						|
    } | 
						|
 | 
						|
    this._sourcesContents[util.toSetString(source)] = aSourceContent; | 
						|
  } else if (this._sourcesContents) { | 
						|
    // Remove the source file from the _sourcesContents map. | 
						|
    // If the _sourcesContents map is empty, set the property to null. | 
						|
    delete this._sourcesContents[util.toSetString(source)]; | 
						|
 | 
						|
    if (Object.keys(this._sourcesContents).length === 0) { | 
						|
      this._sourcesContents = null; | 
						|
    } | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Applies the mappings of a sub-source-map for a specific source file to the | 
						|
 * source map being generated. Each mapping to the supplied source file is | 
						|
 * rewritten using the supplied source map. Note: The resolution for the | 
						|
 * resulting mappings is the minimium of this map and the supplied map. | 
						|
 * | 
						|
 * @param aSourceMapConsumer The source map to be applied. | 
						|
 * @param aSourceFile Optional. The filename of the source file. | 
						|
 *        If omitted, SourceMapConsumer's file property will be used. | 
						|
 * @param aSourceMapPath Optional. The dirname of the path to the source map | 
						|
 *        to be applied. If relative, it is relative to the SourceMapConsumer. | 
						|
 *        This parameter is needed when the two source maps aren't in the same | 
						|
 *        directory, and the source map to be applied contains relative source | 
						|
 *        paths. If so, those relative source paths need to be rewritten | 
						|
 *        relative to the SourceMapGenerator. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { | 
						|
  var sourceFile = aSourceFile; // If aSourceFile is omitted, we will use the file property of the SourceMap | 
						|
 | 
						|
  if (aSourceFile == null) { | 
						|
    if (aSourceMapConsumer.file == null) { | 
						|
      throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + 'or the source map\'s "file" property. Both were omitted.'); | 
						|
    } | 
						|
 | 
						|
    sourceFile = aSourceMapConsumer.file; | 
						|
  } | 
						|
 | 
						|
  var sourceRoot = this._sourceRoot; // Make "sourceFile" relative if an absolute Url is passed. | 
						|
 | 
						|
  if (sourceRoot != null) { | 
						|
    sourceFile = util.relative(sourceRoot, sourceFile); | 
						|
  } // Applying the SourceMap can add and remove items from the sources and | 
						|
  // the names array. | 
						|
 | 
						|
 | 
						|
  var newSources = new ArraySet(); | 
						|
  var newNames = new ArraySet(); // Find mappings for the "sourceFile" | 
						|
 | 
						|
  this._mappings.unsortedForEach(function (mapping) { | 
						|
    if (mapping.source === sourceFile && mapping.originalLine != null) { | 
						|
      // Check if it can be mapped by the source map, then update the mapping. | 
						|
      var original = aSourceMapConsumer.originalPositionFor({ | 
						|
        line: mapping.originalLine, | 
						|
        column: mapping.originalColumn | 
						|
      }); | 
						|
 | 
						|
      if (original.source != null) { | 
						|
        // Copy mapping | 
						|
        mapping.source = original.source; | 
						|
 | 
						|
        if (aSourceMapPath != null) { | 
						|
          mapping.source = util.join(aSourceMapPath, mapping.source); | 
						|
        } | 
						|
 | 
						|
        if (sourceRoot != null) { | 
						|
          mapping.source = util.relative(sourceRoot, mapping.source); | 
						|
        } | 
						|
 | 
						|
        mapping.originalLine = original.line; | 
						|
        mapping.originalColumn = original.column; | 
						|
 | 
						|
        if (original.name != null) { | 
						|
          mapping.name = original.name; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    var source = mapping.source; | 
						|
 | 
						|
    if (source != null && !newSources.has(source)) { | 
						|
      newSources.add(source); | 
						|
    } | 
						|
 | 
						|
    var name = mapping.name; | 
						|
 | 
						|
    if (name != null && !newNames.has(name)) { | 
						|
      newNames.add(name); | 
						|
    } | 
						|
  }, this); | 
						|
 | 
						|
  this._sources = newSources; | 
						|
  this._names = newNames; // Copy sourcesContents of applied map. | 
						|
 | 
						|
  aSourceMapConsumer.sources.forEach(function (sourceFile) { | 
						|
    var content = aSourceMapConsumer.sourceContentFor(sourceFile); | 
						|
 | 
						|
    if (content != null) { | 
						|
      if (aSourceMapPath != null) { | 
						|
        sourceFile = util.join(aSourceMapPath, sourceFile); | 
						|
      } | 
						|
 | 
						|
      if (sourceRoot != null) { | 
						|
        sourceFile = util.relative(sourceRoot, sourceFile); | 
						|
      } | 
						|
 | 
						|
      this.setSourceContent(sourceFile, content); | 
						|
    } | 
						|
  }, this); | 
						|
}; | 
						|
/** | 
						|
 * A mapping can have one of the three levels of data: | 
						|
 * | 
						|
 *   1. Just the generated position. | 
						|
 *   2. The Generated position, original position, and original source. | 
						|
 *   3. Generated and original position, original source, as well as a name | 
						|
 *      token. | 
						|
 * | 
						|
 * To maintain consistency, we validate that any new mapping being added falls | 
						|
 * in to one of these categories. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) { | 
						|
  // When aOriginal is truthy but has empty values for .line and .column, | 
						|
  // it is most likely a programmer error. In this case we throw a very | 
						|
  // specific error message to try to guide them the right way. | 
						|
  // For example: https://github.com/Polymer/polymer-bundler/pull/519 | 
						|
  if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { | 
						|
    throw new Error('original.line and original.column are not numbers -- you probably meant to omit ' + 'the original mapping entirely and only map the generated position. If so, pass ' + 'null for the original mapping instead of an object with empty or null values.'); | 
						|
  } | 
						|
 | 
						|
  if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) { | 
						|
    // Case 1. | 
						|
    return; | 
						|
  } else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aOriginal && 'line' in aOriginal && 'column' in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) { | 
						|
    // Cases 2 and 3. | 
						|
    return; | 
						|
  } else { | 
						|
    throw new Error('Invalid mapping: ' + JSON.stringify({ | 
						|
      generated: aGenerated, | 
						|
      source: aSource, | 
						|
      original: aOriginal, | 
						|
      name: aName | 
						|
    })); | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Serialize the accumulated mappings in to the stream of base 64 VLQs | 
						|
 * specified by the source map format. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() { | 
						|
  var previousGeneratedColumn = 0; | 
						|
  var previousGeneratedLine = 1; | 
						|
  var previousOriginalColumn = 0; | 
						|
  var previousOriginalLine = 0; | 
						|
  var previousName = 0; | 
						|
  var previousSource = 0; | 
						|
  var result = ''; | 
						|
  var next; | 
						|
  var mapping; | 
						|
  var nameIdx; | 
						|
  var sourceIdx; | 
						|
 | 
						|
  var mappings = this._mappings.toArray(); | 
						|
 | 
						|
  for (var i = 0, len = mappings.length; i < len; i++) { | 
						|
    mapping = mappings[i]; | 
						|
    next = ''; | 
						|
 | 
						|
    if (mapping.generatedLine !== previousGeneratedLine) { | 
						|
      previousGeneratedColumn = 0; | 
						|
 | 
						|
      while (mapping.generatedLine !== previousGeneratedLine) { | 
						|
        next += ';'; | 
						|
        previousGeneratedLine++; | 
						|
      } | 
						|
    } else { | 
						|
      if (i > 0) { | 
						|
        if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { | 
						|
          continue; | 
						|
        } | 
						|
 | 
						|
        next += ','; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn); | 
						|
    previousGeneratedColumn = mapping.generatedColumn; | 
						|
 | 
						|
    if (mapping.source != null) { | 
						|
      sourceIdx = this._sources.indexOf(mapping.source); | 
						|
      next += base64VLQ.encode(sourceIdx - previousSource); | 
						|
      previousSource = sourceIdx; // lines are stored 0-based in SourceMap spec version 3 | 
						|
 | 
						|
      next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine); | 
						|
      previousOriginalLine = mapping.originalLine - 1; | 
						|
      next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn); | 
						|
      previousOriginalColumn = mapping.originalColumn; | 
						|
 | 
						|
      if (mapping.name != null) { | 
						|
        nameIdx = this._names.indexOf(mapping.name); | 
						|
        next += base64VLQ.encode(nameIdx - previousName); | 
						|
        previousName = nameIdx; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    result += next; | 
						|
  } | 
						|
 | 
						|
  return result; | 
						|
}; | 
						|
 | 
						|
SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { | 
						|
  return aSources.map(function (source) { | 
						|
    if (!this._sourcesContents) { | 
						|
      return null; | 
						|
    } | 
						|
 | 
						|
    if (aSourceRoot != null) { | 
						|
      source = util.relative(aSourceRoot, source); | 
						|
    } | 
						|
 | 
						|
    var key = util.toSetString(source); | 
						|
    return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null; | 
						|
  }, this); | 
						|
}; | 
						|
/** | 
						|
 * Externalize the source map. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() { | 
						|
  var map = { | 
						|
    version: this._version, | 
						|
    sources: this._sources.toArray(), | 
						|
    names: this._names.toArray(), | 
						|
    mappings: this._serializeMappings() | 
						|
  }; | 
						|
 | 
						|
  if (this._file != null) { | 
						|
    map.file = this._file; | 
						|
  } | 
						|
 | 
						|
  if (this._sourceRoot != null) { | 
						|
    map.sourceRoot = this._sourceRoot; | 
						|
  } | 
						|
 | 
						|
  if (this._sourcesContents) { | 
						|
    map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); | 
						|
  } | 
						|
 | 
						|
  return map; | 
						|
}; | 
						|
/** | 
						|
 * Render the source map being generated to a string. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() { | 
						|
  return JSON.stringify(this.toJSON()); | 
						|
}; | 
						|
 | 
						|
exports.SourceMapGenerator = SourceMapGenerator; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/source-map/lib/source-node.js": | 
						|
/*!****************************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/source-map/lib/source-node.js ***! | 
						|
  \****************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* -*- Mode: js; js-indent-level: 2; -*- */ | 
						|
 | 
						|
/* | 
						|
 * Copyright 2011 Mozilla Foundation and contributors | 
						|
 * Licensed under the New BSD license. See LICENSE or: | 
						|
 * http://opensource.org/licenses/BSD-3-Clause | 
						|
 */ | 
						|
var SourceMapGenerator = __webpack_require__(/*! ./source-map-generator */ "./node_modules/snapdragon/node_modules/source-map/lib/source-map-generator.js").SourceMapGenerator; | 
						|
 | 
						|
var util = __webpack_require__(/*! ./util */ "./node_modules/snapdragon/node_modules/source-map/lib/util.js"); // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other | 
						|
// operating systems these days (capturing the result). | 
						|
 | 
						|
 | 
						|
var REGEX_NEWLINE = /(\r?\n)/; // Newline character code for charCodeAt() comparisons | 
						|
 | 
						|
var NEWLINE_CODE = 10; // Private symbol for identifying `SourceNode`s when multiple versions of | 
						|
// the source-map library are loaded. This MUST NOT CHANGE across | 
						|
// versions! | 
						|
 | 
						|
var isSourceNode = "$$$isSourceNode$$$"; | 
						|
/** | 
						|
 * SourceNodes provide a way to abstract over interpolating/concatenating | 
						|
 * snippets of generated JavaScript source code while maintaining the line and | 
						|
 * column information associated with the original source code. | 
						|
 * | 
						|
 * @param aLine The original line number. | 
						|
 * @param aColumn The original column number. | 
						|
 * @param aSource The original source's filename. | 
						|
 * @param aChunks Optional. An array of strings which are snippets of | 
						|
 *        generated JS, or other SourceNodes. | 
						|
 * @param aName The original identifier. | 
						|
 */ | 
						|
 | 
						|
function SourceNode(aLine, aColumn, aSource, aChunks, aName) { | 
						|
  this.children = []; | 
						|
  this.sourceContents = {}; | 
						|
  this.line = aLine == null ? null : aLine; | 
						|
  this.column = aColumn == null ? null : aColumn; | 
						|
  this.source = aSource == null ? null : aSource; | 
						|
  this.name = aName == null ? null : aName; | 
						|
  this[isSourceNode] = true; | 
						|
  if (aChunks != null) this.add(aChunks); | 
						|
} | 
						|
/** | 
						|
 * Creates a SourceNode from generated code and a SourceMapConsumer. | 
						|
 * | 
						|
 * @param aGeneratedCode The generated code | 
						|
 * @param aSourceMapConsumer The SourceMap for the generated code | 
						|
 * @param aRelativePath Optional. The path that relative sources in the | 
						|
 *        SourceMapConsumer should be relative to. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { | 
						|
  // The SourceNode we want to fill with the generated code | 
						|
  // and the SourceMap | 
						|
  var node = new SourceNode(); // All even indices of this array are one line of the generated code, | 
						|
  // while all odd indices are the newlines between two adjacent lines | 
						|
  // (since `REGEX_NEWLINE` captures its match). | 
						|
  // Processed fragments are accessed by calling `shiftNextLine`. | 
						|
 | 
						|
  var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); | 
						|
  var remainingLinesIndex = 0; | 
						|
 | 
						|
  var shiftNextLine = function shiftNextLine() { | 
						|
    var lineContents = getNextLine(); // The last line of a file might not have a newline. | 
						|
 | 
						|
    var newLine = getNextLine() || ""; | 
						|
    return lineContents + newLine; | 
						|
 | 
						|
    function getNextLine() { | 
						|
      return remainingLinesIndex < remainingLines.length ? remainingLines[remainingLinesIndex++] : undefined; | 
						|
    } | 
						|
  }; // We need to remember the position of "remainingLines" | 
						|
 | 
						|
 | 
						|
  var lastGeneratedLine = 1, | 
						|
      lastGeneratedColumn = 0; // The generate SourceNodes we need a code range. | 
						|
  // To extract it current and last mapping is used. | 
						|
  // Here we store the last mapping. | 
						|
 | 
						|
  var lastMapping = null; | 
						|
  aSourceMapConsumer.eachMapping(function (mapping) { | 
						|
    if (lastMapping !== null) { | 
						|
      // We add the code from "lastMapping" to "mapping": | 
						|
      // First check if there is a new line in between. | 
						|
      if (lastGeneratedLine < mapping.generatedLine) { | 
						|
        // Associate first line with "lastMapping" | 
						|
        addMappingWithCode(lastMapping, shiftNextLine()); | 
						|
        lastGeneratedLine++; | 
						|
        lastGeneratedColumn = 0; // The remaining code is added without mapping | 
						|
      } else { | 
						|
        // There is no new line in between. | 
						|
        // Associate the code between "lastGeneratedColumn" and | 
						|
        // "mapping.generatedColumn" with "lastMapping" | 
						|
        var nextLine = remainingLines[remainingLinesIndex]; | 
						|
        var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn); | 
						|
        remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn); | 
						|
        lastGeneratedColumn = mapping.generatedColumn; | 
						|
        addMappingWithCode(lastMapping, code); // No more remaining code, continue | 
						|
 | 
						|
        lastMapping = mapping; | 
						|
        return; | 
						|
      } | 
						|
    } // We add the generated code until the first mapping | 
						|
    // to the SourceNode without any mapping. | 
						|
    // Each line is added as separate string. | 
						|
 | 
						|
 | 
						|
    while (lastGeneratedLine < mapping.generatedLine) { | 
						|
      node.add(shiftNextLine()); | 
						|
      lastGeneratedLine++; | 
						|
    } | 
						|
 | 
						|
    if (lastGeneratedColumn < mapping.generatedColumn) { | 
						|
      var nextLine = remainingLines[remainingLinesIndex]; | 
						|
      node.add(nextLine.substr(0, mapping.generatedColumn)); | 
						|
      remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); | 
						|
      lastGeneratedColumn = mapping.generatedColumn; | 
						|
    } | 
						|
 | 
						|
    lastMapping = mapping; | 
						|
  }, this); // We have processed all mappings. | 
						|
 | 
						|
  if (remainingLinesIndex < remainingLines.length) { | 
						|
    if (lastMapping) { | 
						|
      // Associate the remaining code in the current line with "lastMapping" | 
						|
      addMappingWithCode(lastMapping, shiftNextLine()); | 
						|
    } // and add the remaining lines without any mapping | 
						|
 | 
						|
 | 
						|
    node.add(remainingLines.splice(remainingLinesIndex).join("")); | 
						|
  } // Copy sourcesContent into SourceNode | 
						|
 | 
						|
 | 
						|
  aSourceMapConsumer.sources.forEach(function (sourceFile) { | 
						|
    var content = aSourceMapConsumer.sourceContentFor(sourceFile); | 
						|
 | 
						|
    if (content != null) { | 
						|
      if (aRelativePath != null) { | 
						|
        sourceFile = util.join(aRelativePath, sourceFile); | 
						|
      } | 
						|
 | 
						|
      node.setSourceContent(sourceFile, content); | 
						|
    } | 
						|
  }); | 
						|
  return node; | 
						|
 | 
						|
  function addMappingWithCode(mapping, code) { | 
						|
    if (mapping === null || mapping.source === undefined) { | 
						|
      node.add(code); | 
						|
    } else { | 
						|
      var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source; | 
						|
      node.add(new SourceNode(mapping.originalLine, mapping.originalColumn, source, code, mapping.name)); | 
						|
    } | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Add a chunk of generated JS to this source node. | 
						|
 * | 
						|
 * @param aChunk A string snippet of generated JS code, another instance of | 
						|
 *        SourceNode, or an array where each member is one of those things. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceNode.prototype.add = function SourceNode_add(aChunk) { | 
						|
  if (Array.isArray(aChunk)) { | 
						|
    aChunk.forEach(function (chunk) { | 
						|
      this.add(chunk); | 
						|
    }, this); | 
						|
  } else if (aChunk[isSourceNode] || typeof aChunk === "string") { | 
						|
    if (aChunk) { | 
						|
      this.children.push(aChunk); | 
						|
    } | 
						|
  } else { | 
						|
    throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk); | 
						|
  } | 
						|
 | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Add a chunk of generated JS to the beginning of this source node. | 
						|
 * | 
						|
 * @param aChunk A string snippet of generated JS code, another instance of | 
						|
 *        SourceNode, or an array where each member is one of those things. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { | 
						|
  if (Array.isArray(aChunk)) { | 
						|
    for (var i = aChunk.length - 1; i >= 0; i--) { | 
						|
      this.prepend(aChunk[i]); | 
						|
    } | 
						|
  } else if (aChunk[isSourceNode] || typeof aChunk === "string") { | 
						|
    this.children.unshift(aChunk); | 
						|
  } else { | 
						|
    throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk); | 
						|
  } | 
						|
 | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Walk over the tree of JS snippets in this node and its children. The | 
						|
 * walking function is called once for each snippet of JS and is passed that | 
						|
 * snippet and the its original associated source's line/column location. | 
						|
 * | 
						|
 * @param aFn The traversal function. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceNode.prototype.walk = function SourceNode_walk(aFn) { | 
						|
  var chunk; | 
						|
 | 
						|
  for (var i = 0, len = this.children.length; i < len; i++) { | 
						|
    chunk = this.children[i]; | 
						|
 | 
						|
    if (chunk[isSourceNode]) { | 
						|
      chunk.walk(aFn); | 
						|
    } else { | 
						|
      if (chunk !== '') { | 
						|
        aFn(chunk, { | 
						|
          source: this.source, | 
						|
          line: this.line, | 
						|
          column: this.column, | 
						|
          name: this.name | 
						|
        }); | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between | 
						|
 * each of `this.children`. | 
						|
 * | 
						|
 * @param aSep The separator. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceNode.prototype.join = function SourceNode_join(aSep) { | 
						|
  var newChildren; | 
						|
  var i; | 
						|
  var len = this.children.length; | 
						|
 | 
						|
  if (len > 0) { | 
						|
    newChildren = []; | 
						|
 | 
						|
    for (i = 0; i < len - 1; i++) { | 
						|
      newChildren.push(this.children[i]); | 
						|
      newChildren.push(aSep); | 
						|
    } | 
						|
 | 
						|
    newChildren.push(this.children[i]); | 
						|
    this.children = newChildren; | 
						|
  } | 
						|
 | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Call String.prototype.replace on the very right-most source snippet. Useful | 
						|
 * for trimming whitespace from the end of a source node, etc. | 
						|
 * | 
						|
 * @param aPattern The pattern to replace. | 
						|
 * @param aReplacement The thing to replace the pattern with. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { | 
						|
  var lastChild = this.children[this.children.length - 1]; | 
						|
 | 
						|
  if (lastChild[isSourceNode]) { | 
						|
    lastChild.replaceRight(aPattern, aReplacement); | 
						|
  } else if (typeof lastChild === 'string') { | 
						|
    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); | 
						|
  } else { | 
						|
    this.children.push(''.replace(aPattern, aReplacement)); | 
						|
  } | 
						|
 | 
						|
  return this; | 
						|
}; | 
						|
/** | 
						|
 * Set the source content for a source file. This will be added to the SourceMapGenerator | 
						|
 * in the sourcesContent field. | 
						|
 * | 
						|
 * @param aSourceFile The filename of the source file | 
						|
 * @param aSourceContent The content of the source file | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) { | 
						|
  this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; | 
						|
}; | 
						|
/** | 
						|
 * Walk over the tree of SourceNodes. The walking function is called for each | 
						|
 * source file content and is passed the filename and source content. | 
						|
 * | 
						|
 * @param aFn The traversal function. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) { | 
						|
  for (var i = 0, len = this.children.length; i < len; i++) { | 
						|
    if (this.children[i][isSourceNode]) { | 
						|
      this.children[i].walkSourceContents(aFn); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var sources = Object.keys(this.sourceContents); | 
						|
 | 
						|
  for (var i = 0, len = sources.length; i < len; i++) { | 
						|
    aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Return the string representation of this source node. Walks over the tree | 
						|
 * and concatenates all the various snippets together to one string. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceNode.prototype.toString = function SourceNode_toString() { | 
						|
  var str = ""; | 
						|
  this.walk(function (chunk) { | 
						|
    str += chunk; | 
						|
  }); | 
						|
  return str; | 
						|
}; | 
						|
/** | 
						|
 * Returns the string representation of this source node along with a source | 
						|
 * map. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { | 
						|
  var generated = { | 
						|
    code: "", | 
						|
    line: 1, | 
						|
    column: 0 | 
						|
  }; | 
						|
  var map = new SourceMapGenerator(aArgs); | 
						|
  var sourceMappingActive = false; | 
						|
  var lastOriginalSource = null; | 
						|
  var lastOriginalLine = null; | 
						|
  var lastOriginalColumn = null; | 
						|
  var lastOriginalName = null; | 
						|
  this.walk(function (chunk, original) { | 
						|
    generated.code += chunk; | 
						|
 | 
						|
    if (original.source !== null && original.line !== null && original.column !== null) { | 
						|
      if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) { | 
						|
        map.addMapping({ | 
						|
          source: original.source, | 
						|
          original: { | 
						|
            line: original.line, | 
						|
            column: original.column | 
						|
          }, | 
						|
          generated: { | 
						|
            line: generated.line, | 
						|
            column: generated.column | 
						|
          }, | 
						|
          name: original.name | 
						|
        }); | 
						|
      } | 
						|
 | 
						|
      lastOriginalSource = original.source; | 
						|
      lastOriginalLine = original.line; | 
						|
      lastOriginalColumn = original.column; | 
						|
      lastOriginalName = original.name; | 
						|
      sourceMappingActive = true; | 
						|
    } else if (sourceMappingActive) { | 
						|
      map.addMapping({ | 
						|
        generated: { | 
						|
          line: generated.line, | 
						|
          column: generated.column | 
						|
        } | 
						|
      }); | 
						|
      lastOriginalSource = null; | 
						|
      sourceMappingActive = false; | 
						|
    } | 
						|
 | 
						|
    for (var idx = 0, length = chunk.length; idx < length; idx++) { | 
						|
      if (chunk.charCodeAt(idx) === NEWLINE_CODE) { | 
						|
        generated.line++; | 
						|
        generated.column = 0; // Mappings end at eol | 
						|
 | 
						|
        if (idx + 1 === length) { | 
						|
          lastOriginalSource = null; | 
						|
          sourceMappingActive = false; | 
						|
        } else if (sourceMappingActive) { | 
						|
          map.addMapping({ | 
						|
            source: original.source, | 
						|
            original: { | 
						|
              line: original.line, | 
						|
              column: original.column | 
						|
            }, | 
						|
            generated: { | 
						|
              line: generated.line, | 
						|
              column: generated.column | 
						|
            }, | 
						|
            name: original.name | 
						|
          }); | 
						|
        } | 
						|
      } else { | 
						|
        generated.column++; | 
						|
      } | 
						|
    } | 
						|
  }); | 
						|
  this.walkSourceContents(function (sourceFile, sourceContent) { | 
						|
    map.setSourceContent(sourceFile, sourceContent); | 
						|
  }); | 
						|
  return { | 
						|
    code: generated.code, | 
						|
    map: map | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.SourceNode = SourceNode; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/source-map/lib/util.js": | 
						|
/*!*********************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/source-map/lib/util.js ***! | 
						|
  \*********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* -*- Mode: js; js-indent-level: 2; -*- */ | 
						|
 | 
						|
/* | 
						|
 * Copyright 2011 Mozilla Foundation and contributors | 
						|
 * Licensed under the New BSD license. See LICENSE or: | 
						|
 * http://opensource.org/licenses/BSD-3-Clause | 
						|
 */ | 
						|
 | 
						|
/** | 
						|
 * This is a helper function for getting values from parameter/options | 
						|
 * objects. | 
						|
 * | 
						|
 * @param args The object we are extracting values from | 
						|
 * @param name The name of the property we are getting. | 
						|
 * @param defaultValue An optional value to return if the property is missing | 
						|
 * from the object. If this is not specified and the property is missing, an | 
						|
 * error will be thrown. | 
						|
 */ | 
						|
function getArg(aArgs, aName, aDefaultValue) { | 
						|
  if (aName in aArgs) { | 
						|
    return aArgs[aName]; | 
						|
  } else if (arguments.length === 3) { | 
						|
    return aDefaultValue; | 
						|
  } else { | 
						|
    throw new Error('"' + aName + '" is a required argument.'); | 
						|
  } | 
						|
} | 
						|
 | 
						|
exports.getArg = getArg; | 
						|
var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; | 
						|
var dataUrlRegexp = /^data:.+\,.+$/; | 
						|
 | 
						|
function urlParse(aUrl) { | 
						|
  var match = aUrl.match(urlRegexp); | 
						|
 | 
						|
  if (!match) { | 
						|
    return null; | 
						|
  } | 
						|
 | 
						|
  return { | 
						|
    scheme: match[1], | 
						|
    auth: match[2], | 
						|
    host: match[3], | 
						|
    port: match[4], | 
						|
    path: match[5] | 
						|
  }; | 
						|
} | 
						|
 | 
						|
exports.urlParse = urlParse; | 
						|
 | 
						|
function urlGenerate(aParsedUrl) { | 
						|
  var url = ''; | 
						|
 | 
						|
  if (aParsedUrl.scheme) { | 
						|
    url += aParsedUrl.scheme + ':'; | 
						|
  } | 
						|
 | 
						|
  url += '//'; | 
						|
 | 
						|
  if (aParsedUrl.auth) { | 
						|
    url += aParsedUrl.auth + '@'; | 
						|
  } | 
						|
 | 
						|
  if (aParsedUrl.host) { | 
						|
    url += aParsedUrl.host; | 
						|
  } | 
						|
 | 
						|
  if (aParsedUrl.port) { | 
						|
    url += ":" + aParsedUrl.port; | 
						|
  } | 
						|
 | 
						|
  if (aParsedUrl.path) { | 
						|
    url += aParsedUrl.path; | 
						|
  } | 
						|
 | 
						|
  return url; | 
						|
} | 
						|
 | 
						|
exports.urlGenerate = urlGenerate; | 
						|
/** | 
						|
 * Normalizes a path, or the path portion of a URL: | 
						|
 * | 
						|
 * - Replaces consecutive slashes with one slash. | 
						|
 * - Removes unnecessary '.' parts. | 
						|
 * - Removes unnecessary '<dir>/..' parts. | 
						|
 * | 
						|
 * Based on code in the Node.js 'path' core module. | 
						|
 * | 
						|
 * @param aPath The path or url to normalize. | 
						|
 */ | 
						|
 | 
						|
function normalize(aPath) { | 
						|
  var path = aPath; | 
						|
  var url = urlParse(aPath); | 
						|
 | 
						|
  if (url) { | 
						|
    if (!url.path) { | 
						|
      return aPath; | 
						|
    } | 
						|
 | 
						|
    path = url.path; | 
						|
  } | 
						|
 | 
						|
  var isAbsolute = exports.isAbsolute(path); | 
						|
  var parts = path.split(/\/+/); | 
						|
 | 
						|
  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { | 
						|
    part = parts[i]; | 
						|
 | 
						|
    if (part === '.') { | 
						|
      parts.splice(i, 1); | 
						|
    } else if (part === '..') { | 
						|
      up++; | 
						|
    } else if (up > 0) { | 
						|
      if (part === '') { | 
						|
        // The first part is blank if the path is absolute. Trying to go | 
						|
        // above the root is a no-op. Therefore we can remove all '..' parts | 
						|
        // directly after the root. | 
						|
        parts.splice(i + 1, up); | 
						|
        up = 0; | 
						|
      } else { | 
						|
        parts.splice(i, 2); | 
						|
        up--; | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  path = parts.join('/'); | 
						|
 | 
						|
  if (path === '') { | 
						|
    path = isAbsolute ? '/' : '.'; | 
						|
  } | 
						|
 | 
						|
  if (url) { | 
						|
    url.path = path; | 
						|
    return urlGenerate(url); | 
						|
  } | 
						|
 | 
						|
  return path; | 
						|
} | 
						|
 | 
						|
exports.normalize = normalize; | 
						|
/** | 
						|
 * Joins two paths/URLs. | 
						|
 * | 
						|
 * @param aRoot The root path or URL. | 
						|
 * @param aPath The path or URL to be joined with the root. | 
						|
 * | 
						|
 * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a | 
						|
 *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended | 
						|
 *   first. | 
						|
 * - Otherwise aPath is a path. If aRoot is a URL, then its path portion | 
						|
 *   is updated with the result and aRoot is returned. Otherwise the result | 
						|
 *   is returned. | 
						|
 *   - If aPath is absolute, the result is aPath. | 
						|
 *   - Otherwise the two paths are joined with a slash. | 
						|
 * - Joining for example 'http://' and 'www.example.com' is also supported. | 
						|
 */ | 
						|
 | 
						|
function join(aRoot, aPath) { | 
						|
  if (aRoot === "") { | 
						|
    aRoot = "."; | 
						|
  } | 
						|
 | 
						|
  if (aPath === "") { | 
						|
    aPath = "."; | 
						|
  } | 
						|
 | 
						|
  var aPathUrl = urlParse(aPath); | 
						|
  var aRootUrl = urlParse(aRoot); | 
						|
 | 
						|
  if (aRootUrl) { | 
						|
    aRoot = aRootUrl.path || '/'; | 
						|
  } // `join(foo, '//www.example.org')` | 
						|
 | 
						|
 | 
						|
  if (aPathUrl && !aPathUrl.scheme) { | 
						|
    if (aRootUrl) { | 
						|
      aPathUrl.scheme = aRootUrl.scheme; | 
						|
    } | 
						|
 | 
						|
    return urlGenerate(aPathUrl); | 
						|
  } | 
						|
 | 
						|
  if (aPathUrl || aPath.match(dataUrlRegexp)) { | 
						|
    return aPath; | 
						|
  } // `join('http://', 'www.example.com')` | 
						|
 | 
						|
 | 
						|
  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { | 
						|
    aRootUrl.host = aPath; | 
						|
    return urlGenerate(aRootUrl); | 
						|
  } | 
						|
 | 
						|
  var joined = aPath.charAt(0) === '/' ? aPath : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); | 
						|
 | 
						|
  if (aRootUrl) { | 
						|
    aRootUrl.path = joined; | 
						|
    return urlGenerate(aRootUrl); | 
						|
  } | 
						|
 | 
						|
  return joined; | 
						|
} | 
						|
 | 
						|
exports.join = join; | 
						|
 | 
						|
exports.isAbsolute = function (aPath) { | 
						|
  return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); | 
						|
}; | 
						|
/** | 
						|
 * Make a path relative to a URL or another path. | 
						|
 * | 
						|
 * @param aRoot The root path or URL. | 
						|
 * @param aPath The path or URL to be made relative to aRoot. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function relative(aRoot, aPath) { | 
						|
  if (aRoot === "") { | 
						|
    aRoot = "."; | 
						|
  } | 
						|
 | 
						|
  aRoot = aRoot.replace(/\/$/, ''); // It is possible for the path to be above the root. In this case, simply | 
						|
  // checking whether the root is a prefix of the path won't work. Instead, we | 
						|
  // need to remove components from the root one by one, until either we find | 
						|
  // a prefix that fits, or we run out of components to remove. | 
						|
 | 
						|
  var level = 0; | 
						|
 | 
						|
  while (aPath.indexOf(aRoot + '/') !== 0) { | 
						|
    var index = aRoot.lastIndexOf("/"); | 
						|
 | 
						|
    if (index < 0) { | 
						|
      return aPath; | 
						|
    } // If the only part of the root that is left is the scheme (i.e. http://, | 
						|
    // file:///, etc.), one or more slashes (/), or simply nothing at all, we | 
						|
    // have exhausted all components, so the path is not relative to the root. | 
						|
 | 
						|
 | 
						|
    aRoot = aRoot.slice(0, index); | 
						|
 | 
						|
    if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { | 
						|
      return aPath; | 
						|
    } | 
						|
 | 
						|
    ++level; | 
						|
  } // Make sure we add a "../" for each component we removed from the root. | 
						|
 | 
						|
 | 
						|
  return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); | 
						|
} | 
						|
 | 
						|
exports.relative = relative; | 
						|
 | 
						|
var supportsNullProto = function () { | 
						|
  var obj = Object.create(null); | 
						|
  return !('__proto__' in obj); | 
						|
}(); | 
						|
 | 
						|
function identity(s) { | 
						|
  return s; | 
						|
} | 
						|
/** | 
						|
 * Because behavior goes wacky when you set `__proto__` on objects, we | 
						|
 * have to prefix all the strings in our set with an arbitrary character. | 
						|
 * | 
						|
 * See https://github.com/mozilla/source-map/pull/31 and | 
						|
 * https://github.com/mozilla/source-map/issues/30 | 
						|
 * | 
						|
 * @param String aStr | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function toSetString(aStr) { | 
						|
  if (isProtoString(aStr)) { | 
						|
    return '$' + aStr; | 
						|
  } | 
						|
 | 
						|
  return aStr; | 
						|
} | 
						|
 | 
						|
exports.toSetString = supportsNullProto ? identity : toSetString; | 
						|
 | 
						|
function fromSetString(aStr) { | 
						|
  if (isProtoString(aStr)) { | 
						|
    return aStr.slice(1); | 
						|
  } | 
						|
 | 
						|
  return aStr; | 
						|
} | 
						|
 | 
						|
exports.fromSetString = supportsNullProto ? identity : fromSetString; | 
						|
 | 
						|
function isProtoString(s) { | 
						|
  if (!s) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  var length = s.length; | 
						|
 | 
						|
  if (length < 9 | 
						|
  /* "__proto__".length */ | 
						|
  ) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
  if (s.charCodeAt(length - 1) !== 95 | 
						|
  /* '_' */ | 
						|
  || s.charCodeAt(length - 2) !== 95 | 
						|
  /* '_' */ | 
						|
  || s.charCodeAt(length - 3) !== 111 | 
						|
  /* 'o' */ | 
						|
  || s.charCodeAt(length - 4) !== 116 | 
						|
  /* 't' */ | 
						|
  || s.charCodeAt(length - 5) !== 111 | 
						|
  /* 'o' */ | 
						|
  || s.charCodeAt(length - 6) !== 114 | 
						|
  /* 'r' */ | 
						|
  || s.charCodeAt(length - 7) !== 112 | 
						|
  /* 'p' */ | 
						|
  || s.charCodeAt(length - 8) !== 95 | 
						|
  /* '_' */ | 
						|
  || s.charCodeAt(length - 9) !== 95 | 
						|
  /* '_' */ | 
						|
  ) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
  for (var i = length - 10; i >= 0; i--) { | 
						|
    if (s.charCodeAt(i) !== 36 | 
						|
    /* '$' */ | 
						|
    ) { | 
						|
        return false; | 
						|
      } | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
} | 
						|
/** | 
						|
 * Comparator between two mappings where the original positions are compared. | 
						|
 * | 
						|
 * Optionally pass in `true` as `onlyCompareGenerated` to consider two | 
						|
 * mappings with the same original source/line/column, but different generated | 
						|
 * line and column the same. Useful when searching for a mapping with a | 
						|
 * stubbed out mapping. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { | 
						|
  var cmp = mappingA.source - mappingB.source; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = mappingA.originalLine - mappingB.originalLine; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = mappingA.originalColumn - mappingB.originalColumn; | 
						|
 | 
						|
  if (cmp !== 0 || onlyCompareOriginal) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = mappingA.generatedColumn - mappingB.generatedColumn; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = mappingA.generatedLine - mappingB.generatedLine; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  return mappingA.name - mappingB.name; | 
						|
} | 
						|
 | 
						|
exports.compareByOriginalPositions = compareByOriginalPositions; | 
						|
/** | 
						|
 * Comparator between two mappings with deflated source and name indices where | 
						|
 * the generated positions are compared. | 
						|
 * | 
						|
 * Optionally pass in `true` as `onlyCompareGenerated` to consider two | 
						|
 * mappings with the same generated line and column, but different | 
						|
 * source/name/original line and column the same. Useful when searching for a | 
						|
 * mapping with a stubbed out mapping. | 
						|
 */ | 
						|
 | 
						|
function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { | 
						|
  var cmp = mappingA.generatedLine - mappingB.generatedLine; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = mappingA.generatedColumn - mappingB.generatedColumn; | 
						|
 | 
						|
  if (cmp !== 0 || onlyCompareGenerated) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = mappingA.source - mappingB.source; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = mappingA.originalLine - mappingB.originalLine; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = mappingA.originalColumn - mappingB.originalColumn; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  return mappingA.name - mappingB.name; | 
						|
} | 
						|
 | 
						|
exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; | 
						|
 | 
						|
function strcmp(aStr1, aStr2) { | 
						|
  if (aStr1 === aStr2) { | 
						|
    return 0; | 
						|
  } | 
						|
 | 
						|
  if (aStr1 > aStr2) { | 
						|
    return 1; | 
						|
  } | 
						|
 | 
						|
  return -1; | 
						|
} | 
						|
/** | 
						|
 * Comparator between two mappings with inflated source and name strings where | 
						|
 * the generated positions are compared. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function compareByGeneratedPositionsInflated(mappingA, mappingB) { | 
						|
  var cmp = mappingA.generatedLine - mappingB.generatedLine; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = mappingA.generatedColumn - mappingB.generatedColumn; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = strcmp(mappingA.source, mappingB.source); | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = mappingA.originalLine - mappingB.originalLine; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  cmp = mappingA.originalColumn - mappingB.originalColumn; | 
						|
 | 
						|
  if (cmp !== 0) { | 
						|
    return cmp; | 
						|
  } | 
						|
 | 
						|
  return strcmp(mappingA.name, mappingB.name); | 
						|
} | 
						|
 | 
						|
exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/snapdragon/node_modules/source-map/source-map.js": | 
						|
/*!***********************************************************************!*\ | 
						|
  !*** ./node_modules/snapdragon/node_modules/source-map/source-map.js ***! | 
						|
  \***********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/* | 
						|
 * Copyright 2009-2011 Mozilla Foundation and contributors | 
						|
 * Licensed under the New BSD license. See LICENSE.txt or: | 
						|
 * http://opensource.org/licenses/BSD-3-Clause | 
						|
 */ | 
						|
exports.SourceMapGenerator = __webpack_require__(/*! ./lib/source-map-generator */ "./node_modules/snapdragon/node_modules/source-map/lib/source-map-generator.js").SourceMapGenerator; | 
						|
exports.SourceMapConsumer = __webpack_require__(/*! ./lib/source-map-consumer */ "./node_modules/snapdragon/node_modules/source-map/lib/source-map-consumer.js").SourceMapConsumer; | 
						|
exports.SourceNode = __webpack_require__(/*! ./lib/source-node */ "./node_modules/snapdragon/node_modules/source-map/lib/source-node.js").SourceNode; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/source-map-resolve/source-map-resolve.js": | 
						|
/*!***************************************************************!*\ | 
						|
  !*** ./node_modules/source-map-resolve/source-map-resolve.js ***! | 
						|
  \***************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(setImmediate) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
// Copyright 2014, 2015, 2016, 2017 Simon Lydell | 
						|
// X11 (“MIT”) Licensed. (See LICENSE.) | 
						|
// Note: source-map-resolve.js is generated from source-map-resolve-node.js and | 
						|
// source-map-resolve-template.js. Only edit the two latter files, _not_ | 
						|
// source-map-resolve.js! | 
						|
void function (root, factory) { | 
						|
  if (true) { | 
						|
    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! source-map-url */ "./node_modules/source-map-url/source-map-url.js"), __webpack_require__(/*! resolve-url */ "./node_modules/resolve-url/resolve-url.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), | 
						|
				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? | 
						|
				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), | 
						|
				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); | 
						|
  } else { var resolveUrl, sourceMappingURL; } | 
						|
}(void 0, function (sourceMappingURL, resolveUrl) { | 
						|
  function callbackAsync(callback, error, result) { | 
						|
    setImmediate(function () { | 
						|
      callback(error, result); | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  function parseMapToJSON(string, data) { | 
						|
    try { | 
						|
      return JSON.parse(string.replace(/^\)\]\}'/, "")); | 
						|
    } catch (error) { | 
						|
      error.sourceMapData = data; | 
						|
      throw error; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  function readSync(read, url, data) { | 
						|
    var readUrl = url; | 
						|
 | 
						|
    try { | 
						|
      return String(read(readUrl)); | 
						|
    } catch (error) { | 
						|
      error.sourceMapData = data; | 
						|
      throw error; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  function resolveSourceMap(code, codeUrl, read, callback) { | 
						|
    var mapData; | 
						|
 | 
						|
    try { | 
						|
      mapData = resolveSourceMapHelper(code, codeUrl); | 
						|
    } catch (error) { | 
						|
      return callbackAsync(callback, error); | 
						|
    } | 
						|
 | 
						|
    if (!mapData || mapData.map) { | 
						|
      return callbackAsync(callback, null, mapData); | 
						|
    } | 
						|
 | 
						|
    var readUrl = mapData.url; | 
						|
    read(readUrl, function (error, result) { | 
						|
      if (error) { | 
						|
        error.sourceMapData = mapData; | 
						|
        return callback(error); | 
						|
      } | 
						|
 | 
						|
      mapData.map = String(result); | 
						|
 | 
						|
      try { | 
						|
        mapData.map = parseMapToJSON(mapData.map, mapData); | 
						|
      } catch (error) { | 
						|
        return callback(error); | 
						|
      } | 
						|
 | 
						|
      callback(null, mapData); | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  function resolveSourceMapSync(code, codeUrl, read) { | 
						|
    var mapData = resolveSourceMapHelper(code, codeUrl); | 
						|
 | 
						|
    if (!mapData || mapData.map) { | 
						|
      return mapData; | 
						|
    } | 
						|
 | 
						|
    mapData.map = readSync(read, mapData.url, mapData); | 
						|
    mapData.map = parseMapToJSON(mapData.map, mapData); | 
						|
    return mapData; | 
						|
  } | 
						|
 | 
						|
  var dataUriRegex = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/; | 
						|
  var jsonMimeTypeRegex = /^(?:application|text)\/json$/; | 
						|
 | 
						|
  function resolveSourceMapHelper(code, codeUrl) { | 
						|
    var url = sourceMappingURL.getFrom(code); | 
						|
 | 
						|
    if (!url) { | 
						|
      return null; | 
						|
    } | 
						|
 | 
						|
    var dataUri = url.match(dataUriRegex); | 
						|
 | 
						|
    if (dataUri) { | 
						|
      var mimeType = dataUri[1]; | 
						|
      var lastParameter = dataUri[2] || ""; | 
						|
      var encoded = dataUri[3] || ""; | 
						|
      var data = { | 
						|
        sourceMappingURL: url, | 
						|
        url: null, | 
						|
        sourcesRelativeTo: codeUrl, | 
						|
        map: encoded | 
						|
      }; | 
						|
 | 
						|
      if (!jsonMimeTypeRegex.test(mimeType)) { | 
						|
        var error = new Error("Unuseful data uri mime type: " + (mimeType || "text/plain")); | 
						|
        error.sourceMapData = data; | 
						|
        throw error; | 
						|
      } | 
						|
 | 
						|
      data.map = parseMapToJSON(lastParameter === ";base64" ? atob(encoded) : decodeURIComponent(encoded), data); | 
						|
      return data; | 
						|
    } | 
						|
 | 
						|
    var mapUrl = resolveUrl(codeUrl, url); | 
						|
    return { | 
						|
      sourceMappingURL: url, | 
						|
      url: mapUrl, | 
						|
      sourcesRelativeTo: mapUrl, | 
						|
      map: null | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  function resolveSources(map, mapUrl, read, options, callback) { | 
						|
    if (typeof options === "function") { | 
						|
      callback = options; | 
						|
      options = {}; | 
						|
    } | 
						|
 | 
						|
    var pending = map.sources ? map.sources.length : 0; | 
						|
    var result = { | 
						|
      sourcesResolved: [], | 
						|
      sourcesContent: [] | 
						|
    }; | 
						|
 | 
						|
    if (pending === 0) { | 
						|
      callbackAsync(callback, null, result); | 
						|
      return; | 
						|
    } | 
						|
 | 
						|
    var done = function done() { | 
						|
      pending--; | 
						|
 | 
						|
      if (pending === 0) { | 
						|
        callback(null, result); | 
						|
      } | 
						|
    }; | 
						|
 | 
						|
    resolveSourcesHelper(map, mapUrl, options, function (fullUrl, sourceContent, index) { | 
						|
      result.sourcesResolved[index] = fullUrl; | 
						|
 | 
						|
      if (typeof sourceContent === "string") { | 
						|
        result.sourcesContent[index] = sourceContent; | 
						|
        callbackAsync(done, null); | 
						|
      } else { | 
						|
        var readUrl = fullUrl; | 
						|
        read(readUrl, function (error, source) { | 
						|
          result.sourcesContent[index] = error ? error : String(source); | 
						|
          done(); | 
						|
        }); | 
						|
      } | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  function resolveSourcesSync(map, mapUrl, read, options) { | 
						|
    var result = { | 
						|
      sourcesResolved: [], | 
						|
      sourcesContent: [] | 
						|
    }; | 
						|
 | 
						|
    if (!map.sources || map.sources.length === 0) { | 
						|
      return result; | 
						|
    } | 
						|
 | 
						|
    resolveSourcesHelper(map, mapUrl, options, function (fullUrl, sourceContent, index) { | 
						|
      result.sourcesResolved[index] = fullUrl; | 
						|
 | 
						|
      if (read !== null) { | 
						|
        if (typeof sourceContent === "string") { | 
						|
          result.sourcesContent[index] = sourceContent; | 
						|
        } else { | 
						|
          var readUrl = fullUrl; | 
						|
 | 
						|
          try { | 
						|
            result.sourcesContent[index] = String(read(readUrl)); | 
						|
          } catch (error) { | 
						|
            result.sourcesContent[index] = error; | 
						|
          } | 
						|
        } | 
						|
      } | 
						|
    }); | 
						|
    return result; | 
						|
  } | 
						|
 | 
						|
  var endingSlash = /\/?$/; | 
						|
 | 
						|
  function resolveSourcesHelper(map, mapUrl, options, fn) { | 
						|
    options = options || {}; | 
						|
    var fullUrl; | 
						|
    var sourceContent; | 
						|
    var sourceRoot; | 
						|
 | 
						|
    for (var index = 0, len = map.sources.length; index < len; index++) { | 
						|
      sourceRoot = null; | 
						|
 | 
						|
      if (typeof options.sourceRoot === "string") { | 
						|
        sourceRoot = options.sourceRoot; | 
						|
      } else if (typeof map.sourceRoot === "string" && options.sourceRoot !== false) { | 
						|
        sourceRoot = map.sourceRoot; | 
						|
      } // If the sourceRoot is the empty string, it is equivalent to not setting | 
						|
      // the property at all. | 
						|
 | 
						|
 | 
						|
      if (sourceRoot === null || sourceRoot === '') { | 
						|
        fullUrl = resolveUrl(mapUrl, map.sources[index]); | 
						|
      } else { | 
						|
        // Make sure that the sourceRoot ends with a slash, so that `/scripts/subdir` becomes | 
						|
        // `/scripts/subdir/<source>`, not `/scripts/<source>`. Pointing to a file as source root | 
						|
        // does not make sense. | 
						|
        fullUrl = resolveUrl(mapUrl, sourceRoot.replace(endingSlash, "/"), map.sources[index]); | 
						|
      } | 
						|
 | 
						|
      sourceContent = (map.sourcesContent || [])[index]; | 
						|
      fn(fullUrl, sourceContent, index); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  function resolve(code, codeUrl, read, options, callback) { | 
						|
    if (typeof options === "function") { | 
						|
      callback = options; | 
						|
      options = {}; | 
						|
    } | 
						|
 | 
						|
    if (code === null) { | 
						|
      var mapUrl = codeUrl; | 
						|
      var data = { | 
						|
        sourceMappingURL: null, | 
						|
        url: mapUrl, | 
						|
        sourcesRelativeTo: mapUrl, | 
						|
        map: null | 
						|
      }; | 
						|
      var readUrl = mapUrl; | 
						|
      read(readUrl, function (error, result) { | 
						|
        if (error) { | 
						|
          error.sourceMapData = data; | 
						|
          return callback(error); | 
						|
        } | 
						|
 | 
						|
        data.map = String(result); | 
						|
 | 
						|
        try { | 
						|
          data.map = parseMapToJSON(data.map, data); | 
						|
        } catch (error) { | 
						|
          return callback(error); | 
						|
        } | 
						|
 | 
						|
        _resolveSources(data); | 
						|
      }); | 
						|
    } else { | 
						|
      resolveSourceMap(code, codeUrl, read, function (error, mapData) { | 
						|
        if (error) { | 
						|
          return callback(error); | 
						|
        } | 
						|
 | 
						|
        if (!mapData) { | 
						|
          return callback(null, null); | 
						|
        } | 
						|
 | 
						|
        _resolveSources(mapData); | 
						|
      }); | 
						|
    } | 
						|
 | 
						|
    function _resolveSources(mapData) { | 
						|
      resolveSources(mapData.map, mapData.sourcesRelativeTo, read, options, function (error, result) { | 
						|
        if (error) { | 
						|
          return callback(error); | 
						|
        } | 
						|
 | 
						|
        mapData.sourcesResolved = result.sourcesResolved; | 
						|
        mapData.sourcesContent = result.sourcesContent; | 
						|
        callback(null, mapData); | 
						|
      }); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  function resolveSync(code, codeUrl, read, options) { | 
						|
    var mapData; | 
						|
 | 
						|
    if (code === null) { | 
						|
      var mapUrl = codeUrl; | 
						|
      mapData = { | 
						|
        sourceMappingURL: null, | 
						|
        url: mapUrl, | 
						|
        sourcesRelativeTo: mapUrl, | 
						|
        map: null | 
						|
      }; | 
						|
      mapData.map = readSync(read, mapUrl, mapData); | 
						|
      mapData.map = parseMapToJSON(mapData.map, mapData); | 
						|
    } else { | 
						|
      mapData = resolveSourceMapSync(code, codeUrl, read); | 
						|
 | 
						|
      if (!mapData) { | 
						|
        return null; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    var result = resolveSourcesSync(mapData.map, mapData.sourcesRelativeTo, read, options); | 
						|
    mapData.sourcesResolved = result.sourcesResolved; | 
						|
    mapData.sourcesContent = result.sourcesContent; | 
						|
    return mapData; | 
						|
  } | 
						|
 | 
						|
  return { | 
						|
    resolveSourceMap: resolveSourceMap, | 
						|
    resolveSourceMapSync: resolveSourceMapSync, | 
						|
    resolveSources: resolveSources, | 
						|
    resolveSourcesSync: resolveSourcesSync, | 
						|
    resolve: resolve, | 
						|
    resolveSync: resolveSync, | 
						|
    parseMapToJSON: parseMapToJSON | 
						|
  }; | 
						|
}); | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../timers-browserify/main.js */ "./node_modules/timers-browserify/main.js").setImmediate)) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/source-map-url/source-map-url.js": | 
						|
/*!*******************************************************!*\ | 
						|
  !*** ./node_modules/source-map-url/source-map-url.js ***! | 
						|
  \*******************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__; | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
// Copyright 2014 Simon Lydell | 
						|
// X11 (“MIT”) Licensed. (See LICENSE.) | 
						|
void function (root, factory) { | 
						|
  if (true) { | 
						|
    !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), | 
						|
				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? | 
						|
				(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : | 
						|
				__WEBPACK_AMD_DEFINE_FACTORY__), | 
						|
				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); | 
						|
  } else {} | 
						|
}(void 0, function () { | 
						|
  var innerRegex = /[#@] sourceMappingURL=([^\s'"]*)/; | 
						|
  var regex = RegExp("(?:" + "/\\*" + "(?:\\s*\r?\n(?://)?)?" + "(?:" + innerRegex.source + ")" + "\\s*" + "\\*/" + "|" + "//(?:" + innerRegex.source + ")" + ")" + "\\s*"); | 
						|
  return { | 
						|
    regex: regex, | 
						|
    _innerRegex: innerRegex, | 
						|
    getFrom: function getFrom(code) { | 
						|
      var match = code.match(regex); | 
						|
      return match ? match[1] || match[2] || "" : null; | 
						|
    }, | 
						|
    existsIn: function existsIn(code) { | 
						|
      return regex.test(code); | 
						|
    }, | 
						|
    removeFrom: function removeFrom(code) { | 
						|
      return code.replace(regex, ""); | 
						|
    }, | 
						|
    insertBefore: function insertBefore(code, string) { | 
						|
      var match = code.match(regex); | 
						|
 | 
						|
      if (match) { | 
						|
        return code.slice(0, match.index) + string + code.slice(match.index); | 
						|
      } else { | 
						|
        return code + string; | 
						|
      } | 
						|
    } | 
						|
  }; | 
						|
}); | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/split-string/index.js": | 
						|
/*!********************************************!*\ | 
						|
  !*** ./node_modules/split-string/index.js ***! | 
						|
  \********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * split-string <https://github.com/jonschlinkert/split-string> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/split-string/node_modules/extend-shallow/index.js"); | 
						|
 | 
						|
module.exports = function (str, options, fn) { | 
						|
  if (typeof str !== 'string') { | 
						|
    throw new TypeError('expected a string'); | 
						|
  } | 
						|
 | 
						|
  if (typeof options === 'function') { | 
						|
    fn = options; | 
						|
    options = null; | 
						|
  } // allow separator to be defined as a string | 
						|
 | 
						|
 | 
						|
  if (typeof options === 'string') { | 
						|
    options = { | 
						|
      sep: options | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  var opts = extend({ | 
						|
    sep: '.' | 
						|
  }, options); | 
						|
  var quotes = opts.quotes || ['"', "'", '`']; | 
						|
  var brackets; | 
						|
 | 
						|
  if (opts.brackets === true) { | 
						|
    brackets = { | 
						|
      '<': '>', | 
						|
      '(': ')', | 
						|
      '[': ']', | 
						|
      '{': '}' | 
						|
    }; | 
						|
  } else if (opts.brackets) { | 
						|
    brackets = opts.brackets; | 
						|
  } | 
						|
 | 
						|
  var tokens = []; | 
						|
  var stack = []; | 
						|
  var arr = ['']; | 
						|
  var sep = opts.sep; | 
						|
  var len = str.length; | 
						|
  var idx = -1; | 
						|
  var closeIdx; | 
						|
 | 
						|
  function expected() { | 
						|
    if (brackets && stack.length) { | 
						|
      return brackets[stack[stack.length - 1]]; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var ch = str[idx]; | 
						|
    var next = str[idx + 1]; | 
						|
    var tok = { | 
						|
      val: ch, | 
						|
      idx: idx, | 
						|
      arr: arr, | 
						|
      str: str | 
						|
    }; | 
						|
    tokens.push(tok); | 
						|
 | 
						|
    if (ch === '\\') { | 
						|
      tok.val = keepEscaping(opts, str, idx) === true ? ch + next : next; | 
						|
      tok.escaped = true; | 
						|
 | 
						|
      if (typeof fn === 'function') { | 
						|
        fn(tok); | 
						|
      } | 
						|
 | 
						|
      arr[arr.length - 1] += tok.val; | 
						|
      idx++; | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (brackets && brackets[ch]) { | 
						|
      stack.push(ch); | 
						|
      var e = expected(); | 
						|
      var i = idx + 1; | 
						|
 | 
						|
      if (str.indexOf(e, i + 1) !== -1) { | 
						|
        while (stack.length && i < len) { | 
						|
          var s = str[++i]; | 
						|
 | 
						|
          if (s === '\\') { | 
						|
            s++; | 
						|
            continue; | 
						|
          } | 
						|
 | 
						|
          if (quotes.indexOf(s) !== -1) { | 
						|
            i = getClosingQuote(str, s, i + 1); | 
						|
            continue; | 
						|
          } | 
						|
 | 
						|
          e = expected(); | 
						|
 | 
						|
          if (stack.length && str.indexOf(e, i + 1) === -1) { | 
						|
            break; | 
						|
          } | 
						|
 | 
						|
          if (brackets[s]) { | 
						|
            stack.push(s); | 
						|
            continue; | 
						|
          } | 
						|
 | 
						|
          if (e === s) { | 
						|
            stack.pop(); | 
						|
          } | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      closeIdx = i; | 
						|
 | 
						|
      if (closeIdx === -1) { | 
						|
        arr[arr.length - 1] += ch; | 
						|
        continue; | 
						|
      } | 
						|
 | 
						|
      ch = str.slice(idx, closeIdx + 1); | 
						|
      tok.val = ch; | 
						|
      tok.idx = idx = closeIdx; | 
						|
    } | 
						|
 | 
						|
    if (quotes.indexOf(ch) !== -1) { | 
						|
      closeIdx = getClosingQuote(str, ch, idx + 1); | 
						|
 | 
						|
      if (closeIdx === -1) { | 
						|
        arr[arr.length - 1] += ch; | 
						|
        continue; | 
						|
      } | 
						|
 | 
						|
      if (keepQuotes(ch, opts) === true) { | 
						|
        ch = str.slice(idx, closeIdx + 1); | 
						|
      } else { | 
						|
        ch = str.slice(idx + 1, closeIdx); | 
						|
      } | 
						|
 | 
						|
      tok.val = ch; | 
						|
      tok.idx = idx = closeIdx; | 
						|
    } | 
						|
 | 
						|
    if (typeof fn === 'function') { | 
						|
      fn(tok, tokens); | 
						|
      ch = tok.val; | 
						|
      idx = tok.idx; | 
						|
    } | 
						|
 | 
						|
    if (tok.val === sep && tok.split !== false) { | 
						|
      arr.push(''); | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    arr[arr.length - 1] += tok.val; | 
						|
  } | 
						|
 | 
						|
  return arr; | 
						|
}; | 
						|
 | 
						|
function getClosingQuote(str, ch, i, brackets) { | 
						|
  var idx = str.indexOf(ch, i); | 
						|
 | 
						|
  if (str.charAt(idx - 1) === '\\') { | 
						|
    return getClosingQuote(str, ch, idx + 1); | 
						|
  } | 
						|
 | 
						|
  return idx; | 
						|
} | 
						|
 | 
						|
function keepQuotes(ch, opts) { | 
						|
  if (opts.keepDoubleQuotes === true && ch === '"') return true; | 
						|
  if (opts.keepSingleQuotes === true && ch === "'") return true; | 
						|
  return opts.keepQuotes; | 
						|
} | 
						|
 | 
						|
function keepEscaping(opts, str, idx) { | 
						|
  if (typeof opts.keepEscaping === 'function') { | 
						|
    return opts.keepEscaping(str, idx); | 
						|
  } | 
						|
 | 
						|
  return opts.keepEscaping === true || str[idx + 1] === '\\'; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/split-string/node_modules/extend-shallow/index.js": | 
						|
/*!************************************************************************!*\ | 
						|
  !*** ./node_modules/split-string/node_modules/extend-shallow/index.js ***! | 
						|
  \************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var isExtendable = __webpack_require__(/*! is-extendable */ "./node_modules/split-string/node_modules/is-extendable/index.js"); | 
						|
 | 
						|
var assignSymbols = __webpack_require__(/*! assign-symbols */ "./node_modules/assign-symbols/index.js"); | 
						|
 | 
						|
module.exports = Object.assign || function (obj | 
						|
/*, objects*/ | 
						|
) { | 
						|
  if (obj === null || typeof obj === 'undefined') { | 
						|
    throw new TypeError('Cannot convert undefined or null to object'); | 
						|
  } | 
						|
 | 
						|
  if (!isObject(obj)) { | 
						|
    obj = {}; | 
						|
  } | 
						|
 | 
						|
  for (var i = 1; i < arguments.length; i++) { | 
						|
    var val = arguments[i]; | 
						|
 | 
						|
    if (isString(val)) { | 
						|
      val = toObject(val); | 
						|
    } | 
						|
 | 
						|
    if (isObject(val)) { | 
						|
      assign(obj, val); | 
						|
      assignSymbols(obj, val); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
function assign(a, b) { | 
						|
  for (var key in b) { | 
						|
    if (hasOwn(b, key)) { | 
						|
      a[key] = b[key]; | 
						|
    } | 
						|
  } | 
						|
} | 
						|
 | 
						|
function isString(val) { | 
						|
  return val && typeof val === 'string'; | 
						|
} | 
						|
 | 
						|
function toObject(str) { | 
						|
  var obj = {}; | 
						|
 | 
						|
  for (var i in str) { | 
						|
    obj[i] = str[i]; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
} | 
						|
 | 
						|
function isObject(val) { | 
						|
  return val && _typeof(val) === 'object' || isExtendable(val); | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given `key` is an own property of `obj`. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function hasOwn(obj, key) { | 
						|
  return Object.prototype.hasOwnProperty.call(obj, key); | 
						|
} | 
						|
 | 
						|
function isEnum(obj, key) { | 
						|
  return Object.prototype.propertyIsEnumerable.call(obj, key); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/split-string/node_modules/is-extendable/index.js": | 
						|
/*!***********************************************************************!*\ | 
						|
  !*** ./node_modules/split-string/node_modules/is-extendable/index.js ***! | 
						|
  \***********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-extendable <https://github.com/jonschlinkert/is-extendable> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isPlainObject = __webpack_require__(/*! is-plain-object */ "./node_modules/is-plain-object/index.js"); | 
						|
 | 
						|
module.exports = function isExtendable(val) { | 
						|
  return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/stack-utils/index.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/stack-utils/index.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(process) { | 
						|
 | 
						|
module.exports = StackUtils; | 
						|
 | 
						|
function StackUtils(opts) { | 
						|
  if (!(this instanceof StackUtils)) { | 
						|
    throw new Error('StackUtils constructor must be called with new'); | 
						|
  } | 
						|
 | 
						|
  opts = opts || {}; | 
						|
  this._cwd = (opts.cwd || process.cwd()).replace(/\\/g, '/'); | 
						|
  this._internals = opts.internals || []; | 
						|
  this._wrapCallSite = opts.wrapCallSite || false; | 
						|
} | 
						|
 | 
						|
module.exports.nodeInternals = nodeInternals; | 
						|
 | 
						|
function nodeInternals() { | 
						|
  if (!module.exports.natives) { | 
						|
    module.exports.natives = Object.keys(process.binding('natives')); | 
						|
    module.exports.natives.push('bootstrap_node', 'node', 'internal/bootstrap/node'); | 
						|
  } | 
						|
 | 
						|
  return module.exports.natives.map(function (n) { | 
						|
    return new RegExp('\\(' + n + '\\.js:\\d+:\\d+\\)$'); | 
						|
  }).concat([/\s*at (bootstrap_)?node\.js:\d+:\d+?$/, /\(internal\/[^:]+:\d+:\d+\)$/, /\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/]); | 
						|
} | 
						|
 | 
						|
StackUtils.prototype.clean = function (stack) { | 
						|
  if (!Array.isArray(stack)) { | 
						|
    stack = stack.split('\n'); | 
						|
  } | 
						|
 | 
						|
  if (!/^\s*at /.test(stack[0]) && /^\s*at /.test(stack[1])) { | 
						|
    stack = stack.slice(1); | 
						|
  } | 
						|
 | 
						|
  var outdent = false; | 
						|
  var lastNonAtLine = null; | 
						|
  var result = []; | 
						|
  stack.forEach(function (st) { | 
						|
    st = st.replace(/\\/g, '/'); | 
						|
 | 
						|
    var isInternal = this._internals.some(function (internal) { | 
						|
      return internal.test(st); | 
						|
    }); | 
						|
 | 
						|
    if (isInternal) { | 
						|
      return null; | 
						|
    } | 
						|
 | 
						|
    var isAtLine = /^\s*at /.test(st); | 
						|
 | 
						|
    if (outdent) { | 
						|
      st = st.replace(/\s+$/, '').replace(/^(\s+)at /, '$1'); | 
						|
    } else { | 
						|
      st = st.trim(); | 
						|
 | 
						|
      if (isAtLine) { | 
						|
        st = st.substring(3); | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    st = st.replace(this._cwd + '/', ''); | 
						|
 | 
						|
    if (st) { | 
						|
      if (isAtLine) { | 
						|
        if (lastNonAtLine) { | 
						|
          result.push(lastNonAtLine); | 
						|
          lastNonAtLine = null; | 
						|
        } | 
						|
 | 
						|
        result.push(st); | 
						|
      } else { | 
						|
        outdent = true; | 
						|
        lastNonAtLine = st; | 
						|
      } | 
						|
    } | 
						|
  }, this); | 
						|
  stack = result.join('\n').trim(); | 
						|
 | 
						|
  if (stack) { | 
						|
    return stack + '\n'; | 
						|
  } | 
						|
 | 
						|
  return ''; | 
						|
}; | 
						|
 | 
						|
StackUtils.prototype.captureString = function (limit, fn) { | 
						|
  if (typeof limit === 'function') { | 
						|
    fn = limit; | 
						|
    limit = Infinity; | 
						|
  } | 
						|
 | 
						|
  if (!fn) { | 
						|
    fn = this.captureString; | 
						|
  } | 
						|
 | 
						|
  var limitBefore = Error.stackTraceLimit; | 
						|
 | 
						|
  if (limit) { | 
						|
    Error.stackTraceLimit = limit; | 
						|
  } | 
						|
 | 
						|
  var obj = {}; | 
						|
  Error.captureStackTrace(obj, fn); | 
						|
  var stack = obj.stack; | 
						|
  Error.stackTraceLimit = limitBefore; | 
						|
  return this.clean(stack); | 
						|
}; | 
						|
 | 
						|
StackUtils.prototype.capture = function (limit, fn) { | 
						|
  if (typeof limit === 'function') { | 
						|
    fn = limit; | 
						|
    limit = Infinity; | 
						|
  } | 
						|
 | 
						|
  if (!fn) { | 
						|
    fn = this.capture; | 
						|
  } | 
						|
 | 
						|
  var prepBefore = Error.prepareStackTrace; | 
						|
  var limitBefore = Error.stackTraceLimit; | 
						|
  var wrapCallSite = this._wrapCallSite; | 
						|
 | 
						|
  Error.prepareStackTrace = function (obj, site) { | 
						|
    if (wrapCallSite) { | 
						|
      return site.map(wrapCallSite); | 
						|
    } | 
						|
 | 
						|
    return site; | 
						|
  }; | 
						|
 | 
						|
  if (limit) { | 
						|
    Error.stackTraceLimit = limit; | 
						|
  } | 
						|
 | 
						|
  var obj = {}; | 
						|
  Error.captureStackTrace(obj, fn); | 
						|
  var stack = obj.stack; | 
						|
  Error.prepareStackTrace = prepBefore; | 
						|
  Error.stackTraceLimit = limitBefore; | 
						|
  return stack; | 
						|
}; | 
						|
 | 
						|
StackUtils.prototype.at = function at(fn) { | 
						|
  if (!fn) { | 
						|
    fn = at; | 
						|
  } | 
						|
 | 
						|
  var site = this.capture(1, fn)[0]; | 
						|
 | 
						|
  if (!site) { | 
						|
    return {}; | 
						|
  } | 
						|
 | 
						|
  var res = { | 
						|
    line: site.getLineNumber(), | 
						|
    column: site.getColumnNumber() | 
						|
  }; | 
						|
 | 
						|
  this._setFile(res, site.getFileName()); | 
						|
 | 
						|
  if (site.isConstructor()) { | 
						|
    res.constructor = true; | 
						|
  } | 
						|
 | 
						|
  if (site.isEval()) { | 
						|
    res.evalOrigin = site.getEvalOrigin(); | 
						|
  } // Node v10 stopped with the isNative() on callsites, apparently | 
						|
 | 
						|
  /* istanbul ignore next */ | 
						|
 | 
						|
 | 
						|
  if (site.isNative()) { | 
						|
    res.native = true; | 
						|
  } | 
						|
 | 
						|
  var typename = null; | 
						|
 | 
						|
  try { | 
						|
    typename = site.getTypeName(); | 
						|
  } catch (er) {} | 
						|
 | 
						|
  if (typename && typename !== 'Object' && typename !== '[object Object]') { | 
						|
    res.type = typename; | 
						|
  } | 
						|
 | 
						|
  var fname = site.getFunctionName(); | 
						|
 | 
						|
  if (fname) { | 
						|
    res.function = fname; | 
						|
  } | 
						|
 | 
						|
  var meth = site.getMethodName(); | 
						|
 | 
						|
  if (meth && fname !== meth) { | 
						|
    res.method = meth; | 
						|
  } | 
						|
 | 
						|
  return res; | 
						|
}; | 
						|
 | 
						|
StackUtils.prototype._setFile = function (result, filename) { | 
						|
  if (filename) { | 
						|
    filename = filename.replace(/\\/g, '/'); | 
						|
 | 
						|
    if (filename.indexOf(this._cwd + '/') === 0) { | 
						|
      filename = filename.substr(this._cwd.length + 1); | 
						|
    } | 
						|
 | 
						|
    result.file = filename; | 
						|
  } | 
						|
}; | 
						|
 | 
						|
var re = new RegExp('^' + // Sometimes we strip out the '    at' because it's noisy | 
						|
'(?:\\s*at )?' + // $1 = ctor if 'new' | 
						|
'(?:(new) )?' + // $2 = function name (can be literally anything) | 
						|
// May contain method at the end as [as xyz] | 
						|
'(?:(.*?) \\()?' + // (eval at <anonymous> (file.js:1:1), | 
						|
// $3 = eval origin | 
						|
// $4:$5:$6 are eval file/line/col, but not normally reported | 
						|
'(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?' + // file:line:col | 
						|
// $7:$8:$9 | 
						|
// $10 = 'native' if native | 
						|
'(?:(.+?):(\\d+):(\\d+)|(native))' + // maybe close the paren, then end | 
						|
// if $11 is ), then we only allow balanced parens in the filename | 
						|
// any imbalance is placed on the fname.  This is a heuristic, and | 
						|
// bound to be incorrect in some edge cases.  The bet is that | 
						|
// having weird characters in method names is more common than | 
						|
// having weird characters in filenames, which seems reasonable. | 
						|
'(\\)?)$'); | 
						|
var methodRe = /^(.*?) \[as (.*?)\]$/; | 
						|
 | 
						|
StackUtils.prototype.parseLine = function parseLine(line) { | 
						|
  var match = line && line.match(re); | 
						|
 | 
						|
  if (!match) { | 
						|
    return null; | 
						|
  } | 
						|
 | 
						|
  var ctor = match[1] === 'new'; | 
						|
  var fname = match[2]; | 
						|
  var evalOrigin = match[3]; | 
						|
  var evalFile = match[4]; | 
						|
  var evalLine = Number(match[5]); | 
						|
  var evalCol = Number(match[6]); | 
						|
  var file = match[7]; | 
						|
  var lnum = match[8]; | 
						|
  var col = match[9]; | 
						|
  var native = match[10] === 'native'; | 
						|
  var closeParen = match[11] === ')'; | 
						|
  var res = {}; | 
						|
 | 
						|
  if (lnum) { | 
						|
    res.line = Number(lnum); | 
						|
  } | 
						|
 | 
						|
  if (col) { | 
						|
    res.column = Number(col); | 
						|
  } | 
						|
 | 
						|
  if (closeParen && file) { | 
						|
    // make sure parens are balanced | 
						|
    // if we have a file like "asdf) [as foo] (xyz.js", then odds are | 
						|
    // that the fname should be += " (asdf) [as foo]" and the file | 
						|
    // should be just "xyz.js" | 
						|
    // walk backwards from the end to find the last unbalanced ( | 
						|
    var closes = 0; | 
						|
 | 
						|
    for (var i = file.length - 1; i > 0; i--) { | 
						|
      if (file.charAt(i) === ')') { | 
						|
        closes++; | 
						|
      } else if (file.charAt(i) === '(' && file.charAt(i - 1) === ' ') { | 
						|
        closes--; | 
						|
 | 
						|
        if (closes === -1 && file.charAt(i - 1) === ' ') { | 
						|
          var before = file.substr(0, i - 1); | 
						|
          var after = file.substr(i + 1); | 
						|
          file = after; | 
						|
          fname += ' (' + before; | 
						|
          break; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (fname) { | 
						|
    var methodMatch = fname.match(methodRe); | 
						|
 | 
						|
    if (methodMatch) { | 
						|
      fname = methodMatch[1]; | 
						|
      var meth = methodMatch[2]; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  this._setFile(res, file); | 
						|
 | 
						|
  if (ctor) { | 
						|
    res.constructor = true; | 
						|
  } | 
						|
 | 
						|
  if (evalOrigin) { | 
						|
    res.evalOrigin = evalOrigin; | 
						|
    res.evalLine = evalLine; | 
						|
    res.evalColumn = evalCol; | 
						|
    res.evalFile = evalFile && evalFile.replace(/\\/g, '/'); | 
						|
  } | 
						|
 | 
						|
  if (native) { | 
						|
    res.native = true; | 
						|
  } | 
						|
 | 
						|
  if (fname) { | 
						|
    res.function = fname; | 
						|
  } | 
						|
 | 
						|
  if (meth && fname !== meth) { | 
						|
    res.method = meth; | 
						|
  } | 
						|
 | 
						|
  return res; | 
						|
}; | 
						|
 | 
						|
var bound = new StackUtils(); | 
						|
Object.keys(StackUtils.prototype).forEach(function (key) { | 
						|
  StackUtils[key] = bound[key].bind(bound); | 
						|
}); | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ "./node_modules/process/browser.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/static-extend/index.js": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./node_modules/static-extend/index.js ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * static-extend <https://github.com/jonschlinkert/static-extend> | 
						|
 * | 
						|
 * Copyright (c) 2016, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var copy = __webpack_require__(/*! object-copy */ "./node_modules/object-copy/index.js"); | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/define-property/index.js"); | 
						|
 | 
						|
var util = __webpack_require__(/*! util */ "./node_modules/util/util.js"); | 
						|
/** | 
						|
 * Returns a function for extending the static properties, | 
						|
 * prototype properties, and descriptors from the `Parent` | 
						|
 * constructor onto `Child` constructors. | 
						|
 * | 
						|
 * ```js | 
						|
 * var extend = require('static-extend'); | 
						|
 * Parent.extend = extend(Parent); | 
						|
 * | 
						|
 * // optionally pass a custom merge function as the second arg | 
						|
 * Parent.extend = extend(Parent, function(Child) { | 
						|
 *   Child.prototype.mixin = function(key, val) { | 
						|
 *     Child.prototype[key] = val; | 
						|
 *   }; | 
						|
 * }); | 
						|
 * | 
						|
 * // extend "child" constructors | 
						|
 * Parent.extend(Child); | 
						|
 * | 
						|
 * // optionally define prototype methods as the second arg | 
						|
 * Parent.extend(Child, { | 
						|
 *   foo: function() {}, | 
						|
 *   bar: function() {} | 
						|
 * }); | 
						|
 * ``` | 
						|
 * @param {Function} `Parent` Parent ctor | 
						|
 * @param {Function} `extendFn` Optional extend function for handling any necessary custom merging. Useful when updating methods that require a specific prototype. | 
						|
 *   @param {Function} `Child` Child ctor | 
						|
 *   @param {Object} `proto` Optionally pass additional prototype properties to inherit. | 
						|
 *   @return {Object} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function extend(Parent, extendFn) { | 
						|
  if (typeof Parent !== 'function') { | 
						|
    throw new TypeError('expected Parent to be a function.'); | 
						|
  } | 
						|
 | 
						|
  return function (Ctor, proto) { | 
						|
    if (typeof Ctor !== 'function') { | 
						|
      throw new TypeError('expected Ctor to be a function.'); | 
						|
    } | 
						|
 | 
						|
    util.inherits(Ctor, Parent); | 
						|
    copy(Ctor, Parent); // proto can be null or a plain object | 
						|
 | 
						|
    if (_typeof(proto) === 'object') { | 
						|
      var obj = Object.create(proto); | 
						|
 | 
						|
      for (var k in obj) { | 
						|
        Ctor.prototype[k] = obj[k]; | 
						|
      } | 
						|
    } // keep a reference to the parent prototype | 
						|
 | 
						|
 | 
						|
    define(Ctor.prototype, '_parent_', { | 
						|
      configurable: true, | 
						|
      set: function set() {}, | 
						|
      get: function get() { | 
						|
        return Parent.prototype; | 
						|
      } | 
						|
    }); | 
						|
 | 
						|
    if (typeof extendFn === 'function') { | 
						|
      extendFn(Ctor, Parent); | 
						|
    } | 
						|
 | 
						|
    Ctor.extend = extend(Ctor, extendFn); | 
						|
  }; | 
						|
} | 
						|
 | 
						|
; | 
						|
/** | 
						|
 * Expose `extend` | 
						|
 */ | 
						|
 | 
						|
module.exports = extend; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/timers-browserify/main.js": | 
						|
/*!************************************************!*\ | 
						|
  !*** ./node_modules/timers-browserify/main.js ***! | 
						|
  \************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(global) { | 
						|
 | 
						|
var scope = typeof global !== "undefined" && global || typeof self !== "undefined" && self || window; | 
						|
var apply = Function.prototype.apply; // DOM APIs, for completeness | 
						|
 | 
						|
exports.setTimeout = function () { | 
						|
  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout); | 
						|
}; | 
						|
 | 
						|
exports.setInterval = function () { | 
						|
  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval); | 
						|
}; | 
						|
 | 
						|
exports.clearTimeout = exports.clearInterval = function (timeout) { | 
						|
  if (timeout) { | 
						|
    timeout.close(); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
function Timeout(id, clearFn) { | 
						|
  this._id = id; | 
						|
  this._clearFn = clearFn; | 
						|
} | 
						|
 | 
						|
Timeout.prototype.unref = Timeout.prototype.ref = function () {}; | 
						|
 | 
						|
Timeout.prototype.close = function () { | 
						|
  this._clearFn.call(scope, this._id); | 
						|
}; // Does not start the time, just sets up the members needed. | 
						|
 | 
						|
 | 
						|
exports.enroll = function (item, msecs) { | 
						|
  clearTimeout(item._idleTimeoutId); | 
						|
  item._idleTimeout = msecs; | 
						|
}; | 
						|
 | 
						|
exports.unenroll = function (item) { | 
						|
  clearTimeout(item._idleTimeoutId); | 
						|
  item._idleTimeout = -1; | 
						|
}; | 
						|
 | 
						|
exports._unrefActive = exports.active = function (item) { | 
						|
  clearTimeout(item._idleTimeoutId); | 
						|
  var msecs = item._idleTimeout; | 
						|
 | 
						|
  if (msecs >= 0) { | 
						|
    item._idleTimeoutId = setTimeout(function onTimeout() { | 
						|
      if (item._onTimeout) item._onTimeout(); | 
						|
    }, msecs); | 
						|
  } | 
						|
}; // setimmediate attaches itself to the global object | 
						|
 | 
						|
 | 
						|
__webpack_require__(/*! setimmediate */ "./node_modules/setimmediate/setImmediate.js"); // On some exotic environments, it's not clear which object `setimmediate` was | 
						|
// able to install onto.  Search each possibility in the same order as the | 
						|
// `setimmediate` library. | 
						|
 | 
						|
 | 
						|
exports.setImmediate = typeof self !== "undefined" && self.setImmediate || typeof global !== "undefined" && global.setImmediate || void 0 && (void 0).setImmediate; | 
						|
exports.clearImmediate = typeof self !== "undefined" && self.clearImmediate || typeof global !== "undefined" && global.clearImmediate || void 0 && (void 0).clearImmediate; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/to-object-path/index.js": | 
						|
/*!**********************************************!*\ | 
						|
  !*** ./node_modules/to-object-path/index.js ***! | 
						|
  \**********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * to-object-path <https://github.com/jonschlinkert/to-object-path> | 
						|
 * | 
						|
 * Copyright (c) 2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var typeOf = __webpack_require__(/*! kind-of */ "./node_modules/kind-of/index.js"); | 
						|
 | 
						|
module.exports = function toPath(args) { | 
						|
  if (typeOf(args) !== 'arguments') { | 
						|
    args = arguments; | 
						|
  } | 
						|
 | 
						|
  return filter(args).join('.'); | 
						|
}; | 
						|
 | 
						|
function filter(arr) { | 
						|
  var len = arr.length; | 
						|
  var idx = -1; | 
						|
  var res = []; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var ele = arr[idx]; | 
						|
 | 
						|
    if (typeOf(ele) === 'arguments' || Array.isArray(ele)) { | 
						|
      res.push.apply(res, filter(ele)); | 
						|
    } else if (typeof ele === 'string') { | 
						|
      res.push(ele); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return res; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/to-regex-range/index.js": | 
						|
/*!**********************************************!*\ | 
						|
  !*** ./node_modules/to-regex-range/index.js ***! | 
						|
  \**********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * to-regex-range <https://github.com/jonschlinkert/to-regex-range> | 
						|
 * | 
						|
 * Copyright (c) 2015, 2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var repeat = __webpack_require__(/*! repeat-string */ "./node_modules/repeat-string/index.js"); | 
						|
 | 
						|
var isNumber = __webpack_require__(/*! is-number */ "./node_modules/is-number/index.js"); | 
						|
 | 
						|
var cache = {}; | 
						|
 | 
						|
function toRegexRange(min, max, options) { | 
						|
  if (isNumber(min) === false) { | 
						|
    throw new RangeError('toRegexRange: first argument is invalid.'); | 
						|
  } | 
						|
 | 
						|
  if (typeof max === 'undefined' || min === max) { | 
						|
    return String(min); | 
						|
  } | 
						|
 | 
						|
  if (isNumber(max) === false) { | 
						|
    throw new RangeError('toRegexRange: second argument is invalid.'); | 
						|
  } | 
						|
 | 
						|
  options = options || {}; | 
						|
  var relax = String(options.relaxZeros); | 
						|
  var shorthand = String(options.shorthand); | 
						|
  var capture = String(options.capture); | 
						|
  var key = min + ':' + max + '=' + relax + shorthand + capture; | 
						|
 | 
						|
  if (cache.hasOwnProperty(key)) { | 
						|
    return cache[key].result; | 
						|
  } | 
						|
 | 
						|
  var a = Math.min(min, max); | 
						|
  var b = Math.max(min, max); | 
						|
 | 
						|
  if (Math.abs(a - b) === 1) { | 
						|
    var result = min + '|' + max; | 
						|
 | 
						|
    if (options.capture) { | 
						|
      return '(' + result + ')'; | 
						|
    } | 
						|
 | 
						|
    return result; | 
						|
  } | 
						|
 | 
						|
  var isPadded = padding(min) || padding(max); | 
						|
  var positives = []; | 
						|
  var negatives = []; | 
						|
  var tok = { | 
						|
    min: min, | 
						|
    max: max, | 
						|
    a: a, | 
						|
    b: b | 
						|
  }; | 
						|
 | 
						|
  if (isPadded) { | 
						|
    tok.isPadded = isPadded; | 
						|
    tok.maxLen = String(tok.max).length; | 
						|
  } | 
						|
 | 
						|
  if (a < 0) { | 
						|
    var newMin = b < 0 ? Math.abs(b) : 1; | 
						|
    var newMax = Math.abs(a); | 
						|
    negatives = splitToPatterns(newMin, newMax, tok, options); | 
						|
    a = tok.a = 0; | 
						|
  } | 
						|
 | 
						|
  if (b >= 0) { | 
						|
    positives = splitToPatterns(a, b, tok, options); | 
						|
  } | 
						|
 | 
						|
  tok.negatives = negatives; | 
						|
  tok.positives = positives; | 
						|
  tok.result = siftPatterns(negatives, positives, options); | 
						|
 | 
						|
  if (options.capture && positives.length + negatives.length > 1) { | 
						|
    tok.result = '(' + tok.result + ')'; | 
						|
  } | 
						|
 | 
						|
  cache[key] = tok; | 
						|
  return tok.result; | 
						|
} | 
						|
 | 
						|
function siftPatterns(neg, pos, options) { | 
						|
  var onlyNegative = filterPatterns(neg, pos, '-', false, options) || []; | 
						|
  var onlyPositive = filterPatterns(pos, neg, '', false, options) || []; | 
						|
  var intersected = filterPatterns(neg, pos, '-?', true, options) || []; | 
						|
  var subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); | 
						|
  return subpatterns.join('|'); | 
						|
} | 
						|
 | 
						|
function splitToRanges(min, max) { | 
						|
  min = Number(min); | 
						|
  max = Number(max); | 
						|
  var nines = 1; | 
						|
  var stops = [max]; | 
						|
  var stop = +countNines(min, nines); | 
						|
 | 
						|
  while (min <= stop && stop <= max) { | 
						|
    stops = push(stops, stop); | 
						|
    nines += 1; | 
						|
    stop = +countNines(min, nines); | 
						|
  } | 
						|
 | 
						|
  var zeros = 1; | 
						|
  stop = countZeros(max + 1, zeros) - 1; | 
						|
 | 
						|
  while (min < stop && stop <= max) { | 
						|
    stops = push(stops, stop); | 
						|
    zeros += 1; | 
						|
    stop = countZeros(max + 1, zeros) - 1; | 
						|
  } | 
						|
 | 
						|
  stops.sort(compare); | 
						|
  return stops; | 
						|
} | 
						|
/** | 
						|
 * Convert a range to a regex pattern | 
						|
 * @param {Number} `start` | 
						|
 * @param {Number} `stop` | 
						|
 * @return {String} | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function rangeToPattern(start, stop, options) { | 
						|
  if (start === stop) { | 
						|
    return { | 
						|
      pattern: String(start), | 
						|
      digits: [] | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  var zipped = zip(String(start), String(stop)); | 
						|
  var len = zipped.length, | 
						|
      i = -1; | 
						|
  var pattern = ''; | 
						|
  var digits = 0; | 
						|
 | 
						|
  while (++i < len) { | 
						|
    var numbers = zipped[i]; | 
						|
    var startDigit = numbers[0]; | 
						|
    var stopDigit = numbers[1]; | 
						|
 | 
						|
    if (startDigit === stopDigit) { | 
						|
      pattern += startDigit; | 
						|
    } else if (startDigit !== '0' || stopDigit !== '9') { | 
						|
      pattern += toCharacterClass(startDigit, stopDigit); | 
						|
    } else { | 
						|
      digits += 1; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (digits) { | 
						|
    pattern += options.shorthand ? '\\d' : '[0-9]'; | 
						|
  } | 
						|
 | 
						|
  return { | 
						|
    pattern: pattern, | 
						|
    digits: [digits] | 
						|
  }; | 
						|
} | 
						|
 | 
						|
function splitToPatterns(min, max, tok, options) { | 
						|
  var ranges = splitToRanges(min, max); | 
						|
  var len = ranges.length; | 
						|
  var idx = -1; | 
						|
  var tokens = []; | 
						|
  var start = min; | 
						|
  var prev; | 
						|
 | 
						|
  while (++idx < len) { | 
						|
    var range = ranges[idx]; | 
						|
    var obj = rangeToPattern(start, range, options); | 
						|
    var zeros = ''; | 
						|
 | 
						|
    if (!tok.isPadded && prev && prev.pattern === obj.pattern) { | 
						|
      if (prev.digits.length > 1) { | 
						|
        prev.digits.pop(); | 
						|
      } | 
						|
 | 
						|
      prev.digits.push(obj.digits[0]); | 
						|
      prev.string = prev.pattern + toQuantifier(prev.digits); | 
						|
      start = range + 1; | 
						|
      continue; | 
						|
    } | 
						|
 | 
						|
    if (tok.isPadded) { | 
						|
      zeros = padZeros(range, tok); | 
						|
    } | 
						|
 | 
						|
    obj.string = zeros + obj.pattern + toQuantifier(obj.digits); | 
						|
    tokens.push(obj); | 
						|
    start = range + 1; | 
						|
    prev = obj; | 
						|
  } | 
						|
 | 
						|
  return tokens; | 
						|
} | 
						|
 | 
						|
function filterPatterns(arr, comparison, prefix, intersection, options) { | 
						|
  var res = []; | 
						|
 | 
						|
  for (var i = 0; i < arr.length; i++) { | 
						|
    var tok = arr[i]; | 
						|
    var ele = tok.string; | 
						|
 | 
						|
    if (options.relaxZeros !== false) { | 
						|
      if (prefix === '-' && ele.charAt(0) === '0') { | 
						|
        if (ele.charAt(1) === '{') { | 
						|
          ele = '0*' + ele.replace(/^0\{\d+\}/, ''); | 
						|
        } else { | 
						|
          ele = '0*' + ele.slice(1); | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    if (!intersection && !contains(comparison, 'string', ele)) { | 
						|
      res.push(prefix + ele); | 
						|
    } | 
						|
 | 
						|
    if (intersection && contains(comparison, 'string', ele)) { | 
						|
      res.push(prefix + ele); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return res; | 
						|
} | 
						|
/** | 
						|
 * Zip strings (`for in` can be used on string characters) | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function zip(a, b) { | 
						|
  var arr = []; | 
						|
 | 
						|
  for (var ch in a) { | 
						|
    arr.push([a[ch], b[ch]]); | 
						|
  } | 
						|
 | 
						|
  return arr; | 
						|
} | 
						|
 | 
						|
function compare(a, b) { | 
						|
  return a > b ? 1 : b > a ? -1 : 0; | 
						|
} | 
						|
 | 
						|
function push(arr, ele) { | 
						|
  if (arr.indexOf(ele) === -1) arr.push(ele); | 
						|
  return arr; | 
						|
} | 
						|
 | 
						|
function contains(arr, key, val) { | 
						|
  for (var i = 0; i < arr.length; i++) { | 
						|
    if (arr[i][key] === val) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
} | 
						|
 | 
						|
function countNines(min, len) { | 
						|
  return String(min).slice(0, -len) + repeat('9', len); | 
						|
} | 
						|
 | 
						|
function countZeros(integer, zeros) { | 
						|
  return integer - integer % Math.pow(10, zeros); | 
						|
} | 
						|
 | 
						|
function toQuantifier(digits) { | 
						|
  var start = digits[0]; | 
						|
  var stop = digits[1] ? ',' + digits[1] : ''; | 
						|
 | 
						|
  if (!stop && (!start || start === 1)) { | 
						|
    return ''; | 
						|
  } | 
						|
 | 
						|
  return '{' + start + stop + '}'; | 
						|
} | 
						|
 | 
						|
function toCharacterClass(a, b) { | 
						|
  return '[' + a + (b - a === 1 ? '' : '-') + b + ']'; | 
						|
} | 
						|
 | 
						|
function padding(str) { | 
						|
  return /^-?(0+)\d/.exec(str); | 
						|
} | 
						|
 | 
						|
function padZeros(val, tok) { | 
						|
  if (tok.isPadded) { | 
						|
    var diff = Math.abs(tok.maxLen - String(val).length); | 
						|
 | 
						|
    switch (diff) { | 
						|
      case 0: | 
						|
        return ''; | 
						|
 | 
						|
      case 1: | 
						|
        return '0'; | 
						|
 | 
						|
      default: | 
						|
        { | 
						|
          return '0{' + diff + '}'; | 
						|
        } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return val; | 
						|
} | 
						|
/** | 
						|
 * Expose `toRegexRange` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = toRegexRange; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/to-regex/index.js": | 
						|
/*!****************************************!*\ | 
						|
  !*** ./node_modules/to-regex/index.js ***! | 
						|
  \****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var safe = __webpack_require__(/*! safe-regex */ "./node_modules/safe-regex/index.js"); | 
						|
 | 
						|
var define = __webpack_require__(/*! define-property */ "./node_modules/to-regex/node_modules/define-property/index.js"); | 
						|
 | 
						|
var extend = __webpack_require__(/*! extend-shallow */ "./node_modules/to-regex/node_modules/extend-shallow/index.js"); | 
						|
 | 
						|
var not = __webpack_require__(/*! regex-not */ "./node_modules/regex-not/index.js"); | 
						|
 | 
						|
var MAX_LENGTH = 1024 * 64; | 
						|
/** | 
						|
 * Session cache | 
						|
 */ | 
						|
 | 
						|
var cache = {}; | 
						|
/** | 
						|
 * Create a regular expression from the given `pattern` string. | 
						|
 * | 
						|
 * @param {String|RegExp} `pattern` Pattern can be a string or regular expression. | 
						|
 * @param {Object} `options` | 
						|
 * @return {RegExp} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
module.exports = function (patterns, options) { | 
						|
  if (!Array.isArray(patterns)) { | 
						|
    return makeRe(patterns, options); | 
						|
  } | 
						|
 | 
						|
  return makeRe(patterns.join('|'), options); | 
						|
}; | 
						|
/** | 
						|
 * Create a regular expression from the given `pattern` string. | 
						|
 * | 
						|
 * @param {String|RegExp} `pattern` Pattern can be a string or regular expression. | 
						|
 * @param {Object} `options` | 
						|
 * @return {RegExp} | 
						|
 * @api public | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function makeRe(pattern, options) { | 
						|
  if (pattern instanceof RegExp) { | 
						|
    return pattern; | 
						|
  } | 
						|
 | 
						|
  if (typeof pattern !== 'string') { | 
						|
    throw new TypeError('expected a string'); | 
						|
  } | 
						|
 | 
						|
  if (pattern.length > MAX_LENGTH) { | 
						|
    throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters'); | 
						|
  } | 
						|
 | 
						|
  var key = pattern; // do this before shallow cloning options, it's a lot faster | 
						|
 | 
						|
  if (!options || options && options.cache !== false) { | 
						|
    key = createKey(pattern, options); | 
						|
 | 
						|
    if (cache.hasOwnProperty(key)) { | 
						|
      return cache[key]; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var opts = extend({}, options); | 
						|
 | 
						|
  if (opts.contains === true) { | 
						|
    if (opts.negate === true) { | 
						|
      opts.strictNegate = false; | 
						|
    } else { | 
						|
      opts.strict = false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (opts.strict === false) { | 
						|
    opts.strictOpen = false; | 
						|
    opts.strictClose = false; | 
						|
  } | 
						|
 | 
						|
  var open = opts.strictOpen !== false ? '^' : ''; | 
						|
  var close = opts.strictClose !== false ? '$' : ''; | 
						|
  var flags = opts.flags || ''; | 
						|
  var regex; | 
						|
 | 
						|
  if (opts.nocase === true && !/i/.test(flags)) { | 
						|
    flags += 'i'; | 
						|
  } | 
						|
 | 
						|
  try { | 
						|
    if (opts.negate || typeof opts.strictNegate === 'boolean') { | 
						|
      pattern = not.create(pattern, opts); | 
						|
    } | 
						|
 | 
						|
    var str = open + '(?:' + pattern + ')' + close; | 
						|
    regex = new RegExp(str, flags); | 
						|
 | 
						|
    if (opts.safe === true && safe(regex) === false) { | 
						|
      throw new Error('potentially unsafe regular expression: ' + regex.source); | 
						|
    } | 
						|
  } catch (err) { | 
						|
    if (opts.strictErrors === true || opts.safe === true) { | 
						|
      err.key = key; | 
						|
      err.pattern = pattern; | 
						|
      err.originalOptions = options; | 
						|
      err.createdOptions = opts; | 
						|
      throw err; | 
						|
    } | 
						|
 | 
						|
    try { | 
						|
      regex = new RegExp('^' + pattern.replace(/(\W)/g, '\\$1') + '$'); | 
						|
    } catch (err) { | 
						|
      regex = /.^/; //<= match nothing | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (opts.cache !== false) { | 
						|
    memoize(regex, key, pattern, opts); | 
						|
  } | 
						|
 | 
						|
  return regex; | 
						|
} | 
						|
/** | 
						|
 * Memoize generated regex. This can result in dramatic speed improvements | 
						|
 * and simplify debugging by adding options and pattern to the regex. It can be | 
						|
 * disabled by passing setting `options.cache` to false. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function memoize(regex, key, pattern, options) { | 
						|
  define(regex, 'cached', true); | 
						|
  define(regex, 'pattern', pattern); | 
						|
  define(regex, 'options', options); | 
						|
  define(regex, 'key', key); | 
						|
  cache[key] = regex; | 
						|
} | 
						|
/** | 
						|
 * Create the key to use for memoization. The key is generated | 
						|
 * by iterating over the options and concatenating key-value pairs | 
						|
 * to the pattern string. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function createKey(pattern, options) { | 
						|
  if (!options) return pattern; | 
						|
  var key = pattern; | 
						|
 | 
						|
  for (var prop in options) { | 
						|
    if (options.hasOwnProperty(prop)) { | 
						|
      key += ';' + prop + '=' + String(options[prop]); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return key; | 
						|
} | 
						|
/** | 
						|
 * Expose `makeRe` | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports.makeRe = makeRe; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/to-regex/node_modules/define-property/index.js": | 
						|
/*!*********************************************************************!*\ | 
						|
  !*** ./node_modules/to-regex/node_modules/define-property/index.js ***! | 
						|
  \*********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * define-property <https://github.com/jonschlinkert/define-property> | 
						|
 * | 
						|
 * Copyright (c) 2015-2018, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isobject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
 | 
						|
var isDescriptor = __webpack_require__(/*! is-descriptor */ "./node_modules/is-descriptor/index.js"); | 
						|
 | 
						|
var define = typeof Reflect !== 'undefined' && Reflect.defineProperty ? Reflect.defineProperty : Object.defineProperty; | 
						|
 | 
						|
module.exports = function defineProperty(obj, key, val) { | 
						|
  if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) { | 
						|
    throw new TypeError('expected an object, function, or array'); | 
						|
  } | 
						|
 | 
						|
  if (typeof key !== 'string') { | 
						|
    throw new TypeError('expected "key" to be a string'); | 
						|
  } | 
						|
 | 
						|
  if (isDescriptor(val)) { | 
						|
    define(obj, key, val); | 
						|
    return obj; | 
						|
  } | 
						|
 | 
						|
  define(obj, key, { | 
						|
    configurable: true, | 
						|
    enumerable: false, | 
						|
    writable: true, | 
						|
    value: val | 
						|
  }); | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/to-regex/node_modules/extend-shallow/index.js": | 
						|
/*!********************************************************************!*\ | 
						|
  !*** ./node_modules/to-regex/node_modules/extend-shallow/index.js ***! | 
						|
  \********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var isExtendable = __webpack_require__(/*! is-extendable */ "./node_modules/to-regex/node_modules/is-extendable/index.js"); | 
						|
 | 
						|
var assignSymbols = __webpack_require__(/*! assign-symbols */ "./node_modules/assign-symbols/index.js"); | 
						|
 | 
						|
module.exports = Object.assign || function (obj | 
						|
/*, objects*/ | 
						|
) { | 
						|
  if (obj === null || typeof obj === 'undefined') { | 
						|
    throw new TypeError('Cannot convert undefined or null to object'); | 
						|
  } | 
						|
 | 
						|
  if (!isObject(obj)) { | 
						|
    obj = {}; | 
						|
  } | 
						|
 | 
						|
  for (var i = 1; i < arguments.length; i++) { | 
						|
    var val = arguments[i]; | 
						|
 | 
						|
    if (isString(val)) { | 
						|
      val = toObject(val); | 
						|
    } | 
						|
 | 
						|
    if (isObject(val)) { | 
						|
      assign(obj, val); | 
						|
      assignSymbols(obj, val); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
function assign(a, b) { | 
						|
  for (var key in b) { | 
						|
    if (hasOwn(b, key)) { | 
						|
      a[key] = b[key]; | 
						|
    } | 
						|
  } | 
						|
} | 
						|
 | 
						|
function isString(val) { | 
						|
  return val && typeof val === 'string'; | 
						|
} | 
						|
 | 
						|
function toObject(str) { | 
						|
  var obj = {}; | 
						|
 | 
						|
  for (var i in str) { | 
						|
    obj[i] = str[i]; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
} | 
						|
 | 
						|
function isObject(val) { | 
						|
  return val && _typeof(val) === 'object' || isExtendable(val); | 
						|
} | 
						|
/** | 
						|
 * Returns true if the given `key` is an own property of `obj`. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function hasOwn(obj, key) { | 
						|
  return Object.prototype.hasOwnProperty.call(obj, key); | 
						|
} | 
						|
 | 
						|
function isEnum(obj, key) { | 
						|
  return Object.prototype.propertyIsEnumerable.call(obj, key); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/to-regex/node_modules/is-extendable/index.js": | 
						|
/*!*******************************************************************!*\ | 
						|
  !*** ./node_modules/to-regex/node_modules/is-extendable/index.js ***! | 
						|
  \*******************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * is-extendable <https://github.com/jonschlinkert/is-extendable> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isPlainObject = __webpack_require__(/*! is-plain-object */ "./node_modules/is-plain-object/index.js"); | 
						|
 | 
						|
module.exports = function isExtendable(val) { | 
						|
  return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/union-value/index.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/union-value/index.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var isObject = __webpack_require__(/*! is-extendable */ "./node_modules/is-extendable/index.js"); | 
						|
 | 
						|
var union = __webpack_require__(/*! arr-union */ "./node_modules/arr-union/index.js"); | 
						|
 | 
						|
var get = __webpack_require__(/*! get-value */ "./node_modules/get-value/index.js"); | 
						|
 | 
						|
var set = __webpack_require__(/*! set-value */ "./node_modules/set-value/index.js"); | 
						|
 | 
						|
module.exports = function unionValue(obj, prop, value) { | 
						|
  if (!isObject(obj)) { | 
						|
    throw new TypeError('union-value expects the first argument to be an object.'); | 
						|
  } | 
						|
 | 
						|
  if (typeof prop !== 'string') { | 
						|
    throw new TypeError('union-value expects `prop` to be a string.'); | 
						|
  } | 
						|
 | 
						|
  var arr = arrayify(get(obj, prop)); | 
						|
  set(obj, prop, union(arr, arrayify(value))); | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
function arrayify(val) { | 
						|
  if (val === null || typeof val === 'undefined') { | 
						|
    return []; | 
						|
  } | 
						|
 | 
						|
  if (Array.isArray(val)) { | 
						|
    return val; | 
						|
  } | 
						|
 | 
						|
  return [val]; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/unset-value/index.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./node_modules/unset-value/index.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * unset-value <https://github.com/jonschlinkert/unset-value> | 
						|
 * | 
						|
 * Copyright (c) 2015, 2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isObject = __webpack_require__(/*! isobject */ "./node_modules/isobject/index.js"); | 
						|
 | 
						|
var has = __webpack_require__(/*! has-value */ "./node_modules/unset-value/node_modules/has-value/index.js"); | 
						|
 | 
						|
module.exports = function unset(obj, prop) { | 
						|
  if (!isObject(obj)) { | 
						|
    throw new TypeError('expected an object.'); | 
						|
  } | 
						|
 | 
						|
  if (obj.hasOwnProperty(prop)) { | 
						|
    delete obj[prop]; | 
						|
    return true; | 
						|
  } | 
						|
 | 
						|
  if (has(obj, prop)) { | 
						|
    var segs = prop.split('.'); | 
						|
    var last = segs.pop(); | 
						|
 | 
						|
    while (segs.length && segs[segs.length - 1].slice(-1) === '\\') { | 
						|
      last = segs.pop().slice(0, -1) + '.' + last; | 
						|
    } | 
						|
 | 
						|
    while (segs.length) { | 
						|
      obj = obj[prop = segs.shift()]; | 
						|
    } | 
						|
 | 
						|
    return delete obj[last]; | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/unset-value/node_modules/has-value/index.js": | 
						|
/*!******************************************************************!*\ | 
						|
  !*** ./node_modules/unset-value/node_modules/has-value/index.js ***! | 
						|
  \******************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * has-value <https://github.com/jonschlinkert/has-value> | 
						|
 * | 
						|
 * Copyright (c) 2014-2016, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var isObject = __webpack_require__(/*! isobject */ "./node_modules/unset-value/node_modules/has-value/node_modules/isobject/index.js"); | 
						|
 | 
						|
var hasValues = __webpack_require__(/*! has-values */ "./node_modules/unset-value/node_modules/has-values/index.js"); | 
						|
 | 
						|
var get = __webpack_require__(/*! get-value */ "./node_modules/get-value/index.js"); | 
						|
 | 
						|
module.exports = function (obj, prop, noZero) { | 
						|
  if (isObject(obj)) { | 
						|
    return hasValues(get(obj, prop), noZero); | 
						|
  } | 
						|
 | 
						|
  return hasValues(obj, prop); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/unset-value/node_modules/has-value/node_modules/isobject/index.js": | 
						|
/*!****************************************************************************************!*\ | 
						|
  !*** ./node_modules/unset-value/node_modules/has-value/node_modules/isobject/index.js ***! | 
						|
  \****************************************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * isobject <https://github.com/jonschlinkert/isobject> | 
						|
 * | 
						|
 * Copyright (c) 2014-2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var isArray = __webpack_require__(/*! isarray */ "./node_modules/isarray/index.js"); | 
						|
 | 
						|
module.exports = function isObject(val) { | 
						|
  return val != null && _typeof(val) === 'object' && isArray(val) === false; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/unset-value/node_modules/has-values/index.js": | 
						|
/*!*******************************************************************!*\ | 
						|
  !*** ./node_modules/unset-value/node_modules/has-values/index.js ***! | 
						|
  \*******************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * has-values <https://github.com/jonschlinkert/has-values> | 
						|
 * | 
						|
 * Copyright (c) 2014-2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
module.exports = function hasValue(o, noZero) { | 
						|
  if (o === null || o === undefined) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (typeof o === 'boolean') { | 
						|
    return true; | 
						|
  } | 
						|
 | 
						|
  if (typeof o === 'number') { | 
						|
    if (o === 0 && noZero === true) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    return true; | 
						|
  } | 
						|
 | 
						|
  if (o.length !== undefined) { | 
						|
    return o.length !== 0; | 
						|
  } | 
						|
 | 
						|
  for (var key in o) { | 
						|
    if (o.hasOwnProperty(key)) { | 
						|
      return true; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/use/index.js": | 
						|
/*!***********************************!*\ | 
						|
  !*** ./node_modules/use/index.js ***! | 
						|
  \***********************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/*! | 
						|
 * use <https://github.com/jonschlinkert/use> | 
						|
 * | 
						|
 * Copyright (c) 2015-2017, Jon Schlinkert. | 
						|
 * Released under the MIT License. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
module.exports = function base(app, options) { | 
						|
  if (!isObject(app) && typeof app !== 'function') { | 
						|
    throw new TypeError('expected an object or function'); | 
						|
  } | 
						|
 | 
						|
  var opts = isObject(options) ? options : {}; | 
						|
  var prop = typeof opts.prop === 'string' ? opts.prop : 'fns'; | 
						|
 | 
						|
  if (!Array.isArray(app[prop])) { | 
						|
    define(app, prop, []); | 
						|
  } | 
						|
  /** | 
						|
   * Define a plugin function to be passed to use. The only | 
						|
   * parameter exposed to the plugin is `app`, the object or function. | 
						|
   * passed to `use(app)`. `app` is also exposed as `this` in plugins. | 
						|
   * | 
						|
   * Additionally, **if a plugin returns a function, the function will | 
						|
   * be pushed onto the `fns` array**, allowing the plugin to be | 
						|
   * called at a later point by the `run` method. | 
						|
   * | 
						|
   * ```js | 
						|
   * var use = require('use'); | 
						|
   * | 
						|
   * // define a plugin | 
						|
   * function foo(app) { | 
						|
   *   // do stuff | 
						|
   * } | 
						|
   * | 
						|
   * var app = function(){}; | 
						|
   * use(app); | 
						|
   * | 
						|
   * // register plugins | 
						|
   * app.use(foo); | 
						|
   * app.use(bar); | 
						|
   * app.use(baz); | 
						|
   * ``` | 
						|
   * @name .use | 
						|
   * @param {Function} `fn` plugin function to call | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  define(app, 'use', use); | 
						|
  /** | 
						|
   * Run all plugins on `fns`. Any plugin that returns a function | 
						|
   * when called by `use` is pushed onto the `fns` array. | 
						|
   * | 
						|
   * ```js | 
						|
   * var config = {}; | 
						|
   * app.run(config); | 
						|
   * ``` | 
						|
   * @name .run | 
						|
   * @param {Object} `value` Object to be modified by plugins. | 
						|
   * @return {Object} Returns the object passed to `run` | 
						|
   * @api public | 
						|
   */ | 
						|
 | 
						|
  define(app, 'run', function (val) { | 
						|
    if (!isObject(val)) return; | 
						|
 | 
						|
    if (!val.use || !val.run) { | 
						|
      define(val, prop, val[prop] || []); | 
						|
      define(val, 'use', use); | 
						|
    } | 
						|
 | 
						|
    if (!val[prop] || val[prop].indexOf(base) === -1) { | 
						|
      val.use(base); | 
						|
    } | 
						|
 | 
						|
    var self = this || app; | 
						|
    var fns = self[prop]; | 
						|
    var len = fns.length; | 
						|
    var idx = -1; | 
						|
 | 
						|
    while (++idx < len) { | 
						|
      val.use(fns[idx]); | 
						|
    } | 
						|
 | 
						|
    return val; | 
						|
  }); | 
						|
  /** | 
						|
   * Call plugin `fn`. If a function is returned push it into the | 
						|
   * `fns` array to be called by the `run` method. | 
						|
   */ | 
						|
 | 
						|
  function use(type, fn, options) { | 
						|
    var offset = 1; | 
						|
 | 
						|
    if (typeof type === 'string' || Array.isArray(type)) { | 
						|
      fn = wrap(type, fn); | 
						|
      offset++; | 
						|
    } else { | 
						|
      options = fn; | 
						|
      fn = type; | 
						|
    } | 
						|
 | 
						|
    if (typeof fn !== 'function') { | 
						|
      throw new TypeError('expected a function'); | 
						|
    } | 
						|
 | 
						|
    var self = this || app; | 
						|
    var fns = self[prop]; | 
						|
    var args = [].slice.call(arguments, offset); | 
						|
    args.unshift(self); | 
						|
 | 
						|
    if (typeof opts.hook === 'function') { | 
						|
      opts.hook.apply(self, args); | 
						|
    } | 
						|
 | 
						|
    var val = fn.apply(self, args); | 
						|
 | 
						|
    if (typeof val === 'function' && fns.indexOf(val) === -1) { | 
						|
      fns.push(val); | 
						|
    } | 
						|
 | 
						|
    return self; | 
						|
  } | 
						|
  /** | 
						|
   * Wrap a named plugin function so that it's only called on objects of the | 
						|
   * given `type` | 
						|
   * | 
						|
   * @param {String} `type` | 
						|
   * @param {Function} `fn` Plugin function | 
						|
   * @return {Function} | 
						|
   */ | 
						|
 | 
						|
 | 
						|
  function wrap(type, fn) { | 
						|
    return function plugin() { | 
						|
      return this.type === type ? fn.apply(this, arguments) : plugin; | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  return app; | 
						|
}; | 
						|
 | 
						|
function isObject(val) { | 
						|
  return val && _typeof(val) === 'object' && !Array.isArray(val); | 
						|
} | 
						|
 | 
						|
function define(obj, key, val) { | 
						|
  Object.defineProperty(obj, key, { | 
						|
    configurable: true, | 
						|
    writable: true, | 
						|
    value: val | 
						|
  }); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/util/node_modules/inherits/inherits_browser.js": | 
						|
/*!*********************************************************************!*\ | 
						|
  !*** ./node_modules/util/node_modules/inherits/inherits_browser.js ***! | 
						|
  \*********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
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() {}; | 
						|
 | 
						|
    TempCtor.prototype = superCtor.prototype; | 
						|
    ctor.prototype = new TempCtor(); | 
						|
    ctor.prototype.constructor = ctor; | 
						|
  }; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/util/support/isBufferBrowser.js": | 
						|
/*!******************************************************!*\ | 
						|
  !*** ./node_modules/util/support/isBufferBrowser.js ***! | 
						|
  \******************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
module.exports = function isBuffer(arg) { | 
						|
  return arg && _typeof(arg) === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function'; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/util/util.js": | 
						|
/*!***********************************!*\ | 
						|
  !*** ./node_modules/util/util.js ***! | 
						|
  \***********************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(process) { | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
// 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 getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(obj) { | 
						|
  var keys = Object.keys(obj); | 
						|
  var descriptors = {}; | 
						|
 | 
						|
  for (var i = 0; i < keys.length; i++) { | 
						|
    descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]); | 
						|
  } | 
						|
 | 
						|
  return descriptors; | 
						|
}; | 
						|
 | 
						|
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) { | 
						|
  if (typeof process !== 'undefined' && process.noDeprecation === true) { | 
						|
    return fn; | 
						|
  } // Allow for deprecating things in the process of starting up. | 
						|
 | 
						|
 | 
						|
  if (typeof process === 'undefined') { | 
						|
    return function () { | 
						|
      return exports.deprecate(fn, msg).apply(this, arguments); | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  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 "\x1B[" + inspect.colors[style][0] + 'm' + str + "\x1B[" + 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; | 
						|
  } // Look up the keys of the object. | 
						|
 | 
						|
 | 
						|
  var keys = Object.keys(value); | 
						|
  var visibleKeys = arrayToHash(keys); | 
						|
 | 
						|
  if (ctx.showHidden) { | 
						|
    keys = Object.getOwnPropertyNames(value); | 
						|
  } // 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); | 
						|
  } // 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); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var base = '', | 
						|
      array = false, | 
						|
      braces = ['{', '}']; // Make Array say that they are Array | 
						|
 | 
						|
  if (isArray(value)) { | 
						|
    array = true; | 
						|
    braces = ['[', ']']; | 
						|
  } // Make functions say that they are functions | 
						|
 | 
						|
 | 
						|
  if (isFunction(value)) { | 
						|
    var n = value.name ? ': ' + value.name : ''; | 
						|
    base = ' [Function' + n + ']'; | 
						|
  } // Make RegExps say that they are RegExps | 
						|
 | 
						|
 | 
						|
  if (isRegExp(value)) { | 
						|
    base = ' ' + RegExp.prototype.toString.call(value); | 
						|
  } // 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'); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  ctx.seen.push(value); | 
						|
  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); | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  ctx.seen.pop(); | 
						|
  return reduceToSingleString(output, base, braces); | 
						|
} | 
						|
 | 
						|
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 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; | 
						|
} | 
						|
 | 
						|
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 { | 
						|
        str = formatValue(ctx, desc.value, recurseTimes - 1); | 
						|
      } | 
						|
 | 
						|
      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 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 = __webpack_require__(/*! ./support/isBuffer */ "./node_modules/util/support/isBufferBrowser.js"); | 
						|
 | 
						|
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)); | 
						|
}; | 
						|
/** | 
						|
 * Inherit the prototype methods from one constructor into another. | 
						|
 * | 
						|
 * 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 = __webpack_require__(/*! inherits */ "./node_modules/util/node_modules/inherits/inherits_browser.js"); | 
						|
 | 
						|
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]]; | 
						|
  } | 
						|
 | 
						|
  return origin; | 
						|
}; | 
						|
 | 
						|
function hasOwnProperty(obj, prop) { | 
						|
  return Object.prototype.hasOwnProperty.call(obj, prop); | 
						|
} | 
						|
 | 
						|
var kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined; | 
						|
 | 
						|
exports.promisify = function promisify(original) { | 
						|
  if (typeof original !== 'function') throw new TypeError('The "original" argument must be of type Function'); | 
						|
 | 
						|
  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) { | 
						|
    var fn = original[kCustomPromisifiedSymbol]; | 
						|
 | 
						|
    if (typeof fn !== 'function') { | 
						|
      throw new TypeError('The "util.promisify.custom" argument must be of type Function'); | 
						|
    } | 
						|
 | 
						|
    Object.defineProperty(fn, kCustomPromisifiedSymbol, { | 
						|
      value: fn, | 
						|
      enumerable: false, | 
						|
      writable: false, | 
						|
      configurable: true | 
						|
    }); | 
						|
    return fn; | 
						|
  } | 
						|
 | 
						|
  function fn() { | 
						|
    var promiseResolve, promiseReject; | 
						|
    var promise = new Promise(function (resolve, reject) { | 
						|
      promiseResolve = resolve; | 
						|
      promiseReject = reject; | 
						|
    }); | 
						|
    var args = []; | 
						|
 | 
						|
    for (var i = 0; i < arguments.length; i++) { | 
						|
      args.push(arguments[i]); | 
						|
    } | 
						|
 | 
						|
    args.push(function (err, value) { | 
						|
      if (err) { | 
						|
        promiseReject(err); | 
						|
      } else { | 
						|
        promiseResolve(value); | 
						|
      } | 
						|
    }); | 
						|
 | 
						|
    try { | 
						|
      original.apply(this, args); | 
						|
    } catch (err) { | 
						|
      promiseReject(err); | 
						|
    } | 
						|
 | 
						|
    return promise; | 
						|
  } | 
						|
 | 
						|
  Object.setPrototypeOf(fn, Object.getPrototypeOf(original)); | 
						|
  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, { | 
						|
    value: fn, | 
						|
    enumerable: false, | 
						|
    writable: false, | 
						|
    configurable: true | 
						|
  }); | 
						|
  return Object.defineProperties(fn, getOwnPropertyDescriptors(original)); | 
						|
}; | 
						|
 | 
						|
exports.promisify.custom = kCustomPromisifiedSymbol; | 
						|
 | 
						|
function callbackifyOnRejected(reason, cb) { | 
						|
  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M). | 
						|
  // Because `null` is a special error value in callbacks which means "no error | 
						|
  // occurred", we error-wrap so the callback consumer can distinguish between | 
						|
  // "the promise rejected with null" or "the promise fulfilled with undefined". | 
						|
  if (!reason) { | 
						|
    var newReason = new Error('Promise was rejected with a falsy value'); | 
						|
    newReason.reason = reason; | 
						|
    reason = newReason; | 
						|
  } | 
						|
 | 
						|
  return cb(reason); | 
						|
} | 
						|
 | 
						|
function callbackify(original) { | 
						|
  if (typeof original !== 'function') { | 
						|
    throw new TypeError('The "original" argument must be of type Function'); | 
						|
  } // We DO NOT return the promise as it gives the user a false sense that | 
						|
  // the promise is actually somehow related to the callback's execution | 
						|
  // and that the callback throwing will reject the promise. | 
						|
 | 
						|
 | 
						|
  function callbackified() { | 
						|
    var args = []; | 
						|
 | 
						|
    for (var i = 0; i < arguments.length; i++) { | 
						|
      args.push(arguments[i]); | 
						|
    } | 
						|
 | 
						|
    var maybeCb = args.pop(); | 
						|
 | 
						|
    if (typeof maybeCb !== 'function') { | 
						|
      throw new TypeError('The last argument must be of type Function'); | 
						|
    } | 
						|
 | 
						|
    var self = this; | 
						|
 | 
						|
    var cb = function cb() { | 
						|
      return maybeCb.apply(self, arguments); | 
						|
    }; // In true node style we process the callback on `nextTick` with all the | 
						|
    // implications (stack, `uncaughtException`, `async_hooks`) | 
						|
 | 
						|
 | 
						|
    original.apply(this, args).then(function (ret) { | 
						|
      process.nextTick(cb, null, ret); | 
						|
    }, function (rej) { | 
						|
      process.nextTick(callbackifyOnRejected, rej, cb); | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original)); | 
						|
  Object.defineProperties(callbackified, getOwnPropertyDescriptors(original)); | 
						|
  return callbackified; | 
						|
} | 
						|
 | 
						|
exports.callbackify = callbackify; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ "./node_modules/process/browser.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/webpack/buildin/global.js": | 
						|
/*!***********************************!*\ | 
						|
  !*** (webpack)/buildin/global.js ***! | 
						|
  \***********************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var g; // This works in non-strict mode | 
						|
 | 
						|
g = function () { | 
						|
  return this; | 
						|
}(); | 
						|
 | 
						|
try { | 
						|
  // This works if eval is allowed (see CSP) | 
						|
  g = g || new Function("return this")(); | 
						|
} catch (e) { | 
						|
  // This works if the window reference is available | 
						|
  if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === "object") g = window; | 
						|
} // g can still be undefined, but nothing to do about it... | 
						|
// We return undefined, instead of nothing here, so it's | 
						|
// easier to handle this case. if(!global) { ...} | 
						|
 | 
						|
 | 
						|
module.exports = g; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./node_modules/webpack/buildin/module.js": | 
						|
/*!***********************************!*\ | 
						|
  !*** (webpack)/buildin/module.js ***! | 
						|
  \***********************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
module.exports = function (module) { | 
						|
  if (!module.webpackPolyfill) { | 
						|
    module.deprecate = function () {}; | 
						|
 | 
						|
    module.paths = []; // module.parent = undefined by default | 
						|
 | 
						|
    if (!module.children) module.children = []; | 
						|
    Object.defineProperty(module, "loaded", { | 
						|
      enumerable: true, | 
						|
      get: function get() { | 
						|
        return module.l; | 
						|
      } | 
						|
    }); | 
						|
    Object.defineProperty(module, "id", { | 
						|
      enumerable: true, | 
						|
      get: function get() { | 
						|
        return module.i; | 
						|
      } | 
						|
    }); | 
						|
    module.webpackPolyfill = 1; | 
						|
  } | 
						|
 | 
						|
  return module; | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/diff-sequences/build/index.js": | 
						|
/*!************************************************!*\ | 
						|
  !*** ./packages/diff-sequences/build/index.js ***! | 
						|
  \************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = void 0; | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 * | 
						|
 */ | 
						|
// This diff-sequences package implements the linear space variation in | 
						|
// An O(ND) Difference Algorithm and Its Variations by Eugene W. Myers | 
						|
// Relationship in notation between Myers paper and this package: | 
						|
// A is a | 
						|
// N is aLength, aEnd - aStart, and so on | 
						|
// x is aIndex, aFirst, aLast, and so on | 
						|
// B is b | 
						|
// M is bLength, bEnd - bStart, and so on | 
						|
// y is bIndex, bFirst, bLast, and so on | 
						|
// Δ = N - M is negative of baDeltaLength = bLength - aLength | 
						|
// D is d | 
						|
// k is kF | 
						|
// k + Δ is kF = kR - baDeltaLength | 
						|
// V is aIndexesF or aIndexesR (see comment below about Indexes type) | 
						|
// index intervals [1, N] and [1, M] are [0, aLength) and [0, bLength) | 
						|
// starting point in forward direction (0, 0) is (-1, -1) | 
						|
// starting point in reverse direction (N + 1, M + 1) is (aLength, bLength) | 
						|
// The “edit graph” for sequences a and b corresponds to items: | 
						|
// in a on the horizontal axis | 
						|
// in b on the vertical axis | 
						|
// | 
						|
// Given a-coordinate of a point in a diagonal, you can compute b-coordinate. | 
						|
// | 
						|
// Forward diagonals kF: | 
						|
// zero diagonal intersects top left corner | 
						|
// positive diagonals intersect top edge | 
						|
// negative diagonals insersect left edge | 
						|
// | 
						|
// Reverse diagonals kR: | 
						|
// zero diagonal intersects bottom right corner | 
						|
// positive diagonals intersect right edge | 
						|
// negative diagonals intersect bottom edge | 
						|
// The graph contains a directed acyclic graph of edges: | 
						|
// horizontal: delete an item from a | 
						|
// vertical: insert an item from b | 
						|
// diagonal: common item in a and b | 
						|
// | 
						|
// The algorithm solves dual problems in the graph analogy: | 
						|
// Find longest common subsequence: path with maximum number of diagonal edges | 
						|
// Find shortest edit script: path with minimum number of non-diagonal edges | 
						|
// Input callback function compares items at indexes in the sequences. | 
						|
// Output callback function receives the number of adjacent items | 
						|
// and starting indexes of each common subsequence. | 
						|
// Either original functions or wrapped to swap indexes if graph is transposed. | 
						|
// Indexes in sequence a of last point of forward or reverse paths in graph. | 
						|
// Myers algorithm indexes by diagonal k which for negative is bad deopt in V8. | 
						|
// This package indexes by iF and iR which are greater than or equal to zero. | 
						|
// and also updates the index arrays in place to cut memory in half. | 
						|
// kF = 2 * iF - d | 
						|
// kR = d - 2 * iR | 
						|
// Division of index intervals in sequences a and b at the middle change. | 
						|
// Invariant: intervals do not have common items at the start or end. | 
						|
 | 
						|
var pkg = 'diff-sequences'; // for error messages | 
						|
 | 
						|
var NOT_YET_SET = 0; // small int instead of undefined to avoid deopt in V8 | 
						|
// Return the number of common items that follow in forward direction. | 
						|
// The length of what Myers paper calls a “snake” in a forward path. | 
						|
 | 
						|
var countCommonItemsF = function countCommonItemsF(aIndex, aEnd, bIndex, bEnd, isCommon) { | 
						|
  var nCommon = 0; | 
						|
 | 
						|
  while (aIndex < aEnd && bIndex < bEnd && isCommon(aIndex, bIndex)) { | 
						|
    aIndex += 1; | 
						|
    bIndex += 1; | 
						|
    nCommon += 1; | 
						|
  } | 
						|
 | 
						|
  return nCommon; | 
						|
}; // Return the number of common items that precede in reverse direction. | 
						|
// The length of what Myers paper calls a “snake” in a reverse path. | 
						|
 | 
						|
 | 
						|
var countCommonItemsR = function countCommonItemsR(aStart, aIndex, bStart, bIndex, isCommon) { | 
						|
  var nCommon = 0; | 
						|
 | 
						|
  while (aStart <= aIndex && bStart <= bIndex && isCommon(aIndex, bIndex)) { | 
						|
    aIndex -= 1; | 
						|
    bIndex -= 1; | 
						|
    nCommon += 1; | 
						|
  } | 
						|
 | 
						|
  return nCommon; | 
						|
}; // A simple function to extend forward paths from (d - 1) to d changes | 
						|
// when forward and reverse paths cannot yet overlap. | 
						|
 | 
						|
 | 
						|
var extendPathsF = function extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF) { | 
						|
  // Unroll the first iteration. | 
						|
  var iF = 0; | 
						|
  var kF = -d; // kF = 2 * iF - d | 
						|
 | 
						|
  var aFirst = aIndexesF[iF]; // in first iteration always insert | 
						|
 | 
						|
  var aIndexPrev1 = aFirst; // prev value of [iF - 1] in next iteration | 
						|
 | 
						|
  aIndexesF[iF] += countCommonItemsF(aFirst + 1, aEnd, bF + aFirst - kF + 1, bEnd, isCommon); // Optimization: skip diagonals in which paths cannot ever overlap. | 
						|
 | 
						|
  var nF = d < iMaxF ? d : iMaxF; // The diagonals kF are odd when d is odd and even when d is even. | 
						|
 | 
						|
  for (iF += 1, kF += 2; iF <= nF; iF += 1, kF += 2) { | 
						|
    // To get first point of path segment, move one change in forward direction | 
						|
    // from last point of previous path segment in an adjacent diagonal. | 
						|
    // In last possible iteration when iF === d and kF === d always delete. | 
						|
    if (iF !== d && aIndexPrev1 < aIndexesF[iF]) { | 
						|
      aFirst = aIndexesF[iF]; // vertical to insert from b | 
						|
    } else { | 
						|
      aFirst = aIndexPrev1 + 1; // horizontal to delete from a | 
						|
 | 
						|
      if (aEnd <= aFirst) { | 
						|
        // Optimization: delete moved past right of graph. | 
						|
        return iF - 1; | 
						|
      } | 
						|
    } // To get last point of path segment, move along diagonal of common items. | 
						|
 | 
						|
 | 
						|
    aIndexPrev1 = aIndexesF[iF]; | 
						|
    aIndexesF[iF] = aFirst + countCommonItemsF(aFirst + 1, aEnd, bF + aFirst - kF + 1, bEnd, isCommon); | 
						|
  } | 
						|
 | 
						|
  return iMaxF; | 
						|
}; // A simple function to extend reverse paths from (d - 1) to d changes | 
						|
// when reverse and forward paths cannot yet overlap. | 
						|
 | 
						|
 | 
						|
var extendPathsR = function extendPathsR(d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR) { | 
						|
  // Unroll the first iteration. | 
						|
  var iR = 0; | 
						|
  var kR = d; // kR = d - 2 * iR | 
						|
 | 
						|
  var aFirst = aIndexesR[iR]; // in first iteration always insert | 
						|
 | 
						|
  var aIndexPrev1 = aFirst; // prev value of [iR - 1] in next iteration | 
						|
 | 
						|
  aIndexesR[iR] -= countCommonItemsR(aStart, aFirst - 1, bStart, bR + aFirst - kR - 1, isCommon); // Optimization: skip diagonals in which paths cannot ever overlap. | 
						|
 | 
						|
  var nR = d < iMaxR ? d : iMaxR; // The diagonals kR are odd when d is odd and even when d is even. | 
						|
 | 
						|
  for (iR += 1, kR -= 2; iR <= nR; iR += 1, kR -= 2) { | 
						|
    // To get first point of path segment, move one change in reverse direction | 
						|
    // from last point of previous path segment in an adjacent diagonal. | 
						|
    // In last possible iteration when iR === d and kR === -d always delete. | 
						|
    if (iR !== d && aIndexesR[iR] < aIndexPrev1) { | 
						|
      aFirst = aIndexesR[iR]; // vertical to insert from b | 
						|
    } else { | 
						|
      aFirst = aIndexPrev1 - 1; // horizontal to delete from a | 
						|
 | 
						|
      if (aFirst < aStart) { | 
						|
        // Optimization: delete moved past left of graph. | 
						|
        return iR - 1; | 
						|
      } | 
						|
    } // To get last point of path segment, move along diagonal of common items. | 
						|
 | 
						|
 | 
						|
    aIndexPrev1 = aIndexesR[iR]; | 
						|
    aIndexesR[iR] = aFirst - countCommonItemsR(aStart, aFirst - 1, bStart, bR + aFirst - kR - 1, isCommon); | 
						|
  } | 
						|
 | 
						|
  return iMaxR; | 
						|
}; // A complete function to extend forward paths from (d - 1) to d changes. | 
						|
// Return true if a path overlaps reverse path of (d - 1) changes in its diagonal. | 
						|
 | 
						|
 | 
						|
var extendOverlappablePathsF = function extendOverlappablePathsF(d, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, iMaxF, aIndexesR, iMaxR, division) { | 
						|
  var bF = bStart - aStart; // bIndex = bF + aIndex - kF | 
						|
 | 
						|
  var aLength = aEnd - aStart; | 
						|
  var bLength = bEnd - bStart; | 
						|
  var baDeltaLength = bLength - aLength; // kF = kR - baDeltaLength | 
						|
  // Range of diagonals in which forward and reverse paths might overlap. | 
						|
 | 
						|
  var kMinOverlapF = -baDeltaLength - (d - 1); // -(d - 1) <= kR | 
						|
 | 
						|
  var kMaxOverlapF = -baDeltaLength + (d - 1); // kR <= (d - 1) | 
						|
 | 
						|
  var aIndexPrev1 = NOT_YET_SET; // prev value of [iF - 1] in next iteration | 
						|
  // Optimization: skip diagonals in which paths cannot ever overlap. | 
						|
 | 
						|
  var nF = d < iMaxF ? d : iMaxF; // The diagonals kF = 2 * iF - d are odd when d is odd and even when d is even. | 
						|
 | 
						|
  for (var iF = 0, kF = -d; iF <= nF; iF += 1, kF += 2) { | 
						|
    // To get first point of path segment, move one change in forward direction | 
						|
    // from last point of previous path segment in an adjacent diagonal. | 
						|
    // In first iteration when iF === 0 and kF === -d always insert. | 
						|
    // In last possible iteration when iF === d and kF === d always delete. | 
						|
    var insert = iF === 0 || iF !== d && aIndexPrev1 < aIndexesF[iF]; | 
						|
    var aLastPrev = insert ? aIndexesF[iF] : aIndexPrev1; | 
						|
    var aFirst = insert ? aLastPrev // vertical to insert from b | 
						|
    : aLastPrev + 1; // horizontal to delete from a | 
						|
    // To get last point of path segment, move along diagonal of common items. | 
						|
 | 
						|
    var bFirst = bF + aFirst - kF; | 
						|
    var nCommonF = countCommonItemsF(aFirst + 1, aEnd, bFirst + 1, bEnd, isCommon); | 
						|
    var aLast = aFirst + nCommonF; | 
						|
    aIndexPrev1 = aIndexesF[iF]; | 
						|
    aIndexesF[iF] = aLast; | 
						|
 | 
						|
    if (kMinOverlapF <= kF && kF <= kMaxOverlapF) { | 
						|
      // Solve for iR of reverse path with (d - 1) changes in diagonal kF: | 
						|
      // kR = kF + baDeltaLength | 
						|
      // kR = (d - 1) - 2 * iR | 
						|
      var iR = (d - 1 - (kF + baDeltaLength)) / 2; // If this forward path overlaps the reverse path in this diagonal, | 
						|
      // then this is the middle change of the index intervals. | 
						|
 | 
						|
      if (iR <= iMaxR && aIndexesR[iR] - 1 <= aLast) { | 
						|
        // Unlike the Myers algorithm which finds only the middle “snake” | 
						|
        // this package can find two common subsequences per division. | 
						|
        // Last point of previous path segment is on an adjacent diagonal. | 
						|
        var bLastPrev = bF + aLastPrev - (insert ? kF + 1 : kF - 1); // Because of invariant that intervals preceding the middle change | 
						|
        // cannot have common items at the end, | 
						|
        // move in reverse direction along a diagonal of common items. | 
						|
 | 
						|
        var nCommonR = countCommonItemsR(aStart, aLastPrev, bStart, bLastPrev, isCommon); | 
						|
        var aIndexPrevFirst = aLastPrev - nCommonR; | 
						|
        var bIndexPrevFirst = bLastPrev - nCommonR; | 
						|
        var aEndPreceding = aIndexPrevFirst + 1; | 
						|
        var bEndPreceding = bIndexPrevFirst + 1; | 
						|
        division.nChangePreceding = d - 1; | 
						|
 | 
						|
        if (d - 1 === aEndPreceding + bEndPreceding - aStart - bStart) { | 
						|
          // Optimization: number of preceding changes in forward direction | 
						|
          // is equal to number of items in preceding interval, | 
						|
          // therefore it cannot contain any common items. | 
						|
          division.aEndPreceding = aStart; | 
						|
          division.bEndPreceding = bStart; | 
						|
        } else { | 
						|
          division.aEndPreceding = aEndPreceding; | 
						|
          division.bEndPreceding = bEndPreceding; | 
						|
        } | 
						|
 | 
						|
        division.nCommonPreceding = nCommonR; | 
						|
 | 
						|
        if (nCommonR !== 0) { | 
						|
          division.aCommonPreceding = aEndPreceding; | 
						|
          division.bCommonPreceding = bEndPreceding; | 
						|
        } | 
						|
 | 
						|
        division.nCommonFollowing = nCommonF; | 
						|
 | 
						|
        if (nCommonF !== 0) { | 
						|
          division.aCommonFollowing = aFirst + 1; | 
						|
          division.bCommonFollowing = bFirst + 1; | 
						|
        } | 
						|
 | 
						|
        var aStartFollowing = aLast + 1; | 
						|
        var bStartFollowing = bFirst + nCommonF + 1; | 
						|
        division.nChangeFollowing = d - 1; | 
						|
 | 
						|
        if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) { | 
						|
          // Optimization: number of changes in reverse direction | 
						|
          // is equal to number of items in following interval, | 
						|
          // therefore it cannot contain any common items. | 
						|
          division.aStartFollowing = aEnd; | 
						|
          division.bStartFollowing = bEnd; | 
						|
        } else { | 
						|
          division.aStartFollowing = aStartFollowing; | 
						|
          division.bStartFollowing = bStartFollowing; | 
						|
        } | 
						|
 | 
						|
        return true; | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; // A complete function to extend reverse paths from (d - 1) to d changes. | 
						|
// Return true if a path overlaps forward path of d changes in its diagonal. | 
						|
 | 
						|
 | 
						|
var extendOverlappablePathsR = function extendOverlappablePathsR(d, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, iMaxF, aIndexesR, iMaxR, division) { | 
						|
  var bR = bEnd - aEnd; // bIndex = bR + aIndex - kR | 
						|
 | 
						|
  var aLength = aEnd - aStart; | 
						|
  var bLength = bEnd - bStart; | 
						|
  var baDeltaLength = bLength - aLength; // kR = kF + baDeltaLength | 
						|
  // Range of diagonals in which forward and reverse paths might overlap. | 
						|
 | 
						|
  var kMinOverlapR = baDeltaLength - d; // -d <= kF | 
						|
 | 
						|
  var kMaxOverlapR = baDeltaLength + d; // kF <= d | 
						|
 | 
						|
  var aIndexPrev1 = NOT_YET_SET; // prev value of [iR - 1] in next iteration | 
						|
  // Optimization: skip diagonals in which paths cannot ever overlap. | 
						|
 | 
						|
  var nR = d < iMaxR ? d : iMaxR; // The diagonals kR = d - 2 * iR are odd when d is odd and even when d is even. | 
						|
 | 
						|
  for (var iR = 0, kR = d; iR <= nR; iR += 1, kR -= 2) { | 
						|
    // To get first point of path segment, move one change in reverse direction | 
						|
    // from last point of previous path segment in an adjacent diagonal. | 
						|
    // In first iteration when iR === 0 and kR === d always insert. | 
						|
    // In last possible iteration when iR === d and kR === -d always delete. | 
						|
    var insert = iR === 0 || iR !== d && aIndexesR[iR] < aIndexPrev1; | 
						|
    var aLastPrev = insert ? aIndexesR[iR] : aIndexPrev1; | 
						|
    var aFirst = insert ? aLastPrev // vertical to insert from b | 
						|
    : aLastPrev - 1; // horizontal to delete from a | 
						|
    // To get last point of path segment, move along diagonal of common items. | 
						|
 | 
						|
    var bFirst = bR + aFirst - kR; | 
						|
    var nCommonR = countCommonItemsR(aStart, aFirst - 1, bStart, bFirst - 1, isCommon); | 
						|
    var aLast = aFirst - nCommonR; | 
						|
    aIndexPrev1 = aIndexesR[iR]; | 
						|
    aIndexesR[iR] = aLast; | 
						|
 | 
						|
    if (kMinOverlapR <= kR && kR <= kMaxOverlapR) { | 
						|
      // Solve for iF of forward path with d changes in diagonal kR: | 
						|
      // kF = kR - baDeltaLength | 
						|
      // kF = 2 * iF - d | 
						|
      var iF = (d + (kR - baDeltaLength)) / 2; // If this reverse path overlaps the forward path in this diagonal, | 
						|
      // then this is a middle change of the index intervals. | 
						|
 | 
						|
      if (iF <= iMaxF && aLast - 1 <= aIndexesF[iF]) { | 
						|
        var bLast = bFirst - nCommonR; | 
						|
        division.nChangePreceding = d; | 
						|
 | 
						|
        if (d === aLast + bLast - aStart - bStart) { | 
						|
          // Optimization: number of changes in reverse direction | 
						|
          // is equal to number of items in preceding interval, | 
						|
          // therefore it cannot contain any common items. | 
						|
          division.aEndPreceding = aStart; | 
						|
          division.bEndPreceding = bStart; | 
						|
        } else { | 
						|
          division.aEndPreceding = aLast; | 
						|
          division.bEndPreceding = bLast; | 
						|
        } | 
						|
 | 
						|
        division.nCommonPreceding = nCommonR; | 
						|
 | 
						|
        if (nCommonR !== 0) { | 
						|
          // The last point of reverse path segment is start of common subsequence. | 
						|
          division.aCommonPreceding = aLast; | 
						|
          division.bCommonPreceding = bLast; | 
						|
        } | 
						|
 | 
						|
        division.nChangeFollowing = d - 1; | 
						|
 | 
						|
        if (d === 1) { | 
						|
          // There is no previous path segment. | 
						|
          division.nCommonFollowing = 0; | 
						|
          division.aStartFollowing = aEnd; | 
						|
          division.bStartFollowing = bEnd; | 
						|
        } else { | 
						|
          // Unlike the Myers algorithm which finds only the middle “snake” | 
						|
          // this package can find two common subsequences per division. | 
						|
          // Last point of previous path segment is on an adjacent diagonal. | 
						|
          var bLastPrev = bR + aLastPrev - (insert ? kR - 1 : kR + 1); // Because of invariant that intervals following the middle change | 
						|
          // cannot have common items at the start, | 
						|
          // move in forward direction along a diagonal of common items. | 
						|
 | 
						|
          var nCommonF = countCommonItemsF(aLastPrev, aEnd, bLastPrev, bEnd, isCommon); | 
						|
          division.nCommonFollowing = nCommonF; | 
						|
 | 
						|
          if (nCommonF !== 0) { | 
						|
            // The last point of reverse path segment is start of common subsequence. | 
						|
            division.aCommonFollowing = aLastPrev; | 
						|
            division.bCommonFollowing = bLastPrev; | 
						|
          } | 
						|
 | 
						|
          var aStartFollowing = aLastPrev + nCommonF; // aFirstPrev | 
						|
 | 
						|
          var bStartFollowing = bLastPrev + nCommonF; // bFirstPrev | 
						|
 | 
						|
          if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) { | 
						|
            // Optimization: number of changes in forward direction | 
						|
            // is equal to number of items in following interval, | 
						|
            // therefore it cannot contain any common items. | 
						|
            division.aStartFollowing = aEnd; | 
						|
            division.bStartFollowing = bEnd; | 
						|
          } else { | 
						|
            division.aStartFollowing = aStartFollowing; | 
						|
            division.bStartFollowing = bStartFollowing; | 
						|
          } | 
						|
        } | 
						|
 | 
						|
        return true; | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; // Given index intervals and input function to compare items at indexes, | 
						|
// divide at the middle change. | 
						|
// | 
						|
// DO NOT CALL if start === end, because interval cannot contain common items | 
						|
// and because this function will throw the “no overlap” error. | 
						|
 | 
						|
 | 
						|
var divide = function divide(nChange, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, aIndexesR, division // output | 
						|
) { | 
						|
  var bF = bStart - aStart; // bIndex = bF + aIndex - kF | 
						|
 | 
						|
  var bR = bEnd - aEnd; // bIndex = bR + aIndex - kR | 
						|
 | 
						|
  var aLength = aEnd - aStart; | 
						|
  var bLength = bEnd - bStart; // Because graph has square or portrait orientation, | 
						|
  // length difference is minimum number of items to insert from b. | 
						|
  // Corresponding forward and reverse diagonals in graph | 
						|
  // depend on length difference of the sequences: | 
						|
  // kF = kR - baDeltaLength | 
						|
  // kR = kF + baDeltaLength | 
						|
 | 
						|
  var baDeltaLength = bLength - aLength; // Optimization: max diagonal in graph intersects corner of shorter side. | 
						|
 | 
						|
  var iMaxF = aLength; | 
						|
  var iMaxR = aLength; // Initialize no changes yet in forward or reverse direction: | 
						|
 | 
						|
  aIndexesF[0] = aStart - 1; // at open start of interval, outside closed start | 
						|
 | 
						|
  aIndexesR[0] = aEnd; // at open end of interval | 
						|
 | 
						|
  if (baDeltaLength % 2 === 0) { | 
						|
    // The number of changes in paths is 2 * d if length difference is even. | 
						|
    var dMin = (nChange || baDeltaLength) / 2; | 
						|
    var dMax = (aLength + bLength) / 2; | 
						|
 | 
						|
    for (var d = 1; d <= dMax; d += 1) { | 
						|
      iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF); | 
						|
 | 
						|
      if (d < dMin) { | 
						|
        iMaxR = extendPathsR(d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR); | 
						|
      } else if ( // If a reverse path overlaps a forward path in the same diagonal, | 
						|
      // return a division of the index intervals at the middle change. | 
						|
      extendOverlappablePathsR(d, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, iMaxF, aIndexesR, iMaxR, division)) { | 
						|
        return; | 
						|
      } | 
						|
    } | 
						|
  } else { | 
						|
    // The number of changes in paths is 2 * d - 1 if length difference is odd. | 
						|
    var _dMin = ((nChange || baDeltaLength) + 1) / 2; | 
						|
 | 
						|
    var _dMax = (aLength + bLength + 1) / 2; // Unroll first half iteration so loop extends the relevant pairs of paths. | 
						|
    // Because of invariant that intervals have no common items at start or end, | 
						|
    // and limitation not to call divide with empty intervals, | 
						|
    // therefore it cannot be called if a forward path with one change | 
						|
    // would overlap a reverse path with no changes, even if dMin === 1. | 
						|
 | 
						|
 | 
						|
    var _d = 1; | 
						|
    iMaxF = extendPathsF(_d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF); | 
						|
 | 
						|
    for (_d += 1; _d <= _dMax; _d += 1) { | 
						|
      iMaxR = extendPathsR(_d - 1, aStart, bStart, bR, isCommon, aIndexesR, iMaxR); | 
						|
 | 
						|
      if (_d < _dMin) { | 
						|
        iMaxF = extendPathsF(_d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF); | 
						|
      } else if ( // If a forward path overlaps a reverse path in the same diagonal, | 
						|
      // return a division of the index intervals at the middle change. | 
						|
      extendOverlappablePathsF(_d, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, iMaxF, aIndexesR, iMaxR, division)) { | 
						|
        return; | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
  /* istanbul ignore next */ | 
						|
 | 
						|
 | 
						|
  throw new Error("".concat(pkg, ": no overlap aStart=").concat(aStart, " aEnd=").concat(aEnd, " bStart=").concat(bStart, " bEnd=").concat(bEnd)); | 
						|
}; // Given index intervals and input function to compare items at indexes, | 
						|
// return by output function the number of adjacent items and starting indexes | 
						|
// of each common subsequence. Divide and conquer with only linear space. | 
						|
// | 
						|
// The index intervals are half open [start, end) like array slice method. | 
						|
// DO NOT CALL if start === end, because interval cannot contain common items | 
						|
// and because divide function will throw the “no overlap” error. | 
						|
 | 
						|
 | 
						|
var findSubsequences = function findSubsequences(nChange, aStart, aEnd, bStart, bEnd, transposed, callbacks, aIndexesF, aIndexesR, division // temporary memory, not input nor output | 
						|
) { | 
						|
  if (bEnd - bStart < aEnd - aStart) { | 
						|
    // Transpose graph so it has portrait instead of landscape orientation. | 
						|
    // Always compare shorter to longer sequence for consistency and optimization. | 
						|
    transposed = !transposed; | 
						|
 | 
						|
    if (transposed && callbacks.length === 1) { | 
						|
      // Lazily wrap callback functions to swap args if graph is transposed. | 
						|
      var _callbacks$ = callbacks[0], | 
						|
          _foundSubsequence2 = _callbacks$.foundSubsequence, | 
						|
          _isCommon2 = _callbacks$.isCommon; | 
						|
      callbacks[1] = { | 
						|
        foundSubsequence: function (_foundSubsequence) { | 
						|
          function foundSubsequence(_x, _x2, _x3) { | 
						|
            return _foundSubsequence.apply(this, arguments); | 
						|
          } | 
						|
 | 
						|
          foundSubsequence.toString = function () { | 
						|
            return _foundSubsequence.toString(); | 
						|
          }; | 
						|
 | 
						|
          return foundSubsequence; | 
						|
        }(function (nCommon, bCommon, aCommon) { | 
						|
          _foundSubsequence2(nCommon, aCommon, bCommon); | 
						|
        }), | 
						|
        isCommon: function (_isCommon) { | 
						|
          function isCommon(_x4, _x5) { | 
						|
            return _isCommon.apply(this, arguments); | 
						|
          } | 
						|
 | 
						|
          isCommon.toString = function () { | 
						|
            return _isCommon.toString(); | 
						|
          }; | 
						|
 | 
						|
          return isCommon; | 
						|
        }(function (bIndex, aIndex) { | 
						|
          return _isCommon2(aIndex, bIndex); | 
						|
        }) | 
						|
      }; | 
						|
    } | 
						|
 | 
						|
    var tStart = aStart; | 
						|
    var tEnd = aEnd; | 
						|
    aStart = bStart; | 
						|
    aEnd = bEnd; | 
						|
    bStart = tStart; | 
						|
    bEnd = tEnd; | 
						|
  } | 
						|
 | 
						|
  var _callbacks = callbacks[transposed ? 1 : 0], | 
						|
      foundSubsequence = _callbacks.foundSubsequence, | 
						|
      isCommon = _callbacks.isCommon; // Divide the index intervals at the middle change. | 
						|
 | 
						|
  divide(nChange, aStart, aEnd, bStart, bEnd, isCommon, aIndexesF, aIndexesR, division); | 
						|
  var nChangePreceding = division.nChangePreceding, | 
						|
      aEndPreceding = division.aEndPreceding, | 
						|
      bEndPreceding = division.bEndPreceding, | 
						|
      nCommonPreceding = division.nCommonPreceding, | 
						|
      aCommonPreceding = division.aCommonPreceding, | 
						|
      bCommonPreceding = division.bCommonPreceding, | 
						|
      nCommonFollowing = division.nCommonFollowing, | 
						|
      aCommonFollowing = division.aCommonFollowing, | 
						|
      bCommonFollowing = division.bCommonFollowing, | 
						|
      nChangeFollowing = division.nChangeFollowing, | 
						|
      aStartFollowing = division.aStartFollowing, | 
						|
      bStartFollowing = division.bStartFollowing; // Unless either index interval is empty, they might contain common items. | 
						|
 | 
						|
  if (aStart < aEndPreceding && bStart < bEndPreceding) { | 
						|
    // Recursely find and return common subsequences preceding the division. | 
						|
    findSubsequences(nChangePreceding, aStart, aEndPreceding, bStart, bEndPreceding, transposed, callbacks, aIndexesF, aIndexesR, division); | 
						|
  } // Return common subsequences that are adjacent to the middle change. | 
						|
 | 
						|
 | 
						|
  if (nCommonPreceding !== 0) { | 
						|
    foundSubsequence(nCommonPreceding, aCommonPreceding, bCommonPreceding); | 
						|
  } | 
						|
 | 
						|
  if (nCommonFollowing !== 0) { | 
						|
    foundSubsequence(nCommonFollowing, aCommonFollowing, bCommonFollowing); | 
						|
  } // Unless either index interval is empty, they might contain common items. | 
						|
 | 
						|
 | 
						|
  if (aStartFollowing < aEnd && bStartFollowing < bEnd) { | 
						|
    // Recursely find and return common subsequences following the division. | 
						|
    findSubsequences(nChangeFollowing, aStartFollowing, aEnd, bStartFollowing, bEnd, transposed, callbacks, aIndexesF, aIndexesR, division); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
var validateLength = function validateLength(name, arg) { | 
						|
  var type = _typeof(arg); | 
						|
 | 
						|
  if (type !== 'number') { | 
						|
    throw new TypeError("".concat(pkg, ": ").concat(name, " typeof ").concat(type, " is not a number")); | 
						|
  } | 
						|
 | 
						|
  if (!Number.isSafeInteger(arg)) { | 
						|
    throw new RangeError("".concat(pkg, ": ").concat(name, " value ").concat(arg, " is not a safe integer")); | 
						|
  } | 
						|
 | 
						|
  if (arg < 0) { | 
						|
    throw new RangeError("".concat(pkg, ": ").concat(name, " value ").concat(arg, " is a negative integer")); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
var validateCallback = function validateCallback(name, arg) { | 
						|
  var type = _typeof(arg); | 
						|
 | 
						|
  if (type !== 'function') { | 
						|
    throw new TypeError("".concat(pkg, ": ").concat(name, " typeof ").concat(type, " is not a function")); | 
						|
  } | 
						|
}; // Compare items in two sequences to find a longest common subsequence. | 
						|
// Given lengths of sequences and input function to compare items at indexes, | 
						|
// return by output function the number of adjacent items and starting indexes | 
						|
// of each common subsequence. | 
						|
 | 
						|
 | 
						|
var _default = function _default(aLength, bLength, isCommon, foundSubsequence) { | 
						|
  validateLength('aLength', aLength); | 
						|
  validateLength('bLength', bLength); | 
						|
  validateCallback('isCommon', isCommon); | 
						|
  validateCallback('foundSubsequence', foundSubsequence); // Count common items from the start in the forward direction. | 
						|
 | 
						|
  var nCommonF = countCommonItemsF(0, aLength, 0, bLength, isCommon); | 
						|
 | 
						|
  if (nCommonF !== 0) { | 
						|
    foundSubsequence(nCommonF, 0, 0); | 
						|
  } // Unless both sequences consist of common items only, | 
						|
  // find common items in the half-trimmed index intervals. | 
						|
 | 
						|
 | 
						|
  if (aLength !== nCommonF || bLength !== nCommonF) { | 
						|
    // Invariant: intervals do not have common items at the start. | 
						|
    // The start of an index interval is closed like array slice method. | 
						|
    var aStart = nCommonF; | 
						|
    var bStart = nCommonF; // Count common items from the end in the reverse direction. | 
						|
 | 
						|
    var nCommonR = countCommonItemsR(aStart, aLength - 1, bStart, bLength - 1, isCommon); // Invariant: intervals do not have common items at the end. | 
						|
    // The end of an index interval is open like array slice method. | 
						|
 | 
						|
    var aEnd = aLength - nCommonR; | 
						|
    var bEnd = bLength - nCommonR; // Unless one sequence consists of common items only, | 
						|
    // therefore the other trimmed index interval consists of changes only, | 
						|
    // find common items in the trimmed index intervals. | 
						|
 | 
						|
    var nCommonFR = nCommonF + nCommonR; | 
						|
 | 
						|
    if (aLength !== nCommonFR && bLength !== nCommonFR) { | 
						|
      var nChange = 0; // number of change items is not yet known | 
						|
 | 
						|
      var transposed = false; // call the original unwrapped functions | 
						|
 | 
						|
      var callbacks = [{ | 
						|
        foundSubsequence: foundSubsequence, | 
						|
        isCommon: isCommon | 
						|
      }]; // Indexes in sequence a of last points in furthest reaching paths | 
						|
      // from outside the start at top left in the forward direction: | 
						|
 | 
						|
      var aIndexesF = [NOT_YET_SET]; // from the end at bottom right in the reverse direction: | 
						|
 | 
						|
      var aIndexesR = [NOT_YET_SET]; // Initialize one object as output of all calls to divide function. | 
						|
 | 
						|
      var division = { | 
						|
        aCommonFollowing: NOT_YET_SET, | 
						|
        aCommonPreceding: NOT_YET_SET, | 
						|
        aEndPreceding: NOT_YET_SET, | 
						|
        aStartFollowing: NOT_YET_SET, | 
						|
        bCommonFollowing: NOT_YET_SET, | 
						|
        bCommonPreceding: NOT_YET_SET, | 
						|
        bEndPreceding: NOT_YET_SET, | 
						|
        bStartFollowing: NOT_YET_SET, | 
						|
        nChangeFollowing: NOT_YET_SET, | 
						|
        nChangePreceding: NOT_YET_SET, | 
						|
        nCommonFollowing: NOT_YET_SET, | 
						|
        nCommonPreceding: NOT_YET_SET | 
						|
      }; // Find and return common subsequences in the trimmed index intervals. | 
						|
 | 
						|
      findSubsequences(nChange, aStart, aEnd, bStart, bEnd, transposed, callbacks, aIndexesF, aIndexesR, division); | 
						|
    } | 
						|
 | 
						|
    if (nCommonR !== 0) { | 
						|
      foundSubsequence(nCommonR, aEnd, bEnd); | 
						|
    } | 
						|
  } | 
						|
}; | 
						|
 | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/expect/build/fakeChalk.js": | 
						|
/*!********************************************!*\ | 
						|
  !*** ./packages/expect/build/fakeChalk.js ***! | 
						|
  \********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | 
						|
 | 
						|
var _ansiStyles = _interopRequireDefault(__webpack_require__(/*! ansi-styles */ "./node_modules/ansi-styles/index.js")); | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var returnInput = function returnInput(str) { | 
						|
  return str; | 
						|
}; | 
						|
 | 
						|
var allColorsAsFunc = Object.keys(_ansiStyles.default).map(function (style) { | 
						|
  return _defineProperty({}, style, returnInput); | 
						|
}).reduce(function (acc, cur) { | 
						|
  return Object.assign(acc, cur); | 
						|
}); | 
						|
Object.keys(allColorsAsFunc).map(function (color) { | 
						|
  return allColorsAsFunc[color]; | 
						|
}).forEach(function (style) { | 
						|
  Object.assign(style, allColorsAsFunc); | 
						|
  Object.assign(returnInput, style); | 
						|
}); | 
						|
module.exports = allColorsAsFunc; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/expect/src/asymmetricMatchers.ts": | 
						|
/*!***************************************************!*\ | 
						|
  !*** ./packages/expect/src/asymmetricMatchers.ts ***! | 
						|
  \***************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.stringNotMatching = exports.stringMatching = exports.stringNotContaining = exports.stringContaining = exports.objectNotContaining = exports.objectContaining = exports.arrayNotContaining = exports.arrayContaining = exports.anything = exports.any = exports.AsymmetricMatcher = void 0; | 
						|
 | 
						|
var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.ts"); | 
						|
 | 
						|
var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.ts"); | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } | 
						|
 | 
						|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } | 
						|
 | 
						|
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } | 
						|
 | 
						|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } | 
						|
 | 
						|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } | 
						|
 | 
						|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } | 
						|
 | 
						|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } | 
						|
 | 
						|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | 
						|
 | 
						|
var AsymmetricMatcher = function AsymmetricMatcher(sample) { | 
						|
  _classCallCheck(this, AsymmetricMatcher); | 
						|
 | 
						|
  this.$$typeof = Symbol.for('jest.asymmetricMatcher'); | 
						|
  this.sample = sample; | 
						|
}; | 
						|
 | 
						|
exports.AsymmetricMatcher = AsymmetricMatcher; | 
						|
 | 
						|
var Any = | 
						|
/*#__PURE__*/ | 
						|
function (_AsymmetricMatcher) { | 
						|
  _inherits(Any, _AsymmetricMatcher); | 
						|
 | 
						|
  function Any(sample) { | 
						|
    _classCallCheck(this, Any); | 
						|
 | 
						|
    if (typeof sample === 'undefined') { | 
						|
      throw new TypeError('any() expects to be passed a constructor function. ' + 'Please pass one or use anything() to match any object.'); | 
						|
    } | 
						|
 | 
						|
    return _possibleConstructorReturn(this, _getPrototypeOf(Any).call(this, sample)); | 
						|
  } | 
						|
 | 
						|
  _createClass(Any, [{ | 
						|
    key: "asymmetricMatch", | 
						|
    value: function asymmetricMatch(other) { | 
						|
      if (this.sample == String) { | 
						|
        return typeof other == 'string' || other instanceof String; | 
						|
      } | 
						|
 | 
						|
      if (this.sample == Number) { | 
						|
        return typeof other == 'number' || other instanceof Number; | 
						|
      } | 
						|
 | 
						|
      if (this.sample == Function) { | 
						|
        return typeof other == 'function' || other instanceof Function; | 
						|
      } | 
						|
 | 
						|
      if (this.sample == Object) { | 
						|
        return _typeof(other) == 'object'; | 
						|
      } | 
						|
 | 
						|
      if (this.sample == Boolean) { | 
						|
        return typeof other == 'boolean'; | 
						|
      } | 
						|
 | 
						|
      return other instanceof this.sample; | 
						|
    } | 
						|
  }, { | 
						|
    key: "toString", | 
						|
    value: function toString() { | 
						|
      return 'Any'; | 
						|
    } | 
						|
  }, { | 
						|
    key: "getExpectedType", | 
						|
    value: function getExpectedType() { | 
						|
      if (this.sample == String) { | 
						|
        return 'string'; | 
						|
      } | 
						|
 | 
						|
      if (this.sample == Number) { | 
						|
        return 'number'; | 
						|
      } | 
						|
 | 
						|
      if (this.sample == Function) { | 
						|
        return 'function'; | 
						|
      } | 
						|
 | 
						|
      if (this.sample == Object) { | 
						|
        return 'object'; | 
						|
      } | 
						|
 | 
						|
      if (this.sample == Boolean) { | 
						|
        return 'boolean'; | 
						|
      } | 
						|
 | 
						|
      return (0, _jasmineUtils.fnNameFor)(this.sample); | 
						|
    } | 
						|
  }, { | 
						|
    key: "toAsymmetricMatcher", | 
						|
    value: function toAsymmetricMatcher() { | 
						|
      return 'Any<' + (0, _jasmineUtils.fnNameFor)(this.sample) + '>'; | 
						|
    } | 
						|
  }]); | 
						|
 | 
						|
  return Any; | 
						|
}(AsymmetricMatcher); | 
						|
 | 
						|
var Anything = | 
						|
/*#__PURE__*/ | 
						|
function (_AsymmetricMatcher2) { | 
						|
  _inherits(Anything, _AsymmetricMatcher2); | 
						|
 | 
						|
  function Anything() { | 
						|
    _classCallCheck(this, Anything); | 
						|
 | 
						|
    return _possibleConstructorReturn(this, _getPrototypeOf(Anything).apply(this, arguments)); | 
						|
  } | 
						|
 | 
						|
  _createClass(Anything, [{ | 
						|
    key: "asymmetricMatch", | 
						|
    value: function asymmetricMatch(other) { | 
						|
      return !(0, _jasmineUtils.isUndefined)(other) && other !== null; | 
						|
    } | 
						|
  }, { | 
						|
    key: "toString", | 
						|
    value: function toString() { | 
						|
      return 'Anything'; | 
						|
    } // No getExpectedType method, because it matches either null or undefined. | 
						|
 | 
						|
  }, { | 
						|
    key: "toAsymmetricMatcher", | 
						|
    value: function toAsymmetricMatcher() { | 
						|
      return 'Anything'; | 
						|
    } | 
						|
  }]); | 
						|
 | 
						|
  return Anything; | 
						|
}(AsymmetricMatcher); | 
						|
 | 
						|
var ArrayContaining = | 
						|
/*#__PURE__*/ | 
						|
function (_AsymmetricMatcher3) { | 
						|
  _inherits(ArrayContaining, _AsymmetricMatcher3); | 
						|
 | 
						|
  function ArrayContaining(sample) { | 
						|
    var _this; | 
						|
 | 
						|
    var inverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; | 
						|
 | 
						|
    _classCallCheck(this, ArrayContaining); | 
						|
 | 
						|
    _this = _possibleConstructorReturn(this, _getPrototypeOf(ArrayContaining).call(this, sample)); | 
						|
    _this.inverse = inverse; | 
						|
    return _this; | 
						|
  } | 
						|
 | 
						|
  _createClass(ArrayContaining, [{ | 
						|
    key: "asymmetricMatch", | 
						|
    value: function asymmetricMatch(other) { | 
						|
      if (!Array.isArray(this.sample)) { | 
						|
        throw new Error("You must provide an array to ".concat(this.toString(), ", not '") + _typeof(this.sample) + "'."); | 
						|
      } | 
						|
 | 
						|
      var result = this.sample.length === 0 || Array.isArray(other) && this.sample.every(function (item) { | 
						|
        return other.some(function (another) { | 
						|
          return (0, _jasmineUtils.equals)(item, another); | 
						|
        }); | 
						|
      }); | 
						|
      return this.inverse ? !result : result; | 
						|
    } | 
						|
  }, { | 
						|
    key: "toString", | 
						|
    value: function toString() { | 
						|
      return "Array".concat(this.inverse ? 'Not' : '', "Containing"); | 
						|
    } | 
						|
  }, { | 
						|
    key: "getExpectedType", | 
						|
    value: function getExpectedType() { | 
						|
      return 'array'; | 
						|
    } | 
						|
  }]); | 
						|
 | 
						|
  return ArrayContaining; | 
						|
}(AsymmetricMatcher); | 
						|
 | 
						|
var ObjectContaining = | 
						|
/*#__PURE__*/ | 
						|
function (_AsymmetricMatcher4) { | 
						|
  _inherits(ObjectContaining, _AsymmetricMatcher4); | 
						|
 | 
						|
  function ObjectContaining(sample) { | 
						|
    var _this2; | 
						|
 | 
						|
    var inverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; | 
						|
 | 
						|
    _classCallCheck(this, ObjectContaining); | 
						|
 | 
						|
    _this2 = _possibleConstructorReturn(this, _getPrototypeOf(ObjectContaining).call(this, sample)); | 
						|
    _this2.inverse = inverse; | 
						|
    return _this2; | 
						|
  } | 
						|
 | 
						|
  _createClass(ObjectContaining, [{ | 
						|
    key: "asymmetricMatch", | 
						|
    value: function asymmetricMatch(other) { | 
						|
      if (_typeof(this.sample) !== 'object') { | 
						|
        throw new Error("You must provide an object to ".concat(this.toString(), ", not '") + _typeof(this.sample) + "'."); | 
						|
      } | 
						|
 | 
						|
      if (this.inverse) { | 
						|
        for (var property in this.sample) { | 
						|
          if ((0, _jasmineUtils.hasProperty)(other, property) && (0, _jasmineUtils.equals)(this.sample[property], other[property]) && !(0, _utils.emptyObject)(this.sample[property]) && !(0, _utils.emptyObject)(other[property])) { | 
						|
            return false; | 
						|
          } | 
						|
        } | 
						|
 | 
						|
        return true; | 
						|
      } else { | 
						|
        for (var _property in this.sample) { | 
						|
          if (!(0, _jasmineUtils.hasProperty)(other, _property) || !(0, _jasmineUtils.equals)(this.sample[_property], other[_property])) { | 
						|
            return false; | 
						|
          } | 
						|
        } | 
						|
 | 
						|
        return true; | 
						|
      } | 
						|
    } | 
						|
  }, { | 
						|
    key: "toString", | 
						|
    value: function toString() { | 
						|
      return "Object".concat(this.inverse ? 'Not' : '', "Containing"); | 
						|
    } | 
						|
  }, { | 
						|
    key: "getExpectedType", | 
						|
    value: function getExpectedType() { | 
						|
      return 'object'; | 
						|
    } | 
						|
  }]); | 
						|
 | 
						|
  return ObjectContaining; | 
						|
}(AsymmetricMatcher); | 
						|
 | 
						|
var StringContaining = | 
						|
/*#__PURE__*/ | 
						|
function (_AsymmetricMatcher5) { | 
						|
  _inherits(StringContaining, _AsymmetricMatcher5); | 
						|
 | 
						|
  function StringContaining(sample) { | 
						|
    var _this3; | 
						|
 | 
						|
    var inverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; | 
						|
 | 
						|
    _classCallCheck(this, StringContaining); | 
						|
 | 
						|
    if (!(0, _jasmineUtils.isA)('String', sample)) { | 
						|
      throw new Error('Expected is not a string'); | 
						|
    } | 
						|
 | 
						|
    _this3 = _possibleConstructorReturn(this, _getPrototypeOf(StringContaining).call(this, sample)); | 
						|
    _this3.inverse = inverse; | 
						|
    return _this3; | 
						|
  } | 
						|
 | 
						|
  _createClass(StringContaining, [{ | 
						|
    key: "asymmetricMatch", | 
						|
    value: function asymmetricMatch(other) { | 
						|
      var result = (0, _jasmineUtils.isA)('String', other) && other.includes(this.sample); | 
						|
      return this.inverse ? !result : result; | 
						|
    } | 
						|
  }, { | 
						|
    key: "toString", | 
						|
    value: function toString() { | 
						|
      return "String".concat(this.inverse ? 'Not' : '', "Containing"); | 
						|
    } | 
						|
  }, { | 
						|
    key: "getExpectedType", | 
						|
    value: function getExpectedType() { | 
						|
      return 'string'; | 
						|
    } | 
						|
  }]); | 
						|
 | 
						|
  return StringContaining; | 
						|
}(AsymmetricMatcher); | 
						|
 | 
						|
var StringMatching = | 
						|
/*#__PURE__*/ | 
						|
function (_AsymmetricMatcher6) { | 
						|
  _inherits(StringMatching, _AsymmetricMatcher6); | 
						|
 | 
						|
  function StringMatching(sample) { | 
						|
    var _this4; | 
						|
 | 
						|
    var inverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; | 
						|
 | 
						|
    _classCallCheck(this, StringMatching); | 
						|
 | 
						|
    if (!(0, _jasmineUtils.isA)('String', sample) && !(0, _jasmineUtils.isA)('RegExp', sample)) { | 
						|
      throw new Error('Expected is not a String or a RegExp'); | 
						|
    } | 
						|
 | 
						|
    _this4 = _possibleConstructorReturn(this, _getPrototypeOf(StringMatching).call(this, new RegExp(sample))); | 
						|
    _this4.inverse = inverse; | 
						|
    return _this4; | 
						|
  } | 
						|
 | 
						|
  _createClass(StringMatching, [{ | 
						|
    key: "asymmetricMatch", | 
						|
    value: function asymmetricMatch(other) { | 
						|
      var result = (0, _jasmineUtils.isA)('String', other) && this.sample.test(other); | 
						|
      return this.inverse ? !result : result; | 
						|
    } | 
						|
  }, { | 
						|
    key: "toString", | 
						|
    value: function toString() { | 
						|
      return "String".concat(this.inverse ? 'Not' : '', "Matching"); | 
						|
    } | 
						|
  }, { | 
						|
    key: "getExpectedType", | 
						|
    value: function getExpectedType() { | 
						|
      return 'string'; | 
						|
    } | 
						|
  }]); | 
						|
 | 
						|
  return StringMatching; | 
						|
}(AsymmetricMatcher); | 
						|
 | 
						|
var any = function any(expectedObject) { | 
						|
  return new Any(expectedObject); | 
						|
}; | 
						|
 | 
						|
exports.any = any; | 
						|
 | 
						|
var anything = function anything() { | 
						|
  return new Anything(); | 
						|
}; | 
						|
 | 
						|
exports.anything = anything; | 
						|
 | 
						|
var arrayContaining = function arrayContaining(sample) { | 
						|
  return new ArrayContaining(sample); | 
						|
}; | 
						|
 | 
						|
exports.arrayContaining = arrayContaining; | 
						|
 | 
						|
var arrayNotContaining = function arrayNotContaining(sample) { | 
						|
  return new ArrayContaining(sample, true); | 
						|
}; | 
						|
 | 
						|
exports.arrayNotContaining = arrayNotContaining; | 
						|
 | 
						|
var objectContaining = function objectContaining(sample) { | 
						|
  return new ObjectContaining(sample); | 
						|
}; | 
						|
 | 
						|
exports.objectContaining = objectContaining; | 
						|
 | 
						|
var objectNotContaining = function objectNotContaining(sample) { | 
						|
  return new ObjectContaining(sample, true); | 
						|
}; | 
						|
 | 
						|
exports.objectNotContaining = objectNotContaining; | 
						|
 | 
						|
var stringContaining = function stringContaining(expected) { | 
						|
  return new StringContaining(expected); | 
						|
}; | 
						|
 | 
						|
exports.stringContaining = stringContaining; | 
						|
 | 
						|
var stringNotContaining = function stringNotContaining(expected) { | 
						|
  return new StringContaining(expected, true); | 
						|
}; | 
						|
 | 
						|
exports.stringNotContaining = stringNotContaining; | 
						|
 | 
						|
var stringMatching = function stringMatching(expected) { | 
						|
  return new StringMatching(expected); | 
						|
}; | 
						|
 | 
						|
exports.stringMatching = stringMatching; | 
						|
 | 
						|
var stringNotMatching = function stringNotMatching(expected) { | 
						|
  return new StringMatching(expected, true); | 
						|
}; | 
						|
 | 
						|
exports.stringNotMatching = stringNotMatching; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/expect/src/extractExpectedAssertionsErrors.ts": | 
						|
/*!****************************************************************!*\ | 
						|
  !*** ./packages/expect/src/extractExpectedAssertionsErrors.ts ***! | 
						|
  \****************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = void 0; | 
						|
 | 
						|
var _jestMatcherUtils = __webpack_require__(/*! jest-matcher-utils */ "./packages/jest-matcher-utils/build/index.js"); | 
						|
 | 
						|
var _jestMatchersObject = __webpack_require__(/*! ./jestMatchersObject */ "./packages/expect/src/jestMatchersObject.ts"); | 
						|
 | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 * | 
						|
 */ | 
						|
var resetAssertionsLocalState = function resetAssertionsLocalState() { | 
						|
  (0, _jestMatchersObject.setState)({ | 
						|
    assertionCalls: 0, | 
						|
    expectedAssertionsNumber: null, | 
						|
    isExpectingAssertions: false | 
						|
  }); | 
						|
}; // Create and format all errors related to the mismatched number of `expect` | 
						|
// calls and reset the matcher's state. | 
						|
 | 
						|
 | 
						|
var extractExpectedAssertionsErrors = function extractExpectedAssertionsErrors() { | 
						|
  var result = []; | 
						|
 | 
						|
  var _getState = (0, _jestMatchersObject.getState)(), | 
						|
      assertionCalls = _getState.assertionCalls, | 
						|
      expectedAssertionsNumber = _getState.expectedAssertionsNumber, | 
						|
      expectedAssertionsNumberError = _getState.expectedAssertionsNumberError, | 
						|
      isExpectingAssertions = _getState.isExpectingAssertions, | 
						|
      isExpectingAssertionsError = _getState.isExpectingAssertionsError; | 
						|
 | 
						|
  resetAssertionsLocalState(); | 
						|
 | 
						|
  if (typeof expectedAssertionsNumber === 'number' && assertionCalls !== expectedAssertionsNumber) { | 
						|
    var numOfAssertionsExpected = (0, _jestMatcherUtils.EXPECTED_COLOR)((0, _jestMatcherUtils.pluralize)('assertion', expectedAssertionsNumber)); | 
						|
    expectedAssertionsNumberError.message = (0, _jestMatcherUtils.matcherHint)('.assertions', '', String(expectedAssertionsNumber), { | 
						|
      isDirectExpectCall: true | 
						|
    }) + '\n\n' + "Expected ".concat(numOfAssertionsExpected, " to be called but received ") + (0, _jestMatcherUtils.RECEIVED_COLOR)((0, _jestMatcherUtils.pluralize)('assertion call', assertionCalls || 0)) + '.'; | 
						|
    result.push({ | 
						|
      actual: assertionCalls, | 
						|
      error: expectedAssertionsNumberError, | 
						|
      expected: expectedAssertionsNumber | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  if (isExpectingAssertions && assertionCalls === 0) { | 
						|
    var expected = (0, _jestMatcherUtils.EXPECTED_COLOR)('at least one assertion'); | 
						|
    var received = (0, _jestMatcherUtils.RECEIVED_COLOR)('received none'); | 
						|
    isExpectingAssertionsError.message = (0, _jestMatcherUtils.matcherHint)('.hasAssertions', '', '', { | 
						|
      isDirectExpectCall: true | 
						|
    }) + '\n\n' + "Expected ".concat(expected, " to be called but ").concat(received, "."); | 
						|
    result.push({ | 
						|
      actual: 'none', | 
						|
      error: isExpectingAssertionsError, | 
						|
      expected: 'at least one' | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  return result; | 
						|
}; | 
						|
 | 
						|
var _default = extractExpectedAssertionsErrors; | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/expect/src/index.ts": | 
						|
/*!**************************************!*\ | 
						|
  !*** ./packages/expect/src/index.ts ***! | 
						|
  \**************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
var matcherUtils = _interopRequireWildcard(__webpack_require__(/*! jest-matcher-utils */ "./packages/jest-matcher-utils/build/index.js")); | 
						|
 | 
						|
var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.ts"); | 
						|
 | 
						|
var _matchers = _interopRequireDefault(__webpack_require__(/*! ./matchers */ "./packages/expect/src/matchers.ts")); | 
						|
 | 
						|
var _spyMatchers = _interopRequireDefault(__webpack_require__(/*! ./spyMatchers */ "./packages/expect/src/spyMatchers.ts")); | 
						|
 | 
						|
var _toThrowMatchers = _interopRequireWildcard(__webpack_require__(/*! ./toThrowMatchers */ "./packages/expect/src/toThrowMatchers.ts")); | 
						|
 | 
						|
var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.ts"); | 
						|
 | 
						|
var _asymmetricMatchers = __webpack_require__(/*! ./asymmetricMatchers */ "./packages/expect/src/asymmetricMatchers.ts"); | 
						|
 | 
						|
var _jestMatchersObject = __webpack_require__(/*! ./jestMatchersObject */ "./packages/expect/src/jestMatchersObject.ts"); | 
						|
 | 
						|
var _extractExpectedAssertionsErrors = _interopRequireDefault(__webpack_require__(/*! ./extractExpectedAssertionsErrors */ "./packages/expect/src/extractExpectedAssertionsErrors.ts")); | 
						|
 | 
						|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | 
						|
 | 
						|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | 
						|
 | 
						|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } | 
						|
 | 
						|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | 
						|
 | 
						|
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } | 
						|
 | 
						|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } | 
						|
 | 
						|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } | 
						|
 | 
						|
function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } | 
						|
 | 
						|
function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } | 
						|
 | 
						|
function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } | 
						|
 | 
						|
function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } | 
						|
 | 
						|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } | 
						|
 | 
						|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } | 
						|
 | 
						|
var JestAssertionError = | 
						|
/*#__PURE__*/ | 
						|
function (_Error) { | 
						|
  _inherits(JestAssertionError, _Error); | 
						|
 | 
						|
  function JestAssertionError() { | 
						|
    _classCallCheck(this, JestAssertionError); | 
						|
 | 
						|
    return _possibleConstructorReturn(this, _getPrototypeOf(JestAssertionError).apply(this, arguments)); | 
						|
  } | 
						|
 | 
						|
  return JestAssertionError; | 
						|
}(_wrapNativeSuper(Error)); | 
						|
 | 
						|
var isPromise = function isPromise(obj) { | 
						|
  return !!obj && (_typeof(obj) === 'object' || typeof obj === 'function') && typeof obj.then === 'function'; | 
						|
}; | 
						|
 | 
						|
var createToThrowErrorMatchingSnapshotMatcher = function createToThrowErrorMatchingSnapshotMatcher(matcher) { | 
						|
  return function (received, testNameOrInlineSnapshot) { | 
						|
    return matcher.apply(this, [received, testNameOrInlineSnapshot, true]); | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var getPromiseMatcher = function getPromiseMatcher(name, matcher) { | 
						|
  if (name === 'toThrow' || name === 'toThrowError') { | 
						|
    return (0, _toThrowMatchers.createMatcher)(name, true); | 
						|
  } else if (name === 'toThrowErrorMatchingSnapshot' || name === 'toThrowErrorMatchingInlineSnapshot') { | 
						|
    return createToThrowErrorMatchingSnapshotMatcher(matcher); | 
						|
  } | 
						|
 | 
						|
  return null; | 
						|
}; | 
						|
 | 
						|
var expect = function expect(actual) { | 
						|
  if ((arguments.length <= 1 ? 0 : arguments.length - 1) !== 0) { | 
						|
    throw new Error('Expect takes at most one argument.'); | 
						|
  } | 
						|
 | 
						|
  var allMatchers = (0, _jestMatchersObject.getMatchers)(); | 
						|
  var expectation = { | 
						|
    not: {}, | 
						|
    rejects: { | 
						|
      not: {} | 
						|
    }, | 
						|
    resolves: { | 
						|
      not: {} | 
						|
    } | 
						|
  }; | 
						|
  var err = new JestAssertionError(); | 
						|
  Object.keys(allMatchers).forEach(function (name) { | 
						|
    var matcher = allMatchers[name]; | 
						|
    var promiseMatcher = getPromiseMatcher(name, matcher) || matcher; | 
						|
    expectation[name] = makeThrowingMatcher(matcher, false, '', actual); | 
						|
    expectation.not[name] = makeThrowingMatcher(matcher, true, '', actual); | 
						|
    expectation.resolves[name] = makeResolveMatcher(name, promiseMatcher, false, actual, err); | 
						|
    expectation.resolves.not[name] = makeResolveMatcher(name, promiseMatcher, true, actual, err); | 
						|
    expectation.rejects[name] = makeRejectMatcher(name, promiseMatcher, false, actual, err); | 
						|
    expectation.rejects.not[name] = makeRejectMatcher(name, promiseMatcher, true, actual, err); | 
						|
  }); | 
						|
  return expectation; | 
						|
}; | 
						|
 | 
						|
var getMessage = function getMessage(message) { | 
						|
  return message && message() || matcherUtils.RECEIVED_COLOR('No message was specified for this matcher.'); | 
						|
}; | 
						|
 | 
						|
var makeResolveMatcher = function makeResolveMatcher(matcherName, matcher, isNot, actual, outerErr) { | 
						|
  return function () { | 
						|
    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { | 
						|
      args[_key] = arguments[_key]; | 
						|
    } | 
						|
 | 
						|
    var options = { | 
						|
      isNot: isNot, | 
						|
      promise: 'resolves' | 
						|
    }; | 
						|
 | 
						|
    if (!isPromise(actual)) { | 
						|
      throw new JestAssertionError(matcherUtils.matcherErrorMessage(matcherUtils.matcherHint(matcherName, undefined, '', options), "".concat(matcherUtils.RECEIVED_COLOR('received'), " value must be a promise"), matcherUtils.printWithType('Received', actual, matcherUtils.printReceived))); | 
						|
    } | 
						|
 | 
						|
    var innerErr = new JestAssertionError(); | 
						|
    return actual.then(function (result) { | 
						|
      return makeThrowingMatcher(matcher, isNot, 'resolves', result, innerErr).apply(null, args); | 
						|
    }, function (reason) { | 
						|
      outerErr.message = matcherUtils.matcherHint(matcherName, undefined, '', options) + '\n\n' + "Received promise rejected instead of resolved\n" + "Rejected to value: ".concat(matcherUtils.printReceived(reason)); | 
						|
      return Promise.reject(outerErr); | 
						|
    }); | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var makeRejectMatcher = function makeRejectMatcher(matcherName, matcher, isNot, actual, outerErr) { | 
						|
  return function () { | 
						|
    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | 
						|
      args[_key2] = arguments[_key2]; | 
						|
    } | 
						|
 | 
						|
    var options = { | 
						|
      isNot: isNot, | 
						|
      promise: 'rejects' | 
						|
    }; | 
						|
 | 
						|
    if (!isPromise(actual)) { | 
						|
      throw new JestAssertionError(matcherUtils.matcherErrorMessage(matcherUtils.matcherHint(matcherName, undefined, '', options), "".concat(matcherUtils.RECEIVED_COLOR('received'), " value must be a promise"), matcherUtils.printWithType('Received', actual, matcherUtils.printReceived))); | 
						|
    } | 
						|
 | 
						|
    var innerErr = new JestAssertionError(); | 
						|
    return actual.then(function (result) { | 
						|
      outerErr.message = matcherUtils.matcherHint(matcherName, undefined, '', options) + '\n\n' + "Received promise resolved instead of rejected\n" + "Resolved to value: ".concat(matcherUtils.printReceived(result)); | 
						|
      return Promise.reject(outerErr); | 
						|
    }, function (reason) { | 
						|
      return makeThrowingMatcher(matcher, isNot, 'rejects', reason, innerErr).apply(null, args); | 
						|
    }); | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var makeThrowingMatcher = function makeThrowingMatcher(matcher, isNot, promise, actual, err) { | 
						|
  return function throwingMatcher() { | 
						|
    var throws = true; | 
						|
 | 
						|
    var utils = _objectSpread({}, matcherUtils, { | 
						|
      iterableEquality: _utils.iterableEquality, | 
						|
      subsetEquality: _utils.subsetEquality | 
						|
    }); | 
						|
 | 
						|
    var matcherContext = _objectSpread({ | 
						|
      // When throws is disabled, the matcher will not throw errors during test | 
						|
      // execution but instead add them to the global matcher state. If a | 
						|
      // matcher throws, test execution is normally stopped immediately. The | 
						|
      // snapshot matcher uses it because we want to log all snapshot | 
						|
      // failures in a test. | 
						|
      dontThrow: function dontThrow() { | 
						|
        return throws = false; | 
						|
      } | 
						|
    }, (0, _jestMatchersObject.getState)(), { | 
						|
      equals: _jasmineUtils.equals, | 
						|
      error: err, | 
						|
      isNot: isNot, | 
						|
      promise: promise, | 
						|
      utils: utils | 
						|
    }); | 
						|
 | 
						|
    var processResult = function processResult(result, asyncError) { | 
						|
      _validateResult(result); | 
						|
 | 
						|
      (0, _jestMatchersObject.getState)().assertionCalls++; | 
						|
 | 
						|
      if (result.pass && isNot || !result.pass && !isNot) { | 
						|
        // XOR | 
						|
        var message = getMessage(result.message); | 
						|
        var error; | 
						|
 | 
						|
        if (err) { | 
						|
          error = err; | 
						|
          error.message = message; | 
						|
        } else if (asyncError) { | 
						|
          error = asyncError; | 
						|
          error.message = message; | 
						|
        } else { | 
						|
          error = new JestAssertionError(message); // Try to remove this function from the stack trace frame. | 
						|
          // Guard for some environments (browsers) that do not support this feature. | 
						|
 | 
						|
          if (Error.captureStackTrace) { | 
						|
            Error.captureStackTrace(error, throwingMatcher); | 
						|
          } | 
						|
        } // Passing the result of the matcher with the error so that a custom | 
						|
        // reporter could access the actual and expected objects of the result | 
						|
        // for example in order to display a custom visual diff | 
						|
 | 
						|
 | 
						|
        error.matcherResult = result; | 
						|
 | 
						|
        if (throws) { | 
						|
          throw error; | 
						|
        } else { | 
						|
          (0, _jestMatchersObject.getState)().suppressedErrors.push(error); | 
						|
        } | 
						|
      } | 
						|
    }; | 
						|
 | 
						|
    var handlError = function handlError(error) { | 
						|
      if (matcher[_jestMatchersObject.INTERNAL_MATCHER_FLAG] === true && !(error instanceof JestAssertionError) && error.name !== 'PrettyFormatPluginError' && // Guard for some environments (browsers) that do not support this feature. | 
						|
      Error.captureStackTrace) { | 
						|
        // Try to remove this and deeper functions from the stack trace frame. | 
						|
        Error.captureStackTrace(error, throwingMatcher); | 
						|
      } | 
						|
 | 
						|
      throw error; | 
						|
    }; | 
						|
 | 
						|
    var potentialResult; | 
						|
 | 
						|
    try { | 
						|
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { | 
						|
        args[_key3] = arguments[_key3]; | 
						|
      } | 
						|
 | 
						|
      potentialResult = matcher.call.apply(matcher, [matcherContext, actual].concat(args)); | 
						|
 | 
						|
      if (isPromise(potentialResult)) { | 
						|
        var asyncResult = potentialResult; | 
						|
        var asyncError = new JestAssertionError(); | 
						|
 | 
						|
        if (Error.captureStackTrace) { | 
						|
          Error.captureStackTrace(asyncError, throwingMatcher); | 
						|
        } | 
						|
 | 
						|
        return asyncResult.then(function (aResult) { | 
						|
          return processResult(aResult, asyncError); | 
						|
        }).catch(function (error) { | 
						|
          return handlError(error); | 
						|
        }); | 
						|
      } else { | 
						|
        var syncResult = potentialResult; | 
						|
        return processResult(syncResult); | 
						|
      } | 
						|
    } catch (error) { | 
						|
      return handlError(error); | 
						|
    } | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
expect.extend = function (matchers) { | 
						|
  return (0, _jestMatchersObject.setMatchers)(matchers, false, expect); | 
						|
}; | 
						|
 | 
						|
expect.anything = _asymmetricMatchers.anything; | 
						|
expect.any = _asymmetricMatchers.any; | 
						|
expect.not = { | 
						|
  arrayContaining: _asymmetricMatchers.arrayNotContaining, | 
						|
  objectContaining: _asymmetricMatchers.objectNotContaining, | 
						|
  stringContaining: _asymmetricMatchers.stringNotContaining, | 
						|
  stringMatching: _asymmetricMatchers.stringNotMatching | 
						|
}; | 
						|
expect.objectContaining = _asymmetricMatchers.objectContaining; | 
						|
expect.arrayContaining = _asymmetricMatchers.arrayContaining; | 
						|
expect.stringContaining = _asymmetricMatchers.stringContaining; | 
						|
expect.stringMatching = _asymmetricMatchers.stringMatching; | 
						|
 | 
						|
var _validateResult = function _validateResult(result) { | 
						|
  if (_typeof(result) !== 'object' || typeof result.pass !== 'boolean' || result.message && typeof result.message !== 'string' && typeof result.message !== 'function') { | 
						|
    throw new Error('Unexpected return from a matcher function.\n' + 'Matcher functions should ' + 'return an object in the following format:\n' + '  {message?: string | function, pass: boolean}\n' + "'".concat(matcherUtils.stringify(result), "' was returned")); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
function assertions(expected) { | 
						|
  var error = new Error(); | 
						|
 | 
						|
  if (Error.captureStackTrace) { | 
						|
    Error.captureStackTrace(error, assertions); | 
						|
  } | 
						|
 | 
						|
  (0, _jestMatchersObject.getState)().expectedAssertionsNumber = expected; | 
						|
  (0, _jestMatchersObject.getState)().expectedAssertionsNumberError = error; | 
						|
} | 
						|
 | 
						|
function hasAssertions() { | 
						|
  var error = new Error(); | 
						|
 | 
						|
  if (Error.captureStackTrace) { | 
						|
    Error.captureStackTrace(error, hasAssertions); | 
						|
  } | 
						|
 | 
						|
  matcherUtils.ensureNoExpected(arguments.length <= 0 ? undefined : arguments[0], '.hasAssertions'); | 
						|
  (0, _jestMatchersObject.getState)().isExpectingAssertions = true; | 
						|
  (0, _jestMatchersObject.getState)().isExpectingAssertionsError = error; | 
						|
} // add default jest matchers | 
						|
 | 
						|
 | 
						|
(0, _jestMatchersObject.setMatchers)(_matchers.default, true, expect); | 
						|
(0, _jestMatchersObject.setMatchers)(_spyMatchers.default, true, expect); | 
						|
(0, _jestMatchersObject.setMatchers)(_toThrowMatchers.default, true, expect); | 
						|
 | 
						|
expect.addSnapshotSerializer = function () { | 
						|
  return void 0; | 
						|
}; | 
						|
 | 
						|
expect.assertions = assertions; | 
						|
expect.hasAssertions = hasAssertions; | 
						|
expect.getState = _jestMatchersObject.getState; | 
						|
expect.setState = _jestMatchersObject.setState; | 
						|
expect.extractExpectedAssertionsErrors = _extractExpectedAssertionsErrors.default; | 
						|
var expectExport = expect; // eslint-disable-next-line no-redeclare | 
						|
 | 
						|
module.exports = expectExport; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/expect/src/jasmineUtils.ts": | 
						|
/*!*********************************************!*\ | 
						|
  !*** ./packages/expect/src/jasmineUtils.ts ***! | 
						|
  \*********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.equals = equals; | 
						|
exports.isA = isA; | 
						|
exports.fnNameFor = fnNameFor; | 
						|
exports.isUndefined = isUndefined; | 
						|
exports.hasProperty = hasProperty; | 
						|
exports.isImmutableUnorderedKeyed = isImmutableUnorderedKeyed; | 
						|
exports.isImmutableUnorderedSet = isImmutableUnorderedSet; | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
/* | 
						|
Copyright (c) 2008-2016 Pivotal Labs | 
						|
 | 
						|
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. | 
						|
 | 
						|
*/ | 
						|
 | 
						|
/* eslint-disable */ | 
						|
// Extracted out of jasmine 2.5.2 | 
						|
function equals(a, b, customTesters, strictCheck) { | 
						|
  customTesters = customTesters || []; | 
						|
  return eq(a, b, [], [], customTesters, strictCheck ? hasKey : hasDefinedKey); | 
						|
} | 
						|
 | 
						|
var functionToString = Function.prototype.toString; | 
						|
 | 
						|
function isAsymmetric(obj) { | 
						|
  return !!obj && isA('Function', obj.asymmetricMatch); | 
						|
} | 
						|
 | 
						|
function asymmetricMatch(a, b) { | 
						|
  var asymmetricA = isAsymmetric(a), | 
						|
      asymmetricB = isAsymmetric(b); | 
						|
 | 
						|
  if (asymmetricA && asymmetricB) { | 
						|
    return undefined; | 
						|
  } | 
						|
 | 
						|
  if (asymmetricA) { | 
						|
    return a.asymmetricMatch(b); | 
						|
  } | 
						|
 | 
						|
  if (asymmetricB) { | 
						|
    return b.asymmetricMatch(a); | 
						|
  } | 
						|
} // Equality function lovingly adapted from isEqual in | 
						|
//   [Underscore](http://underscorejs.org) | 
						|
 | 
						|
 | 
						|
function eq(a, b, aStack, bStack, customTesters, hasKey) { | 
						|
  var result = true; | 
						|
  var asymmetricResult = asymmetricMatch(a, b); | 
						|
 | 
						|
  if (asymmetricResult !== undefined) { | 
						|
    return asymmetricResult; | 
						|
  } | 
						|
 | 
						|
  for (var i = 0; i < customTesters.length; i++) { | 
						|
    var customTesterResult = customTesters[i](a, b); | 
						|
 | 
						|
    if (customTesterResult !== undefined) { | 
						|
      return customTesterResult; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (a instanceof Error && b instanceof Error) { | 
						|
    return a.message == b.message; | 
						|
  } | 
						|
 | 
						|
  if (Object.is(a, b)) { | 
						|
    return true; | 
						|
  } // A strict comparison is necessary because `null == undefined`. | 
						|
 | 
						|
 | 
						|
  if (a === null || b === null) { | 
						|
    return a === b; | 
						|
  } | 
						|
 | 
						|
  var className = Object.prototype.toString.call(a); | 
						|
 | 
						|
  if (className != Object.prototype.toString.call(b)) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  switch (className) { | 
						|
    // Strings, numbers, dates, and booleans are compared by value. | 
						|
    case '[object String]': | 
						|
      // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is | 
						|
      // equivalent to `new String("5")`. | 
						|
      return a == String(b); | 
						|
 | 
						|
    case '[object Number]': | 
						|
      return Object.is(Number(a), Number(b)); | 
						|
 | 
						|
    case '[object Date]': | 
						|
    case '[object Boolean]': | 
						|
      // Coerce dates and booleans to numeric primitive values. Dates are compared by their | 
						|
      // millisecond representations. Note that invalid dates with millisecond representations | 
						|
      // of `NaN` are not equivalent. | 
						|
      return +a == +b; | 
						|
    // RegExps are compared by their source patterns and flags. | 
						|
 | 
						|
    case '[object RegExp]': | 
						|
      return a.source == b.source && a.global == b.global && a.multiline == b.multiline && a.ignoreCase == b.ignoreCase; | 
						|
  } | 
						|
 | 
						|
  if (_typeof(a) != 'object' || _typeof(b) != 'object') { | 
						|
    return false; | 
						|
  } // Use DOM3 method isEqualNode (IE>=9) | 
						|
 | 
						|
 | 
						|
  if (isDomNode(a) && isDomNode(b)) { | 
						|
    return a.isEqualNode(b); | 
						|
  } // Used to detect circular references. | 
						|
 | 
						|
 | 
						|
  var length = aStack.length; | 
						|
 | 
						|
  while (length--) { | 
						|
    // Linear search. Performance is inversely proportional to the number of | 
						|
    // unique nested structures. | 
						|
    // circular references at same depth are equal | 
						|
    // circular reference is not equal to non-circular one | 
						|
    if (aStack[length] === a) { | 
						|
      return bStack[length] === b; | 
						|
    } else if (bStack[length] === b) { | 
						|
      return false; | 
						|
    } | 
						|
  } // Add the first object to the stack of traversed objects. | 
						|
 | 
						|
 | 
						|
  aStack.push(a); | 
						|
  bStack.push(b); | 
						|
  var size = 0; // Recursively compare objects and arrays. | 
						|
  // Compare array lengths to determine if a deep comparison is necessary. | 
						|
 | 
						|
  if (className == '[object Array]') { | 
						|
    size = a.length; | 
						|
 | 
						|
    if (size !== b.length) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    while (size--) { | 
						|
      result = eq(a[size], b[size], aStack, bStack, customTesters, hasKey); | 
						|
 | 
						|
      if (!result) { | 
						|
        return false; | 
						|
      } | 
						|
    } | 
						|
  } // Deep compare objects. | 
						|
 | 
						|
 | 
						|
  var aKeys = keys(a, className == '[object Array]', hasKey), | 
						|
      key; | 
						|
  size = aKeys.length; // Ensure that both objects contain the same number of properties before comparing deep equality. | 
						|
 | 
						|
  if (keys(b, className == '[object Array]', hasKey).length !== size) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  while (size--) { | 
						|
    key = aKeys[size]; // Deep compare each member | 
						|
 | 
						|
    result = hasKey(b, key) && eq(a[key], b[key], aStack, bStack, customTesters, hasKey); | 
						|
 | 
						|
    if (!result) { | 
						|
      return false; | 
						|
    } | 
						|
  } // Remove the first object from the stack of traversed objects. | 
						|
 | 
						|
 | 
						|
  aStack.pop(); | 
						|
  bStack.pop(); | 
						|
  return result; | 
						|
} | 
						|
 | 
						|
function keys(obj, isArray, hasKey) { | 
						|
  var allKeys = function (o) { | 
						|
    var keys = []; | 
						|
 | 
						|
    for (var key in o) { | 
						|
      if (hasKey(o, key)) { | 
						|
        keys.push(key); | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return keys.concat(Object.getOwnPropertySymbols(o).filter(function (symbol) { | 
						|
      return Object.getOwnPropertyDescriptor(o, symbol).enumerable; | 
						|
    })); | 
						|
  }(obj); | 
						|
 | 
						|
  if (!isArray) { | 
						|
    return allKeys; | 
						|
  } | 
						|
 | 
						|
  var extraKeys = []; | 
						|
 | 
						|
  if (allKeys.length === 0) { | 
						|
    return allKeys; | 
						|
  } | 
						|
 | 
						|
  for (var x = 0; x < allKeys.length; x++) { | 
						|
    if (_typeof(allKeys[x]) === 'symbol' || !allKeys[x].match(/^[0-9]+$/)) { | 
						|
      extraKeys.push(allKeys[x]); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return extraKeys; | 
						|
} | 
						|
 | 
						|
function hasDefinedKey(obj, key) { | 
						|
  return hasKey(obj, key) && obj[key] !== undefined; | 
						|
} | 
						|
 | 
						|
function hasKey(obj, key) { | 
						|
  return Object.prototype.hasOwnProperty.call(obj, key); | 
						|
} | 
						|
 | 
						|
function isA(typeName, value) { | 
						|
  return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; | 
						|
} | 
						|
 | 
						|
function isDomNode(obj) { | 
						|
  return obj !== null && _typeof(obj) === 'object' && typeof obj.nodeType === 'number' && typeof obj.nodeName === 'string' && typeof obj.isEqualNode === 'function'; | 
						|
} | 
						|
 | 
						|
function fnNameFor(func) { | 
						|
  if (func.name) { | 
						|
    return func.name; | 
						|
  } | 
						|
 | 
						|
  var matches = functionToString.call(func).match(/^(?:async)?\s*function\s*\*?\s*([\w$]+)\s*\(/); | 
						|
  return matches ? matches[1] : '<anonymous>'; | 
						|
} | 
						|
 | 
						|
function isUndefined(obj) { | 
						|
  return obj === void 0; | 
						|
} | 
						|
 | 
						|
function getPrototype(obj) { | 
						|
  if (Object.getPrototypeOf) { | 
						|
    return Object.getPrototypeOf(obj); | 
						|
  } | 
						|
 | 
						|
  if (obj.constructor.prototype == obj) { | 
						|
    return null; | 
						|
  } | 
						|
 | 
						|
  return obj.constructor.prototype; | 
						|
} | 
						|
 | 
						|
function hasProperty(obj, property) { | 
						|
  if (!obj) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (Object.prototype.hasOwnProperty.call(obj, property)) { | 
						|
    return true; | 
						|
  } | 
						|
 | 
						|
  return hasProperty(getPrototype(obj), property); | 
						|
} // SENTINEL constants are from https://github.com/facebook/immutable-js | 
						|
 | 
						|
 | 
						|
var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@'; | 
						|
var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@'; | 
						|
var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@'; | 
						|
 | 
						|
function isImmutableUnorderedKeyed(maybeKeyed) { | 
						|
  return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL] && !maybeKeyed[IS_ORDERED_SENTINEL]); | 
						|
} | 
						|
 | 
						|
function isImmutableUnorderedSet(maybeSet) { | 
						|
  return !!(maybeSet && maybeSet[IS_SET_SENTINEL] && !maybeSet[IS_ORDERED_SENTINEL]); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/expect/src/jestMatchersObject.ts": | 
						|
/*!***************************************************!*\ | 
						|
  !*** ./packages/expect/src/jestMatchersObject.ts ***! | 
						|
  \***************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(global) { | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.setMatchers = exports.getMatchers = exports.setState = exports.getState = exports.INTERNAL_MATCHER_FLAG = void 0; | 
						|
 | 
						|
var _asymmetricMatchers = __webpack_require__(/*! ./asymmetricMatchers */ "./packages/expect/src/asymmetricMatchers.ts"); | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } | 
						|
 | 
						|
function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } | 
						|
 | 
						|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } | 
						|
 | 
						|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } | 
						|
 | 
						|
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } | 
						|
 | 
						|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } | 
						|
 | 
						|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | 
						|
 | 
						|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } | 
						|
 | 
						|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } | 
						|
 | 
						|
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } | 
						|
 | 
						|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } | 
						|
 | 
						|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } | 
						|
 | 
						|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } | 
						|
 | 
						|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } | 
						|
 | 
						|
// Global matchers object holds the list of available matchers and | 
						|
// the state, that can hold matcher specific values that change over time. | 
						|
var JEST_MATCHERS_OBJECT = Symbol.for('$$jest-matchers-object'); // Notes a built-in/internal Jest matcher. | 
						|
// Jest may override the stack trace of Errors thrown by internal matchers. | 
						|
 | 
						|
var INTERNAL_MATCHER_FLAG = Symbol.for('$$jest-internal-matcher'); | 
						|
exports.INTERNAL_MATCHER_FLAG = INTERNAL_MATCHER_FLAG; | 
						|
 | 
						|
if (!global.hasOwnProperty(JEST_MATCHERS_OBJECT)) { | 
						|
  Object.defineProperty(global, JEST_MATCHERS_OBJECT, { | 
						|
    value: { | 
						|
      matchers: Object.create(null), | 
						|
      state: { | 
						|
        assertionCalls: 0, | 
						|
        expectedAssertionsNumber: null, | 
						|
        isExpectingAssertions: false, | 
						|
        suppressedErrors: [] // errors that are not thrown immediately. | 
						|
 | 
						|
      } | 
						|
    } | 
						|
  }); | 
						|
} | 
						|
 | 
						|
var getState = function getState() { | 
						|
  return global[JEST_MATCHERS_OBJECT].state; | 
						|
}; | 
						|
 | 
						|
exports.getState = getState; | 
						|
 | 
						|
var setState = function setState(state) { | 
						|
  Object.assign(global[JEST_MATCHERS_OBJECT].state, state); | 
						|
}; | 
						|
 | 
						|
exports.setState = setState; | 
						|
 | 
						|
var getMatchers = function getMatchers() { | 
						|
  return global[JEST_MATCHERS_OBJECT].matchers; | 
						|
}; | 
						|
 | 
						|
exports.getMatchers = getMatchers; | 
						|
 | 
						|
var setMatchers = function setMatchers(matchers, isInternal, expect) { | 
						|
  Object.keys(matchers).forEach(function (key) { | 
						|
    var matcher = matchers[key]; | 
						|
    Object.defineProperty(matcher, INTERNAL_MATCHER_FLAG, { | 
						|
      value: isInternal | 
						|
    }); | 
						|
 | 
						|
    if (!isInternal) { | 
						|
      // expect is defined | 
						|
      var CustomMatcher = | 
						|
      /*#__PURE__*/ | 
						|
      function (_AsymmetricMatcher) { | 
						|
        _inherits(CustomMatcher, _AsymmetricMatcher); | 
						|
 | 
						|
        function CustomMatcher() { | 
						|
          var _this; | 
						|
 | 
						|
          var inverse = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; | 
						|
 | 
						|
          _classCallCheck(this, CustomMatcher); | 
						|
 | 
						|
          for (var _len = arguments.length, sample = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | 
						|
            sample[_key - 1] = arguments[_key]; | 
						|
          } | 
						|
 | 
						|
          _this = _possibleConstructorReturn(this, _getPrototypeOf(CustomMatcher).call(this, sample)); | 
						|
          _this.inverse = inverse; | 
						|
          return _this; | 
						|
        } | 
						|
 | 
						|
        _createClass(CustomMatcher, [{ | 
						|
          key: "asymmetricMatch", | 
						|
          value: function asymmetricMatch(other) { | 
						|
            var _ref = matcher.apply(void 0, [other].concat(_toConsumableArray(this.sample))), | 
						|
                pass = _ref.pass; | 
						|
 | 
						|
            return this.inverse ? !pass : pass; | 
						|
          } | 
						|
        }, { | 
						|
          key: "toString", | 
						|
          value: function toString() { | 
						|
            return "".concat(this.inverse ? 'not.' : '').concat(key); | 
						|
          } | 
						|
        }, { | 
						|
          key: "getExpectedType", | 
						|
          value: function getExpectedType() { | 
						|
            return 'any'; | 
						|
          } | 
						|
        }, { | 
						|
          key: "toAsymmetricMatcher", | 
						|
          value: function toAsymmetricMatcher() { | 
						|
            return "".concat(this.toString(), "<").concat(this.sample.join(', '), ">"); | 
						|
          } | 
						|
        }]); | 
						|
 | 
						|
        return CustomMatcher; | 
						|
      }(_asymmetricMatchers.AsymmetricMatcher); | 
						|
 | 
						|
      expect[key] = function () { | 
						|
        for (var _len2 = arguments.length, sample = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | 
						|
          sample[_key2] = arguments[_key2]; | 
						|
        } | 
						|
 | 
						|
        return _construct(CustomMatcher, [false].concat(sample)); | 
						|
      }; | 
						|
 | 
						|
      if (!expect.not) { | 
						|
        expect.not = {}; | 
						|
      } | 
						|
 | 
						|
      expect.not[key] = function () { | 
						|
        for (var _len3 = arguments.length, sample = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { | 
						|
          sample[_key3] = arguments[_key3]; | 
						|
        } | 
						|
 | 
						|
        return _construct(CustomMatcher, [true].concat(sample)); | 
						|
      }; | 
						|
    } | 
						|
  }); | 
						|
  Object.assign(global[JEST_MATCHERS_OBJECT].matchers, matchers); | 
						|
}; | 
						|
 | 
						|
exports.setMatchers = setMatchers; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/expect/src/matchers.ts": | 
						|
/*!*****************************************!*\ | 
						|
  !*** ./packages/expect/src/matchers.ts ***! | 
						|
  \*****************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = void 0; | 
						|
 | 
						|
var _jestGetType = _interopRequireWildcard(__webpack_require__(/*! jest-get-type */ "./packages/jest-get-type/build/index.js")); | 
						|
 | 
						|
var _jestMatcherUtils = __webpack_require__(/*! jest-matcher-utils */ "./packages/jest-matcher-utils/build/index.js"); | 
						|
 | 
						|
var _print = __webpack_require__(/*! ./print */ "./packages/expect/src/print.ts"); | 
						|
 | 
						|
var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.ts"); | 
						|
 | 
						|
var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.ts"); | 
						|
 | 
						|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
// Omit colon and one or more spaces, so can call getLabelPrinter. | 
						|
var EXPECTED_LABEL = 'Expected'; | 
						|
var RECEIVED_LABEL = 'Received'; | 
						|
var EXPECTED_VALUE_LABEL = 'Expected value'; | 
						|
var RECEIVED_VALUE_LABEL = 'Received value'; // The optional property of matcher context is true if undefined. | 
						|
 | 
						|
var isExpand = function isExpand(expand) { | 
						|
  return expand !== false; | 
						|
}; | 
						|
 | 
						|
var toStrictEqualTesters = [_utils.iterableEquality, _utils.typeEquality, _utils.sparseArrayEquality]; | 
						|
var matchers = { | 
						|
  toBe: function toBe(received, expected) { | 
						|
    var _this = this; | 
						|
 | 
						|
    var matcherName = 'toBe'; | 
						|
    var options = { | 
						|
      comment: 'Object.is equality', | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    var pass = Object.is(received, expected); | 
						|
    var message = pass ? function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected: not ".concat((0, _jestMatcherUtils.printExpected)(expected)); | 
						|
    } : function () { | 
						|
      var expectedType = (0, _jestGetType.default)(expected); | 
						|
      var deepEqualityName = null; | 
						|
 | 
						|
      if (expectedType !== 'map' && expectedType !== 'set') { | 
						|
        // If deep equality passes when referential identity fails, | 
						|
        // but exclude map and set until review of their equality logic. | 
						|
        if ((0, _jasmineUtils.equals)(received, expected, toStrictEqualTesters, true)) { | 
						|
          deepEqualityName = 'toStrictEqual'; | 
						|
        } else if ((0, _jasmineUtils.equals)(received, expected, [_utils.iterableEquality])) { | 
						|
          deepEqualityName = 'toEqual'; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + (deepEqualityName !== null ? (0, _jestMatcherUtils.DIM_COLOR)("If it should pass with deep equality, replace \"".concat(matcherName, "\" with \"").concat(deepEqualityName, "\"")) + '\n\n' : '') + (0, _jestMatcherUtils.printDiffOrStringify)(expected, received, EXPECTED_LABEL, RECEIVED_LABEL, isExpand(_this.expand)); | 
						|
    }; // Passing the actual and expected objects so that a custom reporter | 
						|
    // could access them, for example in order to display a custom visual diff, | 
						|
    // or create a different error message | 
						|
 | 
						|
    return { | 
						|
      actual: received, | 
						|
      expected: expected, | 
						|
      message: message, | 
						|
      name: matcherName, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeCloseTo: function toBeCloseTo(received, expected) { | 
						|
    var precision = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 2; | 
						|
    var matcherName = 'toBeCloseTo'; | 
						|
    var secondArgument = arguments.length === 3 ? 'precision' : undefined; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise, | 
						|
      secondArgument: secondArgument, | 
						|
      secondArgumentColor: function secondArgumentColor(arg) { | 
						|
        return arg; | 
						|
      } | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNumbers)(received, expected, matcherName, options); | 
						|
    var pass = false; | 
						|
    var expectedDiff = 0; | 
						|
    var receivedDiff = 0; | 
						|
 | 
						|
    if (received === Infinity && expected === Infinity) { | 
						|
      pass = true; // Infinity - Infinity is NaN | 
						|
    } else if (received === -Infinity && expected === -Infinity) { | 
						|
      pass = true; // -Infinity - -Infinity is NaN | 
						|
    } else { | 
						|
      expectedDiff = Math.pow(10, -precision) / 2; | 
						|
      receivedDiff = Math.abs(expected - received); | 
						|
      pass = receivedDiff < expectedDiff; | 
						|
    } | 
						|
 | 
						|
    var message = pass ? function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected: not ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + (receivedDiff === 0 ? '' : "Received:     ".concat((0, _jestMatcherUtils.printReceived)(received), "\n") + '\n' + "Expected precision:        ".concat((0, _jestMatcherUtils.stringify)(precision), "\n") + "Expected difference: not < ".concat((0, _jestMatcherUtils.printExpected)(expectedDiff), "\n") + "Received difference:       ".concat((0, _jestMatcherUtils.printReceived)(receivedDiff))); | 
						|
    } : function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected: ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "Received: ".concat((0, _jestMatcherUtils.printReceived)(received), "\n") + '\n' + "Expected precision:    ".concat((0, _jestMatcherUtils.stringify)(precision), "\n") + "Expected difference: < ".concat((0, _jestMatcherUtils.printExpected)(expectedDiff), "\n") + "Received difference:   ".concat((0, _jestMatcherUtils.printReceived)(receivedDiff)); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeDefined: function toBeDefined(received, expected) { | 
						|
    var matcherName = 'toBeDefined'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options); | 
						|
    var pass = received !== void 0; | 
						|
 | 
						|
    var message = function message() { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) + '\n\n' + "Received: ".concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeFalsy: function toBeFalsy(received, expected) { | 
						|
    var matcherName = 'toBeFalsy'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options); | 
						|
    var pass = !received; | 
						|
 | 
						|
    var message = function message() { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) + '\n\n' + "Received: ".concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeGreaterThan: function toBeGreaterThan(received, expected) { | 
						|
    var matcherName = 'toBeGreaterThan'; | 
						|
    var isNot = this.isNot; | 
						|
    var options = { | 
						|
      isNot: isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNumbers)(received, expected, matcherName, options); | 
						|
    var pass = received > expected; | 
						|
 | 
						|
    var message = function message() { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected:".concat(isNot ? ' not' : '', " > ").concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "Received:".concat(isNot ? '    ' : '', "   ").concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeGreaterThanOrEqual: function toBeGreaterThanOrEqual(received, expected) { | 
						|
    var matcherName = 'toBeGreaterThanOrEqual'; | 
						|
    var isNot = this.isNot; | 
						|
    var options = { | 
						|
      isNot: isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNumbers)(received, expected, matcherName, options); | 
						|
    var pass = received >= expected; | 
						|
 | 
						|
    var message = function message() { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected:".concat(isNot ? ' not' : '', " >= ").concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "Received:".concat(isNot ? '    ' : '', "    ").concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeInstanceOf: function toBeInstanceOf(received, expected) { | 
						|
    var matcherName = 'toBeInstanceOf'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
 | 
						|
    if (typeof expected !== 'function') { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options), "".concat((0, _jestMatcherUtils.EXPECTED_COLOR)('expected'), " value must be a function"), (0, _jestMatcherUtils.printWithType)('Expected', expected, _jestMatcherUtils.printExpected))); | 
						|
    } | 
						|
 | 
						|
    var pass = received instanceof expected; | 
						|
    var message = pass ? function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + (0, _print.printExpectedConstructorNameNot)('Expected constructor', expected) + (typeof received.constructor === 'function' && received.constructor !== expected ? (0, _print.printReceivedConstructorNameNot)('Received constructor', received.constructor, expected) : ''); | 
						|
    } : function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + (0, _print.printExpectedConstructorName)('Expected constructor', expected) + ((0, _jestGetType.isPrimitive)(received) || Object.getPrototypeOf(received) === null ? "\nReceived value has no prototype\nReceived value: ".concat((0, _jestMatcherUtils.printReceived)(received)) : typeof received.constructor !== 'function' ? "\nReceived value: ".concat((0, _jestMatcherUtils.printReceived)(received)) : (0, _print.printReceivedConstructorName)('Received constructor', received.constructor)); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeLessThan: function toBeLessThan(received, expected) { | 
						|
    var matcherName = 'toBeLessThan'; | 
						|
    var isNot = this.isNot; | 
						|
    var options = { | 
						|
      isNot: isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNumbers)(received, expected, matcherName, options); | 
						|
    var pass = received < expected; | 
						|
 | 
						|
    var message = function message() { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected:".concat(isNot ? ' not' : '', " < ").concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "Received:".concat(isNot ? '    ' : '', "   ").concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeLessThanOrEqual: function toBeLessThanOrEqual(received, expected) { | 
						|
    var matcherName = 'toBeLessThanOrEqual'; | 
						|
    var isNot = this.isNot; | 
						|
    var options = { | 
						|
      isNot: isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNumbers)(received, expected, matcherName, options); | 
						|
    var pass = received <= expected; | 
						|
 | 
						|
    var message = function message() { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected:".concat(isNot ? ' not' : '', " <= ").concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "Received:".concat(isNot ? '    ' : '', "    ").concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeNaN: function toBeNaN(received, expected) { | 
						|
    var matcherName = 'toBeNaN'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options); | 
						|
    var pass = Number.isNaN(received); | 
						|
 | 
						|
    var message = function message() { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) + '\n\n' + "Received: ".concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeNull: function toBeNull(received, expected) { | 
						|
    var matcherName = 'toBeNull'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options); | 
						|
    var pass = received === null; | 
						|
 | 
						|
    var message = function message() { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) + '\n\n' + "Received: ".concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeTruthy: function toBeTruthy(received, expected) { | 
						|
    var matcherName = 'toBeTruthy'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options); | 
						|
    var pass = !!received; | 
						|
 | 
						|
    var message = function message() { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) + '\n\n' + "Received: ".concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toBeUndefined: function toBeUndefined(received, expected) { | 
						|
    var matcherName = 'toBeUndefined'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options); | 
						|
    var pass = received === void 0; | 
						|
 | 
						|
    var message = function message() { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) + '\n\n' + "Received: ".concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toContain: function toContain(received, expected) { | 
						|
    var matcherName = 'toContain'; | 
						|
    var isNot = this.isNot; | 
						|
    var options = { | 
						|
      comment: 'indexOf', | 
						|
      isNot: isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
 | 
						|
    if (received == null) { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options), "".concat((0, _jestMatcherUtils.RECEIVED_COLOR)('received'), " value must not be null nor undefined"), (0, _jestMatcherUtils.printWithType)('Received', received, _jestMatcherUtils.printReceived))); | 
						|
    } | 
						|
 | 
						|
    if (typeof received === 'string') { | 
						|
      var _index = received.indexOf(String(expected)); | 
						|
 | 
						|
      var _pass = _index !== -1; | 
						|
 | 
						|
      var _message = function _message() { | 
						|
        var labelExpected = "Expected ".concat(typeof expected === 'string' ? 'substring' : 'value'); | 
						|
        var labelReceived = 'Received string'; | 
						|
        var printLabel = (0, _jestMatcherUtils.getLabelPrinter)(labelExpected, labelReceived); | 
						|
        return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "".concat(printLabel(labelExpected)).concat(isNot ? 'not ' : '').concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "".concat(printLabel(labelReceived)).concat(isNot ? '    ' : '').concat(isNot ? (0, _print.printReceivedStringContainExpectedSubstring)(received, _index, String(expected).length) : (0, _jestMatcherUtils.printReceived)(received)); | 
						|
      }; | 
						|
 | 
						|
      return { | 
						|
        message: _message, | 
						|
        pass: _pass | 
						|
      }; | 
						|
    } | 
						|
 | 
						|
    var indexable = Array.from(received); | 
						|
    var index = indexable.indexOf(expected); | 
						|
    var pass = index !== -1; | 
						|
 | 
						|
    var message = function message() { | 
						|
      var labelExpected = 'Expected value'; | 
						|
      var labelReceived = "Received ".concat((0, _jestGetType.default)(received)); | 
						|
      var printLabel = (0, _jestMatcherUtils.getLabelPrinter)(labelExpected, labelReceived); | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "".concat(printLabel(labelExpected)).concat(isNot ? 'not ' : '').concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "".concat(printLabel(labelReceived)).concat(isNot ? '    ' : '').concat(isNot && Array.isArray(received) ? (0, _print.printReceivedArrayContainExpectedItem)(received, index) : (0, _jestMatcherUtils.printReceived)(received)) + (!isNot && indexable.findIndex(function (item) { | 
						|
        return (0, _jasmineUtils.equals)(item, expected, [_utils.iterableEquality]); | 
						|
      }) !== -1 ? "\n\n".concat(_jestMatcherUtils.SUGGEST_TO_CONTAIN_EQUAL) : ''); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toContainEqual: function toContainEqual(received, expected) { | 
						|
    var matcherName = 'toContainEqual'; | 
						|
    var isNot = this.isNot; | 
						|
    var options = { | 
						|
      comment: 'deep equality', | 
						|
      isNot: isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
 | 
						|
    if (received == null) { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options), "".concat((0, _jestMatcherUtils.RECEIVED_COLOR)('received'), " value must not be null nor undefined"), (0, _jestMatcherUtils.printWithType)('Received', received, _jestMatcherUtils.printReceived))); | 
						|
    } | 
						|
 | 
						|
    var index = Array.from(received).findIndex(function (item) { | 
						|
      return (0, _jasmineUtils.equals)(item, expected, [_utils.iterableEquality]); | 
						|
    }); | 
						|
    var pass = index !== -1; | 
						|
 | 
						|
    var message = function message() { | 
						|
      var labelExpected = 'Expected value'; | 
						|
      var labelReceived = "Received ".concat((0, _jestGetType.default)(received)); | 
						|
      var printLabel = (0, _jestMatcherUtils.getLabelPrinter)(labelExpected, labelReceived); | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "".concat(printLabel(labelExpected)).concat(isNot ? 'not ' : '').concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "".concat(printLabel(labelReceived)).concat(isNot ? '    ' : '').concat(isNot && Array.isArray(received) ? (0, _print.printReceivedArrayContainExpectedItem)(received, index) : (0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toEqual: function toEqual(received, expected) { | 
						|
    var _this2 = this; | 
						|
 | 
						|
    var matcherName = 'toEqual'; | 
						|
    var options = { | 
						|
      comment: 'deep equality', | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    var pass = (0, _jasmineUtils.equals)(received, expected, [_utils.iterableEquality]); | 
						|
    var message = pass ? function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected: not ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + ((0, _jestMatcherUtils.stringify)(expected) !== (0, _jestMatcherUtils.stringify)(received) ? "Received:     ".concat((0, _jestMatcherUtils.printReceived)(received)) : ''); | 
						|
    } : function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + (0, _jestMatcherUtils.printDiffOrStringify)(expected, received, EXPECTED_LABEL, RECEIVED_LABEL, isExpand(_this2.expand)); | 
						|
    }; // Passing the actual and expected objects so that a custom reporter | 
						|
    // could access them, for example in order to display a custom visual diff, | 
						|
    // or create a different error message | 
						|
 | 
						|
    return { | 
						|
      actual: received, | 
						|
      expected: expected, | 
						|
      message: message, | 
						|
      name: matcherName, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toHaveLength: function toHaveLength(received, expected) { | 
						|
    var matcherName = 'toHaveLength'; | 
						|
    var isNot = this.isNot; | 
						|
    var options = { | 
						|
      isNot: isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
 | 
						|
    if (typeof received !== 'string' && (!received || typeof received.length !== 'number')) { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options), "".concat((0, _jestMatcherUtils.RECEIVED_COLOR)('received'), " value must have a length property whose value must be a number"), (0, _jestMatcherUtils.printWithType)('Received', received, _jestMatcherUtils.printReceived))); | 
						|
    } | 
						|
 | 
						|
    (0, _jestMatcherUtils.ensureExpectedIsNonNegativeInteger)(expected, matcherName, options); | 
						|
    var pass = received.length === expected; | 
						|
 | 
						|
    var message = function message() { | 
						|
      var labelExpected = 'Expected length'; | 
						|
      var labelReceivedLength = 'Received length'; | 
						|
      var labelReceivedValue = "Received ".concat((0, _jestGetType.default)(received)); | 
						|
      var printLabel = (0, _jestMatcherUtils.getLabelPrinter)(labelExpected, labelReceivedLength, labelReceivedValue); | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "".concat(printLabel(labelExpected)).concat(isNot ? 'not ' : '').concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + (isNot ? '' : "".concat(printLabel(labelReceivedLength)).concat((0, _jestMatcherUtils.printReceived)(received.length), "\n")) + "".concat(printLabel(labelReceivedValue)).concat(isNot ? '    ' : '').concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
 | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toHaveProperty: function toHaveProperty(received, expectedPath, expectedValue) { | 
						|
    var _this3 = this; | 
						|
 | 
						|
    var matcherName = 'toHaveProperty'; | 
						|
    var expectedArgument = 'path'; | 
						|
    var hasValue = arguments.length === 3; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise, | 
						|
      secondArgument: hasValue ? 'value' : '' | 
						|
    }; | 
						|
 | 
						|
    if (received === null || received === undefined) { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, expectedArgument, options), "".concat((0, _jestMatcherUtils.RECEIVED_COLOR)('received'), " value must not be null nor undefined"), (0, _jestMatcherUtils.printWithType)('Received', received, _jestMatcherUtils.printReceived))); | 
						|
    } | 
						|
 | 
						|
    var expectedPathType = (0, _jestGetType.default)(expectedPath); | 
						|
 | 
						|
    if (expectedPathType !== 'string' && expectedPathType !== 'array') { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, expectedArgument, options), "".concat((0, _jestMatcherUtils.EXPECTED_COLOR)('expected'), " path must be a string or array"), (0, _jestMatcherUtils.printWithType)('Expected', expectedPath, _jestMatcherUtils.printExpected))); | 
						|
    } | 
						|
 | 
						|
    var expectedPathLength = typeof expectedPath === 'string' ? expectedPath.split('.').length : expectedPath.length; | 
						|
 | 
						|
    if (expectedPathType === 'array' && expectedPathLength === 0) { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, expectedArgument, options), "".concat((0, _jestMatcherUtils.EXPECTED_COLOR)('expected'), " path must not be an empty array"), (0, _jestMatcherUtils.printWithType)('Expected', expectedPath, _jestMatcherUtils.printExpected))); | 
						|
    } | 
						|
 | 
						|
    var result = (0, _utils.getPath)(received, expectedPath); | 
						|
    var lastTraversedObject = result.lastTraversedObject, | 
						|
        hasEndProp = result.hasEndProp; | 
						|
    var receivedPath = result.traversedPath; | 
						|
    var hasCompletePath = receivedPath.length === expectedPathLength; | 
						|
    var receivedValue = hasCompletePath ? result.value : lastTraversedObject; | 
						|
    var pass = hasValue ? (0, _jasmineUtils.equals)(result.value, expectedValue, [_utils.iterableEquality]) : Boolean(hasEndProp); // theoretically undefined if empty path | 
						|
    // Remove type cast if we rewrite getPath as iterative algorithm. | 
						|
    // Delete this unique report if future breaking change | 
						|
    // removes the edge case that expected value undefined | 
						|
    // also matches absence of a property with the key path. | 
						|
 | 
						|
    if (pass && !hasCompletePath) { | 
						|
      var _message2 = function _message2() { | 
						|
        return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, expectedArgument, options) + '\n\n' + "Expected path: ".concat((0, _jestMatcherUtils.printExpected)(expectedPath), "\n") + "Received path: ".concat((0, _jestMatcherUtils.printReceived)(expectedPathType === 'array' || receivedPath.length === 0 ? receivedPath : receivedPath.join('.')), "\n\n") + "Expected value: not ".concat((0, _jestMatcherUtils.printExpected)(expectedValue), "\n") + "Received value:     ".concat((0, _jestMatcherUtils.printReceived)(receivedValue), "\n\n") + (0, _jestMatcherUtils.DIM_COLOR)('Because a positive assertion passes for expected value undefined if the property does not exist, this negative assertion fails unless the property does exist and has a defined value'); | 
						|
      }; | 
						|
 | 
						|
      return { | 
						|
        message: _message2, | 
						|
        pass: pass | 
						|
      }; | 
						|
    } | 
						|
 | 
						|
    var message = pass ? function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, expectedArgument, options) + '\n\n' + (hasValue ? "Expected path: ".concat((0, _jestMatcherUtils.printExpected)(expectedPath), "\n\n") + "Expected value: not ".concat((0, _jestMatcherUtils.printExpected)(expectedValue)) + ((0, _jestMatcherUtils.stringify)(expectedValue) !== (0, _jestMatcherUtils.stringify)(receivedValue) ? "\nReceived value:     ".concat((0, _jestMatcherUtils.printReceived)(receivedValue)) : '') : "Expected path: not ".concat((0, _jestMatcherUtils.printExpected)(expectedPath), "\n\n") + "Received value: ".concat((0, _jestMatcherUtils.printReceived)(receivedValue))); | 
						|
    } : function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, expectedArgument, options) + '\n\n' + "Expected path: ".concat((0, _jestMatcherUtils.printExpected)(expectedPath), "\n") + (hasCompletePath ? '\n' + (0, _jestMatcherUtils.printDiffOrStringify)(expectedValue, receivedValue, EXPECTED_VALUE_LABEL, RECEIVED_VALUE_LABEL, isExpand(_this3.expand)) : "Received path: ".concat((0, _jestMatcherUtils.printReceived)(expectedPathType === 'array' || receivedPath.length === 0 ? receivedPath : receivedPath.join('.')), "\n\n") + (hasValue ? "Expected value: ".concat((0, _jestMatcherUtils.printExpected)(expectedValue), "\n") : '') + "Received value: ".concat((0, _jestMatcherUtils.printReceived)(receivedValue))); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toMatch: function toMatch(received, expected) { | 
						|
    var matcherName = 'toMatch'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
 | 
						|
    if (typeof received !== 'string') { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options), "".concat((0, _jestMatcherUtils.RECEIVED_COLOR)('received'), " value must be a string"), (0, _jestMatcherUtils.printWithType)('Received', received, _jestMatcherUtils.printReceived))); | 
						|
    } | 
						|
 | 
						|
    if (!(typeof expected === 'string') && !(expected && typeof expected.test === 'function')) { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options), "".concat((0, _jestMatcherUtils.EXPECTED_COLOR)('expected'), " value must be a string or regular expression"), (0, _jestMatcherUtils.printWithType)('Expected', expected, _jestMatcherUtils.printExpected))); | 
						|
    } | 
						|
 | 
						|
    var pass = typeof expected === 'string' ? received.includes(expected) : expected.test(received); | 
						|
    var message = pass ? function () { | 
						|
      return typeof expected === 'string' ? (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected substring: not ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "Received string:        ".concat((0, _print.printReceivedStringContainExpectedSubstring)(received, received.indexOf(expected), expected.length)) : (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected pattern: not ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "Received string:      ".concat((0, _print.printReceivedStringContainExpectedResult)(received, typeof expected.exec === 'function' ? expected.exec(received) : null)); | 
						|
    } : function () { | 
						|
      var labelExpected = "Expected ".concat(typeof expected === 'string' ? 'substring' : 'pattern'); | 
						|
      var labelReceived = 'Received string'; | 
						|
      var printLabel = (0, _jestMatcherUtils.getLabelPrinter)(labelExpected, labelReceived); | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "".concat(printLabel(labelExpected)).concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "".concat(printLabel(labelReceived)).concat((0, _jestMatcherUtils.printReceived)(received)); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toMatchObject: function toMatchObject(received, expected) { | 
						|
    var _this4 = this; | 
						|
 | 
						|
    var matcherName = 'toMatchObject'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
 | 
						|
    if (_typeof(received) !== 'object' || received === null) { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options), "".concat((0, _jestMatcherUtils.RECEIVED_COLOR)('received'), " value must be a non-null object"), (0, _jestMatcherUtils.printWithType)('Received', received, _jestMatcherUtils.printReceived))); | 
						|
    } | 
						|
 | 
						|
    if (_typeof(expected) !== 'object' || expected === null) { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options), "".concat((0, _jestMatcherUtils.EXPECTED_COLOR)('expected'), " value must be a non-null object"), (0, _jestMatcherUtils.printWithType)('Expected', expected, _jestMatcherUtils.printExpected))); | 
						|
    } | 
						|
 | 
						|
    var pass = (0, _jasmineUtils.equals)(received, expected, [_utils.iterableEquality, _utils.subsetEquality]); | 
						|
    var message = pass ? function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected: not ".concat((0, _jestMatcherUtils.printExpected)(expected)) + ((0, _jestMatcherUtils.stringify)(expected) !== (0, _jestMatcherUtils.stringify)(received) ? "\nReceived:     ".concat((0, _jestMatcherUtils.printReceived)(received)) : ''); | 
						|
    } : function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + (0, _jestMatcherUtils.printDiffOrStringify)(expected, (0, _utils.getObjectSubset)(received, expected), EXPECTED_LABEL, RECEIVED_LABEL, isExpand(_this4.expand)); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }, | 
						|
  toStrictEqual: function toStrictEqual(received, expected) { | 
						|
    var _this5 = this; | 
						|
 | 
						|
    var matcherName = 'toStrictEqual'; | 
						|
    var options = { | 
						|
      comment: 'deep equality', | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    var pass = (0, _jasmineUtils.equals)(received, expected, toStrictEqualTesters, true); | 
						|
    var message = pass ? function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + "Expected: not ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + ((0, _jestMatcherUtils.stringify)(expected) !== (0, _jestMatcherUtils.stringify)(received) ? "Received:     ".concat((0, _jestMatcherUtils.printReceived)(received)) : ''); | 
						|
    } : function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + (0, _jestMatcherUtils.printDiffOrStringify)(expected, received, EXPECTED_LABEL, RECEIVED_LABEL, isExpand(_this5.expand)); | 
						|
    }; // Passing the actual and expected objects so that a custom reporter | 
						|
    // could access them, for example in order to display a custom visual diff, | 
						|
    // or create a different error message | 
						|
 | 
						|
    return { | 
						|
      actual: received, | 
						|
      expected: expected, | 
						|
      message: message, | 
						|
      name: matcherName, | 
						|
      pass: pass | 
						|
    }; | 
						|
  } | 
						|
}; | 
						|
var _default = matchers; | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/expect/src/print.ts": | 
						|
/*!**************************************!*\ | 
						|
  !*** ./packages/expect/src/print.ts ***! | 
						|
  \**************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.printReceivedConstructorNameNot = exports.printReceivedConstructorName = exports.printExpectedConstructorNameNot = exports.printExpectedConstructorName = exports.printReceivedArrayContainExpectedItem = exports.printReceivedStringContainExpectedResult = exports.printReceivedStringContainExpectedSubstring = void 0; | 
						|
 | 
						|
var _jestMatcherUtils = __webpack_require__(/*! jest-matcher-utils */ "./packages/jest-matcher-utils/build/index.js"); | 
						|
 | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 * | 
						|
 */ | 
						|
// Format substring but do not enclose in double quote marks. | 
						|
// The replacement is compatible with pretty-format package. | 
						|
var printSubstring = function printSubstring(val) { | 
						|
  return val.replace(/"|\\/g, '\\$&'); | 
						|
}; | 
						|
 | 
						|
var printReceivedStringContainExpectedSubstring = function printReceivedStringContainExpectedSubstring(received, start, length) { | 
						|
  return (0, _jestMatcherUtils.RECEIVED_COLOR)('"' + printSubstring(received.slice(0, start)) + (0, _jestMatcherUtils.INVERTED_COLOR)(printSubstring(received.slice(start, start + length))) + printSubstring(received.slice(start + length)) + '"'); | 
						|
}; | 
						|
 | 
						|
exports.printReceivedStringContainExpectedSubstring = printReceivedStringContainExpectedSubstring; | 
						|
 | 
						|
var printReceivedStringContainExpectedResult = function printReceivedStringContainExpectedResult(received, result) { | 
						|
  return result === null ? (0, _jestMatcherUtils.printReceived)(received) : printReceivedStringContainExpectedSubstring(received, result.index, result[0].length); | 
						|
}; // The serialized array is compatible with pretty-format package min option. | 
						|
// However, items have default stringify depth (instead of depth - 1) | 
						|
// so expected item looks consistent by itself and enclosed in the array. | 
						|
 | 
						|
 | 
						|
exports.printReceivedStringContainExpectedResult = printReceivedStringContainExpectedResult; | 
						|
 | 
						|
var printReceivedArrayContainExpectedItem = function printReceivedArrayContainExpectedItem(received, index) { | 
						|
  return (0, _jestMatcherUtils.RECEIVED_COLOR)('[' + received.map(function (item, i) { | 
						|
    var stringified = (0, _jestMatcherUtils.stringify)(item); | 
						|
    return i === index ? (0, _jestMatcherUtils.INVERTED_COLOR)(stringified) : stringified; | 
						|
  }).join(', ') + ']'); | 
						|
}; | 
						|
 | 
						|
exports.printReceivedArrayContainExpectedItem = printReceivedArrayContainExpectedItem; | 
						|
 | 
						|
var printExpectedConstructorName = function printExpectedConstructorName(label, expected) { | 
						|
  return printConstructorName(label, expected, false, true) + '\n'; | 
						|
}; | 
						|
 | 
						|
exports.printExpectedConstructorName = printExpectedConstructorName; | 
						|
 | 
						|
var printExpectedConstructorNameNot = function printExpectedConstructorNameNot(label, expected) { | 
						|
  return printConstructorName(label, expected, true, true) + '\n'; | 
						|
}; | 
						|
 | 
						|
exports.printExpectedConstructorNameNot = printExpectedConstructorNameNot; | 
						|
 | 
						|
var printReceivedConstructorName = function printReceivedConstructorName(label, received) { | 
						|
  return printConstructorName(label, received, false, false) + '\n'; | 
						|
}; // Do not call function if received is equal to expected. | 
						|
 | 
						|
 | 
						|
exports.printReceivedConstructorName = printReceivedConstructorName; | 
						|
 | 
						|
var printReceivedConstructorNameNot = function printReceivedConstructorNameNot(label, received, expected) { | 
						|
  return typeof expected.name === 'string' && expected.name.length !== 0 && typeof received.name === 'string' && received.name.length !== 0 ? printConstructorName(label, received, true, false) + " ".concat(Object.getPrototypeOf(received) === expected ? 'extends' : 'extends … extends', " ").concat((0, _jestMatcherUtils.EXPECTED_COLOR)(expected.name)) + '\n' : printConstructorName(label, received, false, false) + '\n'; | 
						|
}; | 
						|
 | 
						|
exports.printReceivedConstructorNameNot = printReceivedConstructorNameNot; | 
						|
 | 
						|
var printConstructorName = function printConstructorName(label, constructor, isNot, isExpected) { | 
						|
  return typeof constructor.name !== 'string' ? "".concat(label, " name is not a string") : constructor.name.length === 0 ? "".concat(label, " name is an empty string") : "".concat(label, ": ").concat(!isNot ? '' : isExpected ? 'not ' : '    ').concat(isExpected ? (0, _jestMatcherUtils.EXPECTED_COLOR)(constructor.name) : (0, _jestMatcherUtils.RECEIVED_COLOR)(constructor.name)); | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/expect/src/spyMatchers.ts": | 
						|
/*!********************************************!*\ | 
						|
  !*** ./packages/expect/src/spyMatchers.ts ***! | 
						|
  \********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = void 0; | 
						|
 | 
						|
var _jestGetType = _interopRequireWildcard(__webpack_require__(/*! jest-get-type */ "./packages/jest-get-type/build/index.js")); | 
						|
 | 
						|
var _jestMatcherUtils = __webpack_require__(/*! jest-matcher-utils */ "./packages/jest-matcher-utils/build/index.js"); | 
						|
 | 
						|
var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.ts"); | 
						|
 | 
						|
var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.ts"); | 
						|
 | 
						|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } | 
						|
 | 
						|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } | 
						|
 | 
						|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } | 
						|
 | 
						|
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | 
						|
 | 
						|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | 
						|
 | 
						|
// The optional property of matcher context is true if undefined. | 
						|
var isExpand = function isExpand(expand) { | 
						|
  return expand !== false; | 
						|
}; | 
						|
 | 
						|
var PRINT_LIMIT = 3; | 
						|
var NO_ARGUMENTS = 'called with 0 arguments'; | 
						|
 | 
						|
var printExpectedArgs = function printExpectedArgs(expected) { | 
						|
  return expected.length === 0 ? NO_ARGUMENTS : expected.map(function (arg) { | 
						|
    return (0, _jestMatcherUtils.printExpected)(arg); | 
						|
  }).join(', '); | 
						|
}; | 
						|
 | 
						|
var printReceivedArgs = function printReceivedArgs(received, expected) { | 
						|
  return received.length === 0 ? NO_ARGUMENTS : received.map(function (arg, i) { | 
						|
    return Array.isArray(expected) && i < expected.length && isEqualValue(expected[i], arg) ? printCommon(arg) : (0, _jestMatcherUtils.printReceived)(arg); | 
						|
  }).join(', '); | 
						|
}; | 
						|
 | 
						|
var printCommon = function printCommon(val) { | 
						|
  return (0, _jestMatcherUtils.DIM_COLOR)((0, _jestMatcherUtils.stringify)(val)); | 
						|
}; | 
						|
 | 
						|
var isEqualValue = function isEqualValue(expected, received) { | 
						|
  return (0, _jasmineUtils.equals)(expected, received, [_utils.iterableEquality]); | 
						|
}; | 
						|
 | 
						|
var isEqualCall = function isEqualCall(expected, received) { | 
						|
  return isEqualValue(expected, received); | 
						|
}; | 
						|
 | 
						|
var isEqualReturn = function isEqualReturn(expected, result) { | 
						|
  return result.type === 'return' && isEqualValue(expected, result.value); | 
						|
}; | 
						|
 | 
						|
var countReturns = function countReturns(results) { | 
						|
  return results.reduce(function (n, result) { | 
						|
    return result.type === 'return' ? n + 1 : n; | 
						|
  }, 0); | 
						|
}; | 
						|
 | 
						|
var printNumberOfReturns = function printNumberOfReturns(countReturns, countCalls) { | 
						|
  return "\nNumber of returns: ".concat((0, _jestMatcherUtils.printReceived)(countReturns)) + (countCalls !== countReturns ? "\nNumber of calls:   ".concat((0, _jestMatcherUtils.printReceived)(countCalls)) : ''); | 
						|
}; | 
						|
 | 
						|
// Given a label, return a function which given a string, | 
						|
// right-aligns it preceding the colon in the label. | 
						|
var getRightAlignedPrinter = function getRightAlignedPrinter(label) { | 
						|
  // Assume that the label contains a colon. | 
						|
  var index = label.indexOf(':'); | 
						|
  var suffix = label.slice(index); | 
						|
  return function (string, isExpectedCall) { | 
						|
    return (isExpectedCall ? '->' + ' '.repeat(Math.max(0, index - 2 - string.length)) : ' '.repeat(Math.max(index - string.length))) + string + suffix; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var printReceivedCallsNegative = function printReceivedCallsNegative(expected, indexedCalls, isOnlyCall, iExpectedCall) { | 
						|
  if (indexedCalls.length === 0) { | 
						|
    return ''; | 
						|
  } | 
						|
 | 
						|
  var label = 'Received:     '; | 
						|
 | 
						|
  if (isOnlyCall) { | 
						|
    return label + printReceivedArgs(indexedCalls[0], expected) + '\n'; | 
						|
  } | 
						|
 | 
						|
  var printAligned = getRightAlignedPrinter(label); | 
						|
  return 'Received\n' + indexedCalls.reduce(function (printed, _ref) { | 
						|
    var _ref2 = _slicedToArray(_ref, 2), | 
						|
        i = _ref2[0], | 
						|
        args = _ref2[1]; | 
						|
 | 
						|
    return printed + printAligned(String(i + 1), i === iExpectedCall) + printReceivedArgs(args, expected) + '\n'; | 
						|
  }, ''); | 
						|
}; | 
						|
 | 
						|
var printExpectedReceivedCallsPositive = function printExpectedReceivedCallsPositive(expected, indexedCalls, expand, isOnlyCall, iExpectedCall) { | 
						|
  var expectedLine = "Expected: ".concat(printExpectedArgs(expected), "\n"); | 
						|
 | 
						|
  if (indexedCalls.length === 0) { | 
						|
    return expectedLine; | 
						|
  } | 
						|
 | 
						|
  var label = 'Received: '; | 
						|
 | 
						|
  if (isOnlyCall && (iExpectedCall === 0 || iExpectedCall === undefined)) { | 
						|
    var received = indexedCalls[0][1]; | 
						|
 | 
						|
    if (isLineDiffableCall(expected, received)) { | 
						|
      // Display diff without indentation. | 
						|
      var lines = [(0, _jestMatcherUtils.EXPECTED_COLOR)('- Expected'), (0, _jestMatcherUtils.RECEIVED_COLOR)('+ Received'), '']; | 
						|
      var length = Math.max(expected.length, received.length); | 
						|
 | 
						|
      for (var i = 0; i < length; i += 1) { | 
						|
        if (i < expected.length && i < received.length) { | 
						|
          if (isEqualValue(expected[i], received[i])) { | 
						|
            lines.push("  ".concat(printCommon(received[i]), ",")); | 
						|
            continue; | 
						|
          } | 
						|
 | 
						|
          if (isLineDiffableArg(expected[i], received[i])) { | 
						|
            var difference = (0, _jestMatcherUtils.diff)(expected[i], received[i], { | 
						|
              expand: expand | 
						|
            }); | 
						|
 | 
						|
            if (typeof difference === 'string' && difference.includes('- Expected') && difference.includes('+ Received')) { | 
						|
              // Omit annotation in case multiple args have diff. | 
						|
              lines.push(difference.split('\n').slice(3).join('\n') + ','); | 
						|
              continue; | 
						|
            } | 
						|
          } | 
						|
        } | 
						|
 | 
						|
        if (i < expected.length) { | 
						|
          lines.push((0, _jestMatcherUtils.EXPECTED_COLOR)('- ' + (0, _jestMatcherUtils.stringify)(expected[i])) + ','); | 
						|
        } | 
						|
 | 
						|
        if (i < received.length) { | 
						|
          lines.push((0, _jestMatcherUtils.RECEIVED_COLOR)('+ ' + (0, _jestMatcherUtils.stringify)(received[i])) + ','); | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      return lines.join('\n') + '\n'; | 
						|
    } | 
						|
 | 
						|
    return expectedLine + label + printReceivedArgs(received, expected) + '\n'; | 
						|
  } | 
						|
 | 
						|
  var printAligned = getRightAlignedPrinter(label); | 
						|
  return expectedLine + 'Received\n' + indexedCalls.reduce(function (printed, _ref3) { | 
						|
    var _ref4 = _slicedToArray(_ref3, 2), | 
						|
        i = _ref4[0], | 
						|
        received = _ref4[1]; | 
						|
 | 
						|
    var aligned = printAligned(String(i + 1), i === iExpectedCall); | 
						|
    return printed + ((i === iExpectedCall || iExpectedCall === undefined) && isLineDiffableCall(expected, received) ? aligned.replace(': ', '\n') + printDiffCall(expected, received, expand) : aligned + printReceivedArgs(received, expected)) + '\n'; | 
						|
  }, ''); | 
						|
}; | 
						|
 | 
						|
var indentation = 'Received'.replace(/\w/g, ' '); | 
						|
 | 
						|
var printDiffCall = function printDiffCall(expected, received, expand) { | 
						|
  return received.map(function (arg, i) { | 
						|
    if (i < expected.length) { | 
						|
      if (isEqualValue(expected[i], arg)) { | 
						|
        return indentation + '  ' + printCommon(arg) + ','; | 
						|
      } | 
						|
 | 
						|
      if (isLineDiffableArg(expected[i], arg)) { | 
						|
        var difference = (0, _jestMatcherUtils.diff)(expected[i], arg, { | 
						|
          expand: expand | 
						|
        }); | 
						|
 | 
						|
        if (typeof difference === 'string' && difference.includes('- Expected') && difference.includes('+ Received')) { | 
						|
          // Display diff with indentation. | 
						|
          return difference.split('\n').slice(3).map(function (line) { | 
						|
            return indentation + line; | 
						|
          }).join('\n') + ','; | 
						|
        } | 
						|
      } | 
						|
    } // Display + only if received arg has no corresponding expected arg. | 
						|
 | 
						|
 | 
						|
    return indentation + (i < expected.length ? '  ' + (0, _jestMatcherUtils.printReceived)(arg) : (0, _jestMatcherUtils.RECEIVED_COLOR)('+ ' + (0, _jestMatcherUtils.stringify)(arg))) + ','; | 
						|
  }).join('\n'); | 
						|
}; | 
						|
 | 
						|
var isLineDiffableCall = function isLineDiffableCall(expected, received) { | 
						|
  return expected.some(function (arg, i) { | 
						|
    return i < received.length && isLineDiffableArg(arg, received[i]); | 
						|
  }); | 
						|
}; // Almost redundant with function in jest-matcher-utils, | 
						|
// except no line diff for any strings. | 
						|
 | 
						|
 | 
						|
var isLineDiffableArg = function isLineDiffableArg(expected, received) { | 
						|
  var expectedType = (0, _jestGetType.default)(expected); | 
						|
  var receivedType = (0, _jestGetType.default)(received); | 
						|
 | 
						|
  if (expectedType !== receivedType) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if ((0, _jestGetType.isPrimitive)(expected)) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (expectedType === 'date' || expectedType === 'function' || expectedType === 'regexp') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (expected instanceof Error && received instanceof Error) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (expectedType === 'object' && typeof expected.asymmetricMatch === 'function') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (receivedType === 'object' && typeof received.asymmetricMatch === 'function') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
 | 
						|
var printResult = function printResult(result, expected) { | 
						|
  return result.type === 'throw' ? 'function call threw an error' : result.type === 'incomplete' ? 'function call has not returned yet' : isEqualValue(expected, result.value) ? printCommon(result.value) : (0, _jestMatcherUtils.printReceived)(result.value); | 
						|
}; | 
						|
 | 
						|
// Return either empty string or one line per indexed result, | 
						|
// so additional empty line can separate from `Number of returns` which follows. | 
						|
var printReceivedResults = function printReceivedResults(label, expected, indexedResults, isOnlyCall, iExpectedCall) { | 
						|
  if (indexedResults.length === 0) { | 
						|
    return ''; | 
						|
  } | 
						|
 | 
						|
  if (isOnlyCall && (iExpectedCall === 0 || iExpectedCall === undefined)) { | 
						|
    return label + printResult(indexedResults[0][1], expected) + '\n'; | 
						|
  } | 
						|
 | 
						|
  var printAligned = getRightAlignedPrinter(label); | 
						|
  return label.replace(':', '').trim() + '\n' + indexedResults.reduce(function (printed, _ref5) { | 
						|
    var _ref6 = _slicedToArray(_ref5, 2), | 
						|
        i = _ref6[0], | 
						|
        result = _ref6[1]; | 
						|
 | 
						|
    return printed + printAligned(String(i + 1), i === iExpectedCall) + printResult(result, expected) + '\n'; | 
						|
  }, ''); | 
						|
}; | 
						|
 | 
						|
var createToBeCalledMatcher = function createToBeCalledMatcher(matcherName) { | 
						|
  return function (received, expected) { | 
						|
    var expectedArgument = ''; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options); | 
						|
    ensureMockOrSpy(received, matcherName, expectedArgument, options); | 
						|
    var receivedIsSpy = isSpy(received); | 
						|
    var receivedName = receivedIsSpy ? 'spy' : received.getMockName(); | 
						|
    var count = receivedIsSpy ? received.calls.count() : received.mock.calls.length; | 
						|
    var calls = receivedIsSpy ? received.calls.all().map(function (x) { | 
						|
      return x.args; | 
						|
    }) : received.mock.calls; | 
						|
    var pass = count > 0; | 
						|
    var message = pass ? function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected number of calls: ".concat((0, _jestMatcherUtils.printExpected)(0), "\n") + "Received number of calls: ".concat((0, _jestMatcherUtils.printReceived)(count), "\n\n") + calls.reduce(function (lines, args, i) { | 
						|
        if (lines.length < PRINT_LIMIT) { | 
						|
          lines.push("".concat(i + 1, ": ").concat(printReceivedArgs(args))); | 
						|
        } | 
						|
 | 
						|
        return lines; | 
						|
      }, []).join('\n'); | 
						|
    } : function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected number of calls: >= ".concat((0, _jestMatcherUtils.printExpected)(1), "\n") + "Received number of calls:    ".concat((0, _jestMatcherUtils.printReceived)(count)); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var createToReturnMatcher = function createToReturnMatcher(matcherName) { | 
						|
  return function (received, expected) { | 
						|
    var expectedArgument = ''; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureNoExpected)(expected, matcherName, options); | 
						|
    ensureMock(received, matcherName, expectedArgument, options); | 
						|
    var receivedName = received.getMockName(); // Count return values that correspond only to calls that returned | 
						|
 | 
						|
    var count = received.mock.results.reduce(function (n, result) { | 
						|
      return result.type === 'return' ? n + 1 : n; | 
						|
    }, 0); | 
						|
    var pass = count > 0; | 
						|
    var message = pass ? function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected number of returns: ".concat((0, _jestMatcherUtils.printExpected)(0), "\n") + "Received number of returns: ".concat((0, _jestMatcherUtils.printReceived)(count), "\n\n") + received.mock.results.reduce(function (lines, result, i) { | 
						|
        if (result.type === 'return' && lines.length < PRINT_LIMIT) { | 
						|
          lines.push("".concat(i + 1, ": ").concat((0, _jestMatcherUtils.printReceived)(result.value))); | 
						|
        } | 
						|
 | 
						|
        return lines; | 
						|
      }, []).join('\n') + (received.mock.calls.length !== count ? "\n\nReceived number of calls:   ".concat((0, _jestMatcherUtils.printReceived)(received.mock.calls.length)) : ''); | 
						|
    } : function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected number of returns: >= ".concat((0, _jestMatcherUtils.printExpected)(1), "\n") + "Received number of returns:    ".concat((0, _jestMatcherUtils.printReceived)(count)) + (received.mock.calls.length !== count ? "\nReceived number of calls:      ".concat((0, _jestMatcherUtils.printReceived)(received.mock.calls.length)) : ''); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var createToBeCalledTimesMatcher = function createToBeCalledTimesMatcher(matcherName) { | 
						|
  return function (received, expected) { | 
						|
    var expectedArgument = 'expected'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureExpectedIsNumber)(expected, matcherName, options); | 
						|
    ensureMockOrSpy(received, matcherName, expectedArgument, options); | 
						|
    var receivedIsSpy = isSpy(received); | 
						|
    var receivedName = receivedIsSpy ? 'spy' : received.getMockName(); | 
						|
    var count = receivedIsSpy ? received.calls.count() : received.mock.calls.length; | 
						|
    var pass = count === expected; | 
						|
    var message = pass ? function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + "\n\n" + "Expected number of calls: not ".concat((0, _jestMatcherUtils.printExpected)(expected)); | 
						|
    } : function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected number of calls: ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "Received number of calls: ".concat((0, _jestMatcherUtils.printReceived)(count)); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var createToReturnTimesMatcher = function createToReturnTimesMatcher(matcherName) { | 
						|
  return function (received, expected) { | 
						|
    var expectedArgument = 'expected'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    (0, _jestMatcherUtils.ensureExpectedIsNumber)(expected, matcherName, options); | 
						|
    ensureMock(received, matcherName, expectedArgument, options); | 
						|
    var receivedName = received.getMockName(); // Count return values that correspond only to calls that returned | 
						|
 | 
						|
    var count = received.mock.results.reduce(function (n, result) { | 
						|
      return result.type === 'return' ? n + 1 : n; | 
						|
    }, 0); | 
						|
    var pass = count === expected; | 
						|
    var message = pass ? function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + "\n\n" + "Expected number of returns: not ".concat((0, _jestMatcherUtils.printExpected)(expected)) + (received.mock.calls.length !== count ? "\n\nReceived number of calls:       ".concat((0, _jestMatcherUtils.printReceived)(received.mock.calls.length)) : ''); | 
						|
    } : function () { | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected number of returns: ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + "Received number of returns: ".concat((0, _jestMatcherUtils.printReceived)(count)) + (received.mock.calls.length !== count ? "\nReceived number of calls:   ".concat((0, _jestMatcherUtils.printReceived)(received.mock.calls.length)) : ''); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var createToBeCalledWithMatcher = function createToBeCalledWithMatcher(matcherName) { | 
						|
  return function (received) { | 
						|
    var _this = this; | 
						|
 | 
						|
    for (var _len = arguments.length, expected = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | 
						|
      expected[_key - 1] = arguments[_key]; | 
						|
    } | 
						|
 | 
						|
    var expectedArgument = '...expected'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    ensureMockOrSpy(received, matcherName, expectedArgument, options); | 
						|
    var receivedIsSpy = isSpy(received); | 
						|
    var receivedName = receivedIsSpy ? 'spy' : received.getMockName(); | 
						|
    var calls = receivedIsSpy ? received.calls.all().map(function (x) { | 
						|
      return x.args; | 
						|
    }) : received.mock.calls; | 
						|
    var pass = calls.some(function (call) { | 
						|
      return isEqualCall(expected, call); | 
						|
    }); | 
						|
    var message = pass ? function () { | 
						|
      // Some examples of calls that are equal to expected value. | 
						|
      var indexedCalls = []; | 
						|
      var i = 0; | 
						|
 | 
						|
      while (i < calls.length && indexedCalls.length < PRINT_LIMIT) { | 
						|
        if (isEqualCall(expected, calls[i])) { | 
						|
          indexedCalls.push([i, calls[i]]); | 
						|
        } | 
						|
 | 
						|
        i += 1; | 
						|
      } | 
						|
 | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected: not ".concat(printExpectedArgs(expected), "\n") + (calls.length === 1 && (0, _jestMatcherUtils.stringify)(calls[0]) === (0, _jestMatcherUtils.stringify)(expected) ? '' : printReceivedCallsNegative(expected, indexedCalls, calls.length === 1)) + "\nNumber of calls: ".concat((0, _jestMatcherUtils.printReceived)(calls.length)); | 
						|
    } : function () { | 
						|
      // Some examples of calls that are not equal to expected value. | 
						|
      var indexedCalls = []; | 
						|
      var i = 0; | 
						|
 | 
						|
      while (i < calls.length && indexedCalls.length < PRINT_LIMIT) { | 
						|
        indexedCalls.push([i, calls[i]]); | 
						|
        i += 1; | 
						|
      } | 
						|
 | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + printExpectedReceivedCallsPositive(expected, indexedCalls, isExpand(_this.expand), calls.length === 1) + "\nNumber of calls: ".concat((0, _jestMatcherUtils.printReceived)(calls.length)); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var createToReturnWithMatcher = function createToReturnWithMatcher(matcherName) { | 
						|
  return function (received, expected) { | 
						|
    var expectedArgument = 'expected'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    ensureMock(received, matcherName, expectedArgument, options); | 
						|
    var receivedName = received.getMockName(); | 
						|
    var _received$mock = received.mock, | 
						|
        calls = _received$mock.calls, | 
						|
        results = _received$mock.results; | 
						|
    var pass = results.some(function (result) { | 
						|
      return isEqualReturn(expected, result); | 
						|
    }); | 
						|
    var message = pass ? function () { | 
						|
      // Some examples of results that are equal to expected value. | 
						|
      var indexedResults = []; | 
						|
      var i = 0; | 
						|
 | 
						|
      while (i < results.length && indexedResults.length < PRINT_LIMIT) { | 
						|
        if (isEqualReturn(expected, results[i])) { | 
						|
          indexedResults.push([i, results[i]]); | 
						|
        } | 
						|
 | 
						|
        i += 1; | 
						|
      } | 
						|
 | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected: not ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + (results.length === 1 && results[0].type === 'return' && (0, _jestMatcherUtils.stringify)(results[0].value) === (0, _jestMatcherUtils.stringify)(expected) ? '' : printReceivedResults('Received:     ', expected, indexedResults, results.length === 1)) + printNumberOfReturns(countReturns(results), calls.length); | 
						|
    } : function () { | 
						|
      // Some examples of results that are not equal to expected value. | 
						|
      var indexedResults = []; | 
						|
      var i = 0; | 
						|
 | 
						|
      while (i < results.length && indexedResults.length < PRINT_LIMIT) { | 
						|
        indexedResults.push([i, results[i]]); | 
						|
        i += 1; | 
						|
      } | 
						|
 | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected: ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + printReceivedResults('Received: ', expected, indexedResults, results.length === 1) + printNumberOfReturns(countReturns(results), calls.length); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var createLastCalledWithMatcher = function createLastCalledWithMatcher(matcherName) { | 
						|
  return function (received) { | 
						|
    var _this2 = this; | 
						|
 | 
						|
    for (var _len2 = arguments.length, expected = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { | 
						|
      expected[_key2 - 1] = arguments[_key2]; | 
						|
    } | 
						|
 | 
						|
    var expectedArgument = '...expected'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    ensureMockOrSpy(received, matcherName, expectedArgument, options); | 
						|
    var receivedIsSpy = isSpy(received); | 
						|
    var receivedName = receivedIsSpy ? 'spy' : received.getMockName(); | 
						|
    var calls = receivedIsSpy ? received.calls.all().map(function (x) { | 
						|
      return x.args; | 
						|
    }) : received.mock.calls; | 
						|
    var iLast = calls.length - 1; | 
						|
    var pass = iLast >= 0 && isEqualCall(expected, calls[iLast]); | 
						|
    var message = pass ? function () { | 
						|
      var indexedCalls = []; | 
						|
 | 
						|
      if (iLast > 0) { | 
						|
        // Display preceding call as context. | 
						|
        indexedCalls.push([iLast - 1, calls[iLast - 1]]); | 
						|
      } | 
						|
 | 
						|
      indexedCalls.push([iLast, calls[iLast]]); | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected: not ".concat(printExpectedArgs(expected), "\n") + (calls.length === 1 && (0, _jestMatcherUtils.stringify)(calls[0]) === (0, _jestMatcherUtils.stringify)(expected) ? '' : printReceivedCallsNegative(expected, indexedCalls, calls.length === 1, iLast)) + "\nNumber of calls: ".concat((0, _jestMatcherUtils.printReceived)(calls.length)); | 
						|
    } : function () { | 
						|
      var indexedCalls = []; | 
						|
 | 
						|
      if (iLast >= 0) { | 
						|
        if (iLast > 0) { | 
						|
          var i = iLast - 1; // Is there a preceding call that is equal to expected args? | 
						|
 | 
						|
          while (i >= 0 && !isEqualCall(expected, calls[i])) { | 
						|
            i -= 1; | 
						|
          } | 
						|
 | 
						|
          if (i < 0) { | 
						|
            i = iLast - 1; // otherwise, preceding call | 
						|
          } | 
						|
 | 
						|
          indexedCalls.push([i, calls[i]]); | 
						|
        } | 
						|
 | 
						|
        indexedCalls.push([iLast, calls[iLast]]); | 
						|
      } | 
						|
 | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + printExpectedReceivedCallsPositive(expected, indexedCalls, isExpand(_this2.expand), calls.length === 1, iLast) + "\nNumber of calls: ".concat((0, _jestMatcherUtils.printReceived)(calls.length)); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var createLastReturnedMatcher = function createLastReturnedMatcher(matcherName) { | 
						|
  return function (received, expected) { | 
						|
    var expectedArgument = 'expected'; | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    ensureMock(received, matcherName, expectedArgument, options); | 
						|
    var receivedName = received.getMockName(); | 
						|
    var _received$mock2 = received.mock, | 
						|
        calls = _received$mock2.calls, | 
						|
        results = _received$mock2.results; | 
						|
    var iLast = results.length - 1; | 
						|
    var pass = iLast >= 0 && isEqualReturn(expected, results[iLast]); | 
						|
    var message = pass ? function () { | 
						|
      var indexedResults = []; | 
						|
 | 
						|
      if (iLast > 0) { | 
						|
        // Display preceding result as context. | 
						|
        indexedResults.push([iLast - 1, results[iLast - 1]]); | 
						|
      } | 
						|
 | 
						|
      indexedResults.push([iLast, results[iLast]]); | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected: not ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + (results.length === 1 && results[0].type === 'return' && (0, _jestMatcherUtils.stringify)(results[0].value) === (0, _jestMatcherUtils.stringify)(expected) ? '' : printReceivedResults('Received:     ', expected, indexedResults, results.length === 1, iLast)) + printNumberOfReturns(countReturns(results), calls.length); | 
						|
    } : function () { | 
						|
      var indexedResults = []; | 
						|
 | 
						|
      if (iLast >= 0) { | 
						|
        if (iLast > 0) { | 
						|
          var i = iLast - 1; // Is there a preceding result that is equal to expected value? | 
						|
 | 
						|
          while (i >= 0 && !isEqualReturn(expected, results[i])) { | 
						|
            i -= 1; | 
						|
          } | 
						|
 | 
						|
          if (i < 0) { | 
						|
            i = iLast - 1; // otherwise, preceding result | 
						|
          } | 
						|
 | 
						|
          indexedResults.push([i, results[i]]); | 
						|
        } | 
						|
 | 
						|
        indexedResults.push([iLast, results[iLast]]); | 
						|
      } | 
						|
 | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "Expected: ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + printReceivedResults('Received: ', expected, indexedResults, results.length === 1, iLast) + printNumberOfReturns(countReturns(results), calls.length); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var createNthCalledWithMatcher = function createNthCalledWithMatcher(matcherName) { | 
						|
  return function (received, nth) { | 
						|
    var _this3 = this; | 
						|
 | 
						|
    for (var _len3 = arguments.length, expected = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) { | 
						|
      expected[_key3 - 2] = arguments[_key3]; | 
						|
    } | 
						|
 | 
						|
    var expectedArgument = 'n'; | 
						|
    var options = { | 
						|
      expectedColor: function expectedColor(arg) { | 
						|
        return arg; | 
						|
      }, | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise, | 
						|
      secondArgument: '...expected' | 
						|
    }; | 
						|
    ensureMockOrSpy(received, matcherName, expectedArgument, options); | 
						|
 | 
						|
    if (!Number.isSafeInteger(nth) || nth < 1) { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, expectedArgument, options), "".concat(expectedArgument, " must be a positive integer"), (0, _jestMatcherUtils.printWithType)(expectedArgument, nth, _jestMatcherUtils.stringify))); | 
						|
    } | 
						|
 | 
						|
    var receivedIsSpy = isSpy(received); | 
						|
    var receivedName = receivedIsSpy ? 'spy' : received.getMockName(); | 
						|
    var calls = receivedIsSpy ? received.calls.all().map(function (x) { | 
						|
      return x.args; | 
						|
    }) : received.mock.calls; | 
						|
    var length = calls.length; | 
						|
    var iNth = nth - 1; | 
						|
    var pass = iNth < length && isEqualCall(expected, calls[iNth]); | 
						|
    var message = pass ? function () { | 
						|
      // Display preceding and following calls, | 
						|
      var indexedCalls = []; | 
						|
 | 
						|
      if (iNth - 1 >= 0) { | 
						|
        indexedCalls.push([iNth - 1, calls[iNth - 1]]); | 
						|
      } | 
						|
 | 
						|
      indexedCalls.push([iNth, calls[iNth]]); | 
						|
 | 
						|
      if (iNth + 1 < length) { | 
						|
        indexedCalls.push([iNth + 1, calls[iNth + 1]]); | 
						|
      } | 
						|
 | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "n: ".concat(nth, "\n") + "Expected: not ".concat(printExpectedArgs(expected), "\n") + (calls.length === 1 && (0, _jestMatcherUtils.stringify)(calls[0]) === (0, _jestMatcherUtils.stringify)(expected) ? '' : printReceivedCallsNegative(expected, indexedCalls, calls.length === 1, iNth)) + "\nNumber of calls: ".concat((0, _jestMatcherUtils.printReceived)(calls.length)); | 
						|
    } : function () { | 
						|
      // Display preceding and following calls: | 
						|
      // * nearest call that is equal to expected args | 
						|
      // * otherwise, adjacent call | 
						|
      var indexedCalls = []; | 
						|
 | 
						|
      if (iNth < length) { | 
						|
        if (iNth - 1 >= 0) { | 
						|
          var i = iNth - 1; // Is there a preceding call that is equal to expected args? | 
						|
 | 
						|
          while (i >= 0 && !isEqualCall(expected, calls[i])) { | 
						|
            i -= 1; | 
						|
          } | 
						|
 | 
						|
          if (i < 0) { | 
						|
            i = iNth - 1; // otherwise, adjacent call | 
						|
          } | 
						|
 | 
						|
          indexedCalls.push([i, calls[i]]); | 
						|
        } | 
						|
 | 
						|
        indexedCalls.push([iNth, calls[iNth]]); | 
						|
 | 
						|
        if (iNth + 1 < length) { | 
						|
          var _i2 = iNth + 1; // Is there a following call that is equal to expected args? | 
						|
 | 
						|
 | 
						|
          while (_i2 < length && !isEqualCall(expected, calls[_i2])) { | 
						|
            _i2 += 1; | 
						|
          } | 
						|
 | 
						|
          if (_i2 >= length) { | 
						|
            _i2 = iNth + 1; // otherwise, adjacent call | 
						|
          } | 
						|
 | 
						|
          indexedCalls.push([_i2, calls[_i2]]); | 
						|
        } | 
						|
      } else if (length > 0) { | 
						|
        // The number of received calls is fewer than the expected number. | 
						|
        var _i3 = length - 1; // Is there a call that is equal to expected args? | 
						|
 | 
						|
 | 
						|
        while (_i3 >= 0 && !isEqualCall(expected, calls[_i3])) { | 
						|
          _i3 -= 1; | 
						|
        } | 
						|
 | 
						|
        if (_i3 < 0) { | 
						|
          _i3 = length - 1; // otherwise, last call | 
						|
        } | 
						|
 | 
						|
        indexedCalls.push([_i3, calls[_i3]]); | 
						|
      } | 
						|
 | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "n: ".concat(nth, "\n") + printExpectedReceivedCallsPositive(expected, indexedCalls, isExpand(_this3.expand), calls.length === 1, iNth) + "\nNumber of calls: ".concat((0, _jestMatcherUtils.printReceived)(calls.length)); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var createNthReturnedWithMatcher = function createNthReturnedWithMatcher(matcherName) { | 
						|
  return function (received, nth, expected) { | 
						|
    var expectedArgument = 'n'; | 
						|
    var options = { | 
						|
      expectedColor: function expectedColor(arg) { | 
						|
        return arg; | 
						|
      }, | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise, | 
						|
      secondArgument: 'expected' | 
						|
    }; | 
						|
    ensureMock(received, matcherName, expectedArgument, options); | 
						|
 | 
						|
    if (!Number.isSafeInteger(nth) || nth < 1) { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, expectedArgument, options), "".concat(expectedArgument, " must be a positive integer"), (0, _jestMatcherUtils.printWithType)(expectedArgument, nth, _jestMatcherUtils.stringify))); | 
						|
    } | 
						|
 | 
						|
    var receivedName = received.getMockName(); | 
						|
    var _received$mock3 = received.mock, | 
						|
        calls = _received$mock3.calls, | 
						|
        results = _received$mock3.results; | 
						|
    var length = results.length; | 
						|
    var iNth = nth - 1; | 
						|
    var pass = iNth < length && isEqualReturn(expected, results[iNth]); | 
						|
    var message = pass ? function () { | 
						|
      // Display preceding and following results, | 
						|
      var indexedResults = []; | 
						|
 | 
						|
      if (iNth - 1 >= 0) { | 
						|
        indexedResults.push([iNth - 1, results[iNth - 1]]); | 
						|
      } | 
						|
 | 
						|
      indexedResults.push([iNth, results[iNth]]); | 
						|
 | 
						|
      if (iNth + 1 < length) { | 
						|
        indexedResults.push([iNth + 1, results[iNth + 1]]); | 
						|
      } | 
						|
 | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "n: ".concat(nth, "\n") + "Expected: not ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + (results.length === 1 && results[0].type === 'return' && (0, _jestMatcherUtils.stringify)(results[0].value) === (0, _jestMatcherUtils.stringify)(expected) ? '' : printReceivedResults('Received:     ', expected, indexedResults, results.length === 1, iNth)) + printNumberOfReturns(countReturns(results), calls.length); | 
						|
    } : function () { | 
						|
      // Display preceding and following results: | 
						|
      // * nearest result that is equal to expected value | 
						|
      // * otherwise, adjacent result | 
						|
      var indexedResults = []; | 
						|
 | 
						|
      if (iNth < length) { | 
						|
        if (iNth - 1 >= 0) { | 
						|
          var i = iNth - 1; // Is there a preceding result that is equal to expected value? | 
						|
 | 
						|
          while (i >= 0 && !isEqualReturn(expected, results[i])) { | 
						|
            i -= 1; | 
						|
          } | 
						|
 | 
						|
          if (i < 0) { | 
						|
            i = iNth - 1; // otherwise, adjacent result | 
						|
          } | 
						|
 | 
						|
          indexedResults.push([i, results[i]]); | 
						|
        } | 
						|
 | 
						|
        indexedResults.push([iNth, results[iNth]]); | 
						|
 | 
						|
        if (iNth + 1 < length) { | 
						|
          var _i4 = iNth + 1; // Is there a following result that is equal to expected value? | 
						|
 | 
						|
 | 
						|
          while (_i4 < length && !isEqualReturn(expected, results[_i4])) { | 
						|
            _i4 += 1; | 
						|
          } | 
						|
 | 
						|
          if (_i4 >= length) { | 
						|
            _i4 = iNth + 1; // otherwise, adjacent result | 
						|
          } | 
						|
 | 
						|
          indexedResults.push([_i4, results[_i4]]); | 
						|
        } | 
						|
      } else if (length > 0) { | 
						|
        // The number of received calls is fewer than the expected number. | 
						|
        var _i5 = length - 1; // Is there a result that is equal to expected value? | 
						|
 | 
						|
 | 
						|
        while (_i5 >= 0 && !isEqualReturn(expected, results[_i5])) { | 
						|
          _i5 -= 1; | 
						|
        } | 
						|
 | 
						|
        if (_i5 < 0) { | 
						|
          _i5 = length - 1; // otherwise, last result | 
						|
        } | 
						|
 | 
						|
        indexedResults.push([_i5, results[_i5]]); | 
						|
      } | 
						|
 | 
						|
      return (0, _jestMatcherUtils.matcherHint)(matcherName, receivedName, expectedArgument, options) + '\n\n' + "n: ".concat(nth, "\n") + "Expected: ".concat((0, _jestMatcherUtils.printExpected)(expected), "\n") + printReceivedResults('Received: ', expected, indexedResults, results.length === 1, iNth) + printNumberOfReturns(countReturns(results), calls.length); | 
						|
    }; | 
						|
    return { | 
						|
      message: message, | 
						|
      pass: pass | 
						|
    }; | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var spyMatchers = { | 
						|
  lastCalledWith: createLastCalledWithMatcher('lastCalledWith'), | 
						|
  lastReturnedWith: createLastReturnedMatcher('lastReturnedWith'), | 
						|
  nthCalledWith: createNthCalledWithMatcher('nthCalledWith'), | 
						|
  nthReturnedWith: createNthReturnedWithMatcher('nthReturnedWith'), | 
						|
  toBeCalled: createToBeCalledMatcher('toBeCalled'), | 
						|
  toBeCalledTimes: createToBeCalledTimesMatcher('toBeCalledTimes'), | 
						|
  toBeCalledWith: createToBeCalledWithMatcher('toBeCalledWith'), | 
						|
  toHaveBeenCalled: createToBeCalledMatcher('toHaveBeenCalled'), | 
						|
  toHaveBeenCalledTimes: createToBeCalledTimesMatcher('toHaveBeenCalledTimes'), | 
						|
  toHaveBeenCalledWith: createToBeCalledWithMatcher('toHaveBeenCalledWith'), | 
						|
  toHaveBeenLastCalledWith: createLastCalledWithMatcher('toHaveBeenLastCalledWith'), | 
						|
  toHaveBeenNthCalledWith: createNthCalledWithMatcher('toHaveBeenNthCalledWith'), | 
						|
  toHaveLastReturnedWith: createLastReturnedMatcher('toHaveLastReturnedWith'), | 
						|
  toHaveNthReturnedWith: createNthReturnedWithMatcher('toHaveNthReturnedWith'), | 
						|
  toHaveReturned: createToReturnMatcher('toHaveReturned'), | 
						|
  toHaveReturnedTimes: createToReturnTimesMatcher('toHaveReturnedTimes'), | 
						|
  toHaveReturnedWith: createToReturnWithMatcher('toHaveReturnedWith'), | 
						|
  toReturn: createToReturnMatcher('toReturn'), | 
						|
  toReturnTimes: createToReturnTimesMatcher('toReturnTimes'), | 
						|
  toReturnWith: createToReturnWithMatcher('toReturnWith') | 
						|
}; | 
						|
 | 
						|
var isMock = function isMock(received) { | 
						|
  return received != null && received._isMockFunction === true; | 
						|
}; | 
						|
 | 
						|
var isSpy = function isSpy(received) { | 
						|
  return received != null && received.calls != null && typeof received.calls.all === 'function' && typeof received.calls.count === 'function'; | 
						|
}; | 
						|
 | 
						|
var ensureMockOrSpy = function ensureMockOrSpy(received, matcherName, expectedArgument, options) { | 
						|
  if (!isMock(received) && !isSpy(received)) { | 
						|
    throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, expectedArgument, options), "".concat((0, _jestMatcherUtils.RECEIVED_COLOR)('received'), " value must be a mock or spy function"), (0, _jestMatcherUtils.printWithType)('Received', received, _jestMatcherUtils.printReceived))); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
var ensureMock = function ensureMock(received, matcherName, expectedArgument, options) { | 
						|
  if (!isMock(received)) { | 
						|
    throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, expectedArgument, options), "".concat((0, _jestMatcherUtils.RECEIVED_COLOR)('received'), " value must be a mock function"), (0, _jestMatcherUtils.printWithType)('Received', received, _jestMatcherUtils.printReceived))); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
var _default = spyMatchers; | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/expect/src/toThrowMatchers.ts": | 
						|
/*!************************************************!*\ | 
						|
  !*** ./packages/expect/src/toThrowMatchers.ts ***! | 
						|
  \************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(process) { | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = exports.createMatcher = void 0; | 
						|
 | 
						|
var _jestMessageUtil = __webpack_require__(/*! jest-message-util */ "./packages/jest-message-util/build/index.js"); | 
						|
 | 
						|
var _jestMatcherUtils = __webpack_require__(/*! jest-matcher-utils */ "./packages/jest-matcher-utils/build/index.js"); | 
						|
 | 
						|
var _print = __webpack_require__(/*! ./print */ "./packages/expect/src/print.ts"); | 
						|
 | 
						|
var _utils = __webpack_require__(/*! ./utils */ "./packages/expect/src/utils.ts"); | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
var DID_NOT_THROW = 'Received function did not throw'; | 
						|
 | 
						|
var getThrown = function getThrown(e) { | 
						|
  var hasMessage = e !== null && e !== undefined && typeof e.message === 'string'; | 
						|
 | 
						|
  if (hasMessage && typeof e.name === 'string' && typeof e.stack === 'string') { | 
						|
    return { | 
						|
      hasMessage: hasMessage, | 
						|
      isError: true, | 
						|
      message: e.message, | 
						|
      value: e | 
						|
    }; | 
						|
  } | 
						|
 | 
						|
  return { | 
						|
    hasMessage: hasMessage, | 
						|
    isError: false, | 
						|
    message: hasMessage ? e.message : String(e), | 
						|
    value: e | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var createMatcher = function createMatcher(matcherName, fromPromise) { | 
						|
  return function (received, expected) { | 
						|
    var options = { | 
						|
      isNot: this.isNot, | 
						|
      promise: this.promise | 
						|
    }; | 
						|
    var thrown = null; | 
						|
 | 
						|
    if (fromPromise && (0, _utils.isError)(received)) { | 
						|
      thrown = getThrown(received); | 
						|
    } else { | 
						|
      if (typeof received !== 'function') { | 
						|
        if (!fromPromise) { | 
						|
          var placeholder = expected === undefined ? '' : 'expected'; | 
						|
          throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, placeholder, options), "".concat((0, _jestMatcherUtils.RECEIVED_COLOR)('received'), " value must be a function"), (0, _jestMatcherUtils.printWithType)('Received', received, _jestMatcherUtils.printReceived))); | 
						|
        } | 
						|
      } else { | 
						|
        try { | 
						|
          received(); | 
						|
        } catch (e) { | 
						|
          thrown = getThrown(e); | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    if (expected === undefined) { | 
						|
      return toThrow(matcherName, options, thrown); | 
						|
    } else if (typeof expected === 'function') { | 
						|
      return toThrowExpectedClass(matcherName, options, thrown, expected); | 
						|
    } else if (typeof expected === 'string') { | 
						|
      return toThrowExpectedString(matcherName, options, thrown, expected); | 
						|
    } else if (expected !== null && typeof expected.test === 'function') { | 
						|
      return toThrowExpectedRegExp(matcherName, options, thrown, expected); | 
						|
    } else if (expected !== null && typeof expected.asymmetricMatch === 'function') { | 
						|
      return toThrowExpectedAsymmetric(matcherName, options, thrown, expected); | 
						|
    } else if (expected !== null && _typeof(expected) === 'object') { | 
						|
      return toThrowExpectedObject(matcherName, options, thrown, expected); | 
						|
    } else { | 
						|
      throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options), "".concat((0, _jestMatcherUtils.EXPECTED_COLOR)('expected'), " value must be a string or regular expression or class or error"), (0, _jestMatcherUtils.printWithType)('Expected', expected, _jestMatcherUtils.printExpected))); | 
						|
    } | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.createMatcher = createMatcher; | 
						|
var matchers = { | 
						|
  toThrow: createMatcher('toThrow'), | 
						|
  toThrowError: createMatcher('toThrowError') | 
						|
}; | 
						|
 | 
						|
var toThrowExpectedRegExp = function toThrowExpectedRegExp(matcherName, options, thrown, expected) { | 
						|
  var pass = thrown !== null && expected.test(thrown.message); | 
						|
  var message = pass ? function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + formatExpected('Expected pattern: not ', expected) + (thrown !== null && thrown.hasMessage ? formatReceived('Received message:     ', thrown, 'message', expected) + formatStack(thrown) : formatReceived('Received value:       ', thrown, 'value')); | 
						|
  } : function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + formatExpected('Expected pattern: ', expected) + (thrown === null ? '\n' + DID_NOT_THROW : thrown.hasMessage ? formatReceived('Received message: ', thrown, 'message') + formatStack(thrown) : formatReceived('Received value:   ', thrown, 'value')); | 
						|
  }; | 
						|
  return { | 
						|
    message: message, | 
						|
    pass: pass | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var toThrowExpectedAsymmetric = function toThrowExpectedAsymmetric(matcherName, options, thrown, expected) { | 
						|
  var pass = thrown !== null && expected.asymmetricMatch(thrown.value); | 
						|
  var message = pass ? function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + formatExpected('Expected asymmetric matcher: not ', expected) + '\n' + (thrown !== null && thrown.hasMessage ? formatReceived('Received name:    ', thrown, 'name') + formatReceived('Received message: ', thrown, 'message') + formatStack(thrown) : formatReceived('Thrown value: ', thrown, 'value')); | 
						|
  } : function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + formatExpected('Expected asymmetric matcher: ', expected) + '\n' + (thrown === null ? DID_NOT_THROW : thrown.hasMessage ? formatReceived('Received name:    ', thrown, 'name') + formatReceived('Received message: ', thrown, 'message') + formatStack(thrown) : formatReceived('Thrown value: ', thrown, 'value')); | 
						|
  }; | 
						|
  return { | 
						|
    message: message, | 
						|
    pass: pass | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var toThrowExpectedObject = function toThrowExpectedObject(matcherName, options, thrown, expected) { | 
						|
  var pass = thrown !== null && thrown.message === expected.message; | 
						|
  var message = pass ? function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + formatExpected('Expected message: not ', expected.message) + (thrown !== null && thrown.hasMessage ? formatStack(thrown) : formatReceived('Received value:       ', thrown, 'value')); | 
						|
  } : function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + (thrown === null ? formatExpected('Expected message: ', expected.message) + '\n' + DID_NOT_THROW : thrown.hasMessage ? (0, _jestMatcherUtils.printDiffOrStringify)(expected.message, thrown.message, 'Expected message', 'Received message', true) + '\n' + formatStack(thrown) : formatExpected('Expected message: ', expected.message) + formatReceived('Received value:   ', thrown, 'value')); | 
						|
  }; | 
						|
  return { | 
						|
    message: message, | 
						|
    pass: pass | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var toThrowExpectedClass = function toThrowExpectedClass(matcherName, options, thrown, expected) { | 
						|
  var pass = thrown !== null && thrown.value instanceof expected; | 
						|
  var message = pass ? function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + (0, _print.printExpectedConstructorNameNot)('Expected constructor', expected) + (thrown !== null && thrown.value != null && typeof thrown.value.constructor === 'function' && thrown.value.constructor !== expected ? (0, _print.printReceivedConstructorNameNot)('Received constructor', thrown.value.constructor, expected) : '') + '\n' + (thrown !== null && thrown.hasMessage ? formatReceived('Received message: ', thrown, 'message') + formatStack(thrown) : formatReceived('Received value: ', thrown, 'value')); | 
						|
  } : function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + (0, _print.printExpectedConstructorName)('Expected constructor', expected) + (thrown === null ? '\n' + DID_NOT_THROW : (thrown.value != null && typeof thrown.value.constructor === 'function' ? (0, _print.printReceivedConstructorName)('Received constructor', thrown.value.constructor) : '') + '\n' + (thrown.hasMessage ? formatReceived('Received message: ', thrown, 'message') + formatStack(thrown) : formatReceived('Received value: ', thrown, 'value'))); | 
						|
  }; | 
						|
  return { | 
						|
    message: message, | 
						|
    pass: pass | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var toThrowExpectedString = function toThrowExpectedString(matcherName, options, thrown, expected) { | 
						|
  var pass = thrown !== null && thrown.message.includes(expected); | 
						|
  var message = pass ? function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + formatExpected('Expected substring: not ', expected) + (thrown !== null && thrown.hasMessage ? formatReceived('Received message:       ', thrown, 'message', expected) + formatStack(thrown) : formatReceived('Received value:         ', thrown, 'value')); | 
						|
  } : function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, options) + '\n\n' + formatExpected('Expected substring: ', expected) + (thrown === null ? '\n' + DID_NOT_THROW : thrown.hasMessage ? formatReceived('Received message:   ', thrown, 'message') + formatStack(thrown) : formatReceived('Received value:     ', thrown, 'value')); | 
						|
  }; | 
						|
  return { | 
						|
    message: message, | 
						|
    pass: pass | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var toThrow = function toThrow(matcherName, options, thrown) { | 
						|
  var pass = thrown !== null; | 
						|
  var message = pass ? function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) + '\n\n' + (thrown !== null && thrown.hasMessage ? formatReceived('Error name:    ', thrown, 'name') + formatReceived('Error message: ', thrown, 'message') + formatStack(thrown) : formatReceived('Thrown value: ', thrown, 'value')); | 
						|
  } : function () { | 
						|
    return (0, _jestMatcherUtils.matcherHint)(matcherName, undefined, '', options) + '\n\n' + DID_NOT_THROW; | 
						|
  }; | 
						|
  return { | 
						|
    message: message, | 
						|
    pass: pass | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var formatExpected = function formatExpected(label, expected) { | 
						|
  return label + (0, _jestMatcherUtils.printExpected)(expected) + '\n'; | 
						|
}; | 
						|
 | 
						|
var formatReceived = function formatReceived(label, thrown, key, expected) { | 
						|
  if (thrown === null) { | 
						|
    return ''; | 
						|
  } | 
						|
 | 
						|
  if (key === 'message') { | 
						|
    var _message = thrown.message; | 
						|
 | 
						|
    if (typeof expected === 'string') { | 
						|
      var index = _message.indexOf(expected); | 
						|
 | 
						|
      if (index !== -1) { | 
						|
        return label + (0, _print.printReceivedStringContainExpectedSubstring)(_message, index, expected.length) + '\n'; | 
						|
      } | 
						|
    } else if (expected instanceof RegExp) { | 
						|
      return label + (0, _print.printReceivedStringContainExpectedResult)(_message, typeof expected.exec === 'function' ? expected.exec(_message) : null) + '\n'; | 
						|
    } | 
						|
 | 
						|
    return label + (0, _jestMatcherUtils.printReceived)(_message) + '\n'; | 
						|
  } | 
						|
 | 
						|
  if (key === 'name') { | 
						|
    return thrown.isError ? label + (0, _jestMatcherUtils.printReceived)(thrown.value.name) + '\n' : ''; | 
						|
  } | 
						|
 | 
						|
  if (key === 'value') { | 
						|
    return thrown.isError ? '' : label + (0, _jestMatcherUtils.printReceived)(thrown.value) + '\n'; | 
						|
  } | 
						|
 | 
						|
  return ''; | 
						|
}; | 
						|
 | 
						|
var formatStack = function formatStack(thrown) { | 
						|
  return thrown === null || !thrown.isError ? '' : (0, _jestMessageUtil.formatStackTrace)((0, _jestMessageUtil.separateMessageFromStack)(thrown.value.stack).stack, { | 
						|
    rootDir: process.cwd(), | 
						|
    testMatch: [] | 
						|
  }, { | 
						|
    noStackTrace: false | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
var _default = matchers; | 
						|
exports.default = _default; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/process/browser.js */ "./node_modules/process/browser.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/expect/src/utils.ts": | 
						|
/*!**************************************!*\ | 
						|
  !*** ./packages/expect/src/utils.ts ***! | 
						|
  \**************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.emptyObject = emptyObject; | 
						|
exports.isOneline = exports.isError = exports.partition = exports.sparseArrayEquality = exports.typeEquality = exports.subsetEquality = exports.iterableEquality = exports.getObjectSubset = exports.getPath = exports.hasOwnProperty = void 0; | 
						|
 | 
						|
var _jestGetType = __webpack_require__(/*! jest-get-type */ "./packages/jest-get-type/build/index.js"); | 
						|
 | 
						|
var _jasmineUtils = __webpack_require__(/*! ./jasmineUtils */ "./packages/expect/src/jasmineUtils.ts"); | 
						|
 | 
						|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } | 
						|
 | 
						|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } | 
						|
 | 
						|
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } | 
						|
 | 
						|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
// Return whether object instance inherits getter from its class. | 
						|
var hasGetterFromConstructor = function hasGetterFromConstructor(object, key) { | 
						|
  var constructor = object.constructor; | 
						|
 | 
						|
  if (constructor === Object) { | 
						|
    // A literal object has Object as constructor. | 
						|
    // Therefore, it cannot inherit application-specific getters. | 
						|
    // Furthermore, Object has __proto__ getter which is not relevant. | 
						|
    // Array, Boolean, Number, String constructors don’t have any getters. | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (typeof constructor !== 'function') { | 
						|
    // Object.create(null) constructs object with no constructor nor prototype. | 
						|
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create#Custom_and_Null_objects | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  var descriptor = Object.getOwnPropertyDescriptor(constructor.prototype, key); | 
						|
  return descriptor !== undefined && typeof descriptor.get === 'function'; | 
						|
}; | 
						|
 | 
						|
var hasOwnProperty = function hasOwnProperty(object, key) { | 
						|
  return Object.prototype.hasOwnProperty.call(object, key) || hasGetterFromConstructor(object, key); | 
						|
}; | 
						|
 | 
						|
exports.hasOwnProperty = hasOwnProperty; | 
						|
 | 
						|
var getPath = function getPath(object, propertyPath) { | 
						|
  if (!Array.isArray(propertyPath)) { | 
						|
    propertyPath = propertyPath.split('.'); | 
						|
  } | 
						|
 | 
						|
  if (propertyPath.length) { | 
						|
    var lastProp = propertyPath.length === 1; | 
						|
    var prop = propertyPath[0]; | 
						|
    var newObject = object[prop]; | 
						|
 | 
						|
    if (!lastProp && (newObject === null || newObject === undefined)) { | 
						|
      // This is not the last prop in the chain. If we keep recursing it will | 
						|
      // hit a `can't access property X of undefined | null`. At this point we | 
						|
      // know that the chain has broken and we can return right away. | 
						|
      return { | 
						|
        hasEndProp: false, | 
						|
        lastTraversedObject: object, | 
						|
        traversedPath: [] | 
						|
      }; | 
						|
    } | 
						|
 | 
						|
    var result = getPath(newObject, propertyPath.slice(1)); | 
						|
 | 
						|
    if (result.lastTraversedObject === null) { | 
						|
      result.lastTraversedObject = object; | 
						|
    } | 
						|
 | 
						|
    result.traversedPath.unshift(prop); | 
						|
 | 
						|
    if (lastProp) { | 
						|
      // Does object have the property with an undefined value? | 
						|
      // Although primitive values support bracket notation (above) | 
						|
      // they would throw TypeError for in operator (below). | 
						|
      result.hasEndProp = newObject !== undefined || !(0, _jestGetType.isPrimitive)(object) && prop in object; | 
						|
 | 
						|
      if (!result.hasEndProp) { | 
						|
        result.traversedPath.shift(); | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return result; | 
						|
  } | 
						|
 | 
						|
  return { | 
						|
    lastTraversedObject: null, | 
						|
    traversedPath: [], | 
						|
    value: object | 
						|
  }; | 
						|
}; // Strip properties from object that are not present in the subset. Useful for | 
						|
// printing the diff for toMatchObject() without adding unrelated noise. | 
						|
 | 
						|
 | 
						|
exports.getPath = getPath; | 
						|
 | 
						|
var getObjectSubset = function getObjectSubset(object, subset) { | 
						|
  var seenReferences = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new WeakMap(); | 
						|
 | 
						|
  if (Array.isArray(object)) { | 
						|
    if (Array.isArray(subset) && subset.length === object.length) { | 
						|
      return subset.map(function (sub, i) { | 
						|
        return getObjectSubset(object[i], sub); | 
						|
      }); | 
						|
    } | 
						|
  } else if (object instanceof Date) { | 
						|
    return object; | 
						|
  } else if (isObject(object) && isObject(subset)) { | 
						|
    var trimmed = {}; | 
						|
    seenReferences.set(object, trimmed); | 
						|
    Object.keys(object).filter(function (key) { | 
						|
      return hasOwnProperty(subset, key); | 
						|
    }).forEach(function (key) { | 
						|
      trimmed[key] = seenReferences.has(object[key]) ? seenReferences.get(object[key]) : getObjectSubset(object[key], subset[key], seenReferences); | 
						|
    }); | 
						|
 | 
						|
    if (Object.keys(trimmed).length > 0) { | 
						|
      return trimmed; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return object; | 
						|
}; | 
						|
 | 
						|
exports.getObjectSubset = getObjectSubset; | 
						|
var IteratorSymbol = Symbol.iterator; | 
						|
 | 
						|
var hasIterator = function hasIterator(object) { | 
						|
  return !!(object != null && object[IteratorSymbol]); | 
						|
}; | 
						|
 | 
						|
var iterableEquality = function iterableEquality(a, b) { | 
						|
  var aStack = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; | 
						|
  var bStack = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; | 
						|
 | 
						|
  if (_typeof(a) !== 'object' || _typeof(b) !== 'object' || Array.isArray(a) || Array.isArray(b) || !hasIterator(a) || !hasIterator(b)) { | 
						|
    return undefined; | 
						|
  } | 
						|
 | 
						|
  if (a.constructor !== b.constructor) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  var length = aStack.length; | 
						|
 | 
						|
  while (length--) { | 
						|
    // Linear search. Performance is inversely proportional to the number of | 
						|
    // unique nested structures. | 
						|
    // circular references at same depth are equal | 
						|
    // circular reference is not equal to non-circular one | 
						|
    if (aStack[length] === a) { | 
						|
      return bStack[length] === b; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  aStack.push(a); | 
						|
  bStack.push(b); | 
						|
 | 
						|
  var iterableEqualityWithStack = function iterableEqualityWithStack(a, b) { | 
						|
    return iterableEquality(a, b, _toConsumableArray(aStack), _toConsumableArray(bStack)); | 
						|
  }; | 
						|
 | 
						|
  if (a.size !== undefined) { | 
						|
    if (a.size !== b.size) { | 
						|
      return false; | 
						|
    } else if ((0, _jasmineUtils.isA)('Set', a) || (0, _jasmineUtils.isImmutableUnorderedSet)(a)) { | 
						|
      var allFound = true; | 
						|
      var _iteratorNormalCompletion = true; | 
						|
      var _didIteratorError = false; | 
						|
      var _iteratorError = undefined; | 
						|
 | 
						|
      try { | 
						|
        for (var _iterator = a[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | 
						|
          var aValue = _step.value; | 
						|
 | 
						|
          if (!b.has(aValue)) { | 
						|
            var has = false; | 
						|
            var _iteratorNormalCompletion2 = true; | 
						|
            var _didIteratorError2 = false; | 
						|
            var _iteratorError2 = undefined; | 
						|
 | 
						|
            try { | 
						|
              for (var _iterator2 = b[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { | 
						|
                var bValue = _step2.value; | 
						|
                var isEqual = (0, _jasmineUtils.equals)(aValue, bValue, [iterableEqualityWithStack]); | 
						|
 | 
						|
                if (isEqual === true) { | 
						|
                  has = true; | 
						|
                } | 
						|
              } | 
						|
            } catch (err) { | 
						|
              _didIteratorError2 = true; | 
						|
              _iteratorError2 = err; | 
						|
            } finally { | 
						|
              try { | 
						|
                if (!_iteratorNormalCompletion2 && _iterator2.return != null) { | 
						|
                  _iterator2.return(); | 
						|
                } | 
						|
              } finally { | 
						|
                if (_didIteratorError2) { | 
						|
                  throw _iteratorError2; | 
						|
                } | 
						|
              } | 
						|
            } | 
						|
 | 
						|
            if (has === false) { | 
						|
              allFound = false; | 
						|
              break; | 
						|
            } | 
						|
          } | 
						|
        } // Remove the first value from the stack of traversed values. | 
						|
 | 
						|
      } catch (err) { | 
						|
        _didIteratorError = true; | 
						|
        _iteratorError = err; | 
						|
      } finally { | 
						|
        try { | 
						|
          if (!_iteratorNormalCompletion && _iterator.return != null) { | 
						|
            _iterator.return(); | 
						|
          } | 
						|
        } finally { | 
						|
          if (_didIteratorError) { | 
						|
            throw _iteratorError; | 
						|
          } | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      aStack.pop(); | 
						|
      bStack.pop(); | 
						|
      return allFound; | 
						|
    } else if ((0, _jasmineUtils.isA)('Map', a) || (0, _jasmineUtils.isImmutableUnorderedKeyed)(a)) { | 
						|
      var _allFound = true; | 
						|
      var _iteratorNormalCompletion3 = true; | 
						|
      var _didIteratorError3 = false; | 
						|
      var _iteratorError3 = undefined; | 
						|
 | 
						|
      try { | 
						|
        for (var _iterator3 = a[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { | 
						|
          var aEntry = _step3.value; | 
						|
 | 
						|
          if (!b.has(aEntry[0]) || !(0, _jasmineUtils.equals)(aEntry[1], b.get(aEntry[0]), [iterableEqualityWithStack])) { | 
						|
            var _has = false; | 
						|
            var _iteratorNormalCompletion4 = true; | 
						|
            var _didIteratorError4 = false; | 
						|
            var _iteratorError4 = undefined; | 
						|
 | 
						|
            try { | 
						|
              for (var _iterator4 = b[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { | 
						|
                var bEntry = _step4.value; | 
						|
                var matchedKey = (0, _jasmineUtils.equals)(aEntry[0], bEntry[0], [iterableEqualityWithStack]); | 
						|
                var matchedValue = false; | 
						|
 | 
						|
                if (matchedKey === true) { | 
						|
                  matchedValue = (0, _jasmineUtils.equals)(aEntry[1], bEntry[1], [iterableEqualityWithStack]); | 
						|
                } | 
						|
 | 
						|
                if (matchedValue === true) { | 
						|
                  _has = true; | 
						|
                } | 
						|
              } | 
						|
            } catch (err) { | 
						|
              _didIteratorError4 = true; | 
						|
              _iteratorError4 = err; | 
						|
            } finally { | 
						|
              try { | 
						|
                if (!_iteratorNormalCompletion4 && _iterator4.return != null) { | 
						|
                  _iterator4.return(); | 
						|
                } | 
						|
              } finally { | 
						|
                if (_didIteratorError4) { | 
						|
                  throw _iteratorError4; | 
						|
                } | 
						|
              } | 
						|
            } | 
						|
 | 
						|
            if (_has === false) { | 
						|
              _allFound = false; | 
						|
              break; | 
						|
            } | 
						|
          } | 
						|
        } // Remove the first value from the stack of traversed values. | 
						|
 | 
						|
      } catch (err) { | 
						|
        _didIteratorError3 = true; | 
						|
        _iteratorError3 = err; | 
						|
      } finally { | 
						|
        try { | 
						|
          if (!_iteratorNormalCompletion3 && _iterator3.return != null) { | 
						|
            _iterator3.return(); | 
						|
          } | 
						|
        } finally { | 
						|
          if (_didIteratorError3) { | 
						|
            throw _iteratorError3; | 
						|
          } | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      aStack.pop(); | 
						|
      bStack.pop(); | 
						|
      return _allFound; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var bIterator = b[IteratorSymbol](); | 
						|
  var _iteratorNormalCompletion5 = true; | 
						|
  var _didIteratorError5 = false; | 
						|
  var _iteratorError5 = undefined; | 
						|
 | 
						|
  try { | 
						|
    for (var _iterator5 = a[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { | 
						|
      var _aValue = _step5.value; | 
						|
      var nextB = bIterator.next(); | 
						|
 | 
						|
      if (nextB.done || !(0, _jasmineUtils.equals)(_aValue, nextB.value, [iterableEqualityWithStack])) { | 
						|
        return false; | 
						|
      } | 
						|
    } | 
						|
  } catch (err) { | 
						|
    _didIteratorError5 = true; | 
						|
    _iteratorError5 = err; | 
						|
  } finally { | 
						|
    try { | 
						|
      if (!_iteratorNormalCompletion5 && _iterator5.return != null) { | 
						|
        _iterator5.return(); | 
						|
      } | 
						|
    } finally { | 
						|
      if (_didIteratorError5) { | 
						|
        throw _iteratorError5; | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (!bIterator.next().done) { | 
						|
    return false; | 
						|
  } // Remove the first value from the stack of traversed values. | 
						|
 | 
						|
 | 
						|
  aStack.pop(); | 
						|
  bStack.pop(); | 
						|
  return true; | 
						|
}; | 
						|
 | 
						|
exports.iterableEquality = iterableEquality; | 
						|
 | 
						|
var isObject = function isObject(a) { | 
						|
  return a !== null && _typeof(a) === 'object'; | 
						|
}; | 
						|
 | 
						|
var isObjectWithKeys = function isObjectWithKeys(a) { | 
						|
  return isObject(a) && !(a instanceof Error) && !(a instanceof Array) && !(a instanceof Date); | 
						|
}; | 
						|
 | 
						|
var subsetEquality = function subsetEquality(object, subset) { | 
						|
  // subsetEquality needs to keep track of the references | 
						|
  // it has already visited to avoid infinite loops in case | 
						|
  // there are circular references in the subset passed to it. | 
						|
  var subsetEqualityWithContext = function subsetEqualityWithContext() { | 
						|
    var seenReferences = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new WeakMap(); | 
						|
    return function (object, subset) { | 
						|
      if (!isObjectWithKeys(subset)) { | 
						|
        return undefined; | 
						|
      } | 
						|
 | 
						|
      return Object.keys(subset).every(function (key) { | 
						|
        if (isObjectWithKeys(subset[key])) { | 
						|
          if (seenReferences.get(subset[key])) { | 
						|
            return (0, _jasmineUtils.equals)(object[key], subset[key], [iterableEquality]); | 
						|
          } | 
						|
 | 
						|
          seenReferences.set(subset[key], true); | 
						|
        } | 
						|
 | 
						|
        return object != null && hasOwnProperty(object, key) && (0, _jasmineUtils.equals)(object[key], subset[key], [iterableEquality, subsetEqualityWithContext(seenReferences)]); | 
						|
      }); | 
						|
    }; | 
						|
  }; | 
						|
 | 
						|
  return subsetEqualityWithContext()(object, subset); | 
						|
}; | 
						|
 | 
						|
exports.subsetEquality = subsetEquality; | 
						|
 | 
						|
var typeEquality = function typeEquality(a, b) { | 
						|
  if (a == null || b == null || a.constructor === b.constructor) { | 
						|
    return undefined; | 
						|
  } | 
						|
 | 
						|
  return false; | 
						|
}; | 
						|
 | 
						|
exports.typeEquality = typeEquality; | 
						|
 | 
						|
var sparseArrayEquality = function sparseArrayEquality(a, b) { | 
						|
  if (!Array.isArray(a) || !Array.isArray(b)) { | 
						|
    return undefined; | 
						|
  } // A sparse array [, , 1] will have keys ["2"] whereas [undefined, undefined, 1] will have keys ["0", "1", "2"] | 
						|
 | 
						|
 | 
						|
  var aKeys = Object.keys(a); | 
						|
  var bKeys = Object.keys(b); | 
						|
  return (0, _jasmineUtils.equals)(a, b, [iterableEquality, typeEquality], true) && (0, _jasmineUtils.equals)(aKeys, bKeys); | 
						|
}; | 
						|
 | 
						|
exports.sparseArrayEquality = sparseArrayEquality; | 
						|
 | 
						|
var partition = function partition(items, predicate) { | 
						|
  var result = [[], []]; | 
						|
  items.forEach(function (item) { | 
						|
    return result[predicate(item) ? 0 : 1].push(item); | 
						|
  }); | 
						|
  return result; | 
						|
}; // Copied from https://github.com/graingert/angular.js/blob/a43574052e9775cbc1d7dd8a086752c979b0f020/src/Angular.js#L685-L693 | 
						|
 | 
						|
 | 
						|
exports.partition = partition; | 
						|
 | 
						|
var isError = function isError(value) { | 
						|
  switch (Object.prototype.toString.call(value)) { | 
						|
    case '[object Error]': | 
						|
      return true; | 
						|
 | 
						|
    case '[object Exception]': | 
						|
      return true; | 
						|
 | 
						|
    case '[object DOMException]': | 
						|
      return true; | 
						|
 | 
						|
    default: | 
						|
      return value instanceof Error; | 
						|
  } | 
						|
}; | 
						|
 | 
						|
exports.isError = isError; | 
						|
 | 
						|
function emptyObject(obj) { | 
						|
  return obj && _typeof(obj) === 'object' ? !Object.keys(obj).length : false; | 
						|
} | 
						|
 | 
						|
var MULTILINE_REGEXP = /[\r\n]/; | 
						|
 | 
						|
var isOneline = function isOneline(expected, received) { | 
						|
  return typeof expected === 'string' && typeof received === 'string' && (!MULTILINE_REGEXP.test(expected) || !MULTILINE_REGEXP.test(received)); | 
						|
}; | 
						|
 | 
						|
exports.isOneline = isOneline; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-diff/build/cleanupSemantic.js": | 
						|
/*!*****************************************************!*\ | 
						|
  !*** ./packages/jest-diff/build/cleanupSemantic.js ***! | 
						|
  \*****************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.cleanupSemantic = exports.DIFF_INSERT = exports.DIFF_DELETE = exports.DIFF_EQUAL = exports.Diff = void 0; | 
						|
 | 
						|
function _defineProperty(obj, key, value) { | 
						|
  if (key in obj) { | 
						|
    Object.defineProperty(obj, key, { | 
						|
      value: value, | 
						|
      enumerable: true, | 
						|
      configurable: true, | 
						|
      writable: true | 
						|
    }); | 
						|
  } else { | 
						|
    obj[key] = value; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
} | 
						|
/** | 
						|
 * Diff Match and Patch | 
						|
 * Copyright 2018 The diff-match-patch Authors. | 
						|
 * https://github.com/google/diff-match-patch | 
						|
 * | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License"); | 
						|
 * you may not use this file except in compliance with the License. | 
						|
 * You may obtain a copy of the License at | 
						|
 * | 
						|
 *   http://www.apache.org/licenses/LICENSE-2.0 | 
						|
 * | 
						|
 * Unless required by applicable law or agreed to in writing, software | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS, | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
						|
 * See the License for the specific language governing permissions and | 
						|
 * limitations under the License. | 
						|
 */ | 
						|
 | 
						|
/** | 
						|
 * @fileoverview Computes the difference between two texts to create a patch. | 
						|
 * Applies the patch onto another text, allowing for errors. | 
						|
 * @author fraser@google.com (Neil Fraser) | 
						|
 */ | 
						|
 | 
						|
/** | 
						|
 * CHANGES by pedrottimark to diff_match_patch_uncompressed.ts file: | 
						|
 * | 
						|
 * 1. Delete anything not needed to use diff_cleanupSemantic method | 
						|
 * 2. Convert from prototype properties to var declarations | 
						|
 * 3. Convert Diff to class from constructor and prototype | 
						|
 * 4. Add type annotations for arguments and return values | 
						|
 * 5. Add exports | 
						|
 */ | 
						|
 | 
						|
/** | 
						|
 * The data structure representing a diff is an array of tuples: | 
						|
 * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']] | 
						|
 * which means: delete 'Hello', add 'Goodbye' and keep ' world.' | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var DIFF_DELETE = -1; | 
						|
exports.DIFF_DELETE = DIFF_DELETE; | 
						|
var DIFF_INSERT = 1; | 
						|
exports.DIFF_INSERT = DIFF_INSERT; | 
						|
var DIFF_EQUAL = 0; | 
						|
/** | 
						|
 * Class representing one diff tuple. | 
						|
 * Attempts to look like a two-element array (which is what this used to be). | 
						|
 * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL. | 
						|
 * @param {string} text Text to be deleted, inserted, or retained. | 
						|
 * @constructor | 
						|
 */ | 
						|
 | 
						|
exports.DIFF_EQUAL = DIFF_EQUAL; | 
						|
 | 
						|
var Diff = function Diff(op, text) { | 
						|
  _classCallCheck(this, Diff); | 
						|
 | 
						|
  _defineProperty(this, 0, void 0); | 
						|
 | 
						|
  _defineProperty(this, 1, void 0); | 
						|
 | 
						|
  this[0] = op; | 
						|
  this[1] = text; | 
						|
}; | 
						|
/** | 
						|
 * Determine the common prefix of two strings. | 
						|
 * @param {string} text1 First string. | 
						|
 * @param {string} text2 Second string. | 
						|
 * @return {number} The number of characters common to the start of each | 
						|
 *     string. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.Diff = Diff; | 
						|
 | 
						|
var diff_commonPrefix = function diff_commonPrefix(text1, text2) { | 
						|
  // Quick check for common null cases. | 
						|
  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) { | 
						|
    return 0; | 
						|
  } // Binary search. | 
						|
  // Performance analysis: https://neil.fraser.name/news/2007/10/09/ | 
						|
 | 
						|
 | 
						|
  var pointermin = 0; | 
						|
  var pointermax = Math.min(text1.length, text2.length); | 
						|
  var pointermid = pointermax; | 
						|
  var pointerstart = 0; | 
						|
 | 
						|
  while (pointermin < pointermid) { | 
						|
    if (text1.substring(pointerstart, pointermid) == text2.substring(pointerstart, pointermid)) { | 
						|
      pointermin = pointermid; | 
						|
      pointerstart = pointermin; | 
						|
    } else { | 
						|
      pointermax = pointermid; | 
						|
    } | 
						|
 | 
						|
    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); | 
						|
  } | 
						|
 | 
						|
  return pointermid; | 
						|
}; | 
						|
/** | 
						|
 * Determine the common suffix of two strings. | 
						|
 * @param {string} text1 First string. | 
						|
 * @param {string} text2 Second string. | 
						|
 * @return {number} The number of characters common to the end of each string. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var diff_commonSuffix = function diff_commonSuffix(text1, text2) { | 
						|
  // Quick check for common null cases. | 
						|
  if (!text1 || !text2 || text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) { | 
						|
    return 0; | 
						|
  } // Binary search. | 
						|
  // Performance analysis: https://neil.fraser.name/news/2007/10/09/ | 
						|
 | 
						|
 | 
						|
  var pointermin = 0; | 
						|
  var pointermax = Math.min(text1.length, text2.length); | 
						|
  var pointermid = pointermax; | 
						|
  var pointerend = 0; | 
						|
 | 
						|
  while (pointermin < pointermid) { | 
						|
    if (text1.substring(text1.length - pointermid, text1.length - pointerend) == text2.substring(text2.length - pointermid, text2.length - pointerend)) { | 
						|
      pointermin = pointermid; | 
						|
      pointerend = pointermin; | 
						|
    } else { | 
						|
      pointermax = pointermid; | 
						|
    } | 
						|
 | 
						|
    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); | 
						|
  } | 
						|
 | 
						|
  return pointermid; | 
						|
}; | 
						|
/** | 
						|
 * Determine if the suffix of one string is the prefix of another. | 
						|
 * @param {string} text1 First string. | 
						|
 * @param {string} text2 Second string. | 
						|
 * @return {number} The number of characters common to the end of the first | 
						|
 *     string and the start of the second string. | 
						|
 * @private | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var diff_commonOverlap_ = function diff_commonOverlap_(text1, text2) { | 
						|
  // Cache the text lengths to prevent multiple calls. | 
						|
  var text1_length = text1.length; | 
						|
  var text2_length = text2.length; // Eliminate the null case. | 
						|
 | 
						|
  if (text1_length == 0 || text2_length == 0) { | 
						|
    return 0; | 
						|
  } // Truncate the longer string. | 
						|
 | 
						|
 | 
						|
  if (text1_length > text2_length) { | 
						|
    text1 = text1.substring(text1_length - text2_length); | 
						|
  } else if (text1_length < text2_length) { | 
						|
    text2 = text2.substring(0, text1_length); | 
						|
  } | 
						|
 | 
						|
  var text_length = Math.min(text1_length, text2_length); // Quick check for the worst case. | 
						|
 | 
						|
  if (text1 == text2) { | 
						|
    return text_length; | 
						|
  } // Start by looking for a single character match | 
						|
  // and increase length until no match is found. | 
						|
  // Performance analysis: https://neil.fraser.name/news/2010/11/04/ | 
						|
 | 
						|
 | 
						|
  var best = 0; | 
						|
  var length = 1; | 
						|
 | 
						|
  while (true) { | 
						|
    var pattern = text1.substring(text_length - length); | 
						|
    var found = text2.indexOf(pattern); | 
						|
 | 
						|
    if (found == -1) { | 
						|
      return best; | 
						|
    } | 
						|
 | 
						|
    length += found; | 
						|
 | 
						|
    if (found == 0 || text1.substring(text_length - length) == text2.substring(0, length)) { | 
						|
      best = length; | 
						|
      length++; | 
						|
    } | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Reduce the number of edits by eliminating semantically trivial equalities. | 
						|
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var diff_cleanupSemantic = function diff_cleanupSemantic(diffs) { | 
						|
  var changes = false; | 
						|
  var equalities = []; // Stack of indices where equalities are found. | 
						|
 | 
						|
  var equalitiesLength = 0; // Keeping our own length var is faster in JS. | 
						|
 | 
						|
  /** @type {?string} */ | 
						|
 | 
						|
  var lastEquality = null; // Always equal to diffs[equalities[equalitiesLength - 1]][1] | 
						|
 | 
						|
  var pointer = 0; // Index of current position. | 
						|
  // Number of characters that changed prior to the equality. | 
						|
 | 
						|
  var length_insertions1 = 0; | 
						|
  var length_deletions1 = 0; // Number of characters that changed after the equality. | 
						|
 | 
						|
  var length_insertions2 = 0; | 
						|
  var length_deletions2 = 0; | 
						|
 | 
						|
  while (pointer < diffs.length) { | 
						|
    if (diffs[pointer][0] == DIFF_EQUAL) { | 
						|
      // Equality found. | 
						|
      equalities[equalitiesLength++] = pointer; | 
						|
      length_insertions1 = length_insertions2; | 
						|
      length_deletions1 = length_deletions2; | 
						|
      length_insertions2 = 0; | 
						|
      length_deletions2 = 0; | 
						|
      lastEquality = diffs[pointer][1]; | 
						|
    } else { | 
						|
      // An insertion or deletion. | 
						|
      if (diffs[pointer][0] == DIFF_INSERT) { | 
						|
        length_insertions2 += diffs[pointer][1].length; | 
						|
      } else { | 
						|
        length_deletions2 += diffs[pointer][1].length; | 
						|
      } // Eliminate an equality that is smaller or equal to the edits on both | 
						|
      // sides of it. | 
						|
 | 
						|
 | 
						|
      if (lastEquality && lastEquality.length <= Math.max(length_insertions1, length_deletions1) && lastEquality.length <= Math.max(length_insertions2, length_deletions2)) { | 
						|
        // Duplicate record. | 
						|
        diffs.splice(equalities[equalitiesLength - 1], 0, new Diff(DIFF_DELETE, lastEquality)); // Change second copy to insert. | 
						|
 | 
						|
        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; // Throw away the equality we just deleted. | 
						|
 | 
						|
        equalitiesLength--; // Throw away the previous equality (it needs to be reevaluated). | 
						|
 | 
						|
        equalitiesLength--; | 
						|
        pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; | 
						|
        length_insertions1 = 0; // Reset the counters. | 
						|
 | 
						|
        length_deletions1 = 0; | 
						|
        length_insertions2 = 0; | 
						|
        length_deletions2 = 0; | 
						|
        lastEquality = null; | 
						|
        changes = true; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    pointer++; | 
						|
  } // Normalize the diff. | 
						|
 | 
						|
 | 
						|
  if (changes) { | 
						|
    diff_cleanupMerge(diffs); | 
						|
  } | 
						|
 | 
						|
  diff_cleanupSemanticLossless(diffs); // Find any overlaps between deletions and insertions. | 
						|
  // e.g: <del>abcxxx</del><ins>xxxdef</ins> | 
						|
  //   -> <del>abc</del>xxx<ins>def</ins> | 
						|
  // e.g: <del>xxxabc</del><ins>defxxx</ins> | 
						|
  //   -> <ins>def</ins>xxx<del>abc</del> | 
						|
  // Only extract an overlap if it is as big as the edit ahead or behind it. | 
						|
 | 
						|
  pointer = 1; | 
						|
 | 
						|
  while (pointer < diffs.length) { | 
						|
    if (diffs[pointer - 1][0] == DIFF_DELETE && diffs[pointer][0] == DIFF_INSERT) { | 
						|
      var deletion = diffs[pointer - 1][1]; | 
						|
      var insertion = diffs[pointer][1]; | 
						|
      var overlap_length1 = diff_commonOverlap_(deletion, insertion); | 
						|
      var overlap_length2 = diff_commonOverlap_(insertion, deletion); | 
						|
 | 
						|
      if (overlap_length1 >= overlap_length2) { | 
						|
        if (overlap_length1 >= deletion.length / 2 || overlap_length1 >= insertion.length / 2) { | 
						|
          // Overlap found.  Insert an equality and trim the surrounding edits. | 
						|
          diffs.splice(pointer, 0, new Diff(DIFF_EQUAL, insertion.substring(0, overlap_length1))); | 
						|
          diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlap_length1); | 
						|
          diffs[pointer + 1][1] = insertion.substring(overlap_length1); | 
						|
          pointer++; | 
						|
        } | 
						|
      } else { | 
						|
        if (overlap_length2 >= deletion.length / 2 || overlap_length2 >= insertion.length / 2) { | 
						|
          // Reverse overlap found. | 
						|
          // Insert an equality and swap and trim the surrounding edits. | 
						|
          diffs.splice(pointer, 0, new Diff(DIFF_EQUAL, deletion.substring(0, overlap_length2))); | 
						|
          diffs[pointer - 1][0] = DIFF_INSERT; | 
						|
          diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlap_length2); | 
						|
          diffs[pointer + 1][0] = DIFF_DELETE; | 
						|
          diffs[pointer + 1][1] = deletion.substring(overlap_length2); | 
						|
          pointer++; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      pointer++; | 
						|
    } | 
						|
 | 
						|
    pointer++; | 
						|
  } | 
						|
}; | 
						|
/** | 
						|
 * Look for single edits surrounded on both sides by equalities | 
						|
 * which can be shifted sideways to align the edit to a word boundary. | 
						|
 * e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came. | 
						|
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
exports.cleanupSemantic = diff_cleanupSemantic; | 
						|
 | 
						|
var diff_cleanupSemanticLossless = function diff_cleanupSemanticLossless(diffs) { | 
						|
  /** | 
						|
   * Given two strings, compute a score representing whether the internal | 
						|
   * boundary falls on logical boundaries. | 
						|
   * Scores range from 6 (best) to 0 (worst). | 
						|
   * Closure, but does not reference any external variables. | 
						|
   * @param {string} one First string. | 
						|
   * @param {string} two Second string. | 
						|
   * @return {number} The score. | 
						|
   * @private | 
						|
   */ | 
						|
  function diff_cleanupSemanticScore_(one, two) { | 
						|
    if (!one || !two) { | 
						|
      // Edges are the best. | 
						|
      return 6; | 
						|
    } // Each port of this function behaves slightly differently due to | 
						|
    // subtle differences in each language's definition of things like | 
						|
    // 'whitespace'.  Since this function's purpose is largely cosmetic, | 
						|
    // the choice has been made to use each language's native features | 
						|
    // rather than force total conformity. | 
						|
 | 
						|
 | 
						|
    var char1 = one.charAt(one.length - 1); | 
						|
    var char2 = two.charAt(0); | 
						|
    var nonAlphaNumeric1 = char1.match(nonAlphaNumericRegex_); | 
						|
    var nonAlphaNumeric2 = char2.match(nonAlphaNumericRegex_); | 
						|
    var whitespace1 = nonAlphaNumeric1 && char1.match(whitespaceRegex_); | 
						|
    var whitespace2 = nonAlphaNumeric2 && char2.match(whitespaceRegex_); | 
						|
    var lineBreak1 = whitespace1 && char1.match(linebreakRegex_); | 
						|
    var lineBreak2 = whitespace2 && char2.match(linebreakRegex_); | 
						|
    var blankLine1 = lineBreak1 && one.match(blanklineEndRegex_); | 
						|
    var blankLine2 = lineBreak2 && two.match(blanklineStartRegex_); | 
						|
 | 
						|
    if (blankLine1 || blankLine2) { | 
						|
      // Five points for blank lines. | 
						|
      return 5; | 
						|
    } else if (lineBreak1 || lineBreak2) { | 
						|
      // Four points for line breaks. | 
						|
      return 4; | 
						|
    } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) { | 
						|
      // Three points for end of sentences. | 
						|
      return 3; | 
						|
    } else if (whitespace1 || whitespace2) { | 
						|
      // Two points for whitespace. | 
						|
      return 2; | 
						|
    } else if (nonAlphaNumeric1 || nonAlphaNumeric2) { | 
						|
      // One point for non-alphanumeric. | 
						|
      return 1; | 
						|
    } | 
						|
 | 
						|
    return 0; | 
						|
  } | 
						|
 | 
						|
  var pointer = 1; // Intentionally ignore the first and last element (don't need checking). | 
						|
 | 
						|
  while (pointer < diffs.length - 1) { | 
						|
    if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) { | 
						|
      // This is a single edit surrounded by equalities. | 
						|
      var equality1 = diffs[pointer - 1][1]; | 
						|
      var edit = diffs[pointer][1]; | 
						|
      var equality2 = diffs[pointer + 1][1]; // First, shift the edit as far left as possible. | 
						|
 | 
						|
      var commonOffset = diff_commonSuffix(equality1, edit); | 
						|
 | 
						|
      if (commonOffset) { | 
						|
        var commonString = edit.substring(edit.length - commonOffset); | 
						|
        equality1 = equality1.substring(0, equality1.length - commonOffset); | 
						|
        edit = commonString + edit.substring(0, edit.length - commonOffset); | 
						|
        equality2 = commonString + equality2; | 
						|
      } // Second, step character by character right, looking for the best fit. | 
						|
 | 
						|
 | 
						|
      var bestEquality1 = equality1; | 
						|
      var bestEdit = edit; | 
						|
      var bestEquality2 = equality2; | 
						|
      var bestScore = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2); | 
						|
 | 
						|
      while (edit.charAt(0) === equality2.charAt(0)) { | 
						|
        equality1 += edit.charAt(0); | 
						|
        edit = edit.substring(1) + equality2.charAt(0); | 
						|
        equality2 = equality2.substring(1); | 
						|
        var score = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2); // The >= encourages trailing rather than leading whitespace on edits. | 
						|
 | 
						|
        if (score >= bestScore) { | 
						|
          bestScore = score; | 
						|
          bestEquality1 = equality1; | 
						|
          bestEdit = edit; | 
						|
          bestEquality2 = equality2; | 
						|
        } | 
						|
      } | 
						|
 | 
						|
      if (diffs[pointer - 1][1] != bestEquality1) { | 
						|
        // We have an improvement, save it back to the diff. | 
						|
        if (bestEquality1) { | 
						|
          diffs[pointer - 1][1] = bestEquality1; | 
						|
        } else { | 
						|
          diffs.splice(pointer - 1, 1); | 
						|
          pointer--; | 
						|
        } | 
						|
 | 
						|
        diffs[pointer][1] = bestEdit; | 
						|
 | 
						|
        if (bestEquality2) { | 
						|
          diffs[pointer + 1][1] = bestEquality2; | 
						|
        } else { | 
						|
          diffs.splice(pointer + 1, 1); | 
						|
          pointer--; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    pointer++; | 
						|
  } | 
						|
}; // Define some regex patterns for matching boundaries. | 
						|
 | 
						|
 | 
						|
var nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/; | 
						|
var whitespaceRegex_ = /\s/; | 
						|
var linebreakRegex_ = /[\r\n]/; | 
						|
var blanklineEndRegex_ = /\n\r?\n$/; | 
						|
var blanklineStartRegex_ = /^\r?\n\r?\n/; | 
						|
/** | 
						|
 * Reorder and merge like edit sections.  Merge equalities. | 
						|
 * Any edit section can move as long as it doesn't cross an equality. | 
						|
 * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples. | 
						|
 */ | 
						|
 | 
						|
var diff_cleanupMerge = function diff_cleanupMerge(diffs) { | 
						|
  // Add a dummy entry at the end. | 
						|
  diffs.push(new Diff(DIFF_EQUAL, '')); | 
						|
  var pointer = 0; | 
						|
  var count_delete = 0; | 
						|
  var count_insert = 0; | 
						|
  var text_delete = ''; | 
						|
  var text_insert = ''; | 
						|
  var commonlength; | 
						|
 | 
						|
  while (pointer < diffs.length) { | 
						|
    switch (diffs[pointer][0]) { | 
						|
      case DIFF_INSERT: | 
						|
        count_insert++; | 
						|
        text_insert += diffs[pointer][1]; | 
						|
        pointer++; | 
						|
        break; | 
						|
 | 
						|
      case DIFF_DELETE: | 
						|
        count_delete++; | 
						|
        text_delete += diffs[pointer][1]; | 
						|
        pointer++; | 
						|
        break; | 
						|
 | 
						|
      case DIFF_EQUAL: | 
						|
        // Upon reaching an equality, check for prior redundancies. | 
						|
        if (count_delete + count_insert > 1) { | 
						|
          if (count_delete !== 0 && count_insert !== 0) { | 
						|
            // Factor out any common prefixies. | 
						|
            commonlength = diff_commonPrefix(text_insert, text_delete); | 
						|
 | 
						|
            if (commonlength !== 0) { | 
						|
              if (pointer - count_delete - count_insert > 0 && diffs[pointer - count_delete - count_insert - 1][0] == DIFF_EQUAL) { | 
						|
                diffs[pointer - count_delete - count_insert - 1][1] += text_insert.substring(0, commonlength); | 
						|
              } else { | 
						|
                diffs.splice(0, 0, new Diff(DIFF_EQUAL, text_insert.substring(0, commonlength))); | 
						|
                pointer++; | 
						|
              } | 
						|
 | 
						|
              text_insert = text_insert.substring(commonlength); | 
						|
              text_delete = text_delete.substring(commonlength); | 
						|
            } // Factor out any common suffixies. | 
						|
 | 
						|
 | 
						|
            commonlength = diff_commonSuffix(text_insert, text_delete); | 
						|
 | 
						|
            if (commonlength !== 0) { | 
						|
              diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1]; | 
						|
              text_insert = text_insert.substring(0, text_insert.length - commonlength); | 
						|
              text_delete = text_delete.substring(0, text_delete.length - commonlength); | 
						|
            } | 
						|
          } // Delete the offending records and add the merged ones. | 
						|
 | 
						|
 | 
						|
          pointer -= count_delete + count_insert; | 
						|
          diffs.splice(pointer, count_delete + count_insert); | 
						|
 | 
						|
          if (text_delete.length) { | 
						|
            diffs.splice(pointer, 0, new Diff(DIFF_DELETE, text_delete)); | 
						|
            pointer++; | 
						|
          } | 
						|
 | 
						|
          if (text_insert.length) { | 
						|
            diffs.splice(pointer, 0, new Diff(DIFF_INSERT, text_insert)); | 
						|
            pointer++; | 
						|
          } | 
						|
 | 
						|
          pointer++; | 
						|
        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) { | 
						|
          // Merge this equality with the previous one. | 
						|
          diffs[pointer - 1][1] += diffs[pointer][1]; | 
						|
          diffs.splice(pointer, 1); | 
						|
        } else { | 
						|
          pointer++; | 
						|
        } | 
						|
 | 
						|
        count_insert = 0; | 
						|
        count_delete = 0; | 
						|
        text_delete = ''; | 
						|
        text_insert = ''; | 
						|
        break; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (diffs[diffs.length - 1][1] === '') { | 
						|
    diffs.pop(); // Remove the dummy entry at the end. | 
						|
  } // Second pass: look for single edits surrounded on both sides by equalities | 
						|
  // which can be shifted sideways to eliminate an equality. | 
						|
  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC | 
						|
 | 
						|
 | 
						|
  var changes = false; | 
						|
  pointer = 1; // Intentionally ignore the first and last element (don't need checking). | 
						|
 | 
						|
  while (pointer < diffs.length - 1) { | 
						|
    if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) { | 
						|
      // This is a single edit surrounded by equalities. | 
						|
      if (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) { | 
						|
        // Shift the edit over the previous equality. | 
						|
        diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length); | 
						|
        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1]; | 
						|
        diffs.splice(pointer - 1, 1); | 
						|
        changes = true; | 
						|
      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == diffs[pointer + 1][1]) { | 
						|
        // Shift the edit over the next equality. | 
						|
        diffs[pointer - 1][1] += diffs[pointer + 1][1]; | 
						|
        diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1]; | 
						|
        diffs.splice(pointer + 1, 1); | 
						|
        changes = true; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    pointer++; | 
						|
  } // If shifts were made, the diff needs reordering and another shift sweep. | 
						|
 | 
						|
 | 
						|
  if (changes) { | 
						|
    diff_cleanupMerge(diffs); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-diff/build/constants.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./packages/jest-diff/build/constants.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.SIMILAR_MESSAGE = exports.NO_DIFF_MESSAGE = void 0; | 
						|
 | 
						|
var _chalk = _interopRequireDefault(__webpack_require__(/*! chalk */ "./packages/expect/build/fakeChalk.js")); | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var NO_DIFF_MESSAGE = _chalk.default.dim('Compared values have no visual difference.'); | 
						|
 | 
						|
exports.NO_DIFF_MESSAGE = NO_DIFF_MESSAGE; | 
						|
 | 
						|
var SIMILAR_MESSAGE = _chalk.default.dim('Compared values serialize to the same structure.\n' + 'Printing internal object structure without calling `toJSON` instead.'); | 
						|
 | 
						|
exports.SIMILAR_MESSAGE = SIMILAR_MESSAGE; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-diff/build/diffLines.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./packages/jest-diff/build/diffLines.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = void 0; | 
						|
 | 
						|
var _chalk = _interopRequireDefault(__webpack_require__(/*! chalk */ "./packages/expect/build/fakeChalk.js")); | 
						|
 | 
						|
var _diffSequences = _interopRequireDefault(__webpack_require__(/*! diff-sequences */ "./packages/diff-sequences/build/index.js")); | 
						|
 | 
						|
var _constants = __webpack_require__(/*! ./constants */ "./packages/jest-diff/build/constants.js"); | 
						|
 | 
						|
var _printDiffs = __webpack_require__(/*! ./printDiffs */ "./packages/jest-diff/build/printDiffs.js"); | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var DIFF_CONTEXT_DEFAULT = 5; | 
						|
var fgDelete = _chalk.default.green; | 
						|
var fgInsert = _chalk.default.red; | 
						|
var fgCommon = _chalk.default.dim; // common lines (even indentation same) | 
						|
 | 
						|
var fgIndent = _chalk.default.cyan; // common lines (only indentation different) | 
						|
 | 
						|
var bgCommon = _chalk.default.bgYellow; // edge spaces in common line (even indentation same) | 
						|
 | 
						|
var bgInverse = _chalk.default.inverse; // edge spaces in any other lines | 
						|
// ONLY trailing if expected value is snapshot or multiline string. | 
						|
 | 
						|
var highlightTrailingSpaces = function highlightTrailingSpaces(line, bgColor) { | 
						|
  return line.replace(/\s+$/, bgColor('$&')); | 
						|
}; // BOTH leading AND trailing if expected value is data structure. | 
						|
 | 
						|
 | 
						|
var highlightLeadingTrailingSpaces = function highlightLeadingTrailingSpaces(line, bgColor // If line consists of ALL spaces: highlight all of them. | 
						|
) { | 
						|
  return highlightTrailingSpaces(line, bgColor).replace( // If line has an ODD length of leading spaces: highlight only the LAST. | 
						|
  /^(\s\s)*(\s)(?=[^\s])/, '$1' + bgColor('$2')); | 
						|
}; | 
						|
 | 
						|
var getHighlightSpaces = function getHighlightSpaces(bothEdges) { | 
						|
  return bothEdges ? highlightLeadingTrailingSpaces : highlightTrailingSpaces; | 
						|
}; // Given index interval in expected lines, put formatted delete lines. | 
						|
 | 
						|
 | 
						|
var formatDelete = function formatDelete(aStart, aEnd, aLinesUn, aLinesIn, put) { | 
						|
  var highlightSpaces = getHighlightSpaces(aLinesUn !== aLinesIn); | 
						|
 | 
						|
  for (var aIndex = aStart; aIndex !== aEnd; aIndex += 1) { | 
						|
    var aLineUn = aLinesUn[aIndex]; | 
						|
    var aLineIn = aLinesIn[aIndex]; | 
						|
    var indentation = aLineIn.slice(0, aLineIn.length - aLineUn.length); | 
						|
    put(fgDelete('- ' + indentation + highlightSpaces(aLineUn, bgInverse))); | 
						|
  } | 
						|
}; // Given index interval in received lines, put formatted insert lines. | 
						|
 | 
						|
 | 
						|
var formatInsert = function formatInsert(bStart, bEnd, bLinesUn, bLinesIn, put) { | 
						|
  var highlightSpaces = getHighlightSpaces(bLinesUn !== bLinesIn); | 
						|
 | 
						|
  for (var bIndex = bStart; bIndex !== bEnd; bIndex += 1) { | 
						|
    var bLineUn = bLinesUn[bIndex]; | 
						|
    var bLineIn = bLinesIn[bIndex]; | 
						|
    var indentation = bLineIn.slice(0, bLineIn.length - bLineUn.length); | 
						|
    put(fgInsert('+ ' + indentation + highlightSpaces(bLineUn, bgInverse))); | 
						|
  } | 
						|
}; // Given the number of items and starting indexes of a common subsequence, | 
						|
// put formatted common lines. | 
						|
 | 
						|
 | 
						|
var formatCommon = function formatCommon(nCommon, aCommon, bCommon, aLinesIn, bLinesUn, bLinesIn, put) { | 
						|
  var highlightSpaces = getHighlightSpaces(bLinesUn !== bLinesIn); | 
						|
 | 
						|
  for (; nCommon !== 0; nCommon -= 1, aCommon += 1, bCommon += 1) { | 
						|
    var bLineUn = bLinesUn[bCommon]; | 
						|
    var bLineIn = bLinesIn[bCommon]; | 
						|
    var bLineInLength = bLineIn.length; // For common lines, received indentation seems more intuitive. | 
						|
 | 
						|
    var indentation = bLineIn.slice(0, bLineInLength - bLineUn.length); // Color shows whether expected and received line has same indentation. | 
						|
 | 
						|
    var hasSameIndentation = aLinesIn[aCommon].length === bLineInLength; | 
						|
    var fg = hasSameIndentation ? fgCommon : fgIndent; | 
						|
    var bg = hasSameIndentation ? bgCommon : bgInverse; | 
						|
    put(fg('  ' + indentation + highlightSpaces(bLineUn, bg))); | 
						|
  } | 
						|
}; // jest --expand | 
						|
// Return formatted diff as joined string of all lines. | 
						|
 | 
						|
 | 
						|
var diffExpand = function diffExpand(aLinesUn, bLinesUn, aLinesIn, bLinesIn) { | 
						|
  var isCommon = function isCommon(aIndex, bIndex) { | 
						|
    return aLinesUn[aIndex] === bLinesUn[bIndex]; | 
						|
  }; | 
						|
 | 
						|
  var array = []; | 
						|
 | 
						|
  var put = function put(line) { | 
						|
    array.push(line); | 
						|
  }; | 
						|
 | 
						|
  var aStart = 0; | 
						|
  var bStart = 0; | 
						|
 | 
						|
  var foundSubsequence = function foundSubsequence(nCommon, aCommon, bCommon) { | 
						|
    formatDelete(aStart, aCommon, aLinesUn, aLinesIn, put); | 
						|
    formatInsert(bStart, bCommon, bLinesUn, bLinesIn, put); | 
						|
    formatCommon(nCommon, aCommon, bCommon, aLinesIn, bLinesUn, bLinesIn, put); | 
						|
    aStart = aCommon + nCommon; | 
						|
    bStart = bCommon + nCommon; | 
						|
  }; | 
						|
 | 
						|
  var aLength = aLinesUn.length; | 
						|
  var bLength = bLinesUn.length; | 
						|
  (0, _diffSequences.default)(aLength, bLength, isCommon, foundSubsequence); // After the last common subsequence, format remaining change lines. | 
						|
 | 
						|
  formatDelete(aStart, aLength, aLinesUn, aLinesIn, put); | 
						|
  formatInsert(bStart, bLength, bLinesUn, bLinesIn, put); | 
						|
  return array.join('\n'); | 
						|
}; | 
						|
 | 
						|
var getContextLines = function getContextLines(options) { | 
						|
  return options && typeof options.contextLines === 'number' && options.contextLines >= 0 ? options.contextLines : DIFF_CONTEXT_DEFAULT; | 
						|
}; // jest --no-expand | 
						|
// Return joined string of formatted diff for all change lines, | 
						|
// but if some common lines are omitted because there are more than the context, | 
						|
// then a “patch mark” precedes each set of adjacent changed and common lines. | 
						|
 | 
						|
 | 
						|
var diffNoExpand = function diffNoExpand(aLinesUn, bLinesUn, aLinesIn, bLinesIn, nContextLines) { | 
						|
  var isCommon = function isCommon(aIndex, bIndex) { | 
						|
    return aLinesUn[aIndex] === bLinesUn[bIndex]; | 
						|
  }; | 
						|
 | 
						|
  var iPatchMark = 0; // index of placeholder line for patch mark | 
						|
 | 
						|
  var array = ['']; | 
						|
 | 
						|
  var put = function put(line) { | 
						|
    array.push(line); | 
						|
  }; | 
						|
 | 
						|
  var isAtEnd = false; | 
						|
  var aLength = aLinesUn.length; | 
						|
  var bLength = bLinesUn.length; | 
						|
  var nContextLines2 = nContextLines + nContextLines; // Initialize the first patch for changes at the start, | 
						|
  // especially for edge case in which there is no common subsequence. | 
						|
 | 
						|
  var aStart = 0; | 
						|
  var aEnd = 0; | 
						|
  var bStart = 0; | 
						|
  var bEnd = 0; // Given the number of items and starting indexes of each common subsequence, | 
						|
  // format any preceding change lines, and then common context lines. | 
						|
 | 
						|
  var foundSubsequence = function foundSubsequence(nCommon, aStartCommon, bStartCommon) { | 
						|
    var aEndCommon = aStartCommon + nCommon; | 
						|
    var bEndCommon = bStartCommon + nCommon; | 
						|
    isAtEnd = aEndCommon === aLength && bEndCommon === bLength; // If common subsequence is at start, re-initialize the first patch. | 
						|
 | 
						|
    if (aStartCommon === 0 && bStartCommon === 0) { | 
						|
      var nLines = nContextLines < nCommon ? nContextLines : nCommon; | 
						|
      aStart = aEndCommon - nLines; | 
						|
      bStart = bEndCommon - nLines; | 
						|
      formatCommon(nLines, aStart, bStart, aLinesIn, bLinesUn, bLinesIn, put); | 
						|
      aEnd = aEndCommon; | 
						|
      bEnd = bEndCommon; | 
						|
      return; | 
						|
    } // Format preceding change lines. | 
						|
 | 
						|
 | 
						|
    formatDelete(aEnd, aStartCommon, aLinesUn, aLinesIn, put); | 
						|
    formatInsert(bEnd, bStartCommon, bLinesUn, bLinesIn, put); | 
						|
    aEnd = aStartCommon; | 
						|
    bEnd = bStartCommon; // If common subsequence is at end, then context follows preceding changes; | 
						|
    // else context follows preceding changes AND precedes following changes. | 
						|
 | 
						|
    var maxContextLines = isAtEnd ? nContextLines : nContextLines2; | 
						|
 | 
						|
    if (nCommon <= maxContextLines) { | 
						|
      // The patch includes all lines in the common subsequence. | 
						|
      formatCommon(nCommon, aEnd, bEnd, aLinesIn, bLinesUn, bLinesIn, put); | 
						|
      aEnd += nCommon; | 
						|
      bEnd += nCommon; | 
						|
      return; | 
						|
    } // The patch ends because context is less than number of common lines. | 
						|
 | 
						|
 | 
						|
    formatCommon(nContextLines, aEnd, bEnd, aLinesIn, bLinesUn, bLinesIn, put); | 
						|
    aEnd += nContextLines; | 
						|
    bEnd += nContextLines; | 
						|
    array[iPatchMark] = (0, _printDiffs.createPatchMark)(aStart, aEnd, bStart, bEnd); // If common subsequence is not at end, another patch follows it. | 
						|
 | 
						|
    if (!isAtEnd) { | 
						|
      iPatchMark = array.length; // index of placeholder line | 
						|
 | 
						|
      array[iPatchMark] = ''; | 
						|
 | 
						|
      var _nLines = nContextLines < nCommon ? nContextLines : nCommon; | 
						|
 | 
						|
      aStart = aEndCommon - _nLines; | 
						|
      bStart = bEndCommon - _nLines; | 
						|
      formatCommon(_nLines, aStart, bStart, aLinesIn, bLinesUn, bLinesIn, put); | 
						|
      aEnd = aEndCommon; | 
						|
      bEnd = bEndCommon; | 
						|
    } | 
						|
  }; | 
						|
 | 
						|
  (0, _diffSequences.default)(aLength, bLength, isCommon, foundSubsequence); // If no common subsequence or last was not at end, format remaining change lines. | 
						|
 | 
						|
  if (!isAtEnd) { | 
						|
    formatDelete(aEnd, aLength, aLinesUn, aLinesIn, put); | 
						|
    formatInsert(bEnd, bLength, bLinesUn, bLinesIn, put); | 
						|
    aEnd = aLength; | 
						|
    bEnd = bLength; | 
						|
  } | 
						|
 | 
						|
  if (aStart === 0 && aEnd === aLength && bStart === 0 && bEnd === bLength) { | 
						|
    array.splice(0, 1); // delete placeholder line for patch mark | 
						|
  } else { | 
						|
    array[iPatchMark] = (0, _printDiffs.createPatchMark)(aStart, aEnd, bStart, bEnd); | 
						|
  } | 
						|
 | 
						|
  return array.join('\n'); | 
						|
}; | 
						|
 | 
						|
var _default = function _default(a, b, options, original) { | 
						|
  if (a === b) { | 
						|
    return _constants.NO_DIFF_MESSAGE; | 
						|
  } | 
						|
 | 
						|
  var aLinesUn = a.split('\n'); | 
						|
  var bLinesUn = b.split('\n'); // Indentation is unknown if expected value is snapshot or multiline string. | 
						|
 | 
						|
  var aLinesIn = aLinesUn; | 
						|
  var bLinesIn = bLinesUn; | 
						|
 | 
						|
  if (original) { | 
						|
    // Indentation is known if expected value is data structure: | 
						|
    // Compare lines without indentation and format lines with indentation. | 
						|
    aLinesIn = original.a.split('\n'); | 
						|
    bLinesIn = original.b.split('\n'); | 
						|
 | 
						|
    if (aLinesUn.length !== aLinesIn.length || bLinesUn.length !== bLinesIn.length) { | 
						|
      // Fall back if unindented and indented lines are inconsistent. | 
						|
      aLinesUn = aLinesIn; | 
						|
      bLinesUn = bLinesIn; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return (0, _printDiffs.printAnnotation)(options) + (options && options.expand === false ? diffNoExpand(aLinesUn, bLinesUn, aLinesIn, bLinesIn, getContextLines(options)) : diffExpand(aLinesUn, bLinesUn, aLinesIn, bLinesIn)); | 
						|
}; | 
						|
 | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-diff/build/diffStrings.js": | 
						|
/*!*************************************************!*\ | 
						|
  !*** ./packages/jest-diff/build/diffStrings.js ***! | 
						|
  \*************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = void 0; | 
						|
 | 
						|
var _diffSequences = _interopRequireDefault(__webpack_require__(/*! diff-sequences */ "./packages/diff-sequences/build/index.js")); | 
						|
 | 
						|
var _cleanupSemantic = __webpack_require__(/*! ./cleanupSemantic */ "./packages/jest-diff/build/cleanupSemantic.js"); | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var diffStrings = function diffStrings(a, b) { | 
						|
  var isCommon = function isCommon(aIndex, bIndex) { | 
						|
    return a[aIndex] === b[bIndex]; | 
						|
  }; | 
						|
 | 
						|
  var aIndex = 0; | 
						|
  var bIndex = 0; | 
						|
  var diffs = []; | 
						|
 | 
						|
  var foundSubsequence = function foundSubsequence(nCommon, aCommon, bCommon) { | 
						|
    if (aIndex !== aCommon) { | 
						|
      diffs.push(new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_DELETE, a.slice(aIndex, aCommon))); | 
						|
    } | 
						|
 | 
						|
    if (bIndex !== bCommon) { | 
						|
      diffs.push(new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_INSERT, b.slice(bIndex, bCommon))); | 
						|
    } | 
						|
 | 
						|
    aIndex = aCommon + nCommon; // number of characters compared in a | 
						|
 | 
						|
    bIndex = bCommon + nCommon; // number of characters compared in b | 
						|
 | 
						|
    diffs.push(new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_EQUAL, b.slice(bCommon, bIndex))); | 
						|
  }; | 
						|
 | 
						|
  (0, _diffSequences.default)(a.length, b.length, isCommon, foundSubsequence); // After the last common subsequence, push remaining change items. | 
						|
 | 
						|
  if (aIndex !== a.length) { | 
						|
    diffs.push(new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_DELETE, a.slice(aIndex))); | 
						|
  } | 
						|
 | 
						|
  if (bIndex !== b.length) { | 
						|
    diffs.push(new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_INSERT, b.slice(bIndex))); | 
						|
  } | 
						|
 | 
						|
  return diffs; | 
						|
}; | 
						|
 | 
						|
var _default = diffStrings; | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-diff/build/getAlignedDiffs.js": | 
						|
/*!*****************************************************!*\ | 
						|
  !*** ./packages/jest-diff/build/getAlignedDiffs.js ***! | 
						|
  \*****************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } | 
						|
 | 
						|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } | 
						|
 | 
						|
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } | 
						|
 | 
						|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } | 
						|
 | 
						|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | 
						|
 | 
						|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } | 
						|
 | 
						|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = void 0; | 
						|
 | 
						|
var _cleanupSemantic = __webpack_require__(/*! ./cleanupSemantic */ "./packages/jest-diff/build/cleanupSemantic.js"); | 
						|
 | 
						|
var _printDiffs = __webpack_require__(/*! ./printDiffs */ "./packages/jest-diff/build/printDiffs.js"); | 
						|
 | 
						|
function _defineProperty(obj, key, value) { | 
						|
  if (key in obj) { | 
						|
    Object.defineProperty(obj, key, { | 
						|
      value: value, | 
						|
      enumerable: true, | 
						|
      configurable: true, | 
						|
      writable: true | 
						|
    }); | 
						|
  } else { | 
						|
    obj[key] = value; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
} // Encapsulate change lines until either a common newline or the end. | 
						|
 | 
						|
 | 
						|
var ChangeBuffer = | 
						|
/*#__PURE__*/ | 
						|
function () { | 
						|
  // incomplete line | 
						|
  // complete lines | 
						|
  function ChangeBuffer(op) { | 
						|
    _classCallCheck(this, ChangeBuffer); | 
						|
 | 
						|
    _defineProperty(this, 'op', void 0); | 
						|
 | 
						|
    _defineProperty(this, 'line', void 0); | 
						|
 | 
						|
    _defineProperty(this, 'lines', void 0); | 
						|
 | 
						|
    this.op = op; | 
						|
    this.line = []; | 
						|
    this.lines = []; | 
						|
  } | 
						|
 | 
						|
  _createClass(ChangeBuffer, [{ | 
						|
    key: "pushSubstring", | 
						|
    value: function pushSubstring(substring) { | 
						|
      this.pushDiff(new _cleanupSemantic.Diff(this.op, substring)); | 
						|
    } | 
						|
  }, { | 
						|
    key: "pushLine", | 
						|
    value: function pushLine() { | 
						|
      // Assume call only if line has at least one diff, | 
						|
      // therefore an empty line must have a diff which has an empty string. | 
						|
      this.lines.push(new _cleanupSemantic.Diff(this.op, (0, _printDiffs.getHighlightedString)(this.op, this.line))); | 
						|
      this.line.length = 0; | 
						|
    } | 
						|
  }, { | 
						|
    key: "isLineEmpty", | 
						|
    value: function isLineEmpty() { | 
						|
      return this.line.length === 0; | 
						|
    } // Minor input to buffer. | 
						|
 | 
						|
  }, { | 
						|
    key: "pushDiff", | 
						|
    value: function pushDiff(diff) { | 
						|
      this.line.push(diff); | 
						|
    } // Main input to buffer. | 
						|
 | 
						|
  }, { | 
						|
    key: "align", | 
						|
    value: function align(diff) { | 
						|
      var _this = this; | 
						|
 | 
						|
      var string = diff[1]; | 
						|
 | 
						|
      if (_printDiffs.MULTILINE_REGEXP.test(string)) { | 
						|
        var substrings = string.split('\n'); | 
						|
        var iLast = substrings.length - 1; | 
						|
        substrings.forEach(function (substring, i) { | 
						|
          if (i < iLast) { | 
						|
            // The first substring completes the current change line. | 
						|
            // A middle substring is a change line. | 
						|
            _this.pushSubstring(substring); | 
						|
 | 
						|
            _this.pushLine(); | 
						|
          } else if (substring.length !== 0) { | 
						|
            // The last substring starts a change line, if it is not empty. | 
						|
            // Important: This non-empty condition also automatically omits | 
						|
            // the newline appended to the end of expected and received strings. | 
						|
            _this.pushSubstring(substring); | 
						|
          } | 
						|
        }); | 
						|
      } else { | 
						|
        // Append non-multiline string to current change line. | 
						|
        this.pushDiff(diff); | 
						|
      } | 
						|
    } // Output from buffer. | 
						|
 | 
						|
  }, { | 
						|
    key: "moveLinesTo", | 
						|
    value: function moveLinesTo(lines) { | 
						|
      if (!this.isLineEmpty()) { | 
						|
        this.pushLine(); | 
						|
      } | 
						|
 | 
						|
      lines.push.apply(lines, _toConsumableArray(this.lines)); | 
						|
      this.lines.length = 0; | 
						|
    } | 
						|
  }]); | 
						|
 | 
						|
  return ChangeBuffer; | 
						|
}(); // Encapsulate common and change lines. | 
						|
 | 
						|
 | 
						|
var CommonBuffer = | 
						|
/*#__PURE__*/ | 
						|
function () { | 
						|
  function CommonBuffer(deleteBuffer, insertBuffer) { | 
						|
    _classCallCheck(this, CommonBuffer); | 
						|
 | 
						|
    _defineProperty(this, 'deleteBuffer', void 0); | 
						|
 | 
						|
    _defineProperty(this, 'insertBuffer', void 0); | 
						|
 | 
						|
    _defineProperty(this, 'lines', void 0); | 
						|
 | 
						|
    this.deleteBuffer = deleteBuffer; | 
						|
    this.insertBuffer = insertBuffer; | 
						|
    this.lines = []; | 
						|
  } | 
						|
 | 
						|
  _createClass(CommonBuffer, [{ | 
						|
    key: "pushDiffCommonLine", | 
						|
    value: function pushDiffCommonLine(diff) { | 
						|
      this.lines.push(diff); | 
						|
    } | 
						|
  }, { | 
						|
    key: "pushDiffChangeLines", | 
						|
    value: function pushDiffChangeLines(diff) { | 
						|
      var isDiffEmpty = diff[1].length === 0; // An empty diff string is redundant, unless a change line is empty. | 
						|
 | 
						|
      if (!isDiffEmpty || this.deleteBuffer.isLineEmpty()) { | 
						|
        this.deleteBuffer.pushDiff(diff); | 
						|
      } | 
						|
 | 
						|
      if (!isDiffEmpty || this.insertBuffer.isLineEmpty()) { | 
						|
        this.insertBuffer.pushDiff(diff); | 
						|
      } | 
						|
    } | 
						|
  }, { | 
						|
    key: "flushChangeLines", | 
						|
    value: function flushChangeLines() { | 
						|
      this.deleteBuffer.moveLinesTo(this.lines); | 
						|
      this.insertBuffer.moveLinesTo(this.lines); | 
						|
    } // Input to buffer. | 
						|
 | 
						|
  }, { | 
						|
    key: "align", | 
						|
    value: function align(diff) { | 
						|
      var _this2 = this; | 
						|
 | 
						|
      var op = diff[0]; | 
						|
      var string = diff[1]; | 
						|
 | 
						|
      if (_printDiffs.MULTILINE_REGEXP.test(string)) { | 
						|
        var substrings = string.split('\n'); | 
						|
        var iLast = substrings.length - 1; | 
						|
        substrings.forEach(function (substring, i) { | 
						|
          if (i === 0) { | 
						|
            var subdiff = new _cleanupSemantic.Diff(op, substring); | 
						|
 | 
						|
            if (_this2.deleteBuffer.isLineEmpty() && _this2.insertBuffer.isLineEmpty()) { | 
						|
              // If both current change lines are empty, | 
						|
              // then the first substring is a common line. | 
						|
              _this2.flushChangeLines(); | 
						|
 | 
						|
              _this2.pushDiffCommonLine(subdiff); | 
						|
            } else { | 
						|
              // If either current change line is non-empty, | 
						|
              // then the first substring completes the change lines. | 
						|
              _this2.pushDiffChangeLines(subdiff); | 
						|
 | 
						|
              _this2.flushChangeLines(); | 
						|
            } | 
						|
          } else if (i < iLast) { | 
						|
            // A middle substring is a common line. | 
						|
            _this2.pushDiffCommonLine(new _cleanupSemantic.Diff(op, substring)); | 
						|
          } else if (substring.length !== 0) { | 
						|
            // The last substring starts a change line, if it is not empty. | 
						|
            // Important: This non-empty condition also automatically omits | 
						|
            // the newline appended to the end of expected and received strings. | 
						|
            _this2.pushDiffChangeLines(new _cleanupSemantic.Diff(op, substring)); | 
						|
          } | 
						|
        }); | 
						|
      } else { | 
						|
        // Append non-multiline string to current change lines. | 
						|
        // Important: It cannot be at the end following empty change lines, | 
						|
        // because newline appended to the end of expected and received strings. | 
						|
        this.pushDiffChangeLines(diff); | 
						|
      } | 
						|
    } // Output from buffer. | 
						|
 | 
						|
  }, { | 
						|
    key: "getLines", | 
						|
    value: function getLines() { | 
						|
      this.flushChangeLines(); | 
						|
      return this.lines; | 
						|
    } | 
						|
  }]); | 
						|
 | 
						|
  return CommonBuffer; | 
						|
}(); // Given diffs from expected and received strings, | 
						|
// return new array of diffs split or joined into lines. | 
						|
// | 
						|
// To correctly align a change line at the end, the algorithm: | 
						|
// * assumes that a newline was appended to the strings | 
						|
// * omits the last newline from the output array | 
						|
// | 
						|
// Assume the function is not called: | 
						|
// * if either expected or received is empty string | 
						|
// * if neither expected nor received is multiline string | 
						|
 | 
						|
 | 
						|
var getAlignedDiffs = function getAlignedDiffs(diffs) { | 
						|
  var deleteBuffer = new ChangeBuffer(_cleanupSemantic.DIFF_DELETE); | 
						|
  var insertBuffer = new ChangeBuffer(_cleanupSemantic.DIFF_INSERT); | 
						|
  var commonBuffer = new CommonBuffer(deleteBuffer, insertBuffer); | 
						|
  diffs.forEach(function (diff) { | 
						|
    switch (diff[0]) { | 
						|
      case _cleanupSemantic.DIFF_DELETE: | 
						|
        deleteBuffer.align(diff); | 
						|
        break; | 
						|
 | 
						|
      case _cleanupSemantic.DIFF_INSERT: | 
						|
        insertBuffer.align(diff); | 
						|
        break; | 
						|
 | 
						|
      default: | 
						|
        commonBuffer.align(diff); | 
						|
    } | 
						|
  }); | 
						|
  return commonBuffer.getLines(); | 
						|
}; | 
						|
 | 
						|
var _default = getAlignedDiffs; | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-diff/build/index.js": | 
						|
/*!*******************************************!*\ | 
						|
  !*** ./packages/jest-diff/build/index.js ***! | 
						|
  \*******************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(global) { | 
						|
 | 
						|
var _prettyFormat = _interopRequireDefault(__webpack_require__(/*! pretty-format */ "./packages/pretty-format/build/index.js")); | 
						|
 | 
						|
var _chalk = _interopRequireDefault(__webpack_require__(/*! chalk */ "./packages/expect/build/fakeChalk.js")); | 
						|
 | 
						|
var _jestGetType = _interopRequireDefault(__webpack_require__(/*! jest-get-type */ "./packages/jest-get-type/build/index.js")); | 
						|
 | 
						|
var _diffLines = _interopRequireDefault(__webpack_require__(/*! ./diffLines */ "./packages/jest-diff/build/diffLines.js")); | 
						|
 | 
						|
var _printDiffs = __webpack_require__(/*! ./printDiffs */ "./packages/jest-diff/build/printDiffs.js"); | 
						|
 | 
						|
var _constants = __webpack_require__(/*! ./constants */ "./packages/jest-diff/build/constants.js"); | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
 | 
						|
var _Symbol = global['jest-symbol-do-not-touch'] || global.Symbol; | 
						|
 | 
						|
function _objectSpread(target) { | 
						|
  for (var i = 1; i < arguments.length; i++) { | 
						|
    var source = arguments[i] != null ? arguments[i] : {}; | 
						|
    var ownKeys = Object.keys(source); | 
						|
 | 
						|
    if (typeof Object.getOwnPropertySymbols === 'function') { | 
						|
      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { | 
						|
        return Object.getOwnPropertyDescriptor(source, sym).enumerable; | 
						|
      })); | 
						|
    } | 
						|
 | 
						|
    ownKeys.forEach(function (key) { | 
						|
      _defineProperty(target, key, source[key]); | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  return target; | 
						|
} | 
						|
 | 
						|
function _defineProperty(obj, key, value) { | 
						|
  if (key in obj) { | 
						|
    Object.defineProperty(obj, key, { | 
						|
      value: value, | 
						|
      enumerable: true, | 
						|
      configurable: true, | 
						|
      writable: true | 
						|
    }); | 
						|
  } else { | 
						|
    obj[key] = value; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
} | 
						|
 | 
						|
var _prettyFormat$plugins = _prettyFormat.default.plugins, | 
						|
    AsymmetricMatcher = _prettyFormat$plugins.AsymmetricMatcher, | 
						|
    DOMCollection = _prettyFormat$plugins.DOMCollection, | 
						|
    DOMElement = _prettyFormat$plugins.DOMElement, | 
						|
    Immutable = _prettyFormat$plugins.Immutable, | 
						|
    ReactElement = _prettyFormat$plugins.ReactElement, | 
						|
    ReactTestComponent = _prettyFormat$plugins.ReactTestComponent; | 
						|
var PLUGINS = [ReactTestComponent, ReactElement, DOMElement, DOMCollection, Immutable, AsymmetricMatcher]; | 
						|
var FORMAT_OPTIONS = { | 
						|
  plugins: PLUGINS | 
						|
}; | 
						|
 | 
						|
var FORMAT_OPTIONS_0 = _objectSpread({}, FORMAT_OPTIONS, { | 
						|
  indent: 0 | 
						|
}); | 
						|
 | 
						|
var FALLBACK_FORMAT_OPTIONS = { | 
						|
  callToJSON: false, | 
						|
  maxDepth: 10, | 
						|
  plugins: PLUGINS | 
						|
}; | 
						|
 | 
						|
var FALLBACK_FORMAT_OPTIONS_0 = _objectSpread({}, FALLBACK_FORMAT_OPTIONS, { | 
						|
  indent: 0 | 
						|
}); // Generate a string that will highlight the difference between two values | 
						|
// with green and red. (similar to how github does code diffing) | 
						|
 | 
						|
 | 
						|
function diff(a, b, options) { | 
						|
  if (Object.is(a, b)) { | 
						|
    return _constants.NO_DIFF_MESSAGE; | 
						|
  } | 
						|
 | 
						|
  var aType = (0, _jestGetType.default)(a); | 
						|
  var expectedType = aType; | 
						|
  var omitDifference = false; | 
						|
 | 
						|
  if (aType === 'object' && typeof a.asymmetricMatch === 'function') { | 
						|
    if (a.$$typeof !== _Symbol.for('jest.asymmetricMatcher')) { | 
						|
      // Do not know expected type of user-defined asymmetric matcher. | 
						|
      return null; | 
						|
    } | 
						|
 | 
						|
    if (typeof a.getExpectedType !== 'function') { | 
						|
      // For example, expect.anything() matches either null or undefined | 
						|
      return null; | 
						|
    } | 
						|
 | 
						|
    expectedType = a.getExpectedType(); // Primitive types boolean and number omit difference below. | 
						|
    // For example, omit difference for expect.stringMatching(regexp) | 
						|
 | 
						|
    omitDifference = expectedType === 'string'; | 
						|
  } | 
						|
 | 
						|
  if (expectedType !== (0, _jestGetType.default)(b)) { | 
						|
    return '  Comparing two different types of values.' + " Expected ".concat(_chalk.default.green(expectedType), " but ") + "received ".concat(_chalk.default.red((0, _jestGetType.default)(b)), "."); | 
						|
  } | 
						|
 | 
						|
  if (omitDifference) { | 
						|
    return null; | 
						|
  } | 
						|
 | 
						|
  switch (aType) { | 
						|
    case 'string': | 
						|
      return (0, _diffLines.default)(a, b, options); | 
						|
 | 
						|
    case 'boolean': | 
						|
    case 'number': | 
						|
      return comparePrimitive(a, b, options); | 
						|
 | 
						|
    case 'map': | 
						|
      return compareObjects(sortMap(a), sortMap(b), options); | 
						|
 | 
						|
    case 'set': | 
						|
      return compareObjects(sortSet(a), sortSet(b), options); | 
						|
 | 
						|
    default: | 
						|
      return compareObjects(a, b, options); | 
						|
  } | 
						|
} | 
						|
 | 
						|
function comparePrimitive(a, b, options) { | 
						|
  return (0, _diffLines.default)((0, _prettyFormat.default)(a, FORMAT_OPTIONS), (0, _prettyFormat.default)(b, FORMAT_OPTIONS), options); | 
						|
} | 
						|
 | 
						|
function sortMap(map) { | 
						|
  return new Map(Array.from(map.entries()).sort()); | 
						|
} | 
						|
 | 
						|
function sortSet(set) { | 
						|
  return new Set(Array.from(set.values()).sort()); | 
						|
} | 
						|
 | 
						|
function compareObjects(a, b, options) { | 
						|
  var diffMessage; | 
						|
  var hasThrown = false; | 
						|
 | 
						|
  try { | 
						|
    diffMessage = (0, _diffLines.default)((0, _prettyFormat.default)(a, FORMAT_OPTIONS_0), (0, _prettyFormat.default)(b, FORMAT_OPTIONS_0), options, { | 
						|
      a: (0, _prettyFormat.default)(a, FORMAT_OPTIONS), | 
						|
      b: (0, _prettyFormat.default)(b, FORMAT_OPTIONS) | 
						|
    }); | 
						|
  } catch (e) { | 
						|
    hasThrown = true; | 
						|
  } // If the comparison yields no results, compare again but this time | 
						|
  // without calling `toJSON`. It's also possible that toJSON might throw. | 
						|
 | 
						|
 | 
						|
  if (!diffMessage || diffMessage === _constants.NO_DIFF_MESSAGE) { | 
						|
    diffMessage = (0, _diffLines.default)((0, _prettyFormat.default)(a, FALLBACK_FORMAT_OPTIONS_0), (0, _prettyFormat.default)(b, FALLBACK_FORMAT_OPTIONS_0), options, { | 
						|
      a: (0, _prettyFormat.default)(a, FALLBACK_FORMAT_OPTIONS), | 
						|
      b: (0, _prettyFormat.default)(b, FALLBACK_FORMAT_OPTIONS) | 
						|
    }); | 
						|
 | 
						|
    if (diffMessage !== _constants.NO_DIFF_MESSAGE && !hasThrown) { | 
						|
      diffMessage = _constants.SIMILAR_MESSAGE + '\n\n' + diffMessage; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return diffMessage; | 
						|
} // eslint-disable-next-line no-redeclare | 
						|
 | 
						|
 | 
						|
diff.getStringDiff = _printDiffs.getStringDiff; | 
						|
module.exports = diff; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-diff/build/joinAlignedDiffs.js": | 
						|
/*!******************************************************!*\ | 
						|
  !*** ./packages/jest-diff/build/joinAlignedDiffs.js ***! | 
						|
  \******************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.joinAlignedDiffsExpand = exports.joinAlignedDiffsNoExpand = void 0; | 
						|
 | 
						|
var _cleanupSemantic = __webpack_require__(/*! ./cleanupSemantic */ "./packages/jest-diff/build/cleanupSemantic.js"); | 
						|
 | 
						|
var _printDiffs = __webpack_require__(/*! ./printDiffs */ "./packages/jest-diff/build/printDiffs.js"); | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var DIFF_CONTEXT_DEFAULT = 5; // same as diffLines | 
						|
// jest --no-expand | 
						|
// | 
						|
// Given array of aligned strings with inverse highlight formatting, | 
						|
// return joined lines with diff formatting (and patch marks, if needed). | 
						|
 | 
						|
var joinAlignedDiffsNoExpand = function joinAlignedDiffsNoExpand(diffs) { | 
						|
  var nContextLines = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIFF_CONTEXT_DEFAULT; | 
						|
  var iLength = diffs.length; | 
						|
  var nContextLines2 = nContextLines + nContextLines; // First pass: count output lines and see if it has patches. | 
						|
 | 
						|
  var jLength = iLength; | 
						|
  var hasExcessAtStartOrEnd = false; | 
						|
  var nExcessesBetweenChanges = 0; | 
						|
  var i = 0; | 
						|
 | 
						|
  while (i !== iLength) { | 
						|
    var iStart = i; | 
						|
 | 
						|
    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_EQUAL) { | 
						|
      i += 1; | 
						|
    } | 
						|
 | 
						|
    if (iStart !== i) { | 
						|
      if (iStart === 0) { | 
						|
        // at start | 
						|
        if (i > nContextLines) { | 
						|
          jLength -= i - nContextLines; // subtract excess common lines | 
						|
 | 
						|
          hasExcessAtStartOrEnd = true; | 
						|
        } | 
						|
      } else if (i === iLength) { | 
						|
        // at end | 
						|
        var n = i - iStart; | 
						|
 | 
						|
        if (n > nContextLines) { | 
						|
          jLength -= n - nContextLines; // subtract excess common lines | 
						|
 | 
						|
          hasExcessAtStartOrEnd = true; | 
						|
        } | 
						|
      } else { | 
						|
        // between changes | 
						|
        var _n = i - iStart; | 
						|
 | 
						|
        if (_n > nContextLines2) { | 
						|
          jLength -= _n - nContextLines2; // subtract excess common lines | 
						|
 | 
						|
          nExcessesBetweenChanges += 1; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    while (i !== iLength && diffs[i][0] !== _cleanupSemantic.DIFF_EQUAL) { | 
						|
      i += 1; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var hasPatch = nExcessesBetweenChanges !== 0 || hasExcessAtStartOrEnd; | 
						|
 | 
						|
  if (nExcessesBetweenChanges !== 0) { | 
						|
    jLength += nExcessesBetweenChanges + 1; // add patch lines | 
						|
  } else if (hasExcessAtStartOrEnd) { | 
						|
    jLength += 1; // add patch line | 
						|
  } | 
						|
 | 
						|
  var jLast = jLength - 1; | 
						|
  var lines = []; | 
						|
  var jPatchMark = 0; // index of placeholder line for current patch mark | 
						|
 | 
						|
  if (hasPatch) { | 
						|
    lines.push(''); // placeholder line for first patch mark | 
						|
  } // Indexes of expected or received lines in current patch: | 
						|
 | 
						|
 | 
						|
  var aStart = 0; | 
						|
  var bStart = 0; | 
						|
  var aEnd = 0; | 
						|
  var bEnd = 0; | 
						|
 | 
						|
  var pushCommonLine = function pushCommonLine(line) { | 
						|
    var j = lines.length; | 
						|
    lines.push((0, _printDiffs.printCommonLine)(line, j === 0 || j === jLast)); | 
						|
    aEnd += 1; | 
						|
    bEnd += 1; | 
						|
  }; | 
						|
 | 
						|
  var pushDeleteLine = function pushDeleteLine(line) { | 
						|
    lines.push((0, _printDiffs.printDeleteLine)(line)); | 
						|
    aEnd += 1; | 
						|
  }; | 
						|
 | 
						|
  var pushInsertLine = function pushInsertLine(line) { | 
						|
    lines.push((0, _printDiffs.printInsertLine)(line)); | 
						|
    bEnd += 1; | 
						|
  }; // Second pass: push lines with diff formatting (and patch marks, if needed). | 
						|
 | 
						|
 | 
						|
  i = 0; | 
						|
 | 
						|
  while (i !== iLength) { | 
						|
    var _iStart = i; | 
						|
 | 
						|
    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_EQUAL) { | 
						|
      i += 1; | 
						|
    } | 
						|
 | 
						|
    if (_iStart !== i) { | 
						|
      if (_iStart === 0) { | 
						|
        // at beginning | 
						|
        if (i > nContextLines) { | 
						|
          _iStart = i - nContextLines; | 
						|
          aStart = _iStart; | 
						|
          bStart = _iStart; | 
						|
          aEnd = aStart; | 
						|
          bEnd = bStart; | 
						|
        } | 
						|
 | 
						|
        for (var iCommon = _iStart; iCommon !== i; iCommon += 1) { | 
						|
          pushCommonLine(diffs[iCommon][1]); | 
						|
        } | 
						|
      } else if (i === iLength) { | 
						|
        // at end | 
						|
        var iEnd = i - _iStart > nContextLines ? _iStart + nContextLines : i; | 
						|
 | 
						|
        for (var _iCommon = _iStart; _iCommon !== iEnd; _iCommon += 1) { | 
						|
          pushCommonLine(diffs[_iCommon][1]); | 
						|
        } | 
						|
      } else { | 
						|
        // between changes | 
						|
        var nCommon = i - _iStart; | 
						|
 | 
						|
        if (nCommon > nContextLines2) { | 
						|
          var _iEnd = _iStart + nContextLines; | 
						|
 | 
						|
          for (var _iCommon2 = _iStart; _iCommon2 !== _iEnd; _iCommon2 += 1) { | 
						|
            pushCommonLine(diffs[_iCommon2][1]); | 
						|
          } | 
						|
 | 
						|
          lines[jPatchMark] = (0, _printDiffs.createPatchMark)(aStart, aEnd, bStart, bEnd); | 
						|
          jPatchMark = lines.length; | 
						|
          lines.push(''); // placeholder line for next patch mark | 
						|
 | 
						|
          var nOmit = nCommon - nContextLines2; | 
						|
          aStart = aEnd + nOmit; | 
						|
          bStart = bEnd + nOmit; | 
						|
          aEnd = aStart; | 
						|
          bEnd = bStart; | 
						|
 | 
						|
          for (var _iCommon3 = i - nContextLines; _iCommon3 !== i; _iCommon3 += 1) { | 
						|
            pushCommonLine(diffs[_iCommon3][1]); | 
						|
          } | 
						|
        } else { | 
						|
          for (var _iCommon4 = _iStart; _iCommon4 !== i; _iCommon4 += 1) { | 
						|
            pushCommonLine(diffs[_iCommon4][1]); | 
						|
          } | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_DELETE) { | 
						|
      pushDeleteLine(diffs[i][1]); | 
						|
      i += 1; | 
						|
    } | 
						|
 | 
						|
    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_INSERT) { | 
						|
      pushInsertLine(diffs[i][1]); | 
						|
      i += 1; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (hasPatch) { | 
						|
    lines[jPatchMark] = (0, _printDiffs.createPatchMark)(aStart, aEnd, bStart, bEnd); | 
						|
  } | 
						|
 | 
						|
  return lines.join('\n'); | 
						|
}; // jest --expand | 
						|
// | 
						|
// Given array of aligned strings with inverse highlight formatting, | 
						|
// return joined lines with diff formatting. | 
						|
 | 
						|
 | 
						|
exports.joinAlignedDiffsNoExpand = joinAlignedDiffsNoExpand; | 
						|
 | 
						|
var joinAlignedDiffsExpand = function joinAlignedDiffsExpand(diffs) { | 
						|
  return diffs.map(function (diff, i, diffs) { | 
						|
    var line = diff[1]; | 
						|
 | 
						|
    switch (diff[0]) { | 
						|
      case _cleanupSemantic.DIFF_DELETE: | 
						|
        return (0, _printDiffs.printDeleteLine)(line); | 
						|
 | 
						|
      case _cleanupSemantic.DIFF_INSERT: | 
						|
        return (0, _printDiffs.printInsertLine)(line); | 
						|
 | 
						|
      default: | 
						|
        return (0, _printDiffs.printCommonLine)(line, i === 0 || i === diffs.length - 1); | 
						|
    } | 
						|
  }).join('\n'); | 
						|
}; | 
						|
 | 
						|
exports.joinAlignedDiffsExpand = joinAlignedDiffsExpand; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-diff/build/printDiffs.js": | 
						|
/*!************************************************!*\ | 
						|
  !*** ./packages/jest-diff/build/printDiffs.js ***! | 
						|
  \************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.getStringDiff = exports.printMultilineStringDiffs = exports.createPatchMark = exports.printAnnotation = exports.hasCommonDiff = exports.computeStringDiffs = exports.printCommonLine = exports.printInsertLine = exports.printDeleteLine = exports.MULTILINE_REGEXP = exports.getReceivedString = exports.getExpectedString = exports.getHighlightedString = exports.RECEIVED_COLOR = exports.INVERTED_COLOR = exports.EXPECTED_COLOR = exports.DIM_COLOR = void 0; | 
						|
 | 
						|
var _chalk = _interopRequireDefault(__webpack_require__(/*! chalk */ "./packages/expect/build/fakeChalk.js")); | 
						|
 | 
						|
var _cleanupSemantic = __webpack_require__(/*! ./cleanupSemantic */ "./packages/jest-diff/build/cleanupSemantic.js"); | 
						|
 | 
						|
var _diffStrings = _interopRequireDefault(__webpack_require__(/*! ./diffStrings */ "./packages/jest-diff/build/diffStrings.js")); | 
						|
 | 
						|
var _getAlignedDiffs = _interopRequireDefault(__webpack_require__(/*! ./getAlignedDiffs */ "./packages/jest-diff/build/getAlignedDiffs.js")); | 
						|
 | 
						|
var _joinAlignedDiffs = __webpack_require__(/*! ./joinAlignedDiffs */ "./packages/jest-diff/build/joinAlignedDiffs.js"); | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var DIM_COLOR = _chalk.default.dim; | 
						|
exports.DIM_COLOR = DIM_COLOR; | 
						|
var EXPECTED_COLOR = _chalk.default.green; | 
						|
exports.EXPECTED_COLOR = EXPECTED_COLOR; | 
						|
var INVERTED_COLOR = _chalk.default.inverse; | 
						|
exports.INVERTED_COLOR = INVERTED_COLOR; | 
						|
var RECEIVED_COLOR = _chalk.default.red; | 
						|
exports.RECEIVED_COLOR = RECEIVED_COLOR; | 
						|
var PATCH_COLOR = _chalk.default.yellow; // Given change op and array of diffs, return concatenated string: | 
						|
// * include common strings | 
						|
// * include change strings which have argument op (inverse highlight) | 
						|
// * exclude change strings which have opposite op | 
						|
 | 
						|
var getHighlightedString = function getHighlightedString(op, diffs) { | 
						|
  return diffs.reduce(function (reduced, diff) { | 
						|
    return reduced + (diff[0] === _cleanupSemantic.DIFF_EQUAL ? diff[1] : diff[0] === op ? INVERTED_COLOR(diff[1]) : ''); | 
						|
  }, ''); | 
						|
}; | 
						|
 | 
						|
exports.getHighlightedString = getHighlightedString; | 
						|
 | 
						|
var getExpectedString = function getExpectedString(diffs) { | 
						|
  return getHighlightedString(_cleanupSemantic.DIFF_DELETE, diffs); | 
						|
}; | 
						|
 | 
						|
exports.getExpectedString = getExpectedString; | 
						|
 | 
						|
var getReceivedString = function getReceivedString(diffs) { | 
						|
  return getHighlightedString(_cleanupSemantic.DIFF_INSERT, diffs); | 
						|
}; | 
						|
 | 
						|
exports.getReceivedString = getReceivedString; | 
						|
var MULTILINE_REGEXP = /\n/; | 
						|
exports.MULTILINE_REGEXP = MULTILINE_REGEXP; | 
						|
var NEWLINE_SYMBOL = "\u21B5"; // downwards arrow with corner leftwards | 
						|
 | 
						|
var SPACE_SYMBOL = "\xB7"; // middle dot | 
						|
// Instead of inverse highlight which now implies a change, | 
						|
// replace common spaces with middle dot at the end of the line. | 
						|
 | 
						|
var replaceSpacesAtEnd = function replaceSpacesAtEnd(line) { | 
						|
  return line.replace(/\s+$/, function (spaces) { | 
						|
    return SPACE_SYMBOL.repeat(spaces.length); | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
var printDeleteLine = function printDeleteLine(line) { | 
						|
  return EXPECTED_COLOR(line.length !== 0 ? '- ' + replaceSpacesAtEnd(line) : '-'); | 
						|
}; | 
						|
 | 
						|
exports.printDeleteLine = printDeleteLine; | 
						|
 | 
						|
var printInsertLine = function printInsertLine(line) { | 
						|
  return RECEIVED_COLOR(line.length !== 0 ? '+ ' + replaceSpacesAtEnd(line) : '+'); | 
						|
}; // Prevent visually ambiguous empty line as the first or the last. | 
						|
 | 
						|
 | 
						|
exports.printInsertLine = printInsertLine; | 
						|
 | 
						|
var printCommonLine = function printCommonLine(line) { | 
						|
  var isFirstOrLast = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; | 
						|
  return line.length !== 0 ? DIM_COLOR('  ' + replaceSpacesAtEnd(line)) : isFirstOrLast ? DIM_COLOR('  ' + NEWLINE_SYMBOL) : ''; | 
						|
}; | 
						|
 | 
						|
exports.printCommonLine = printCommonLine; | 
						|
 | 
						|
var computeStringDiffs = function computeStringDiffs(expected, received) { | 
						|
  var isMultiline = MULTILINE_REGEXP.test(expected) || MULTILINE_REGEXP.test(received); // getAlignedDiffs assumes that a newline was appended to the strings. | 
						|
 | 
						|
  if (isMultiline) { | 
						|
    expected += '\n'; | 
						|
    received += '\n'; | 
						|
  } | 
						|
 | 
						|
  var diffs = (0, _diffStrings.default)(expected, received); | 
						|
  (0, _cleanupSemantic.cleanupSemantic)(diffs); // impure function | 
						|
 | 
						|
  return { | 
						|
    diffs: diffs, | 
						|
    isMultiline: isMultiline | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.computeStringDiffs = computeStringDiffs; | 
						|
 | 
						|
var hasCommonDiff = function hasCommonDiff(diffs, isMultiline) { | 
						|
  if (isMultiline) { | 
						|
    // Important: Ignore common newline that was appended to multiline strings! | 
						|
    var iLast = diffs.length - 1; | 
						|
    return diffs.some(function (diff, i) { | 
						|
      return diff[0] === _cleanupSemantic.DIFF_EQUAL && (i !== iLast || diff[1] !== '\n'); | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  return diffs.some(function (diff) { | 
						|
    return diff[0] === _cleanupSemantic.DIFF_EQUAL; | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
exports.hasCommonDiff = hasCommonDiff; | 
						|
 | 
						|
var printAnnotation = function printAnnotation(options) { | 
						|
  return EXPECTED_COLOR('- ' + (options && options.aAnnotation || 'Expected')) + '\n' + RECEIVED_COLOR('+ ' + (options && options.bAnnotation || 'Received')) + '\n\n'; | 
						|
}; // In GNU diff format, indexes are one-based instead of zero-based. | 
						|
 | 
						|
 | 
						|
exports.printAnnotation = printAnnotation; | 
						|
 | 
						|
var createPatchMark = function createPatchMark(aStart, aEnd, bStart, bEnd) { | 
						|
  return PATCH_COLOR("@@ -".concat(aStart + 1, ",").concat(aEnd - aStart, " +").concat(bStart + 1, ",").concat(bEnd - bStart, " @@")); | 
						|
}; // Return formatted diff lines without labels. | 
						|
 | 
						|
 | 
						|
exports.createPatchMark = createPatchMark; | 
						|
 | 
						|
var printMultilineStringDiffs = function printMultilineStringDiffs(diffs, expand) { | 
						|
  var lines = (0, _getAlignedDiffs.default)(diffs); | 
						|
  return expand ? (0, _joinAlignedDiffs.joinAlignedDiffsExpand)(lines) : (0, _joinAlignedDiffs.joinAlignedDiffsNoExpand)(lines); | 
						|
}; | 
						|
 | 
						|
exports.printMultilineStringDiffs = printMultilineStringDiffs; | 
						|
var MAX_DIFF_STRING_LENGTH = 20000; // Print specific substring diff for strings only: | 
						|
// * if strings are not equal | 
						|
// * if neither string is empty | 
						|
// * if neither string is too long | 
						|
// * if there is a common string after semantic cleanup | 
						|
 | 
						|
var getStringDiff = function getStringDiff(expected, received, options) { | 
						|
  if (expected === received || expected.length === 0 || received.length === 0 || expected.length > MAX_DIFF_STRING_LENGTH || received.length > MAX_DIFF_STRING_LENGTH) { | 
						|
    return null; | 
						|
  } | 
						|
 | 
						|
  var _computeStringDiffs = computeStringDiffs(expected, received), | 
						|
      diffs = _computeStringDiffs.diffs, | 
						|
      isMultiline = _computeStringDiffs.isMultiline; | 
						|
 | 
						|
  if (!hasCommonDiff(diffs, isMultiline)) { | 
						|
    return null; | 
						|
  } | 
						|
 | 
						|
  return isMultiline ? { | 
						|
    annotatedDiff: printAnnotation(options) + printMultilineStringDiffs(diffs, options === undefined || options.expand !== false), | 
						|
    isMultiline: isMultiline | 
						|
  } : { | 
						|
    a: getExpectedString(diffs), | 
						|
    b: getReceivedString(diffs), | 
						|
    isMultiline: isMultiline | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.getStringDiff = getStringDiff; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-get-type/build/index.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./packages/jest-get-type/build/index.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
// get the type of a value with handling the edge cases like `typeof []` | 
						|
// and `typeof null` | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
function getType(value) { | 
						|
  if (value === undefined) { | 
						|
    return 'undefined'; | 
						|
  } else if (value === null) { | 
						|
    return 'null'; | 
						|
  } else if (Array.isArray(value)) { | 
						|
    return 'array'; | 
						|
  } else if (typeof value === 'boolean') { | 
						|
    return 'boolean'; | 
						|
  } else if (typeof value === 'function') { | 
						|
    return 'function'; | 
						|
  } else if (typeof value === 'number') { | 
						|
    return 'number'; | 
						|
  } else if (typeof value === 'string') { | 
						|
    return 'string'; | 
						|
  } else if (_typeof(value) === 'object') { | 
						|
    if (value != null) { | 
						|
      if (value.constructor === RegExp) { | 
						|
        return 'regexp'; | 
						|
      } else if (value.constructor === Map) { | 
						|
        return 'map'; | 
						|
      } else if (value.constructor === Set) { | 
						|
        return 'set'; | 
						|
      } else if (value.constructor === Date) { | 
						|
        return 'date'; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return 'object'; | 
						|
  } else if (_typeof(value) === 'symbol') { | 
						|
    return 'symbol'; | 
						|
  } | 
						|
 | 
						|
  throw new Error("value of unknown type: ".concat(value)); | 
						|
} | 
						|
 | 
						|
getType.isPrimitive = function (value) { | 
						|
  return Object(value) !== value; | 
						|
}; | 
						|
 | 
						|
module.exports = getType; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-matcher-utils/build/index.js": | 
						|
/*!****************************************************!*\ | 
						|
  !*** ./packages/jest-matcher-utils/build/index.js ***! | 
						|
  \****************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
Object.defineProperty(exports, 'DiffOptions', { | 
						|
  enumerable: true, | 
						|
  get: function get() { | 
						|
    return _jestDiff.DiffOptions; | 
						|
  } | 
						|
}); | 
						|
exports.matcherHint = exports.matcherErrorMessage = exports.getLabelPrinter = exports.pluralize = exports.diff = exports.printDiffOrStringify = exports.ensureExpectedIsNonNegativeInteger = exports.ensureNumbers = exports.ensureExpectedIsNumber = exports.ensureActualIsNumber = exports.ensureNoExpected = exports.printWithType = exports.printExpected = exports.printReceived = exports.highlightTrailingWhitespace = exports.stringify = exports.SUGGEST_TO_CONTAIN_EQUAL = exports.DIM_COLOR = exports.BOLD_WEIGHT = exports.INVERTED_COLOR = exports.RECEIVED_COLOR = exports.EXPECTED_COLOR = void 0; | 
						|
 | 
						|
var _chalk = _interopRequireDefault(__webpack_require__(/*! chalk */ "./packages/expect/build/fakeChalk.js")); | 
						|
 | 
						|
var _jestDiff = _interopRequireWildcard(__webpack_require__(/*! jest-diff */ "./packages/jest-diff/build/index.js")); | 
						|
 | 
						|
var _jestGetType = _interopRequireWildcard(__webpack_require__(/*! jest-get-type */ "./packages/jest-get-type/build/index.js")); | 
						|
 | 
						|
var _prettyFormat = _interopRequireDefault(__webpack_require__(/*! pretty-format */ "./packages/pretty-format/build/index.js")); | 
						|
 | 
						|
function _interopRequireWildcard(obj) { | 
						|
  if (obj && obj.__esModule) { | 
						|
    return obj; | 
						|
  } else { | 
						|
    var newObj = {}; | 
						|
 | 
						|
    if (obj != null) { | 
						|
      for (var key in obj) { | 
						|
        if (Object.prototype.hasOwnProperty.call(obj, key)) { | 
						|
          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; | 
						|
 | 
						|
          if (desc.get || desc.set) { | 
						|
            Object.defineProperty(newObj, key, desc); | 
						|
          } else { | 
						|
            newObj[key] = obj[key]; | 
						|
          } | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    newObj.default = obj; | 
						|
    return newObj; | 
						|
  } | 
						|
} | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var _prettyFormat$plugins = _prettyFormat.default.plugins, | 
						|
    AsymmetricMatcher = _prettyFormat$plugins.AsymmetricMatcher, | 
						|
    DOMCollection = _prettyFormat$plugins.DOMCollection, | 
						|
    DOMElement = _prettyFormat$plugins.DOMElement, | 
						|
    Immutable = _prettyFormat$plugins.Immutable, | 
						|
    ReactElement = _prettyFormat$plugins.ReactElement, | 
						|
    ReactTestComponent = _prettyFormat$plugins.ReactTestComponent; | 
						|
var PLUGINS = [ReactTestComponent, ReactElement, DOMElement, DOMCollection, Immutable, AsymmetricMatcher]; | 
						|
var EXPECTED_COLOR = _chalk.default.green; | 
						|
exports.EXPECTED_COLOR = EXPECTED_COLOR; | 
						|
var RECEIVED_COLOR = _chalk.default.red; | 
						|
exports.RECEIVED_COLOR = RECEIVED_COLOR; | 
						|
var INVERTED_COLOR = _chalk.default.inverse; | 
						|
exports.INVERTED_COLOR = INVERTED_COLOR; | 
						|
var BOLD_WEIGHT = _chalk.default.bold; | 
						|
exports.BOLD_WEIGHT = BOLD_WEIGHT; | 
						|
var DIM_COLOR = _chalk.default.dim; | 
						|
exports.DIM_COLOR = DIM_COLOR; | 
						|
var MULTILINE_REGEXP = /\n/; | 
						|
var SPACE_SYMBOL = "\xB7"; // middle dot | 
						|
 | 
						|
var NUMBERS = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen']; | 
						|
 | 
						|
var SUGGEST_TO_CONTAIN_EQUAL = _chalk.default.dim('Looks like you wanted to test for object/array equality with the stricter `toContain` matcher. You probably need to use `toContainEqual` instead.'); | 
						|
 | 
						|
exports.SUGGEST_TO_CONTAIN_EQUAL = SUGGEST_TO_CONTAIN_EQUAL; | 
						|
 | 
						|
var stringify = function stringify(object) { | 
						|
  var maxDepth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; | 
						|
  var MAX_LENGTH = 10000; | 
						|
  var result; | 
						|
 | 
						|
  try { | 
						|
    result = (0, _prettyFormat.default)(object, { | 
						|
      maxDepth: maxDepth, | 
						|
      min: true, | 
						|
      plugins: PLUGINS | 
						|
    }); | 
						|
  } catch (e) { | 
						|
    result = (0, _prettyFormat.default)(object, { | 
						|
      callToJSON: false, | 
						|
      maxDepth: maxDepth, | 
						|
      min: true, | 
						|
      plugins: PLUGINS | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  return result.length >= MAX_LENGTH && maxDepth > 1 ? stringify(object, Math.floor(maxDepth / 2)) : result; | 
						|
}; | 
						|
 | 
						|
exports.stringify = stringify; | 
						|
 | 
						|
var highlightTrailingWhitespace = function highlightTrailingWhitespace(text) { | 
						|
  return text.replace(/\s+$/gm, _chalk.default.inverse('$&')); | 
						|
}; // Instead of inverse highlight which now implies a change, | 
						|
// replace common spaces with middle dot at the end of any line. | 
						|
 | 
						|
 | 
						|
exports.highlightTrailingWhitespace = highlightTrailingWhitespace; | 
						|
 | 
						|
var replaceTrailingSpaces = function replaceTrailingSpaces(text) { | 
						|
  return text.replace(/\s+$/gm, function (spaces) { | 
						|
    return SPACE_SYMBOL.repeat(spaces.length); | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
var printReceived = function printReceived(object) { | 
						|
  return RECEIVED_COLOR(replaceTrailingSpaces(stringify(object))); | 
						|
}; | 
						|
 | 
						|
exports.printReceived = printReceived; | 
						|
 | 
						|
var printExpected = function printExpected(value) { | 
						|
  return EXPECTED_COLOR(replaceTrailingSpaces(stringify(value))); | 
						|
}; | 
						|
 | 
						|
exports.printExpected = printExpected; | 
						|
 | 
						|
var printWithType = function printWithType(name, value, print // printExpected or printReceived | 
						|
) { | 
						|
  var type = (0, _jestGetType.default)(value); | 
						|
  var hasType = type !== 'null' && type !== 'undefined' ? "".concat(name, " has type:  ").concat(type, "\n") : ''; | 
						|
  var hasValue = "".concat(name, " has value: ").concat(print(value)); | 
						|
  return hasType + hasValue; | 
						|
}; | 
						|
 | 
						|
exports.printWithType = printWithType; | 
						|
 | 
						|
var ensureNoExpected = function ensureNoExpected(expected, matcherName, options) { | 
						|
  if (typeof expected !== 'undefined') { | 
						|
    // Prepend maybe not only for backward compatibility. | 
						|
    var matcherString = (options ? '' : '[.not]') + matcherName; | 
						|
    throw new Error(matcherErrorMessage(matcherHint(matcherString, undefined, '', options), // Because expected is omitted in hint above, | 
						|
    'this matcher must not have an expected argument', printWithType('Expected', expected, printExpected))); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
exports.ensureNoExpected = ensureNoExpected; | 
						|
 | 
						|
var ensureActualIsNumber = function ensureActualIsNumber(actual, matcherName, options) { | 
						|
  if (typeof actual !== 'number') { | 
						|
    // Prepend maybe not only for backward compatibility. | 
						|
    var matcherString = (options ? '' : '[.not]') + matcherName; | 
						|
    throw new Error(matcherErrorMessage(matcherHint(matcherString, undefined, undefined, options), "".concat(RECEIVED_COLOR('received'), " value must be a number"), printWithType('Received', actual, printReceived))); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
exports.ensureActualIsNumber = ensureActualIsNumber; | 
						|
 | 
						|
var ensureExpectedIsNumber = function ensureExpectedIsNumber(expected, matcherName, options) { | 
						|
  if (typeof expected !== 'number') { | 
						|
    // Prepend maybe not only for backward compatibility. | 
						|
    var matcherString = (options ? '' : '[.not]') + matcherName; | 
						|
    throw new Error(matcherErrorMessage(matcherHint(matcherString, undefined, undefined, options), "".concat(EXPECTED_COLOR('expected'), " value must be a number"), printWithType('Expected', expected, printExpected))); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
exports.ensureExpectedIsNumber = ensureExpectedIsNumber; | 
						|
 | 
						|
var ensureNumbers = function ensureNumbers(actual, expected, matcherName, options) { | 
						|
  ensureActualIsNumber(actual, matcherName, options); | 
						|
  ensureExpectedIsNumber(expected, matcherName, options); | 
						|
}; | 
						|
 | 
						|
exports.ensureNumbers = ensureNumbers; | 
						|
 | 
						|
var ensureExpectedIsNonNegativeInteger = function ensureExpectedIsNonNegativeInteger(expected, matcherName, options) { | 
						|
  if (typeof expected !== 'number' || !Number.isSafeInteger(expected) || expected < 0) { | 
						|
    // Prepend maybe not only for backward compatibility. | 
						|
    var matcherString = (options ? '' : '[.not]') + matcherName; | 
						|
    throw new Error(matcherErrorMessage(matcherHint(matcherString, undefined, undefined, options), "".concat(EXPECTED_COLOR('expected'), " value must be a non-negative integer"), printWithType('Expected', expected, printExpected))); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
exports.ensureExpectedIsNonNegativeInteger = ensureExpectedIsNonNegativeInteger; | 
						|
 | 
						|
var isLineDiffable = function isLineDiffable(expected, received) { | 
						|
  var expectedType = (0, _jestGetType.default)(expected); | 
						|
  var receivedType = (0, _jestGetType.default)(received); | 
						|
 | 
						|
  if (expectedType !== receivedType) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if ((0, _jestGetType.isPrimitive)(expected)) { | 
						|
    // Print generic line diff for strings only: | 
						|
    // * if neither string is empty | 
						|
    return typeof expected === 'string' && typeof received === 'string' && expected.length !== 0 && received.length !== 0 && (MULTILINE_REGEXP.test(expected) || MULTILINE_REGEXP.test(received)); | 
						|
  } | 
						|
 | 
						|
  if (expectedType === 'date' || expectedType === 'function' || expectedType === 'regexp') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (expected instanceof Error && received instanceof Error) { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (expectedType === 'object' && typeof expected.asymmetricMatch === 'function') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (receivedType === 'object' && typeof received.asymmetricMatch === 'function') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
 | 
						|
var printDiffOrStringify = function printDiffOrStringify(expected, received, expectedLabel, receivedLabel, expand) { | 
						|
  if (typeof expected === 'string' && typeof received === 'string') { | 
						|
    var result = (0, _jestDiff.getStringDiff)(expected, received, { | 
						|
      aAnnotation: expectedLabel, | 
						|
      bAnnotation: receivedLabel, | 
						|
      expand: expand | 
						|
    }); | 
						|
 | 
						|
    if (result !== null) { | 
						|
      if (result.isMultiline) { | 
						|
        return result.annotatedDiff; | 
						|
      } | 
						|
 | 
						|
      var _printLabel = getLabelPrinter(expectedLabel, receivedLabel); | 
						|
 | 
						|
      var _expectedLine = _printLabel(expectedLabel) + printExpected(result.a); | 
						|
 | 
						|
      var _receivedLine = _printLabel(receivedLabel) + printReceived(result.b); | 
						|
 | 
						|
      return _expectedLine + '\n' + _receivedLine; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  if (isLineDiffable(expected, received)) { | 
						|
    var difference = (0, _jestDiff.default)(expected, received, { | 
						|
      aAnnotation: expectedLabel, | 
						|
      bAnnotation: receivedLabel, | 
						|
      expand: expand | 
						|
    }); | 
						|
 | 
						|
    if (typeof difference === 'string' && difference.includes('- ' + expectedLabel) && difference.includes('+ ' + receivedLabel)) { | 
						|
      return difference; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var printLabel = getLabelPrinter(expectedLabel, receivedLabel); | 
						|
  var expectedLine = printLabel(expectedLabel) + printExpected(expected); | 
						|
  var receivedLine = printLabel(receivedLabel) + (stringify(expected) === stringify(received) ? 'serializes to the same string' : printReceived(received)); | 
						|
  return expectedLine + '\n' + receivedLine; | 
						|
}; // Sometimes, e.g. when comparing two numbers, the output from jest-diff | 
						|
// does not contain more information than the `Expected:` / `Received:` already gives. | 
						|
// In those cases, we do not print a diff to make the output shorter and not redundant. | 
						|
 | 
						|
 | 
						|
exports.printDiffOrStringify = printDiffOrStringify; | 
						|
 | 
						|
var shouldPrintDiff = function shouldPrintDiff(actual, expected) { | 
						|
  if (typeof actual === 'number' && typeof expected === 'number') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  if (typeof actual === 'boolean' && typeof expected === 'boolean') { | 
						|
    return false; | 
						|
  } | 
						|
 | 
						|
  return true; | 
						|
}; | 
						|
 | 
						|
var diff = function diff(a, b, options) { | 
						|
  return shouldPrintDiff(a, b) ? (0, _jestDiff.default)(a, b, options) : null; | 
						|
}; | 
						|
 | 
						|
exports.diff = diff; | 
						|
 | 
						|
var pluralize = function pluralize(word, count) { | 
						|
  return (NUMBERS[count] || count) + ' ' + word + (count === 1 ? '' : 's'); | 
						|
}; // To display lines of labeled values as two columns with monospace alignment: | 
						|
// given the strings which will describe the values, | 
						|
// return function which given each string, returns the label: | 
						|
// string, colon, space, and enough padding spaces to align the value. | 
						|
 | 
						|
 | 
						|
exports.pluralize = pluralize; | 
						|
 | 
						|
var getLabelPrinter = function getLabelPrinter() { | 
						|
  for (var _len = arguments.length, strings = new Array(_len), _key = 0; _key < _len; _key++) { | 
						|
    strings[_key] = arguments[_key]; | 
						|
  } | 
						|
 | 
						|
  var maxLength = strings.reduce(function (max, string) { | 
						|
    return string.length > max ? string.length : max; | 
						|
  }, 0); | 
						|
  return function (string) { | 
						|
    return "".concat(string, ": ").concat(' '.repeat(maxLength - string.length)); | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.getLabelPrinter = getLabelPrinter; | 
						|
 | 
						|
var matcherErrorMessage = function matcherErrorMessage(hint, generic, specific // incorrect value returned from call to printWithType | 
						|
) { | 
						|
  return "".concat(hint, "\n\n").concat(_chalk.default.bold('Matcher error'), ": ").concat(generic, "\n\n").concat(specific); | 
						|
}; // Display assertion for the report when a test fails. | 
						|
// New format: rejects/resolves, not, and matcher name have black color | 
						|
// Old format: matcher name has dim color | 
						|
 | 
						|
 | 
						|
exports.matcherErrorMessage = matcherErrorMessage; | 
						|
 | 
						|
var matcherHint = function matcherHint(matcherName) { | 
						|
  var received = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'received'; | 
						|
  var expected = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'expected'; | 
						|
  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; | 
						|
  var _options$comment = options.comment, | 
						|
      comment = _options$comment === void 0 ? '' : _options$comment, | 
						|
      _options$expectedColo = options.expectedColor, | 
						|
      expectedColor = _options$expectedColo === void 0 ? EXPECTED_COLOR : _options$expectedColo, | 
						|
      _options$isDirectExpe = options.isDirectExpectCall, | 
						|
      isDirectExpectCall = _options$isDirectExpe === void 0 ? false : _options$isDirectExpe, | 
						|
      _options$isNot = options.isNot, | 
						|
      isNot = _options$isNot === void 0 ? false : _options$isNot, | 
						|
      _options$promise = options.promise, | 
						|
      promise = _options$promise === void 0 ? '' : _options$promise, | 
						|
      _options$receivedColo = options.receivedColor, | 
						|
      receivedColor = _options$receivedColo === void 0 ? RECEIVED_COLOR : _options$receivedColo, | 
						|
      _options$secondArgume = options.secondArgument, | 
						|
      secondArgument = _options$secondArgume === void 0 ? '' : _options$secondArgume, | 
						|
      _options$secondArgume2 = options.secondArgumentColor, | 
						|
      secondArgumentColor = _options$secondArgume2 === void 0 ? EXPECTED_COLOR : _options$secondArgume2; | 
						|
  var hint = ''; | 
						|
  var dimString = 'expect'; // concatenate adjacent dim substrings | 
						|
 | 
						|
  if (!isDirectExpectCall && received !== '') { | 
						|
    hint += DIM_COLOR(dimString + '(') + receivedColor(received); | 
						|
    dimString = ')'; | 
						|
  } | 
						|
 | 
						|
  if (promise !== '') { | 
						|
    hint += DIM_COLOR(dimString + '.') + promise; | 
						|
    dimString = ''; | 
						|
  } | 
						|
 | 
						|
  if (isNot) { | 
						|
    hint += DIM_COLOR(dimString + '.') + 'not'; | 
						|
    dimString = ''; | 
						|
  } | 
						|
 | 
						|
  if (matcherName.includes('.')) { | 
						|
    // Old format: for backward compatibility, | 
						|
    // especially without promise or isNot options | 
						|
    dimString += matcherName; | 
						|
  } else { | 
						|
    // New format: omit period from matcherName arg | 
						|
    hint += DIM_COLOR(dimString + '.') + matcherName; | 
						|
    dimString = ''; | 
						|
  } | 
						|
 | 
						|
  if (expected === '') { | 
						|
    dimString += '()'; | 
						|
  } else { | 
						|
    hint += DIM_COLOR(dimString + '(') + expectedColor(expected); | 
						|
 | 
						|
    if (secondArgument) { | 
						|
      hint += DIM_COLOR(', ') + secondArgumentColor(secondArgument); | 
						|
    } | 
						|
 | 
						|
    dimString = ')'; | 
						|
  } | 
						|
 | 
						|
  if (comment !== '') { | 
						|
    dimString += ' // ' + comment; | 
						|
  } | 
						|
 | 
						|
  if (dimString !== '') { | 
						|
    hint += DIM_COLOR(dimString); | 
						|
  } | 
						|
 | 
						|
  return hint; | 
						|
}; | 
						|
 | 
						|
exports.matcherHint = matcherHint; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-message-util/build/index.js": | 
						|
/*!***************************************************!*\ | 
						|
  !*** ./packages/jest-message-util/build/index.js ***! | 
						|
  \***************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(global) { | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
Object.defineProperty(exports, 'Frame', { | 
						|
  enumerable: true, | 
						|
  get: function get() { | 
						|
    return _types.Frame; | 
						|
  } | 
						|
}); | 
						|
exports.separateMessageFromStack = exports.formatResultsErrors = exports.formatStackTrace = exports.getTopFrame = exports.getStackTraceLines = exports.formatExecError = void 0; | 
						|
 | 
						|
var _fs = _interopRequireDefault(__webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js")); | 
						|
 | 
						|
var _path = _interopRequireDefault(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js")); | 
						|
 | 
						|
var _chalk = _interopRequireDefault(__webpack_require__(/*! chalk */ "./packages/expect/build/fakeChalk.js")); | 
						|
 | 
						|
var _micromatch = _interopRequireDefault(__webpack_require__(/*! micromatch */ "./node_modules/micromatch/index.js")); | 
						|
 | 
						|
var _slash = _interopRequireDefault(__webpack_require__(/*! slash */ "./node_modules/slash/index.js")); | 
						|
 | 
						|
var _codeFrame = __webpack_require__(/*! @babel/code-frame */ "./node_modules/@babel/code-frame/lib/index.js"); | 
						|
 | 
						|
var _stackUtils = _interopRequireDefault(__webpack_require__(/*! stack-utils */ "./node_modules/stack-utils/index.js")); | 
						|
 | 
						|
var _types = __webpack_require__(/*! ./types */ "./packages/jest-message-util/build/types.js"); | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
 | 
						|
var _Symbol = global['jest-symbol-do-not-touch'] || global.Symbol; | 
						|
 | 
						|
var jestReadFile = global[_Symbol.for('jest-native-read-file')] || _fs.default.readFileSync; | 
						|
 | 
						|
var _Symbol = global['jest-symbol-do-not-touch'] || global.Symbol; // stack utils tries to create pretty stack by making paths relative. | 
						|
 | 
						|
 | 
						|
var stackUtils = new _stackUtils.default({ | 
						|
  cwd: 'something which does not exist' | 
						|
}); | 
						|
var nodeInternals = []; | 
						|
 | 
						|
try { | 
						|
  nodeInternals = _stackUtils.default.nodeInternals(); | 
						|
} catch (e) {// `StackUtils.nodeInternals()` fails in browsers. We don't need to remove | 
						|
  // node internals in the browser though, so no issue. | 
						|
} | 
						|
 | 
						|
var PATH_NODE_MODULES = "".concat(_path.default.sep, "node_modules").concat(_path.default.sep); | 
						|
var PATH_JEST_PACKAGES = "".concat(_path.default.sep, "jest").concat(_path.default.sep, "packages").concat(_path.default.sep); // filter for noisy stack trace lines | 
						|
 | 
						|
var JASMINE_IGNORE = /^\s+at(?:(?:.jasmine\-)|\s+jasmine\.buildExpectationResult)/; | 
						|
var JEST_INTERNALS_IGNORE = /^\s+at.*?jest(-.*?)?(\/|\\)(build|node_modules|packages)(\/|\\)/; | 
						|
var ANONYMOUS_FN_IGNORE = /^\s+at <anonymous>.*$/; | 
						|
var ANONYMOUS_PROMISE_IGNORE = /^\s+at (new )?Promise \(<anonymous>\).*$/; | 
						|
var ANONYMOUS_GENERATOR_IGNORE = /^\s+at Generator.next \(<anonymous>\).*$/; | 
						|
var NATIVE_NEXT_IGNORE = /^\s+at next \(native\).*$/; | 
						|
var TITLE_INDENT = '  '; | 
						|
var MESSAGE_INDENT = '    '; | 
						|
var STACK_INDENT = '      '; | 
						|
var ANCESTRY_SEPARATOR = " \u203A "; | 
						|
 | 
						|
var TITLE_BULLET = _chalk.default.bold("\u25CF "); | 
						|
 | 
						|
var STACK_TRACE_COLOR = _chalk.default.dim; | 
						|
var STACK_PATH_REGEXP = /\s*at.*\(?(\:\d*\:\d*|native)\)?/; | 
						|
var EXEC_ERROR_MESSAGE = 'Test suite failed to run'; | 
						|
var NOT_EMPTY_LINE_REGEXP = /^(?!$)/gm; | 
						|
 | 
						|
var indentAllLines = function indentAllLines(lines, indent) { | 
						|
  return lines.replace(NOT_EMPTY_LINE_REGEXP, indent); | 
						|
}; | 
						|
 | 
						|
var trim = function trim(string) { | 
						|
  return (string || '').trim(); | 
						|
}; // Some errors contain not only line numbers in stack traces | 
						|
// e.g. SyntaxErrors can contain snippets of code, and we don't | 
						|
// want to trim those, because they may have pointers to the column/character | 
						|
// which will get misaligned. | 
						|
 | 
						|
 | 
						|
var trimPaths = function trimPaths(string) { | 
						|
  return string.match(STACK_PATH_REGEXP) ? trim(string) : string; | 
						|
}; | 
						|
 | 
						|
var getRenderedCallsite = function getRenderedCallsite(fileContent, line, column) { | 
						|
  var renderedCallsite = (0, _codeFrame.codeFrameColumns)(fileContent, { | 
						|
    start: { | 
						|
      column: column, | 
						|
      line: line | 
						|
    } | 
						|
  }, { | 
						|
    highlightCode: true | 
						|
  }); | 
						|
  renderedCallsite = indentAllLines(renderedCallsite, MESSAGE_INDENT); | 
						|
  renderedCallsite = "\n".concat(renderedCallsite, "\n"); | 
						|
  return renderedCallsite; | 
						|
}; | 
						|
 | 
						|
var blankStringRegexp = /^\s*$/; // ExecError is an error thrown outside of the test suite (not inside an `it` or | 
						|
// `before/after each` hooks). If it's thrown, none of the tests in the file | 
						|
// are executed. | 
						|
 | 
						|
var formatExecError = function formatExecError(error, config, options, testPath, reuseMessage) { | 
						|
  if (!error || typeof error === 'number') { | 
						|
    error = new Error("Expected an Error, but \"".concat(String(error), "\" was thrown")); | 
						|
    error.stack = ''; | 
						|
  } | 
						|
 | 
						|
  var message, stack; | 
						|
 | 
						|
  if (typeof error === 'string' || !error) { | 
						|
    error || (error = 'EMPTY ERROR'); | 
						|
    message = ''; | 
						|
    stack = error; | 
						|
  } else { | 
						|
    message = error.message; | 
						|
    stack = error.stack; | 
						|
  } | 
						|
 | 
						|
  var separated = separateMessageFromStack(stack || ''); | 
						|
  stack = separated.stack; | 
						|
 | 
						|
  if (separated.message.includes(trim(message))) { | 
						|
    // Often stack trace already contains the duplicate of the message | 
						|
    message = separated.message; | 
						|
  } | 
						|
 | 
						|
  message = indentAllLines(message, MESSAGE_INDENT); | 
						|
  stack = stack && !options.noStackTrace ? '\n' + formatStackTrace(stack, config, options, testPath) : ''; | 
						|
 | 
						|
  if (blankStringRegexp.test(message) && blankStringRegexp.test(stack)) { | 
						|
    // this can happen if an empty object is thrown. | 
						|
    message = MESSAGE_INDENT + 'Error: No message was provided'; | 
						|
  } | 
						|
 | 
						|
  var messageToUse; | 
						|
 | 
						|
  if (reuseMessage) { | 
						|
    messageToUse = " ".concat(message.trim()); | 
						|
  } else { | 
						|
    messageToUse = "".concat(EXEC_ERROR_MESSAGE, "\n\n").concat(message); | 
						|
  } | 
						|
 | 
						|
  return TITLE_INDENT + TITLE_BULLET + messageToUse + stack + '\n'; | 
						|
}; | 
						|
 | 
						|
exports.formatExecError = formatExecError; | 
						|
 | 
						|
var removeInternalStackEntries = function removeInternalStackEntries(lines, options) { | 
						|
  var pathCounter = 0; | 
						|
  return lines.filter(function (line) { | 
						|
    if (ANONYMOUS_FN_IGNORE.test(line)) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    if (ANONYMOUS_PROMISE_IGNORE.test(line)) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    if (ANONYMOUS_GENERATOR_IGNORE.test(line)) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    if (NATIVE_NEXT_IGNORE.test(line)) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    if (nodeInternals.some(function (internal) { | 
						|
      return internal.test(line); | 
						|
    })) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    if (!STACK_PATH_REGEXP.test(line)) { | 
						|
      return true; | 
						|
    } | 
						|
 | 
						|
    if (JASMINE_IGNORE.test(line)) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    if (++pathCounter === 1) { | 
						|
      return true; // always keep the first line even if it's from Jest | 
						|
    } | 
						|
 | 
						|
    if (options.noStackTrace) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    if (JEST_INTERNALS_IGNORE.test(line)) { | 
						|
      return false; | 
						|
    } | 
						|
 | 
						|
    return true; | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
var formatPaths = function formatPaths(config, relativeTestPath, line) { | 
						|
  // Extract the file path from the trace line. | 
						|
  var match = line.match(/(^\s*at .*?\(?)([^()]+)(:[0-9]+:[0-9]+\)?.*$)/); | 
						|
 | 
						|
  if (!match) { | 
						|
    return line; | 
						|
  } | 
						|
 | 
						|
  var filePath = (0, _slash.default)(_path.default.relative(config.rootDir, match[2])); // highlight paths from the current test file | 
						|
 | 
						|
  if (config.testMatch && config.testMatch.length && _micromatch.default.some(filePath, config.testMatch) || filePath === relativeTestPath) { | 
						|
    filePath = _chalk.default.reset.cyan(filePath); | 
						|
  } | 
						|
 | 
						|
  return STACK_TRACE_COLOR(match[1]) + filePath + STACK_TRACE_COLOR(match[3]); | 
						|
}; | 
						|
 | 
						|
var getStackTraceLines = function getStackTraceLines(stack) { | 
						|
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { | 
						|
    noStackTrace: false | 
						|
  }; | 
						|
  return removeInternalStackEntries(stack.split(/\n/), options); | 
						|
}; | 
						|
 | 
						|
exports.getStackTraceLines = getStackTraceLines; | 
						|
 | 
						|
var getTopFrame = function getTopFrame(lines) { | 
						|
  var _iteratorNormalCompletion = true; | 
						|
  var _didIteratorError = false; | 
						|
  var _iteratorError = undefined; | 
						|
 | 
						|
  try { | 
						|
    for (var _iterator = lines[_Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | 
						|
      var line = _step.value; | 
						|
 | 
						|
      if (line.includes(PATH_NODE_MODULES) || line.includes(PATH_JEST_PACKAGES)) { | 
						|
        continue; | 
						|
      } | 
						|
 | 
						|
      var parsedFrame = stackUtils.parseLine(line.trim()); | 
						|
 | 
						|
      if (parsedFrame && parsedFrame.file) { | 
						|
        return parsedFrame; | 
						|
      } | 
						|
    } | 
						|
  } catch (err) { | 
						|
    _didIteratorError = true; | 
						|
    _iteratorError = err; | 
						|
  } finally { | 
						|
    try { | 
						|
      if (!_iteratorNormalCompletion && _iterator.return != null) { | 
						|
        _iterator.return(); | 
						|
      } | 
						|
    } finally { | 
						|
      if (_didIteratorError) { | 
						|
        throw _iteratorError; | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return null; | 
						|
}; | 
						|
 | 
						|
exports.getTopFrame = getTopFrame; | 
						|
 | 
						|
var formatStackTrace = function formatStackTrace(stack, config, options, testPath) { | 
						|
  var lines = getStackTraceLines(stack, options); | 
						|
  var topFrame = getTopFrame(lines); | 
						|
  var renderedCallsite = ''; | 
						|
  var relativeTestPath = testPath ? (0, _slash.default)(_path.default.relative(config.rootDir, testPath)) : null; | 
						|
 | 
						|
  if (topFrame) { | 
						|
    var column = topFrame.column, | 
						|
        filename = topFrame.file, | 
						|
        line = topFrame.line; | 
						|
 | 
						|
    if (line && filename && _path.default.isAbsolute(filename)) { | 
						|
      var fileContent; | 
						|
 | 
						|
      try { | 
						|
        // TODO: check & read HasteFS instead of reading the filesystem: | 
						|
        // see: https://github.com/facebook/jest/pull/5405#discussion_r164281696 | 
						|
        fileContent = jestReadFile(filename, 'utf8'); | 
						|
        renderedCallsite = getRenderedCallsite(fileContent, line, column); | 
						|
      } catch (e) {// the file does not exist or is inaccessible, we ignore | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var stacktrace = lines.filter(Boolean).map(function (line) { | 
						|
    return STACK_INDENT + formatPaths(config, relativeTestPath, trimPaths(line)); | 
						|
  }).join('\n'); | 
						|
  return "".concat(renderedCallsite, "\n").concat(stacktrace); | 
						|
}; | 
						|
 | 
						|
exports.formatStackTrace = formatStackTrace; | 
						|
 | 
						|
var formatResultsErrors = function formatResultsErrors(testResults, config, options, testPath) { | 
						|
  var failedResults = testResults.reduce(function (errors, result) { | 
						|
    result.failureMessages.forEach(function (content) { | 
						|
      return errors.push({ | 
						|
        content: content, | 
						|
        result: result | 
						|
      }); | 
						|
    }); | 
						|
    return errors; | 
						|
  }, []); | 
						|
 | 
						|
  if (!failedResults.length) { | 
						|
    return null; | 
						|
  } | 
						|
 | 
						|
  return failedResults.map(function (_ref) { | 
						|
    var result = _ref.result, | 
						|
        content = _ref.content; | 
						|
 | 
						|
    var _separateMessageFromS = separateMessageFromStack(content), | 
						|
        message = _separateMessageFromS.message, | 
						|
        stack = _separateMessageFromS.stack; | 
						|
 | 
						|
    stack = options.noStackTrace ? '' : STACK_TRACE_COLOR(formatStackTrace(stack, config, options, testPath)) + '\n'; | 
						|
    message = indentAllLines(message, MESSAGE_INDENT); | 
						|
    var title = _chalk.default.bold.red(TITLE_INDENT + TITLE_BULLET + result.ancestorTitles.join(ANCESTRY_SEPARATOR) + (result.ancestorTitles.length ? ANCESTRY_SEPARATOR : '') + result.title) + '\n'; | 
						|
    return title + '\n' + message + '\n' + stack; | 
						|
  }).join('\n'); | 
						|
}; | 
						|
 | 
						|
exports.formatResultsErrors = formatResultsErrors; | 
						|
var errorRegexp = /^Error:?\s*$/; | 
						|
 | 
						|
var removeBlankErrorLine = function removeBlankErrorLine(str) { | 
						|
  return str.split('\n') // Lines saying just `Error:` are useless | 
						|
  .filter(function (line) { | 
						|
    return !errorRegexp.test(line); | 
						|
  }).join('\n').trimRight(); | 
						|
}; // jasmine and worker farm sometimes don't give us access to the actual | 
						|
// Error object, so we have to regexp out the message from the stack string | 
						|
// to format it. | 
						|
 | 
						|
 | 
						|
var separateMessageFromStack = function separateMessageFromStack(content) { | 
						|
  if (!content) { | 
						|
    return { | 
						|
      message: '', | 
						|
      stack: '' | 
						|
    }; | 
						|
  } // All lines up to what looks like a stack -- or if nothing looks like a stack | 
						|
  // (maybe it's a code frame instead), just the first non-empty line. | 
						|
  // If the error is a plain "Error:" instead of a SyntaxError or TypeError we | 
						|
  // remove the prefix from the message because it is generally not useful. | 
						|
 | 
						|
 | 
						|
  var messageMatch = content.match(/^(?:Error: )?([\s\S]*?(?=\n\s*at\s.*:\d*:\d*)|\s*.*)([\s\S]*)$/); | 
						|
 | 
						|
  if (!messageMatch) { | 
						|
    // For typescript | 
						|
    throw new Error('If you hit this error, the regex above is buggy.'); | 
						|
  } | 
						|
 | 
						|
  var message = removeBlankErrorLine(messageMatch[1]); | 
						|
  var stack = removeBlankErrorLine(messageMatch[2]); | 
						|
  return { | 
						|
    message: message, | 
						|
    stack: stack | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
exports.separateMessageFromStack = separateMessageFromStack; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/jest-message-util/build/types.js": | 
						|
/*!***************************************************!*\ | 
						|
  !*** ./packages/jest-message-util/build/types.js ***! | 
						|
  \***************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/pretty-format/build/collections.js": | 
						|
/*!*****************************************************!*\ | 
						|
  !*** ./packages/pretty-format/build/collections.js ***! | 
						|
  \*****************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.printIteratorEntries = printIteratorEntries; | 
						|
exports.printIteratorValues = printIteratorValues; | 
						|
exports.printListItems = printListItems; | 
						|
exports.printObjectProperties = printObjectProperties; | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 * | 
						|
 */ | 
						|
 | 
						|
var getKeysOfEnumerableProperties = function getKeysOfEnumerableProperties(object) { | 
						|
  var keys = Object.keys(object).sort(); | 
						|
 | 
						|
  if (Object.getOwnPropertySymbols) { | 
						|
    Object.getOwnPropertySymbols(object).forEach(function (symbol) { | 
						|
      if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) { | 
						|
        keys.push(symbol); | 
						|
      } | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  return keys; | 
						|
}; | 
						|
/** | 
						|
 * Return entries (for example, of a map) | 
						|
 * with spacing, indentation, and comma | 
						|
 * without surrounding punctuation (for example, braces) | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function printIteratorEntries( // Flow 0.51.0: property `@@iterator` of $Iterator not found in Object | 
						|
// To allow simplistic getRecordIterator in immutable.js | 
						|
iterator, config, indentation, depth, refs, printer) { | 
						|
  var separator = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : ': '; | 
						|
  var result = ''; | 
						|
  var current = iterator.next(); | 
						|
 | 
						|
  if (!current.done) { | 
						|
    result += config.spacingOuter; | 
						|
    var indentationNext = indentation + config.indent; | 
						|
 | 
						|
    while (!current.done) { | 
						|
      var name = printer(current.value[0], config, indentationNext, depth, refs); | 
						|
      var value = printer(current.value[1], config, indentationNext, depth, refs); | 
						|
      result += indentationNext + name + separator + value; | 
						|
      current = iterator.next(); | 
						|
 | 
						|
      if (!current.done) { | 
						|
        result += ',' + config.spacingInner; | 
						|
      } else if (!config.min) { | 
						|
        result += ','; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    result += config.spacingOuter + indentation; | 
						|
  } | 
						|
 | 
						|
  return result; | 
						|
} | 
						|
/** | 
						|
 * Return values (for example, of a set) | 
						|
 * with spacing, indentation, and comma | 
						|
 * without surrounding punctuation (braces or brackets) | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function printIteratorValues(iterator, config, indentation, depth, refs, printer) { | 
						|
  var result = ''; | 
						|
  var current = iterator.next(); | 
						|
 | 
						|
  if (!current.done) { | 
						|
    result += config.spacingOuter; | 
						|
    var indentationNext = indentation + config.indent; | 
						|
 | 
						|
    while (!current.done) { | 
						|
      result += indentationNext + printer(current.value, config, indentationNext, depth, refs); | 
						|
      current = iterator.next(); | 
						|
 | 
						|
      if (!current.done) { | 
						|
        result += ',' + config.spacingInner; | 
						|
      } else if (!config.min) { | 
						|
        result += ','; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    result += config.spacingOuter + indentation; | 
						|
  } | 
						|
 | 
						|
  return result; | 
						|
} | 
						|
/** | 
						|
 * Return items (for example, of an array) | 
						|
 * with spacing, indentation, and comma | 
						|
 * without surrounding punctuation (for example, brackets) | 
						|
 **/ | 
						|
 | 
						|
 | 
						|
function printListItems(list, config, indentation, depth, refs, printer) { | 
						|
  var result = ''; | 
						|
 | 
						|
  if (list.length) { | 
						|
    result += config.spacingOuter; | 
						|
    var indentationNext = indentation + config.indent; | 
						|
 | 
						|
    for (var i = 0; i < list.length; i++) { | 
						|
      result += indentationNext + printer(list[i], config, indentationNext, depth, refs); | 
						|
 | 
						|
      if (i < list.length - 1) { | 
						|
        result += ',' + config.spacingInner; | 
						|
      } else if (!config.min) { | 
						|
        result += ','; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    result += config.spacingOuter + indentation; | 
						|
  } | 
						|
 | 
						|
  return result; | 
						|
} | 
						|
/** | 
						|
 * Return properties of an object | 
						|
 * with spacing, indentation, and comma | 
						|
 * without surrounding punctuation (for example, braces) | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function printObjectProperties(val, config, indentation, depth, refs, printer) { | 
						|
  var result = ''; | 
						|
  var keys = getKeysOfEnumerableProperties(val); | 
						|
 | 
						|
  if (keys.length) { | 
						|
    result += config.spacingOuter; | 
						|
    var indentationNext = indentation + config.indent; | 
						|
 | 
						|
    for (var i = 0; i < keys.length; i++) { | 
						|
      var key = keys[i]; | 
						|
      var name = printer(key, config, indentationNext, depth, refs); | 
						|
      var value = printer(val[key], config, indentationNext, depth, refs); | 
						|
      result += indentationNext + name + ': ' + value; | 
						|
 | 
						|
      if (i < keys.length - 1) { | 
						|
        result += ',' + config.spacingInner; | 
						|
      } else if (!config.min) { | 
						|
        result += ','; | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    result += config.spacingOuter + indentation; | 
						|
  } | 
						|
 | 
						|
  return result; | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/pretty-format/build/index.js": | 
						|
/*!***********************************************!*\ | 
						|
  !*** ./packages/pretty-format/build/index.js ***! | 
						|
  \***********************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(global) { | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | 
						|
 | 
						|
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } | 
						|
 | 
						|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } | 
						|
 | 
						|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } | 
						|
 | 
						|
function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } | 
						|
 | 
						|
function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } | 
						|
 | 
						|
function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } | 
						|
 | 
						|
function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } | 
						|
 | 
						|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } | 
						|
 | 
						|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } | 
						|
 | 
						|
var _ansiStyles = _interopRequireDefault(__webpack_require__(/*! ansi-styles */ "./node_modules/ansi-styles/index.js")); | 
						|
 | 
						|
var _collections = __webpack_require__(/*! ./collections */ "./packages/pretty-format/build/collections.js"); | 
						|
 | 
						|
var _AsymmetricMatcher = _interopRequireDefault(__webpack_require__(/*! ./plugins/AsymmetricMatcher */ "./packages/pretty-format/build/plugins/AsymmetricMatcher.js")); | 
						|
 | 
						|
var _ConvertAnsi = _interopRequireDefault(__webpack_require__(/*! ./plugins/ConvertAnsi */ "./packages/pretty-format/build/plugins/ConvertAnsi.js")); | 
						|
 | 
						|
var _DOMCollection = _interopRequireDefault(__webpack_require__(/*! ./plugins/DOMCollection */ "./packages/pretty-format/build/plugins/DOMCollection.js")); | 
						|
 | 
						|
var _DOMElement = _interopRequireDefault(__webpack_require__(/*! ./plugins/DOMElement */ "./packages/pretty-format/build/plugins/DOMElement.js")); | 
						|
 | 
						|
var _Immutable = _interopRequireDefault(__webpack_require__(/*! ./plugins/Immutable */ "./packages/pretty-format/build/plugins/Immutable.js")); | 
						|
 | 
						|
var _ReactElement = _interopRequireDefault(__webpack_require__(/*! ./plugins/ReactElement */ "./packages/pretty-format/build/plugins/ReactElement.js")); | 
						|
 | 
						|
var _ReactTestComponent = _interopRequireDefault(__webpack_require__(/*! ./plugins/ReactTestComponent */ "./packages/pretty-format/build/plugins/ReactTestComponent.js")); | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
 | 
						|
var _Symbol = global['jest-symbol-do-not-touch'] || global.Symbol; | 
						|
 | 
						|
var toString = Object.prototype.toString; | 
						|
var toISOString = Date.prototype.toISOString; | 
						|
var errorToString = Error.prototype.toString; | 
						|
var regExpToString = RegExp.prototype.toString; | 
						|
var symbolToString = _Symbol.prototype.toString; | 
						|
/** | 
						|
 * Explicitly comparing typeof constructor to function avoids undefined as name | 
						|
 * when mock identity-obj-proxy returns the key as the value for any key. | 
						|
 */ | 
						|
 | 
						|
var getConstructorName = function getConstructorName(val) { | 
						|
  return typeof val.constructor === 'function' && val.constructor.name || 'Object'; | 
						|
}; | 
						|
/* global window */ | 
						|
 | 
						|
/** Is val is equal to global window object? Works even if it does not exist :) */ | 
						|
 | 
						|
 | 
						|
var isWindow = function isWindow(val) { | 
						|
  return typeof window !== 'undefined' && val === window; | 
						|
}; | 
						|
 | 
						|
var SYMBOL_REGEXP = /^Symbol\((.*)\)(.*)$/; | 
						|
var NEWLINE_REGEXP = /\n/gi; | 
						|
 | 
						|
var PrettyFormatPluginError = | 
						|
/*#__PURE__*/ | 
						|
function (_Error) { | 
						|
  _inherits(PrettyFormatPluginError, _Error); | 
						|
 | 
						|
  function PrettyFormatPluginError(message, stack) { | 
						|
    var _this; | 
						|
 | 
						|
    _classCallCheck(this, PrettyFormatPluginError); | 
						|
 | 
						|
    _this = _possibleConstructorReturn(this, _getPrototypeOf(PrettyFormatPluginError).call(this, message)); | 
						|
    _this.stack = stack; | 
						|
    _this.name = _this.constructor.name; | 
						|
    return _this; | 
						|
  } | 
						|
 | 
						|
  return PrettyFormatPluginError; | 
						|
}(_wrapNativeSuper(Error)); | 
						|
 | 
						|
function isToStringedArrayType(toStringed) { | 
						|
  return toStringed === '[object Array]' || toStringed === '[object ArrayBuffer]' || toStringed === '[object DataView]' || toStringed === '[object Float32Array]' || toStringed === '[object Float64Array]' || toStringed === '[object Int8Array]' || toStringed === '[object Int16Array]' || toStringed === '[object Int32Array]' || toStringed === '[object Uint8Array]' || toStringed === '[object Uint8ClampedArray]' || toStringed === '[object Uint16Array]' || toStringed === '[object Uint32Array]'; | 
						|
} | 
						|
 | 
						|
function printNumber(val) { | 
						|
  return Object.is(val, -0) ? '-0' : String(val); | 
						|
} | 
						|
 | 
						|
function printBigInt(val) { | 
						|
  return String("".concat(val, "n")); | 
						|
} | 
						|
 | 
						|
function printFunction(val, printFunctionName) { | 
						|
  if (!printFunctionName) { | 
						|
    return '[Function]'; | 
						|
  } | 
						|
 | 
						|
  return '[Function ' + (val.name || 'anonymous') + ']'; | 
						|
} | 
						|
 | 
						|
function printSymbol(val) { | 
						|
  return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)'); | 
						|
} | 
						|
 | 
						|
function printError(val) { | 
						|
  return '[' + errorToString.call(val) + ']'; | 
						|
} | 
						|
/** | 
						|
 * The first port of call for printing an object, handles most of the | 
						|
 * data-types in JS. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function printBasicValue(val, printFunctionName, escapeRegex, escapeString) { | 
						|
  if (val === true || val === false) { | 
						|
    return '' + val; | 
						|
  } | 
						|
 | 
						|
  if (val === undefined) { | 
						|
    return 'undefined'; | 
						|
  } | 
						|
 | 
						|
  if (val === null) { | 
						|
    return 'null'; | 
						|
  } | 
						|
 | 
						|
  var typeOf = _typeof(val); | 
						|
 | 
						|
  if (typeOf === 'number') { | 
						|
    return printNumber(val); | 
						|
  } | 
						|
 | 
						|
  if (typeOf === 'bigint') { | 
						|
    return printBigInt(val); | 
						|
  } | 
						|
 | 
						|
  if (typeOf === 'string') { | 
						|
    if (escapeString) { | 
						|
      return '"' + val.replace(/"|\\/g, '\\$&') + '"'; | 
						|
    } | 
						|
 | 
						|
    return '"' + val + '"'; | 
						|
  } | 
						|
 | 
						|
  if (typeOf === 'function') { | 
						|
    return printFunction(val, printFunctionName); | 
						|
  } | 
						|
 | 
						|
  if (typeOf === 'symbol') { | 
						|
    return printSymbol(val); | 
						|
  } | 
						|
 | 
						|
  var toStringed = toString.call(val); | 
						|
 | 
						|
  if (toStringed === '[object WeakMap]') { | 
						|
    return 'WeakMap {}'; | 
						|
  } | 
						|
 | 
						|
  if (toStringed === '[object WeakSet]') { | 
						|
    return 'WeakSet {}'; | 
						|
  } | 
						|
 | 
						|
  if (toStringed === '[object Function]' || toStringed === '[object GeneratorFunction]') { | 
						|
    return printFunction(val, printFunctionName); | 
						|
  } | 
						|
 | 
						|
  if (toStringed === '[object Symbol]') { | 
						|
    return printSymbol(val); | 
						|
  } | 
						|
 | 
						|
  if (toStringed === '[object Date]') { | 
						|
    return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val); | 
						|
  } | 
						|
 | 
						|
  if (toStringed === '[object Error]') { | 
						|
    return printError(val); | 
						|
  } | 
						|
 | 
						|
  if (toStringed === '[object RegExp]') { | 
						|
    if (escapeRegex) { | 
						|
      // https://github.com/benjamingr/RegExp.escape/blob/master/polyfill.js | 
						|
      return regExpToString.call(val).replace(/[\\^$*+?.()|[\]{}]/g, '\\$&'); | 
						|
    } | 
						|
 | 
						|
    return regExpToString.call(val); | 
						|
  } | 
						|
 | 
						|
  if (val instanceof Error) { | 
						|
    return printError(val); | 
						|
  } | 
						|
 | 
						|
  return null; | 
						|
} | 
						|
/** | 
						|
 * Handles more complex objects ( such as objects with circular references. | 
						|
 * maps and sets etc ) | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function printComplexValue(val, config, indentation, depth, refs, hasCalledToJSON) { | 
						|
  if (refs.indexOf(val) !== -1) { | 
						|
    return '[Circular]'; | 
						|
  } | 
						|
 | 
						|
  refs = refs.slice(); | 
						|
  refs.push(val); | 
						|
  var hitMaxDepth = ++depth > config.maxDepth; | 
						|
  var min = config.min; | 
						|
 | 
						|
  if (config.callToJSON && !hitMaxDepth && val.toJSON && typeof val.toJSON === 'function' && !hasCalledToJSON) { | 
						|
    return printer(val.toJSON(), config, indentation, depth, refs, true); | 
						|
  } | 
						|
 | 
						|
  var toStringed = toString.call(val); | 
						|
 | 
						|
  if (toStringed === '[object Arguments]') { | 
						|
    return hitMaxDepth ? '[Arguments]' : (min ? '' : 'Arguments ') + '[' + (0, _collections.printListItems)(val, config, indentation, depth, refs, printer) + ']'; | 
						|
  } | 
						|
 | 
						|
  if (isToStringedArrayType(toStringed)) { | 
						|
    return hitMaxDepth ? '[' + val.constructor.name + ']' : (min ? '' : val.constructor.name + ' ') + '[' + (0, _collections.printListItems)(val, config, indentation, depth, refs, printer) + ']'; | 
						|
  } | 
						|
 | 
						|
  if (toStringed === '[object Map]') { | 
						|
    return hitMaxDepth ? '[Map]' : 'Map {' + (0, _collections.printIteratorEntries)(val.entries(), config, indentation, depth, refs, printer, ' => ') + '}'; | 
						|
  } | 
						|
 | 
						|
  if (toStringed === '[object Set]') { | 
						|
    return hitMaxDepth ? '[Set]' : 'Set {' + (0, _collections.printIteratorValues)(val.values(), config, indentation, depth, refs, printer) + '}'; | 
						|
  } // Avoid failure to serialize global window object in jsdom test environment. | 
						|
  // For example, not even relevant if window is prop of React element. | 
						|
 | 
						|
 | 
						|
  return hitMaxDepth || isWindow(val) ? '[' + getConstructorName(val) + ']' : (min ? '' : getConstructorName(val) + ' ') + '{' + (0, _collections.printObjectProperties)(val, config, indentation, depth, refs, printer) + '}'; | 
						|
} | 
						|
 | 
						|
function isNewPlugin(plugin) { | 
						|
  return plugin.serialize != null; | 
						|
} | 
						|
 | 
						|
function printPlugin(plugin, val, config, indentation, depth, refs) { | 
						|
  var printed; | 
						|
 | 
						|
  try { | 
						|
    printed = isNewPlugin(plugin) ? plugin.serialize(val, config, indentation, depth, refs, printer) : plugin.print(val, function (valChild) { | 
						|
      return printer(valChild, config, indentation, depth, refs); | 
						|
    }, function (str) { | 
						|
      var indentationNext = indentation + config.indent; | 
						|
      return indentationNext + str.replace(NEWLINE_REGEXP, '\n' + indentationNext); | 
						|
    }, { | 
						|
      edgeSpacing: config.spacingOuter, | 
						|
      min: config.min, | 
						|
      spacing: config.spacingInner | 
						|
    }, config.colors); | 
						|
  } catch (error) { | 
						|
    throw new PrettyFormatPluginError(error.message, error.stack); | 
						|
  } | 
						|
 | 
						|
  if (typeof printed !== 'string') { | 
						|
    throw new Error("pretty-format: Plugin must return type \"string\" but instead returned \"".concat(_typeof(printed), "\".")); | 
						|
  } | 
						|
 | 
						|
  return printed; | 
						|
} | 
						|
 | 
						|
function findPlugin(plugins, val) { | 
						|
  for (var p = 0; p < plugins.length; p++) { | 
						|
    try { | 
						|
      if (plugins[p].test(val)) { | 
						|
        return plugins[p]; | 
						|
      } | 
						|
    } catch (error) { | 
						|
      throw new PrettyFormatPluginError(error.message, error.stack); | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return null; | 
						|
} | 
						|
 | 
						|
function printer(val, config, indentation, depth, refs, hasCalledToJSON) { | 
						|
  var plugin = findPlugin(config.plugins, val); | 
						|
 | 
						|
  if (plugin !== null) { | 
						|
    return printPlugin(plugin, val, config, indentation, depth, refs); | 
						|
  } | 
						|
 | 
						|
  var basicResult = printBasicValue(val, config.printFunctionName, config.escapeRegex, config.escapeString); | 
						|
 | 
						|
  if (basicResult !== null) { | 
						|
    return basicResult; | 
						|
  } | 
						|
 | 
						|
  return printComplexValue(val, config, indentation, depth, refs, hasCalledToJSON); | 
						|
} | 
						|
 | 
						|
var DEFAULT_THEME = { | 
						|
  comment: 'gray', | 
						|
  content: 'reset', | 
						|
  prop: 'yellow', | 
						|
  tag: 'cyan', | 
						|
  value: 'green' | 
						|
}; | 
						|
var DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME); | 
						|
var DEFAULT_OPTIONS = { | 
						|
  callToJSON: true, | 
						|
  escapeRegex: false, | 
						|
  escapeString: true, | 
						|
  highlight: false, | 
						|
  indent: 2, | 
						|
  maxDepth: Infinity, | 
						|
  min: false, | 
						|
  plugins: [], | 
						|
  printFunctionName: true, | 
						|
  theme: DEFAULT_THEME | 
						|
}; | 
						|
 | 
						|
function validateOptions(options) { | 
						|
  Object.keys(options).forEach(function (key) { | 
						|
    if (!DEFAULT_OPTIONS.hasOwnProperty(key)) { | 
						|
      throw new Error("pretty-format: Unknown option \"".concat(key, "\".")); | 
						|
    } | 
						|
  }); | 
						|
 | 
						|
  if (options.min && options.indent !== undefined && options.indent !== 0) { | 
						|
    throw new Error('pretty-format: Options "min" and "indent" cannot be used together.'); | 
						|
  } | 
						|
 | 
						|
  if (options.theme !== undefined) { | 
						|
    if (options.theme === null) { | 
						|
      throw new Error("pretty-format: Option \"theme\" must not be null."); | 
						|
    } | 
						|
 | 
						|
    if (_typeof(options.theme) !== 'object') { | 
						|
      throw new Error("pretty-format: Option \"theme\" must be of type \"object\" but instead received \"".concat(_typeof(options.theme), "\".")); | 
						|
    } | 
						|
  } | 
						|
} | 
						|
 | 
						|
var getColorsHighlight = function getColorsHighlight(options) { | 
						|
  return DEFAULT_THEME_KEYS.reduce(function (colors, key) { | 
						|
    var value = options.theme && options.theme[key] !== undefined ? options.theme[key] : DEFAULT_THEME[key]; | 
						|
    var color = value && _ansiStyles.default[value]; | 
						|
 | 
						|
    if (color && typeof color.close === 'string' && typeof color.open === 'string') { | 
						|
      colors[key] = color; | 
						|
    } else { | 
						|
      throw new Error("pretty-format: Option \"theme\" has a key \"".concat(key, "\" whose value \"").concat(value, "\" is undefined in ansi-styles.")); | 
						|
    } | 
						|
 | 
						|
    return colors; | 
						|
  }, Object.create(null)); | 
						|
}; | 
						|
 | 
						|
var getColorsEmpty = function getColorsEmpty() { | 
						|
  return DEFAULT_THEME_KEYS.reduce(function (colors, key) { | 
						|
    colors[key] = { | 
						|
      close: '', | 
						|
      open: '' | 
						|
    }; | 
						|
    return colors; | 
						|
  }, Object.create(null)); | 
						|
}; | 
						|
 | 
						|
var getPrintFunctionName = function getPrintFunctionName(options) { | 
						|
  return options && options.printFunctionName !== undefined ? options.printFunctionName : DEFAULT_OPTIONS.printFunctionName; | 
						|
}; | 
						|
 | 
						|
var getEscapeRegex = function getEscapeRegex(options) { | 
						|
  return options && options.escapeRegex !== undefined ? options.escapeRegex : DEFAULT_OPTIONS.escapeRegex; | 
						|
}; | 
						|
 | 
						|
var getEscapeString = function getEscapeString(options) { | 
						|
  return options && options.escapeString !== undefined ? options.escapeString : DEFAULT_OPTIONS.escapeString; | 
						|
}; | 
						|
 | 
						|
var getConfig = function getConfig(options) { | 
						|
  return { | 
						|
    callToJSON: options && options.callToJSON !== undefined ? options.callToJSON : DEFAULT_OPTIONS.callToJSON, | 
						|
    colors: options && options.highlight ? getColorsHighlight(options) : getColorsEmpty(), | 
						|
    escapeRegex: getEscapeRegex(options), | 
						|
    escapeString: getEscapeString(options), | 
						|
    indent: options && options.min ? '' : createIndent(options && options.indent !== undefined ? options.indent : DEFAULT_OPTIONS.indent), | 
						|
    maxDepth: options && options.maxDepth !== undefined ? options.maxDepth : DEFAULT_OPTIONS.maxDepth, | 
						|
    min: options && options.min !== undefined ? options.min : DEFAULT_OPTIONS.min, | 
						|
    plugins: options && options.plugins !== undefined ? options.plugins : DEFAULT_OPTIONS.plugins, | 
						|
    printFunctionName: getPrintFunctionName(options), | 
						|
    spacingInner: options && options.min ? ' ' : '\n', | 
						|
    spacingOuter: options && options.min ? '' : '\n' | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
function createIndent(indent) { | 
						|
  return new Array(indent + 1).join(' '); | 
						|
} | 
						|
/** | 
						|
 * Returns a presentation string of your `val` object | 
						|
 * @param val any potential JavaScript object | 
						|
 * @param options Custom settings | 
						|
 */ | 
						|
 | 
						|
 | 
						|
function prettyFormat(val, options) { | 
						|
  if (options) { | 
						|
    validateOptions(options); | 
						|
 | 
						|
    if (options.plugins) { | 
						|
      var plugin = findPlugin(options.plugins, val); | 
						|
 | 
						|
      if (plugin !== null) { | 
						|
        return printPlugin(plugin, val, getConfig(options), '', 0, []); | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  var basicResult = printBasicValue(val, getPrintFunctionName(options), getEscapeRegex(options), getEscapeString(options)); | 
						|
 | 
						|
  if (basicResult !== null) { | 
						|
    return basicResult; | 
						|
  } | 
						|
 | 
						|
  return printComplexValue(val, getConfig(options), '', 0, []); | 
						|
} | 
						|
 | 
						|
prettyFormat.plugins = { | 
						|
  AsymmetricMatcher: _AsymmetricMatcher.default, | 
						|
  ConvertAnsi: _ConvertAnsi.default, | 
						|
  DOMCollection: _DOMCollection.default, | 
						|
  DOMElement: _DOMElement.default, | 
						|
  Immutable: _Immutable.default, | 
						|
  ReactElement: _ReactElement.default, | 
						|
  ReactTestComponent: _ReactTestComponent.default | 
						|
}; | 
						|
/* eslint-disable-next-line no-redeclare */ | 
						|
 | 
						|
module.exports = prettyFormat; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/pretty-format/build/plugins/AsymmetricMatcher.js": | 
						|
/*!*******************************************************************!*\ | 
						|
  !*** ./packages/pretty-format/build/plugins/AsymmetricMatcher.js ***! | 
						|
  \*******************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(global) { | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = exports.test = exports.serialize = void 0; | 
						|
 | 
						|
var _collections = __webpack_require__(/*! ../collections */ "./packages/pretty-format/build/collections.js"); | 
						|
 | 
						|
var _Symbol = global['jest-symbol-do-not-touch'] || global.Symbol; | 
						|
 | 
						|
var asymmetricMatcher = _Symbol.for('jest.asymmetricMatcher'); | 
						|
 | 
						|
var SPACE = ' '; | 
						|
 | 
						|
var serialize = function serialize(val, config, indentation, depth, refs, printer) { | 
						|
  var stringedValue = val.toString(); | 
						|
 | 
						|
  if (stringedValue === 'ArrayContaining' || stringedValue === 'ArrayNotContaining') { | 
						|
    if (++depth > config.maxDepth) { | 
						|
      return '[' + stringedValue + ']'; | 
						|
    } | 
						|
 | 
						|
    return stringedValue + SPACE + '[' + (0, _collections.printListItems)(val.sample, config, indentation, depth, refs, printer) + ']'; | 
						|
  } | 
						|
 | 
						|
  if (stringedValue === 'ObjectContaining' || stringedValue === 'ObjectNotContaining') { | 
						|
    if (++depth > config.maxDepth) { | 
						|
      return '[' + stringedValue + ']'; | 
						|
    } | 
						|
 | 
						|
    return stringedValue + SPACE + '{' + (0, _collections.printObjectProperties)(val.sample, config, indentation, depth, refs, printer) + '}'; | 
						|
  } | 
						|
 | 
						|
  if (stringedValue === 'StringMatching' || stringedValue === 'StringNotMatching') { | 
						|
    return stringedValue + SPACE + printer(val.sample, config, indentation, depth, refs); | 
						|
  } | 
						|
 | 
						|
  if (stringedValue === 'StringContaining' || stringedValue === 'StringNotContaining') { | 
						|
    return stringedValue + SPACE + printer(val.sample, config, indentation, depth, refs); | 
						|
  } | 
						|
 | 
						|
  return val.toAsymmetricMatcher(); | 
						|
}; | 
						|
 | 
						|
exports.serialize = serialize; | 
						|
 | 
						|
var test = function test(val) { | 
						|
  return val && val.$$typeof === asymmetricMatcher; | 
						|
}; | 
						|
 | 
						|
exports.test = test; | 
						|
var plugin = { | 
						|
  serialize: serialize, | 
						|
  test: test | 
						|
}; | 
						|
var _default = plugin; | 
						|
exports.default = _default; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/pretty-format/build/plugins/ConvertAnsi.js": | 
						|
/*!*************************************************************!*\ | 
						|
  !*** ./packages/pretty-format/build/plugins/ConvertAnsi.js ***! | 
						|
  \*************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = exports.serialize = exports.test = void 0; | 
						|
 | 
						|
var _ansiRegex = _interopRequireDefault(__webpack_require__(/*! ansi-regex */ "./node_modules/ansi-regex/index.js")); | 
						|
 | 
						|
var _ansiStyles = _interopRequireDefault(__webpack_require__(/*! ansi-styles */ "./node_modules/ansi-styles/index.js")); | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var toHumanReadableAnsi = function toHumanReadableAnsi(text) { | 
						|
  return text.replace((0, _ansiRegex.default)(), function (match) { | 
						|
    switch (match) { | 
						|
      case _ansiStyles.default.red.close: | 
						|
      case _ansiStyles.default.green.close: | 
						|
      case _ansiStyles.default.cyan.close: | 
						|
      case _ansiStyles.default.gray.close: | 
						|
      case _ansiStyles.default.white.close: | 
						|
      case _ansiStyles.default.yellow.close: | 
						|
      case _ansiStyles.default.bgRed.close: | 
						|
      case _ansiStyles.default.bgGreen.close: | 
						|
      case _ansiStyles.default.bgYellow.close: | 
						|
      case _ansiStyles.default.inverse.close: | 
						|
      case _ansiStyles.default.dim.close: | 
						|
      case _ansiStyles.default.bold.close: | 
						|
      case _ansiStyles.default.reset.open: | 
						|
      case _ansiStyles.default.reset.close: | 
						|
        return '</>'; | 
						|
 | 
						|
      case _ansiStyles.default.red.open: | 
						|
        return '<red>'; | 
						|
 | 
						|
      case _ansiStyles.default.green.open: | 
						|
        return '<green>'; | 
						|
 | 
						|
      case _ansiStyles.default.cyan.open: | 
						|
        return '<cyan>'; | 
						|
 | 
						|
      case _ansiStyles.default.gray.open: | 
						|
        return '<gray>'; | 
						|
 | 
						|
      case _ansiStyles.default.white.open: | 
						|
        return '<white>'; | 
						|
 | 
						|
      case _ansiStyles.default.yellow.open: | 
						|
        return '<yellow>'; | 
						|
 | 
						|
      case _ansiStyles.default.bgRed.open: | 
						|
        return '<bgRed>'; | 
						|
 | 
						|
      case _ansiStyles.default.bgGreen.open: | 
						|
        return '<bgGreen>'; | 
						|
 | 
						|
      case _ansiStyles.default.bgYellow.open: | 
						|
        return '<bgYellow>'; | 
						|
 | 
						|
      case _ansiStyles.default.inverse.open: | 
						|
        return '<inverse>'; | 
						|
 | 
						|
      case _ansiStyles.default.dim.open: | 
						|
        return '<dim>'; | 
						|
 | 
						|
      case _ansiStyles.default.bold.open: | 
						|
        return '<bold>'; | 
						|
 | 
						|
      default: | 
						|
        return ''; | 
						|
    } | 
						|
  }); | 
						|
}; | 
						|
 | 
						|
var test = function test(val) { | 
						|
  return typeof val === 'string' && !!val.match((0, _ansiRegex.default)()); | 
						|
}; | 
						|
 | 
						|
exports.test = test; | 
						|
 | 
						|
var serialize = function serialize(val, config, indentation, depth, refs, printer) { | 
						|
  return printer(toHumanReadableAnsi(val), config, indentation, depth, refs); | 
						|
}; | 
						|
 | 
						|
exports.serialize = serialize; | 
						|
var plugin = { | 
						|
  serialize: serialize, | 
						|
  test: test | 
						|
}; | 
						|
var _default = plugin; | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/pretty-format/build/plugins/DOMCollection.js": | 
						|
/*!***************************************************************!*\ | 
						|
  !*** ./packages/pretty-format/build/plugins/DOMCollection.js ***! | 
						|
  \***************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = exports.serialize = exports.test = void 0; | 
						|
 | 
						|
var _collections = __webpack_require__(/*! ../collections */ "./packages/pretty-format/build/collections.js"); | 
						|
 | 
						|
function _objectSpread(target) { | 
						|
  for (var i = 1; i < arguments.length; i++) { | 
						|
    var source = arguments[i] != null ? arguments[i] : {}; | 
						|
    var ownKeys = Object.keys(source); | 
						|
 | 
						|
    if (typeof Object.getOwnPropertySymbols === 'function') { | 
						|
      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { | 
						|
        return Object.getOwnPropertyDescriptor(source, sym).enumerable; | 
						|
      })); | 
						|
    } | 
						|
 | 
						|
    ownKeys.forEach(function (key) { | 
						|
      _defineProperty(target, key, source[key]); | 
						|
    }); | 
						|
  } | 
						|
 | 
						|
  return target; | 
						|
} | 
						|
 | 
						|
function _defineProperty(obj, key, value) { | 
						|
  if (key in obj) { | 
						|
    Object.defineProperty(obj, key, { | 
						|
      value: value, | 
						|
      enumerable: true, | 
						|
      configurable: true, | 
						|
      writable: true | 
						|
    }); | 
						|
  } else { | 
						|
    obj[key] = value; | 
						|
  } | 
						|
 | 
						|
  return obj; | 
						|
} | 
						|
 | 
						|
var SPACE = ' '; | 
						|
var OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap']; | 
						|
var ARRAY_REGEXP = /^(HTML\w*Collection|NodeList)$/; | 
						|
 | 
						|
var testName = function testName(name) { | 
						|
  return OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name); | 
						|
}; | 
						|
 | 
						|
var test = function test(val) { | 
						|
  return val && val.constructor && val.constructor.name && testName(val.constructor.name); | 
						|
}; // Convert array of attribute objects to props object. | 
						|
 | 
						|
 | 
						|
exports.test = test; | 
						|
 | 
						|
var propsReducer = function propsReducer(props, attribute) { | 
						|
  props[attribute.name] = attribute.value; | 
						|
  return props; | 
						|
}; | 
						|
 | 
						|
var serialize = function serialize(collection, config, indentation, depth, refs, printer) { | 
						|
  var name = collection.constructor.name; | 
						|
 | 
						|
  if (++depth > config.maxDepth) { | 
						|
    return '[' + name + ']'; | 
						|
  } | 
						|
 | 
						|
  return (config.min ? '' : name + SPACE) + (OBJECT_NAMES.indexOf(name) !== -1 ? '{' + (0, _collections.printObjectProperties)(name === 'NamedNodeMap' ? Array.prototype.reduce.call(collection, propsReducer, {}) : _objectSpread({}, collection), config, indentation, depth, refs, printer) + '}' : '[' + (0, _collections.printListItems)(Array.from(collection), config, indentation, depth, refs, printer) + ']'); | 
						|
}; | 
						|
 | 
						|
exports.serialize = serialize; | 
						|
var plugin = { | 
						|
  serialize: serialize, | 
						|
  test: test | 
						|
}; | 
						|
var _default = plugin; | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/pretty-format/build/plugins/DOMElement.js": | 
						|
/*!************************************************************!*\ | 
						|
  !*** ./packages/pretty-format/build/plugins/DOMElement.js ***! | 
						|
  \************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = exports.serialize = exports.test = void 0; | 
						|
 | 
						|
var _markup = __webpack_require__(/*! ./lib/markup */ "./packages/pretty-format/build/plugins/lib/markup.js"); | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
 | 
						|
 | 
						|
var ELEMENT_NODE = 1; | 
						|
var TEXT_NODE = 3; | 
						|
var COMMENT_NODE = 8; | 
						|
var FRAGMENT_NODE = 11; | 
						|
var ELEMENT_REGEXP = /^((HTML|SVG)\w*)?Element$/; | 
						|
 | 
						|
var testNode = function testNode(nodeType, name) { | 
						|
  return nodeType === ELEMENT_NODE && ELEMENT_REGEXP.test(name) || nodeType === TEXT_NODE && name === 'Text' || nodeType === COMMENT_NODE && name === 'Comment' || nodeType === FRAGMENT_NODE && name === 'DocumentFragment'; | 
						|
}; | 
						|
 | 
						|
var test = function test(val) { | 
						|
  return val && val.constructor && val.constructor.name && testNode(val.nodeType, val.constructor.name); | 
						|
}; | 
						|
 | 
						|
exports.test = test; | 
						|
 | 
						|
function nodeIsText(node) { | 
						|
  return node.nodeType === TEXT_NODE; | 
						|
} | 
						|
 | 
						|
function nodeIsComment(node) { | 
						|
  return node.nodeType === COMMENT_NODE; | 
						|
} | 
						|
 | 
						|
function nodeIsFragment(node) { | 
						|
  return node.nodeType === FRAGMENT_NODE; | 
						|
} | 
						|
 | 
						|
var serialize = function serialize(node, config, indentation, depth, refs, printer) { | 
						|
  if (nodeIsText(node)) { | 
						|
    return (0, _markup.printText)(node.data, config); | 
						|
  } | 
						|
 | 
						|
  if (nodeIsComment(node)) { | 
						|
    return (0, _markup.printComment)(node.data, config); | 
						|
  } | 
						|
 | 
						|
  var type = nodeIsFragment(node) ? "DocumentFragment" : node.tagName.toLowerCase(); | 
						|
 | 
						|
  if (++depth > config.maxDepth) { | 
						|
    return (0, _markup.printElementAsLeaf)(type, config); | 
						|
  } | 
						|
 | 
						|
  return (0, _markup.printElement)(type, (0, _markup.printProps)(nodeIsFragment(node) ? [] : Array.from(node.attributes).map(function (attr) { | 
						|
    return attr.name; | 
						|
  }).sort(), nodeIsFragment(node) ? [] : Array.from(node.attributes).reduce(function (props, attribute) { | 
						|
    props[attribute.name] = attribute.value; | 
						|
    return props; | 
						|
  }, {}), config, indentation + config.indent, depth, refs, printer), (0, _markup.printChildren)(Array.prototype.slice.call(node.childNodes || node.children), config, indentation + config.indent, depth, refs, printer), config, indentation); | 
						|
}; | 
						|
 | 
						|
exports.serialize = serialize; | 
						|
var plugin = { | 
						|
  serialize: serialize, | 
						|
  test: test | 
						|
}; | 
						|
var _default = plugin; | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/pretty-format/build/plugins/Immutable.js": | 
						|
/*!***********************************************************!*\ | 
						|
  !*** ./packages/pretty-format/build/plugins/Immutable.js ***! | 
						|
  \***********************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = exports.test = exports.serialize = void 0; | 
						|
 | 
						|
var _collections = __webpack_require__(/*! ../collections */ "./packages/pretty-format/build/collections.js"); | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
// SENTINEL constants are from https://github.com/facebook/immutable-js | 
						|
 | 
						|
 | 
						|
var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@'; | 
						|
var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@'; | 
						|
var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@'; | 
						|
var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@'; | 
						|
var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@'; | 
						|
var IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4 | 
						|
 | 
						|
var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@'; | 
						|
var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@'; | 
						|
var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@'; | 
						|
 | 
						|
var getImmutableName = function getImmutableName(name) { | 
						|
  return 'Immutable.' + name; | 
						|
}; | 
						|
 | 
						|
var printAsLeaf = function printAsLeaf(name) { | 
						|
  return '[' + name + ']'; | 
						|
}; | 
						|
 | 
						|
var SPACE = ' '; | 
						|
var LAZY = '…'; // Seq is lazy if it calls a method like filter | 
						|
 | 
						|
var printImmutableEntries = function printImmutableEntries(val, config, indentation, depth, refs, printer, type) { | 
						|
  return ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : getImmutableName(type) + SPACE + '{' + (0, _collections.printIteratorEntries)(val.entries(), config, indentation, depth, refs, printer) + '}'; | 
						|
}; // Record has an entries method because it is a collection in immutable v3. | 
						|
// Return an iterator for Immutable Record from version v3 or v4. | 
						|
 | 
						|
 | 
						|
var getRecordEntries = function getRecordEntries(val) { | 
						|
  var i = 0; | 
						|
  return { | 
						|
    next: function next() { | 
						|
      if (i < val._keys.length) { | 
						|
        var key = val._keys[i++]; | 
						|
        return { | 
						|
          done: false, | 
						|
          value: [key, val.get(key)] | 
						|
        }; | 
						|
      } | 
						|
 | 
						|
      return { | 
						|
        done: true | 
						|
      }; | 
						|
    } | 
						|
  }; | 
						|
}; | 
						|
 | 
						|
var printImmutableRecord = function printImmutableRecord(val, config, indentation, depth, refs, printer) { | 
						|
  // _name property is defined only for an Immutable Record instance | 
						|
  // which was constructed with a second optional descriptive name arg | 
						|
  var name = getImmutableName(val._name || 'Record'); | 
						|
  return ++depth > config.maxDepth ? printAsLeaf(name) : name + SPACE + '{' + (0, _collections.printIteratorEntries)(getRecordEntries(val), config, indentation, depth, refs, printer) + '}'; | 
						|
}; | 
						|
 | 
						|
var printImmutableSeq = function printImmutableSeq(val, config, indentation, depth, refs, printer) { | 
						|
  var name = getImmutableName('Seq'); | 
						|
 | 
						|
  if (++depth > config.maxDepth) { | 
						|
    return printAsLeaf(name); | 
						|
  } | 
						|
 | 
						|
  if (val[IS_KEYED_SENTINEL]) { | 
						|
    return name + SPACE + '{' + ( // from Immutable collection of entries or from ECMAScript object | 
						|
    val._iter || val._object ? (0, _collections.printIteratorEntries)(val.entries(), config, indentation, depth, refs, printer) : LAZY) + '}'; | 
						|
  } | 
						|
 | 
						|
  return name + SPACE + '[' + (val._iter || // from Immutable collection of values | 
						|
  val._array || // from ECMAScript array | 
						|
  val._collection || // from ECMAScript collection in immutable v4 | 
						|
  val._iterable // from ECMAScript collection in immutable v3 | 
						|
  ? (0, _collections.printIteratorValues)(val.values(), config, indentation, depth, refs, printer) : LAZY) + ']'; | 
						|
}; | 
						|
 | 
						|
var printImmutableValues = function printImmutableValues(val, config, indentation, depth, refs, printer, type) { | 
						|
  return ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : getImmutableName(type) + SPACE + '[' + (0, _collections.printIteratorValues)(val.values(), config, indentation, depth, refs, printer) + ']'; | 
						|
}; | 
						|
 | 
						|
var serialize = function serialize(val, config, indentation, depth, refs, printer) { | 
						|
  if (val[IS_MAP_SENTINEL]) { | 
						|
    return printImmutableEntries(val, config, indentation, depth, refs, printer, val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'); | 
						|
  } | 
						|
 | 
						|
  if (val[IS_LIST_SENTINEL]) { | 
						|
    return printImmutableValues(val, config, indentation, depth, refs, printer, 'List'); | 
						|
  } | 
						|
 | 
						|
  if (val[IS_SET_SENTINEL]) { | 
						|
    return printImmutableValues(val, config, indentation, depth, refs, printer, val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'); | 
						|
  } | 
						|
 | 
						|
  if (val[IS_STACK_SENTINEL]) { | 
						|
    return printImmutableValues(val, config, indentation, depth, refs, printer, 'Stack'); | 
						|
  } | 
						|
 | 
						|
  if (val[IS_SEQ_SENTINEL]) { | 
						|
    return printImmutableSeq(val, config, indentation, depth, refs, printer); | 
						|
  } // For compatibility with immutable v3 and v4, let record be the default. | 
						|
 | 
						|
 | 
						|
  return printImmutableRecord(val, config, indentation, depth, refs, printer); | 
						|
}; // Explicitly comparing sentinel properties to true avoids false positive | 
						|
// when mock identity-obj-proxy returns the key as the value for any key. | 
						|
 | 
						|
 | 
						|
exports.serialize = serialize; | 
						|
 | 
						|
var test = function test(val) { | 
						|
  return val && (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true); | 
						|
}; | 
						|
 | 
						|
exports.test = test; | 
						|
var plugin = { | 
						|
  serialize: serialize, | 
						|
  test: test | 
						|
}; | 
						|
var _default = plugin; | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/pretty-format/build/plugins/ReactElement.js": | 
						|
/*!**************************************************************!*\ | 
						|
  !*** ./packages/pretty-format/build/plugins/ReactElement.js ***! | 
						|
  \**************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = exports.test = exports.serialize = void 0; | 
						|
 | 
						|
var ReactIs = _interopRequireWildcard(__webpack_require__(/*! react-is */ "./node_modules/react-is/index.js")); | 
						|
 | 
						|
var _markup = __webpack_require__(/*! ./lib/markup */ "./packages/pretty-format/build/plugins/lib/markup.js"); | 
						|
 | 
						|
function _interopRequireWildcard(obj) { | 
						|
  if (obj && obj.__esModule) { | 
						|
    return obj; | 
						|
  } else { | 
						|
    var newObj = {}; | 
						|
 | 
						|
    if (obj != null) { | 
						|
      for (var key in obj) { | 
						|
        if (Object.prototype.hasOwnProperty.call(obj, key)) { | 
						|
          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; | 
						|
 | 
						|
          if (desc.get || desc.set) { | 
						|
            Object.defineProperty(newObj, key, desc); | 
						|
          } else { | 
						|
            newObj[key] = obj[key]; | 
						|
          } | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    newObj.default = obj; | 
						|
    return newObj; | 
						|
  } | 
						|
} | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
// Given element.props.children, or subtree during recursive traversal, | 
						|
// return flattened array of children. | 
						|
 | 
						|
 | 
						|
var getChildren = function getChildren(arg) { | 
						|
  var children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; | 
						|
 | 
						|
  if (Array.isArray(arg)) { | 
						|
    arg.forEach(function (item) { | 
						|
      getChildren(item, children); | 
						|
    }); | 
						|
  } else if (arg != null && arg !== false) { | 
						|
    children.push(arg); | 
						|
  } | 
						|
 | 
						|
  return children; | 
						|
}; | 
						|
 | 
						|
var getType = function getType(element) { | 
						|
  var type = element.type; | 
						|
 | 
						|
  if (typeof type === 'string') { | 
						|
    return type; | 
						|
  } | 
						|
 | 
						|
  if (typeof type === 'function') { | 
						|
    return type.displayName || type.name || 'Unknown'; | 
						|
  } | 
						|
 | 
						|
  if (ReactIs.isFragment(element)) { | 
						|
    return 'React.Fragment'; | 
						|
  } | 
						|
 | 
						|
  if (ReactIs.isSuspense(element)) { | 
						|
    return 'React.Suspense'; | 
						|
  } | 
						|
 | 
						|
  if (_typeof(type) === 'object' && type !== null) { | 
						|
    if (ReactIs.isContextProvider(element)) { | 
						|
      return 'Context.Provider'; | 
						|
    } | 
						|
 | 
						|
    if (ReactIs.isContextConsumer(element)) { | 
						|
      return 'Context.Consumer'; | 
						|
    } | 
						|
 | 
						|
    if (ReactIs.isForwardRef(element)) { | 
						|
      var functionName = type.render.displayName || type.render.name || ''; | 
						|
      return functionName !== '' ? 'ForwardRef(' + functionName + ')' : 'ForwardRef'; | 
						|
    } | 
						|
 | 
						|
    if (ReactIs.isMemo(type)) { | 
						|
      var _functionName = type.displayName || type.type.displayName || type.type.name || ''; | 
						|
 | 
						|
      return _functionName !== '' ? 'Memo(' + _functionName + ')' : 'Memo'; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return 'UNDEFINED'; | 
						|
}; | 
						|
 | 
						|
var getPropKeys = function getPropKeys(element) { | 
						|
  var props = element.props; | 
						|
  return Object.keys(props).filter(function (key) { | 
						|
    return key !== 'children' && props[key] !== undefined; | 
						|
  }).sort(); | 
						|
}; | 
						|
 | 
						|
var serialize = function serialize(element, config, indentation, depth, refs, printer) { | 
						|
  return ++depth > config.maxDepth ? (0, _markup.printElementAsLeaf)(getType(element), config) : (0, _markup.printElement)(getType(element), (0, _markup.printProps)(getPropKeys(element), element.props, config, indentation + config.indent, depth, refs, printer), (0, _markup.printChildren)(getChildren(element.props.children), config, indentation + config.indent, depth, refs, printer), config, indentation); | 
						|
}; | 
						|
 | 
						|
exports.serialize = serialize; | 
						|
 | 
						|
var test = function test(val) { | 
						|
  return val && ReactIs.isElement(val); | 
						|
}; | 
						|
 | 
						|
exports.test = test; | 
						|
var plugin = { | 
						|
  serialize: serialize, | 
						|
  test: test | 
						|
}; | 
						|
var _default = plugin; | 
						|
exports.default = _default; | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/pretty-format/build/plugins/ReactTestComponent.js": | 
						|
/*!********************************************************************!*\ | 
						|
  !*** ./packages/pretty-format/build/plugins/ReactTestComponent.js ***! | 
						|
  \********************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
/* WEBPACK VAR INJECTION */(function(global) { | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = exports.test = exports.serialize = void 0; | 
						|
 | 
						|
var _markup = __webpack_require__(/*! ./lib/markup */ "./packages/pretty-format/build/plugins/lib/markup.js"); | 
						|
 | 
						|
var _Symbol = global['jest-symbol-do-not-touch'] || global.Symbol; | 
						|
 | 
						|
var testSymbol = _Symbol.for('react.test.json'); | 
						|
 | 
						|
var getPropKeys = function getPropKeys(object) { | 
						|
  var props = object.props; | 
						|
  return props ? Object.keys(props).filter(function (key) { | 
						|
    return props[key] !== undefined; | 
						|
  }).sort() : []; | 
						|
}; | 
						|
 | 
						|
var serialize = function serialize(object, config, indentation, depth, refs, printer) { | 
						|
  return ++depth > config.maxDepth ? (0, _markup.printElementAsLeaf)(object.type, config) : (0, _markup.printElement)(object.type, object.props ? (0, _markup.printProps)(getPropKeys(object), object.props, config, indentation + config.indent, depth, refs, printer) : '', object.children ? (0, _markup.printChildren)(object.children, config, indentation + config.indent, depth, refs, printer) : '', config, indentation); | 
						|
}; | 
						|
 | 
						|
exports.serialize = serialize; | 
						|
 | 
						|
var test = function test(val) { | 
						|
  return val && val.$$typeof === testSymbol; | 
						|
}; | 
						|
 | 
						|
exports.test = test; | 
						|
var plugin = { | 
						|
  serialize: serialize, | 
						|
  test: test | 
						|
}; | 
						|
var _default = plugin; | 
						|
exports.default = _default; | 
						|
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/pretty-format/build/plugins/lib/escapeHTML.js": | 
						|
/*!****************************************************************!*\ | 
						|
  !*** ./packages/pretty-format/build/plugins/lib/escapeHTML.js ***! | 
						|
  \****************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = escapeHTML; | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
 | 
						|
function escapeHTML(str) { | 
						|
  return str.replace(/</g, '<').replace(/>/g, '>'); | 
						|
} | 
						|
 | 
						|
/***/ }), | 
						|
 | 
						|
/***/ "./packages/pretty-format/build/plugins/lib/markup.js": | 
						|
/*!************************************************************!*\ | 
						|
  !*** ./packages/pretty-format/build/plugins/lib/markup.js ***! | 
						|
  \************************************************************/ | 
						|
/*! no static exports found */ | 
						|
/***/ (function(module, exports, __webpack_require__) { | 
						|
 | 
						|
"use strict"; | 
						|
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.printElementAsLeaf = exports.printElement = exports.printComment = exports.printText = exports.printChildren = exports.printProps = void 0; | 
						|
 | 
						|
var _escapeHTML = _interopRequireDefault(__webpack_require__(/*! ./escapeHTML */ "./packages/pretty-format/build/plugins/lib/escapeHTML.js")); | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : { | 
						|
    default: obj | 
						|
  }; | 
						|
} | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
// Return empty string if keys is empty. | 
						|
 | 
						|
 | 
						|
var printProps = function printProps(keys, props, config, indentation, depth, refs, printer) { | 
						|
  var indentationNext = indentation + config.indent; | 
						|
  var colors = config.colors; | 
						|
  return keys.map(function (key) { | 
						|
    var value = props[key]; | 
						|
    var printed = printer(value, config, indentationNext, depth, refs); | 
						|
 | 
						|
    if (typeof value !== 'string') { | 
						|
      if (printed.indexOf('\n') !== -1) { | 
						|
        printed = config.spacingOuter + indentationNext + printed + config.spacingOuter + indentation; | 
						|
      } | 
						|
 | 
						|
      printed = '{' + printed + '}'; | 
						|
    } | 
						|
 | 
						|
    return config.spacingInner + indentation + colors.prop.open + key + colors.prop.close + '=' + colors.value.open + printed + colors.value.close; | 
						|
  }).join(''); | 
						|
}; // Return empty string if children is empty. | 
						|
 | 
						|
 | 
						|
exports.printProps = printProps; | 
						|
 | 
						|
var printChildren = function printChildren(children, config, indentation, depth, refs, printer) { | 
						|
  return children.map(function (child) { | 
						|
    return config.spacingOuter + indentation + (typeof child === 'string' ? printText(child, config) : printer(child, config, indentation, depth, refs)); | 
						|
  }).join(''); | 
						|
}; | 
						|
 | 
						|
exports.printChildren = printChildren; | 
						|
 | 
						|
var printText = function printText(text, config) { | 
						|
  var contentColor = config.colors.content; | 
						|
  return contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close; | 
						|
}; | 
						|
 | 
						|
exports.printText = printText; | 
						|
 | 
						|
var printComment = function printComment(comment, config) { | 
						|
  var commentColor = config.colors.comment; | 
						|
  return commentColor.open + '<!--' + (0, _escapeHTML.default)(comment) + '-->' + commentColor.close; | 
						|
}; // Separate the functions to format props, children, and element, | 
						|
// so a plugin could override a particular function, if needed. | 
						|
// Too bad, so sad: the traditional (but unnecessary) space | 
						|
// in a self-closing tagColor requires a second test of printedProps. | 
						|
 | 
						|
 | 
						|
exports.printComment = printComment; | 
						|
 | 
						|
var printElement = function printElement(type, printedProps, printedChildren, config, indentation) { | 
						|
  var tagColor = config.colors.tag; | 
						|
  return tagColor.open + '<' + type + (printedProps && tagColor.close + printedProps + config.spacingOuter + indentation + tagColor.open) + (printedChildren ? '>' + tagColor.close + printedChildren + config.spacingOuter + indentation + tagColor.open + '</' + type : (printedProps && !config.min ? '' : ' ') + '/') + '>' + tagColor.close; | 
						|
}; | 
						|
 | 
						|
exports.printElement = printElement; | 
						|
 | 
						|
var printElementAsLeaf = function printElementAsLeaf(type, config) { | 
						|
  var tagColor = config.colors.tag; | 
						|
  return tagColor.open + '<' + type + tagColor.close + ' …' + tagColor.open + ' />' + tagColor.close; | 
						|
}; | 
						|
 | 
						|
exports.printElementAsLeaf = printElementAsLeaf; | 
						|
 | 
						|
/***/ }) | 
						|
 | 
						|
/******/ }); | 
						|
}); | 
						|
//# sourceMappingURL=index.js.map |