{"version":3,"file":"watch-BHYamls9.mjs","sources":["../node_modules/rollup/dist/es/shared/watch.js"],"sourcesContent":["/*\n  @license\n\tRollup.js v4.52.3\n\tSat, 27 Sep 2025 07:05:38 GMT - commit 74c555c8e9ef7b62c2f57925bb2a5c0627ef8ae1\n\n\thttps://github.com/rollup/rollup\n\n\tReleased under the MIT License.\n*/\nimport { getAugmentedNamespace, fseventsImporter, getDefaultExportFromCjs, createFilter, rollupInternal } from './node-entry.js';\nimport path from 'node:path';\nimport process$1 from 'node:process';\nimport require$$0$1 from 'path';\nimport require$$2 from 'util';\nimport require$$0$2 from 'fs';\nimport require$$1 from 'stream';\nimport require$$2$1 from 'os';\nimport require$$0$3 from 'events';\nimport { platform } from 'node:os';\nimport './parseAst.js';\nimport '../../native.js';\nimport 'node:perf_hooks';\nimport 'node:fs/promises';\n\nvar chokidar$1 = {};\n\nvar utils$2 = {};\n\nvar constants$3;\nvar hasRequiredConstants$3;\n\nfunction requireConstants$3 () {\n\tif (hasRequiredConstants$3) return constants$3;\n\thasRequiredConstants$3 = 1;\n\n\tconst path = require$$0$1;\n\tconst WIN_SLASH = '\\\\\\\\/';\n\tconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n\t/**\n\t * Posix glob regex\n\t */\n\n\tconst DOT_LITERAL = '\\\\.';\n\tconst PLUS_LITERAL = '\\\\+';\n\tconst QMARK_LITERAL = '\\\\?';\n\tconst SLASH_LITERAL = '\\\\/';\n\tconst ONE_CHAR = '(?=.)';\n\tconst QMARK = '[^/]';\n\tconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\n\tconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\n\tconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\n\tconst NO_DOT = `(?!${DOT_LITERAL})`;\n\tconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\n\tconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\n\tconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\n\tconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\n\tconst STAR = `${QMARK}*?`;\n\n\tconst POSIX_CHARS = {\n\t  DOT_LITERAL,\n\t  PLUS_LITERAL,\n\t  QMARK_LITERAL,\n\t  SLASH_LITERAL,\n\t  ONE_CHAR,\n\t  QMARK,\n\t  END_ANCHOR,\n\t  DOTS_SLASH,\n\t  NO_DOT,\n\t  NO_DOTS,\n\t  NO_DOT_SLASH,\n\t  NO_DOTS_SLASH,\n\t  QMARK_NO_DOT,\n\t  STAR,\n\t  START_ANCHOR\n\t};\n\n\t/**\n\t * Windows glob regex\n\t */\n\n\tconst WINDOWS_CHARS = {\n\t  ...POSIX_CHARS,\n\n\t  SLASH_LITERAL: `[${WIN_SLASH}]`,\n\t  QMARK: WIN_NO_SLASH,\n\t  STAR: `${WIN_NO_SLASH}*?`,\n\t  DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n\t  NO_DOT: `(?!${DOT_LITERAL})`,\n\t  NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n\t  NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n\t  NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n\t  QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n\t  START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n\t  END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n\t};\n\n\t/**\n\t * POSIX Bracket Regex\n\t */\n\n\tconst POSIX_REGEX_SOURCE = {\n\t  alnum: 'a-zA-Z0-9',\n\t  alpha: 'a-zA-Z',\n\t  ascii: '\\\\x00-\\\\x7F',\n\t  blank: ' \\\\t',\n\t  cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n\t  digit: '0-9',\n\t  graph: '\\\\x21-\\\\x7E',\n\t  lower: 'a-z',\n\t  print: '\\\\x20-\\\\x7E ',\n\t  punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n\t  space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n\t  upper: 'A-Z',\n\t  word: 'A-Za-z0-9_',\n\t  xdigit: 'A-Fa-f0-9'\n\t};\n\n\tconstants$3 = {\n\t  MAX_LENGTH: 1024 * 64,\n\t  POSIX_REGEX_SOURCE,\n\n\t  // regular expressions\n\t  REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n\t  REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n\t  REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n\t  REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n\t  REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n\t  REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n\t  // Replace globs with equivalent patterns to reduce parsing time.\n\t  REPLACEMENTS: {\n\t    '***': '*',\n\t    '**/**': '**',\n\t    '**/**/**': '**'\n\t  },\n\n\t  // Digits\n\t  CHAR_0: 48, /* 0 */\n\t  CHAR_9: 57, /* 9 */\n\n\t  // Alphabet chars.\n\t  CHAR_UPPERCASE_A: 65, /* A */\n\t  CHAR_LOWERCASE_A: 97, /* a */\n\t  CHAR_UPPERCASE_Z: 90, /* Z */\n\t  CHAR_LOWERCASE_Z: 122, /* z */\n\n\t  CHAR_LEFT_PARENTHESES: 40, /* ( */\n\t  CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n\t  CHAR_ASTERISK: 42, /* * */\n\n\t  // Non-alphabetic chars.\n\t  CHAR_AMPERSAND: 38, /* & */\n\t  CHAR_AT: 64, /* @ */\n\t  CHAR_BACKWARD_SLASH: 92, /* \\ */\n\t  CHAR_CARRIAGE_RETURN: 13, /* \\r */\n\t  CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n\t  CHAR_COLON: 58, /* : */\n\t  CHAR_COMMA: 44, /* , */\n\t  CHAR_DOT: 46, /* . */\n\t  CHAR_DOUBLE_QUOTE: 34, /* \" */\n\t  CHAR_EQUAL: 61, /* = */\n\t  CHAR_EXCLAMATION_MARK: 33, /* ! */\n\t  CHAR_FORM_FEED: 12, /* \\f */\n\t  CHAR_FORWARD_SLASH: 47, /* / */\n\t  CHAR_GRAVE_ACCENT: 96, /* ` */\n\t  CHAR_HASH: 35, /* # */\n\t  CHAR_HYPHEN_MINUS: 45, /* - */\n\t  CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n\t  CHAR_LEFT_CURLY_BRACE: 123, /* { */\n\t  CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n\t  CHAR_LINE_FEED: 10, /* \\n */\n\t  CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n\t  CHAR_PERCENT: 37, /* % */\n\t  CHAR_PLUS: 43, /* + */\n\t  CHAR_QUESTION_MARK: 63, /* ? */\n\t  CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n\t  CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n\t  CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n\t  CHAR_SEMICOLON: 59, /* ; */\n\t  CHAR_SINGLE_QUOTE: 39, /* ' */\n\t  CHAR_SPACE: 32, /*   */\n\t  CHAR_TAB: 9, /* \\t */\n\t  CHAR_UNDERSCORE: 95, /* _ */\n\t  CHAR_VERTICAL_LINE: 124, /* | */\n\t  CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n\t  SEP: path.sep,\n\n\t  /**\n\t   * Create EXTGLOB_CHARS\n\t   */\n\n\t  extglobChars(chars) {\n\t    return {\n\t      '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n\t      '?': { type: 'qmark', open: '(?:', close: ')?' },\n\t      '+': { type: 'plus', open: '(?:', close: ')+' },\n\t      '*': { type: 'star', open: '(?:', close: ')*' },\n\t      '@': { type: 'at', open: '(?:', close: ')' }\n\t    };\n\t  },\n\n\t  /**\n\t   * Create GLOB_CHARS\n\t   */\n\n\t  globChars(win32) {\n\t    return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n\t  }\n\t};\n\treturn constants$3;\n}\n\nvar hasRequiredUtils$2;\n\nfunction requireUtils$2 () {\n\tif (hasRequiredUtils$2) return utils$2;\n\thasRequiredUtils$2 = 1;\n\t(function (exports) {\n\n\t\tconst path = require$$0$1;\n\t\tconst win32 = process.platform === 'win32';\n\t\tconst {\n\t\t  REGEX_BACKSLASH,\n\t\t  REGEX_REMOVE_BACKSLASH,\n\t\t  REGEX_SPECIAL_CHARS,\n\t\t  REGEX_SPECIAL_CHARS_GLOBAL\n\t\t} = /*@__PURE__*/ requireConstants$3();\n\n\t\texports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\t\texports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\n\t\texports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\n\t\texports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\n\t\texports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\n\t\texports.removeBackslashes = str => {\n\t\t  return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n\t\t    return match === '\\\\' ? '' : match;\n\t\t  });\n\t\t};\n\n\t\texports.supportsLookbehinds = () => {\n\t\t  const segs = process.version.slice(1).split('.').map(Number);\n\t\t  if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n\t\t    return true;\n\t\t  }\n\t\t  return false;\n\t\t};\n\n\t\texports.isWindows = options => {\n\t\t  if (options && typeof options.windows === 'boolean') {\n\t\t    return options.windows;\n\t\t  }\n\t\t  return win32 === true || path.sep === '\\\\';\n\t\t};\n\n\t\texports.escapeLast = (input, char, lastIdx) => {\n\t\t  const idx = input.lastIndexOf(char, lastIdx);\n\t\t  if (idx === -1) return input;\n\t\t  if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n\t\t  return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n\t\t};\n\n\t\texports.removePrefix = (input, state = {}) => {\n\t\t  let output = input;\n\t\t  if (output.startsWith('./')) {\n\t\t    output = output.slice(2);\n\t\t    state.prefix = './';\n\t\t  }\n\t\t  return output;\n\t\t};\n\n\t\texports.wrapOutput = (input, state = {}, options = {}) => {\n\t\t  const prepend = options.contains ? '' : '^';\n\t\t  const append = options.contains ? '' : '$';\n\n\t\t  let output = `${prepend}(?:${input})${append}`;\n\t\t  if (state.negated === true) {\n\t\t    output = `(?:^(?!${output}).*$)`;\n\t\t  }\n\t\t  return output;\n\t\t}; \n\t} (utils$2));\n\treturn utils$2;\n}\n\nvar scan_1$1;\nvar hasRequiredScan$1;\n\nfunction requireScan$1 () {\n\tif (hasRequiredScan$1) return scan_1$1;\n\thasRequiredScan$1 = 1;\n\n\tconst utils = /*@__PURE__*/ requireUtils$2();\n\tconst {\n\t  CHAR_ASTERISK,             /* * */\n\t  CHAR_AT,                   /* @ */\n\t  CHAR_BACKWARD_SLASH,       /* \\ */\n\t  CHAR_COMMA,                /* , */\n\t  CHAR_DOT,                  /* . */\n\t  CHAR_EXCLAMATION_MARK,     /* ! */\n\t  CHAR_FORWARD_SLASH,        /* / */\n\t  CHAR_LEFT_CURLY_BRACE,     /* { */\n\t  CHAR_LEFT_PARENTHESES,     /* ( */\n\t  CHAR_LEFT_SQUARE_BRACKET,  /* [ */\n\t  CHAR_PLUS,                 /* + */\n\t  CHAR_QUESTION_MARK,        /* ? */\n\t  CHAR_RIGHT_CURLY_BRACE,    /* } */\n\t  CHAR_RIGHT_PARENTHESES,    /* ) */\n\t  CHAR_RIGHT_SQUARE_BRACKET  /* ] */\n\t} = /*@__PURE__*/ requireConstants$3();\n\n\tconst isPathSeparator = code => {\n\t  return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n\t};\n\n\tconst depth = token => {\n\t  if (token.isPrefix !== true) {\n\t    token.depth = token.isGlobstar ? Infinity : 1;\n\t  }\n\t};\n\n\t/**\n\t * Quickly scans a glob pattern and returns an object with a handful of\n\t * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n\t * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n\t * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n\t *\n\t * ```js\n\t * const pm = require('picomatch');\n\t * console.log(pm.scan('foo/bar/*.js'));\n\t * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n\t * ```\n\t * @param {String} `str`\n\t * @param {Object} `options`\n\t * @return {Object} Returns an object with tokens and regex source string.\n\t * @api public\n\t */\n\n\tconst scan = (input, options) => {\n\t  const opts = options || {};\n\n\t  const length = input.length - 1;\n\t  const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n\t  const slashes = [];\n\t  const tokens = [];\n\t  const parts = [];\n\n\t  let str = input;\n\t  let index = -1;\n\t  let start = 0;\n\t  let lastIndex = 0;\n\t  let isBrace = false;\n\t  let isBracket = false;\n\t  let isGlob = false;\n\t  let isExtglob = false;\n\t  let isGlobstar = false;\n\t  let braceEscaped = false;\n\t  let backslashes = false;\n\t  let negated = false;\n\t  let negatedExtglob = false;\n\t  let finished = false;\n\t  let braces = 0;\n\t  let prev;\n\t  let code;\n\t  let token = { value: '', depth: 0, isGlob: false };\n\n\t  const eos = () => index >= length;\n\t  const peek = () => str.charCodeAt(index + 1);\n\t  const advance = () => {\n\t    prev = code;\n\t    return str.charCodeAt(++index);\n\t  };\n\n\t  while (index < length) {\n\t    code = advance();\n\t    let next;\n\n\t    if (code === CHAR_BACKWARD_SLASH) {\n\t      backslashes = token.backslashes = true;\n\t      code = advance();\n\n\t      if (code === CHAR_LEFT_CURLY_BRACE) {\n\t        braceEscaped = true;\n\t      }\n\t      continue;\n\t    }\n\n\t    if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n\t      braces++;\n\n\t      while (eos() !== true && (code = advance())) {\n\t        if (code === CHAR_BACKWARD_SLASH) {\n\t          backslashes = token.backslashes = true;\n\t          advance();\n\t          continue;\n\t        }\n\n\t        if (code === CHAR_LEFT_CURLY_BRACE) {\n\t          braces++;\n\t          continue;\n\t        }\n\n\t        if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n\t          isBrace = token.isBrace = true;\n\t          isGlob = token.isGlob = true;\n\t          finished = true;\n\n\t          if (scanToEnd === true) {\n\t            continue;\n\t          }\n\n\t          break;\n\t        }\n\n\t        if (braceEscaped !== true && code === CHAR_COMMA) {\n\t          isBrace = token.isBrace = true;\n\t          isGlob = token.isGlob = true;\n\t          finished = true;\n\n\t          if (scanToEnd === true) {\n\t            continue;\n\t          }\n\n\t          break;\n\t        }\n\n\t        if (code === CHAR_RIGHT_CURLY_BRACE) {\n\t          braces--;\n\n\t          if (braces === 0) {\n\t            braceEscaped = false;\n\t            isBrace = token.isBrace = true;\n\t            finished = true;\n\t            break;\n\t          }\n\t        }\n\t      }\n\n\t      if (scanToEnd === true) {\n\t        continue;\n\t      }\n\n\t      break;\n\t    }\n\n\t    if (code === CHAR_FORWARD_SLASH) {\n\t      slashes.push(index);\n\t      tokens.push(token);\n\t      token = { value: '', depth: 0, isGlob: false };\n\n\t      if (finished === true) continue;\n\t      if (prev === CHAR_DOT && index === (start + 1)) {\n\t        start += 2;\n\t        continue;\n\t      }\n\n\t      lastIndex = index + 1;\n\t      continue;\n\t    }\n\n\t    if (opts.noext !== true) {\n\t      const isExtglobChar = code === CHAR_PLUS\n\t        || code === CHAR_AT\n\t        || code === CHAR_ASTERISK\n\t        || code === CHAR_QUESTION_MARK\n\t        || code === CHAR_EXCLAMATION_MARK;\n\n\t      if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n\t        isGlob = token.isGlob = true;\n\t        isExtglob = token.isExtglob = true;\n\t        finished = true;\n\t        if (code === CHAR_EXCLAMATION_MARK && index === start) {\n\t          negatedExtglob = true;\n\t        }\n\n\t        if (scanToEnd === true) {\n\t          while (eos() !== true && (code = advance())) {\n\t            if (code === CHAR_BACKWARD_SLASH) {\n\t              backslashes = token.backslashes = true;\n\t              code = advance();\n\t              continue;\n\t            }\n\n\t            if (code === CHAR_RIGHT_PARENTHESES) {\n\t              isGlob = token.isGlob = true;\n\t              finished = true;\n\t              break;\n\t            }\n\t          }\n\t          continue;\n\t        }\n\t        break;\n\t      }\n\t    }\n\n\t    if (code === CHAR_ASTERISK) {\n\t      if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n\t      isGlob = token.isGlob = true;\n\t      finished = true;\n\n\t      if (scanToEnd === true) {\n\t        continue;\n\t      }\n\t      break;\n\t    }\n\n\t    if (code === CHAR_QUESTION_MARK) {\n\t      isGlob = token.isGlob = true;\n\t      finished = true;\n\n\t      if (scanToEnd === true) {\n\t        continue;\n\t      }\n\t      break;\n\t    }\n\n\t    if (code === CHAR_LEFT_SQUARE_BRACKET) {\n\t      while (eos() !== true && (next = advance())) {\n\t        if (next === CHAR_BACKWARD_SLASH) {\n\t          backslashes = token.backslashes = true;\n\t          advance();\n\t          continue;\n\t        }\n\n\t        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n\t          isBracket = token.isBracket = true;\n\t          isGlob = token.isGlob = true;\n\t          finished = true;\n\t          break;\n\t        }\n\t      }\n\n\t      if (scanToEnd === true) {\n\t        continue;\n\t      }\n\n\t      break;\n\t    }\n\n\t    if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n\t      negated = token.negated = true;\n\t      start++;\n\t      continue;\n\t    }\n\n\t    if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n\t      isGlob = token.isGlob = true;\n\n\t      if (scanToEnd === true) {\n\t        while (eos() !== true && (code = advance())) {\n\t          if (code === CHAR_LEFT_PARENTHESES) {\n\t            backslashes = token.backslashes = true;\n\t            code = advance();\n\t            continue;\n\t          }\n\n\t          if (code === CHAR_RIGHT_PARENTHESES) {\n\t            finished = true;\n\t            break;\n\t          }\n\t        }\n\t        continue;\n\t      }\n\t      break;\n\t    }\n\n\t    if (isGlob === true) {\n\t      finished = true;\n\n\t      if (scanToEnd === true) {\n\t        continue;\n\t      }\n\n\t      break;\n\t    }\n\t  }\n\n\t  if (opts.noext === true) {\n\t    isExtglob = false;\n\t    isGlob = false;\n\t  }\n\n\t  let base = str;\n\t  let prefix = '';\n\t  let glob = '';\n\n\t  if (start > 0) {\n\t    prefix = str.slice(0, start);\n\t    str = str.slice(start);\n\t    lastIndex -= start;\n\t  }\n\n\t  if (base && isGlob === true && lastIndex > 0) {\n\t    base = str.slice(0, lastIndex);\n\t    glob = str.slice(lastIndex);\n\t  } else if (isGlob === true) {\n\t    base = '';\n\t    glob = str;\n\t  } else {\n\t    base = str;\n\t  }\n\n\t  if (base && base !== '' && base !== '/' && base !== str) {\n\t    if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n\t      base = base.slice(0, -1);\n\t    }\n\t  }\n\n\t  if (opts.unescape === true) {\n\t    if (glob) glob = utils.removeBackslashes(glob);\n\n\t    if (base && backslashes === true) {\n\t      base = utils.removeBackslashes(base);\n\t    }\n\t  }\n\n\t  const state = {\n\t    prefix,\n\t    input,\n\t    start,\n\t    base,\n\t    glob,\n\t    isBrace,\n\t    isBracket,\n\t    isGlob,\n\t    isExtglob,\n\t    isGlobstar,\n\t    negated,\n\t    negatedExtglob\n\t  };\n\n\t  if (opts.tokens === true) {\n\t    state.maxDepth = 0;\n\t    if (!isPathSeparator(code)) {\n\t      tokens.push(token);\n\t    }\n\t    state.tokens = tokens;\n\t  }\n\n\t  if (opts.parts === true || opts.tokens === true) {\n\t    let prevIndex;\n\n\t    for (let idx = 0; idx < slashes.length; idx++) {\n\t      const n = prevIndex ? prevIndex + 1 : start;\n\t      const i = slashes[idx];\n\t      const value = input.slice(n, i);\n\t      if (opts.tokens) {\n\t        if (idx === 0 && start !== 0) {\n\t          tokens[idx].isPrefix = true;\n\t          tokens[idx].value = prefix;\n\t        } else {\n\t          tokens[idx].value = value;\n\t        }\n\t        depth(tokens[idx]);\n\t        state.maxDepth += tokens[idx].depth;\n\t      }\n\t      if (idx !== 0 || value !== '') {\n\t        parts.push(value);\n\t      }\n\t      prevIndex = i;\n\t    }\n\n\t    if (prevIndex && prevIndex + 1 < input.length) {\n\t      const value = input.slice(prevIndex + 1);\n\t      parts.push(value);\n\n\t      if (opts.tokens) {\n\t        tokens[tokens.length - 1].value = value;\n\t        depth(tokens[tokens.length - 1]);\n\t        state.maxDepth += tokens[tokens.length - 1].depth;\n\t      }\n\t    }\n\n\t    state.slashes = slashes;\n\t    state.parts = parts;\n\t  }\n\n\t  return state;\n\t};\n\n\tscan_1$1 = scan;\n\treturn scan_1$1;\n}\n\nvar parse_1$2;\nvar hasRequiredParse$2;\n\nfunction requireParse$2 () {\n\tif (hasRequiredParse$2) return parse_1$2;\n\thasRequiredParse$2 = 1;\n\n\tconst constants = /*@__PURE__*/ requireConstants$3();\n\tconst utils = /*@__PURE__*/ requireUtils$2();\n\n\t/**\n\t * Constants\n\t */\n\n\tconst {\n\t  MAX_LENGTH,\n\t  POSIX_REGEX_SOURCE,\n\t  REGEX_NON_SPECIAL_CHARS,\n\t  REGEX_SPECIAL_CHARS_BACKREF,\n\t  REPLACEMENTS\n\t} = constants;\n\n\t/**\n\t * Helpers\n\t */\n\n\tconst expandRange = (args, options) => {\n\t  if (typeof options.expandRange === 'function') {\n\t    return options.expandRange(...args, options);\n\t  }\n\n\t  args.sort();\n\t  const value = `[${args.join('-')}]`;\n\n\t  return value;\n\t};\n\n\t/**\n\t * Create the message for a syntax error\n\t */\n\n\tconst syntaxError = (type, char) => {\n\t  return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n\t};\n\n\t/**\n\t * Parse the given input string.\n\t * @param {String} input\n\t * @param {Object} options\n\t * @return {Object}\n\t */\n\n\tconst parse = (input, options) => {\n\t  if (typeof input !== 'string') {\n\t    throw new TypeError('Expected a string');\n\t  }\n\n\t  input = REPLACEMENTS[input] || input;\n\n\t  const opts = { ...options };\n\t  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n\t  let len = input.length;\n\t  if (len > max) {\n\t    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n\t  }\n\n\t  const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n\t  const tokens = [bos];\n\n\t  const capture = opts.capture ? '' : '?:';\n\t  const win32 = utils.isWindows(options);\n\n\t  // create constants based on platform, for windows or posix\n\t  const PLATFORM_CHARS = constants.globChars(win32);\n\t  const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n\t  const {\n\t    DOT_LITERAL,\n\t    PLUS_LITERAL,\n\t    SLASH_LITERAL,\n\t    ONE_CHAR,\n\t    DOTS_SLASH,\n\t    NO_DOT,\n\t    NO_DOT_SLASH,\n\t    NO_DOTS_SLASH,\n\t    QMARK,\n\t    QMARK_NO_DOT,\n\t    STAR,\n\t    START_ANCHOR\n\t  } = PLATFORM_CHARS;\n\n\t  const globstar = opts => {\n\t    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n\t  };\n\n\t  const nodot = opts.dot ? '' : NO_DOT;\n\t  const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n\t  let star = opts.bash === true ? globstar(opts) : STAR;\n\n\t  if (opts.capture) {\n\t    star = `(${star})`;\n\t  }\n\n\t  // minimatch options support\n\t  if (typeof opts.noext === 'boolean') {\n\t    opts.noextglob = opts.noext;\n\t  }\n\n\t  const state = {\n\t    input,\n\t    index: -1,\n\t    start: 0,\n\t    dot: opts.dot === true,\n\t    consumed: '',\n\t    output: '',\n\t    prefix: '',\n\t    backtrack: false,\n\t    negated: false,\n\t    brackets: 0,\n\t    braces: 0,\n\t    parens: 0,\n\t    quotes: 0,\n\t    globstar: false,\n\t    tokens\n\t  };\n\n\t  input = utils.removePrefix(input, state);\n\t  len = input.length;\n\n\t  const extglobs = [];\n\t  const braces = [];\n\t  const stack = [];\n\t  let prev = bos;\n\t  let value;\n\n\t  /**\n\t   * Tokenizing helpers\n\t   */\n\n\t  const eos = () => state.index === len - 1;\n\t  const peek = state.peek = (n = 1) => input[state.index + n];\n\t  const advance = state.advance = () => input[++state.index] || '';\n\t  const remaining = () => input.slice(state.index + 1);\n\t  const consume = (value = '', num = 0) => {\n\t    state.consumed += value;\n\t    state.index += num;\n\t  };\n\n\t  const append = token => {\n\t    state.output += token.output != null ? token.output : token.value;\n\t    consume(token.value);\n\t  };\n\n\t  const negate = () => {\n\t    let count = 1;\n\n\t    while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n\t      advance();\n\t      state.start++;\n\t      count++;\n\t    }\n\n\t    if (count % 2 === 0) {\n\t      return false;\n\t    }\n\n\t    state.negated = true;\n\t    state.start++;\n\t    return true;\n\t  };\n\n\t  const increment = type => {\n\t    state[type]++;\n\t    stack.push(type);\n\t  };\n\n\t  const decrement = type => {\n\t    state[type]--;\n\t    stack.pop();\n\t  };\n\n\t  /**\n\t   * Push tokens onto the tokens array. This helper speeds up\n\t   * tokenizing by 1) helping us avoid backtracking as much as possible,\n\t   * and 2) helping us avoid creating extra tokens when consecutive\n\t   * characters are plain text. This improves performance and simplifies\n\t   * lookbehinds.\n\t   */\n\n\t  const push = tok => {\n\t    if (prev.type === 'globstar') {\n\t      const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n\t      const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n\t      if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n\t        state.output = state.output.slice(0, -prev.output.length);\n\t        prev.type = 'star';\n\t        prev.value = '*';\n\t        prev.output = star;\n\t        state.output += prev.output;\n\t      }\n\t    }\n\n\t    if (extglobs.length && tok.type !== 'paren') {\n\t      extglobs[extglobs.length - 1].inner += tok.value;\n\t    }\n\n\t    if (tok.value || tok.output) append(tok);\n\t    if (prev && prev.type === 'text' && tok.type === 'text') {\n\t      prev.value += tok.value;\n\t      prev.output = (prev.output || '') + tok.value;\n\t      return;\n\t    }\n\n\t    tok.prev = prev;\n\t    tokens.push(tok);\n\t    prev = tok;\n\t  };\n\n\t  const extglobOpen = (type, value) => {\n\t    const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n\t    token.prev = prev;\n\t    token.parens = state.parens;\n\t    token.output = state.output;\n\t    const output = (opts.capture ? '(' : '') + token.open;\n\n\t    increment('parens');\n\t    push({ type, value, output: state.output ? '' : ONE_CHAR });\n\t    push({ type: 'paren', extglob: true, value: advance(), output });\n\t    extglobs.push(token);\n\t  };\n\n\t  const extglobClose = token => {\n\t    let output = token.close + (opts.capture ? ')' : '');\n\t    let rest;\n\n\t    if (token.type === 'negate') {\n\t      let extglobStar = star;\n\n\t      if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n\t        extglobStar = globstar(opts);\n\t      }\n\n\t      if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n\t        output = token.close = `)$))${extglobStar}`;\n\t      }\n\n\t      if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n\t        // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n\t        // In this case, we need to parse the string and use it in the output of the original pattern.\n\t        // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n\t        //\n\t        // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n\t        const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n\t        output = token.close = `)${expression})${extglobStar})`;\n\t      }\n\n\t      if (token.prev.type === 'bos') {\n\t        state.negatedExtglob = true;\n\t      }\n\t    }\n\n\t    push({ type: 'paren', extglob: true, value, output });\n\t    decrement('parens');\n\t  };\n\n\t  /**\n\t   * Fast paths\n\t   */\n\n\t  if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n\t    let backslashes = false;\n\n\t    let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n\t      if (first === '\\\\') {\n\t        backslashes = true;\n\t        return m;\n\t      }\n\n\t      if (first === '?') {\n\t        if (esc) {\n\t          return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n\t        }\n\t        if (index === 0) {\n\t          return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n\t        }\n\t        return QMARK.repeat(chars.length);\n\t      }\n\n\t      if (first === '.') {\n\t        return DOT_LITERAL.repeat(chars.length);\n\t      }\n\n\t      if (first === '*') {\n\t        if (esc) {\n\t          return esc + first + (rest ? star : '');\n\t        }\n\t        return star;\n\t      }\n\t      return esc ? m : `\\\\${m}`;\n\t    });\n\n\t    if (backslashes === true) {\n\t      if (opts.unescape === true) {\n\t        output = output.replace(/\\\\/g, '');\n\t      } else {\n\t        output = output.replace(/\\\\+/g, m => {\n\t          return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n\t        });\n\t      }\n\t    }\n\n\t    if (output === input && opts.contains === true) {\n\t      state.output = input;\n\t      return state;\n\t    }\n\n\t    state.output = utils.wrapOutput(output, state, options);\n\t    return state;\n\t  }\n\n\t  /**\n\t   * Tokenize input until we reach end-of-string\n\t   */\n\n\t  while (!eos()) {\n\t    value = advance();\n\n\t    if (value === '\\u0000') {\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Escaped characters\n\t     */\n\n\t    if (value === '\\\\') {\n\t      const next = peek();\n\n\t      if (next === '/' && opts.bash !== true) {\n\t        continue;\n\t      }\n\n\t      if (next === '.' || next === ';') {\n\t        continue;\n\t      }\n\n\t      if (!next) {\n\t        value += '\\\\';\n\t        push({ type: 'text', value });\n\t        continue;\n\t      }\n\n\t      // collapse slashes to reduce potential for exploits\n\t      const match = /^\\\\+/.exec(remaining());\n\t      let slashes = 0;\n\n\t      if (match && match[0].length > 2) {\n\t        slashes = match[0].length;\n\t        state.index += slashes;\n\t        if (slashes % 2 !== 0) {\n\t          value += '\\\\';\n\t        }\n\t      }\n\n\t      if (opts.unescape === true) {\n\t        value = advance();\n\t      } else {\n\t        value += advance();\n\t      }\n\n\t      if (state.brackets === 0) {\n\t        push({ type: 'text', value });\n\t        continue;\n\t      }\n\t    }\n\n\t    /**\n\t     * If we're inside a regex character class, continue\n\t     * until we reach the closing bracket.\n\t     */\n\n\t    if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n\t      if (opts.posix !== false && value === ':') {\n\t        const inner = prev.value.slice(1);\n\t        if (inner.includes('[')) {\n\t          prev.posix = true;\n\n\t          if (inner.includes(':')) {\n\t            const idx = prev.value.lastIndexOf('[');\n\t            const pre = prev.value.slice(0, idx);\n\t            const rest = prev.value.slice(idx + 2);\n\t            const posix = POSIX_REGEX_SOURCE[rest];\n\t            if (posix) {\n\t              prev.value = pre + posix;\n\t              state.backtrack = true;\n\t              advance();\n\n\t              if (!bos.output && tokens.indexOf(prev) === 1) {\n\t                bos.output = ONE_CHAR;\n\t              }\n\t              continue;\n\t            }\n\t          }\n\t        }\n\t      }\n\n\t      if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n\t        value = `\\\\${value}`;\n\t      }\n\n\t      if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n\t        value = `\\\\${value}`;\n\t      }\n\n\t      if (opts.posix === true && value === '!' && prev.value === '[') {\n\t        value = '^';\n\t      }\n\n\t      prev.value += value;\n\t      append({ value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * If we're inside a quoted string, continue\n\t     * until we reach the closing double quote.\n\t     */\n\n\t    if (state.quotes === 1 && value !== '\"') {\n\t      value = utils.escapeRegex(value);\n\t      prev.value += value;\n\t      append({ value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Double quotes\n\t     */\n\n\t    if (value === '\"') {\n\t      state.quotes = state.quotes === 1 ? 0 : 1;\n\t      if (opts.keepQuotes === true) {\n\t        push({ type: 'text', value });\n\t      }\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Parentheses\n\t     */\n\n\t    if (value === '(') {\n\t      increment('parens');\n\t      push({ type: 'paren', value });\n\t      continue;\n\t    }\n\n\t    if (value === ')') {\n\t      if (state.parens === 0 && opts.strictBrackets === true) {\n\t        throw new SyntaxError(syntaxError('opening', '('));\n\t      }\n\n\t      const extglob = extglobs[extglobs.length - 1];\n\t      if (extglob && state.parens === extglob.parens + 1) {\n\t        extglobClose(extglobs.pop());\n\t        continue;\n\t      }\n\n\t      push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n\t      decrement('parens');\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Square brackets\n\t     */\n\n\t    if (value === '[') {\n\t      if (opts.nobracket === true || !remaining().includes(']')) {\n\t        if (opts.nobracket !== true && opts.strictBrackets === true) {\n\t          throw new SyntaxError(syntaxError('closing', ']'));\n\t        }\n\n\t        value = `\\\\${value}`;\n\t      } else {\n\t        increment('brackets');\n\t      }\n\n\t      push({ type: 'bracket', value });\n\t      continue;\n\t    }\n\n\t    if (value === ']') {\n\t      if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n\t        push({ type: 'text', value, output: `\\\\${value}` });\n\t        continue;\n\t      }\n\n\t      if (state.brackets === 0) {\n\t        if (opts.strictBrackets === true) {\n\t          throw new SyntaxError(syntaxError('opening', '['));\n\t        }\n\n\t        push({ type: 'text', value, output: `\\\\${value}` });\n\t        continue;\n\t      }\n\n\t      decrement('brackets');\n\n\t      const prevValue = prev.value.slice(1);\n\t      if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n\t        value = `/${value}`;\n\t      }\n\n\t      prev.value += value;\n\t      append({ value });\n\n\t      // when literal brackets are explicitly disabled\n\t      // assume we should match with a regex character class\n\t      if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n\t        continue;\n\t      }\n\n\t      const escaped = utils.escapeRegex(prev.value);\n\t      state.output = state.output.slice(0, -prev.value.length);\n\n\t      // when literal brackets are explicitly enabled\n\t      // assume we should escape the brackets to match literal characters\n\t      if (opts.literalBrackets === true) {\n\t        state.output += escaped;\n\t        prev.value = escaped;\n\t        continue;\n\t      }\n\n\t      // when the user specifies nothing, try to match both\n\t      prev.value = `(${capture}${escaped}|${prev.value})`;\n\t      state.output += prev.value;\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Braces\n\t     */\n\n\t    if (value === '{' && opts.nobrace !== true) {\n\t      increment('braces');\n\n\t      const open = {\n\t        type: 'brace',\n\t        value,\n\t        output: '(',\n\t        outputIndex: state.output.length,\n\t        tokensIndex: state.tokens.length\n\t      };\n\n\t      braces.push(open);\n\t      push(open);\n\t      continue;\n\t    }\n\n\t    if (value === '}') {\n\t      const brace = braces[braces.length - 1];\n\n\t      if (opts.nobrace === true || !brace) {\n\t        push({ type: 'text', value, output: value });\n\t        continue;\n\t      }\n\n\t      let output = ')';\n\n\t      if (brace.dots === true) {\n\t        const arr = tokens.slice();\n\t        const range = [];\n\n\t        for (let i = arr.length - 1; i >= 0; i--) {\n\t          tokens.pop();\n\t          if (arr[i].type === 'brace') {\n\t            break;\n\t          }\n\t          if (arr[i].type !== 'dots') {\n\t            range.unshift(arr[i].value);\n\t          }\n\t        }\n\n\t        output = expandRange(range, opts);\n\t        state.backtrack = true;\n\t      }\n\n\t      if (brace.comma !== true && brace.dots !== true) {\n\t        const out = state.output.slice(0, brace.outputIndex);\n\t        const toks = state.tokens.slice(brace.tokensIndex);\n\t        brace.value = brace.output = '\\\\{';\n\t        value = output = '\\\\}';\n\t        state.output = out;\n\t        for (const t of toks) {\n\t          state.output += (t.output || t.value);\n\t        }\n\t      }\n\n\t      push({ type: 'brace', value, output });\n\t      decrement('braces');\n\t      braces.pop();\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Pipes\n\t     */\n\n\t    if (value === '|') {\n\t      if (extglobs.length > 0) {\n\t        extglobs[extglobs.length - 1].conditions++;\n\t      }\n\t      push({ type: 'text', value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Commas\n\t     */\n\n\t    if (value === ',') {\n\t      let output = value;\n\n\t      const brace = braces[braces.length - 1];\n\t      if (brace && stack[stack.length - 1] === 'braces') {\n\t        brace.comma = true;\n\t        output = '|';\n\t      }\n\n\t      push({ type: 'comma', value, output });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Slashes\n\t     */\n\n\t    if (value === '/') {\n\t      // if the beginning of the glob is \"./\", advance the start\n\t      // to the current index, and don't add the \"./\" characters\n\t      // to the state. This greatly simplifies lookbehinds when\n\t      // checking for BOS characters like \"!\" and \".\" (not \"./\")\n\t      if (prev.type === 'dot' && state.index === state.start + 1) {\n\t        state.start = state.index + 1;\n\t        state.consumed = '';\n\t        state.output = '';\n\t        tokens.pop();\n\t        prev = bos; // reset \"prev\" to the first token\n\t        continue;\n\t      }\n\n\t      push({ type: 'slash', value, output: SLASH_LITERAL });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Dots\n\t     */\n\n\t    if (value === '.') {\n\t      if (state.braces > 0 && prev.type === 'dot') {\n\t        if (prev.value === '.') prev.output = DOT_LITERAL;\n\t        const brace = braces[braces.length - 1];\n\t        prev.type = 'dots';\n\t        prev.output += value;\n\t        prev.value += value;\n\t        brace.dots = true;\n\t        continue;\n\t      }\n\n\t      if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n\t        push({ type: 'text', value, output: DOT_LITERAL });\n\t        continue;\n\t      }\n\n\t      push({ type: 'dot', value, output: DOT_LITERAL });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Question marks\n\t     */\n\n\t    if (value === '?') {\n\t      const isGroup = prev && prev.value === '(';\n\t      if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n\t        extglobOpen('qmark', value);\n\t        continue;\n\t      }\n\n\t      if (prev && prev.type === 'paren') {\n\t        const next = peek();\n\t        let output = value;\n\n\t        if (next === '<' && !utils.supportsLookbehinds()) {\n\t          throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n\t        }\n\n\t        if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n\t          output = `\\\\${value}`;\n\t        }\n\n\t        push({ type: 'text', value, output });\n\t        continue;\n\t      }\n\n\t      if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n\t        push({ type: 'qmark', value, output: QMARK_NO_DOT });\n\t        continue;\n\t      }\n\n\t      push({ type: 'qmark', value, output: QMARK });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Exclamation\n\t     */\n\n\t    if (value === '!') {\n\t      if (opts.noextglob !== true && peek() === '(') {\n\t        if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n\t          extglobOpen('negate', value);\n\t          continue;\n\t        }\n\t      }\n\n\t      if (opts.nonegate !== true && state.index === 0) {\n\t        negate();\n\t        continue;\n\t      }\n\t    }\n\n\t    /**\n\t     * Plus\n\t     */\n\n\t    if (value === '+') {\n\t      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n\t        extglobOpen('plus', value);\n\t        continue;\n\t      }\n\n\t      if ((prev && prev.value === '(') || opts.regex === false) {\n\t        push({ type: 'plus', value, output: PLUS_LITERAL });\n\t        continue;\n\t      }\n\n\t      if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n\t        push({ type: 'plus', value });\n\t        continue;\n\t      }\n\n\t      push({ type: 'plus', value: PLUS_LITERAL });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Plain text\n\t     */\n\n\t    if (value === '@') {\n\t      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n\t        push({ type: 'at', extglob: true, value, output: '' });\n\t        continue;\n\t      }\n\n\t      push({ type: 'text', value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Plain text\n\t     */\n\n\t    if (value !== '*') {\n\t      if (value === '$' || value === '^') {\n\t        value = `\\\\${value}`;\n\t      }\n\n\t      const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n\t      if (match) {\n\t        value += match[0];\n\t        state.index += match[0].length;\n\t      }\n\n\t      push({ type: 'text', value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Stars\n\t     */\n\n\t    if (prev && (prev.type === 'globstar' || prev.star === true)) {\n\t      prev.type = 'star';\n\t      prev.star = true;\n\t      prev.value += value;\n\t      prev.output = star;\n\t      state.backtrack = true;\n\t      state.globstar = true;\n\t      consume(value);\n\t      continue;\n\t    }\n\n\t    let rest = remaining();\n\t    if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n\t      extglobOpen('star', value);\n\t      continue;\n\t    }\n\n\t    if (prev.type === 'star') {\n\t      if (opts.noglobstar === true) {\n\t        consume(value);\n\t        continue;\n\t      }\n\n\t      const prior = prev.prev;\n\t      const before = prior.prev;\n\t      const isStart = prior.type === 'slash' || prior.type === 'bos';\n\t      const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n\t      if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n\t        push({ type: 'star', value, output: '' });\n\t        continue;\n\t      }\n\n\t      const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n\t      const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n\t      if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n\t        push({ type: 'star', value, output: '' });\n\t        continue;\n\t      }\n\n\t      // strip consecutive `/**/`\n\t      while (rest.slice(0, 3) === '/**') {\n\t        const after = input[state.index + 4];\n\t        if (after && after !== '/') {\n\t          break;\n\t        }\n\t        rest = rest.slice(3);\n\t        consume('/**', 3);\n\t      }\n\n\t      if (prior.type === 'bos' && eos()) {\n\t        prev.type = 'globstar';\n\t        prev.value += value;\n\t        prev.output = globstar(opts);\n\t        state.output = prev.output;\n\t        state.globstar = true;\n\t        consume(value);\n\t        continue;\n\t      }\n\n\t      if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n\t        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n\t        prior.output = `(?:${prior.output}`;\n\n\t        prev.type = 'globstar';\n\t        prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n\t        prev.value += value;\n\t        state.globstar = true;\n\t        state.output += prior.output + prev.output;\n\t        consume(value);\n\t        continue;\n\t      }\n\n\t      if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n\t        const end = rest[1] !== void 0 ? '|$' : '';\n\n\t        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n\t        prior.output = `(?:${prior.output}`;\n\n\t        prev.type = 'globstar';\n\t        prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n\t        prev.value += value;\n\n\t        state.output += prior.output + prev.output;\n\t        state.globstar = true;\n\n\t        consume(value + advance());\n\n\t        push({ type: 'slash', value: '/', output: '' });\n\t        continue;\n\t      }\n\n\t      if (prior.type === 'bos' && rest[0] === '/') {\n\t        prev.type = 'globstar';\n\t        prev.value += value;\n\t        prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n\t        state.output = prev.output;\n\t        state.globstar = true;\n\t        consume(value + advance());\n\t        push({ type: 'slash', value: '/', output: '' });\n\t        continue;\n\t      }\n\n\t      // remove single star from output\n\t      state.output = state.output.slice(0, -prev.output.length);\n\n\t      // reset previous token to globstar\n\t      prev.type = 'globstar';\n\t      prev.output = globstar(opts);\n\t      prev.value += value;\n\n\t      // reset output with globstar\n\t      state.output += prev.output;\n\t      state.globstar = true;\n\t      consume(value);\n\t      continue;\n\t    }\n\n\t    const token = { type: 'star', value, output: star };\n\n\t    if (opts.bash === true) {\n\t      token.output = '.*?';\n\t      if (prev.type === 'bos' || prev.type === 'slash') {\n\t        token.output = nodot + token.output;\n\t      }\n\t      push(token);\n\t      continue;\n\t    }\n\n\t    if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n\t      token.output = value;\n\t      push(token);\n\t      continue;\n\t    }\n\n\t    if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n\t      if (prev.type === 'dot') {\n\t        state.output += NO_DOT_SLASH;\n\t        prev.output += NO_DOT_SLASH;\n\n\t      } else if (opts.dot === true) {\n\t        state.output += NO_DOTS_SLASH;\n\t        prev.output += NO_DOTS_SLASH;\n\n\t      } else {\n\t        state.output += nodot;\n\t        prev.output += nodot;\n\t      }\n\n\t      if (peek() !== '*') {\n\t        state.output += ONE_CHAR;\n\t        prev.output += ONE_CHAR;\n\t      }\n\t    }\n\n\t    push(token);\n\t  }\n\n\t  while (state.brackets > 0) {\n\t    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n\t    state.output = utils.escapeLast(state.output, '[');\n\t    decrement('brackets');\n\t  }\n\n\t  while (state.parens > 0) {\n\t    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n\t    state.output = utils.escapeLast(state.output, '(');\n\t    decrement('parens');\n\t  }\n\n\t  while (state.braces > 0) {\n\t    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n\t    state.output = utils.escapeLast(state.output, '{');\n\t    decrement('braces');\n\t  }\n\n\t  if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n\t    push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n\t  }\n\n\t  // rebuild the output if we had to backtrack at any point\n\t  if (state.backtrack === true) {\n\t    state.output = '';\n\n\t    for (const token of state.tokens) {\n\t      state.output += token.output != null ? token.output : token.value;\n\n\t      if (token.suffix) {\n\t        state.output += token.suffix;\n\t      }\n\t    }\n\t  }\n\n\t  return state;\n\t};\n\n\t/**\n\t * Fast paths for creating regular expressions for common glob patterns.\n\t * This can significantly speed up processing and has very little downside\n\t * impact when none of the fast paths match.\n\t */\n\n\tparse.fastpaths = (input, options) => {\n\t  const opts = { ...options };\n\t  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\t  const len = input.length;\n\t  if (len > max) {\n\t    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n\t  }\n\n\t  input = REPLACEMENTS[input] || input;\n\t  const win32 = utils.isWindows(options);\n\n\t  // create constants based on platform, for windows or posix\n\t  const {\n\t    DOT_LITERAL,\n\t    SLASH_LITERAL,\n\t    ONE_CHAR,\n\t    DOTS_SLASH,\n\t    NO_DOT,\n\t    NO_DOTS,\n\t    NO_DOTS_SLASH,\n\t    STAR,\n\t    START_ANCHOR\n\t  } = constants.globChars(win32);\n\n\t  const nodot = opts.dot ? NO_DOTS : NO_DOT;\n\t  const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n\t  const capture = opts.capture ? '' : '?:';\n\t  const state = { negated: false, prefix: '' };\n\t  let star = opts.bash === true ? '.*?' : STAR;\n\n\t  if (opts.capture) {\n\t    star = `(${star})`;\n\t  }\n\n\t  const globstar = opts => {\n\t    if (opts.noglobstar === true) return star;\n\t    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n\t  };\n\n\t  const create = str => {\n\t    switch (str) {\n\t      case '*':\n\t        return `${nodot}${ONE_CHAR}${star}`;\n\n\t      case '.*':\n\t        return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n\t      case '*.*':\n\t        return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n\t      case '*/*':\n\t        return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n\t      case '**':\n\t        return nodot + globstar(opts);\n\n\t      case '**/*':\n\t        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n\t      case '**/*.*':\n\t        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n\t      case '**/.*':\n\t        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n\t      default: {\n\t        const match = /^(.*?)\\.(\\w+)$/.exec(str);\n\t        if (!match) return;\n\n\t        const source = create(match[1]);\n\t        if (!source) return;\n\n\t        return source + DOT_LITERAL + match[2];\n\t      }\n\t    }\n\t  };\n\n\t  const output = utils.removePrefix(input, state);\n\t  let source = create(output);\n\n\t  if (source && opts.strictSlashes !== true) {\n\t    source += `${SLASH_LITERAL}?`;\n\t  }\n\n\t  return source;\n\t};\n\n\tparse_1$2 = parse;\n\treturn parse_1$2;\n}\n\nvar picomatch_1$1;\nvar hasRequiredPicomatch$3;\n\nfunction requirePicomatch$3 () {\n\tif (hasRequiredPicomatch$3) return picomatch_1$1;\n\thasRequiredPicomatch$3 = 1;\n\n\tconst path = require$$0$1;\n\tconst scan = /*@__PURE__*/ requireScan$1();\n\tconst parse = /*@__PURE__*/ requireParse$2();\n\tconst utils = /*@__PURE__*/ requireUtils$2();\n\tconst constants = /*@__PURE__*/ requireConstants$3();\n\tconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n\t/**\n\t * Creates a matcher function from one or more glob patterns. The\n\t * returned function takes a string to match as its first argument,\n\t * and returns true if the string is a match. The returned matcher\n\t * function also takes a boolean as the second argument that, when true,\n\t * returns an object with additional information.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch(glob[, options]);\n\t *\n\t * const isMatch = picomatch('*.!(*a)');\n\t * console.log(isMatch('a.a')); //=> false\n\t * console.log(isMatch('a.b')); //=> true\n\t * ```\n\t * @name picomatch\n\t * @param {String|Array} `globs` One or more glob patterns.\n\t * @param {Object=} `options`\n\t * @return {Function=} Returns a matcher function.\n\t * @api public\n\t */\n\n\tconst picomatch = (glob, options, returnState = false) => {\n\t  if (Array.isArray(glob)) {\n\t    const fns = glob.map(input => picomatch(input, options, returnState));\n\t    const arrayMatcher = str => {\n\t      for (const isMatch of fns) {\n\t        const state = isMatch(str);\n\t        if (state) return state;\n\t      }\n\t      return false;\n\t    };\n\t    return arrayMatcher;\n\t  }\n\n\t  const isState = isObject(glob) && glob.tokens && glob.input;\n\n\t  if (glob === '' || (typeof glob !== 'string' && !isState)) {\n\t    throw new TypeError('Expected pattern to be a non-empty string');\n\t  }\n\n\t  const opts = options || {};\n\t  const posix = utils.isWindows(options);\n\t  const regex = isState\n\t    ? picomatch.compileRe(glob, options)\n\t    : picomatch.makeRe(glob, options, false, true);\n\n\t  const state = regex.state;\n\t  delete regex.state;\n\n\t  let isIgnored = () => false;\n\t  if (opts.ignore) {\n\t    const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n\t    isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n\t  }\n\n\t  const matcher = (input, returnObject = false) => {\n\t    const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n\t    const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n\t    if (typeof opts.onResult === 'function') {\n\t      opts.onResult(result);\n\t    }\n\n\t    if (isMatch === false) {\n\t      result.isMatch = false;\n\t      return returnObject ? result : false;\n\t    }\n\n\t    if (isIgnored(input)) {\n\t      if (typeof opts.onIgnore === 'function') {\n\t        opts.onIgnore(result);\n\t      }\n\t      result.isMatch = false;\n\t      return returnObject ? result : false;\n\t    }\n\n\t    if (typeof opts.onMatch === 'function') {\n\t      opts.onMatch(result);\n\t    }\n\t    return returnObject ? result : true;\n\t  };\n\n\t  if (returnState) {\n\t    matcher.state = state;\n\t  }\n\n\t  return matcher;\n\t};\n\n\t/**\n\t * Test `input` with the given `regex`. This is used by the main\n\t * `picomatch()` function to test the input string.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch.test(input, regex[, options]);\n\t *\n\t * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n\t * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n\t * ```\n\t * @param {String} `input` String to test.\n\t * @param {RegExp} `regex`\n\t * @return {Object} Returns an object with matching info.\n\t * @api public\n\t */\n\n\tpicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n\t  if (typeof input !== 'string') {\n\t    throw new TypeError('Expected input to be a string');\n\t  }\n\n\t  if (input === '') {\n\t    return { isMatch: false, output: '' };\n\t  }\n\n\t  const opts = options || {};\n\t  const format = opts.format || (posix ? utils.toPosixSlashes : null);\n\t  let match = input === glob;\n\t  let output = (match && format) ? format(input) : input;\n\n\t  if (match === false) {\n\t    output = format ? format(input) : input;\n\t    match = output === glob;\n\t  }\n\n\t  if (match === false || opts.capture === true) {\n\t    if (opts.matchBase === true || opts.basename === true) {\n\t      match = picomatch.matchBase(input, regex, options, posix);\n\t    } else {\n\t      match = regex.exec(output);\n\t    }\n\t  }\n\n\t  return { isMatch: Boolean(match), match, output };\n\t};\n\n\t/**\n\t * Match the basename of a filepath.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch.matchBase(input, glob[, options]);\n\t * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n\t * ```\n\t * @param {String} `input` String to test.\n\t * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n\t * @return {Boolean}\n\t * @api public\n\t */\n\n\tpicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n\t  const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n\t  return regex.test(path.basename(input));\n\t};\n\n\t/**\n\t * Returns true if **any** of the given glob `patterns` match the specified `string`.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch.isMatch(string, patterns[, options]);\n\t *\n\t * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n\t * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n\t * ```\n\t * @param {String|Array} str The string to test.\n\t * @param {String|Array} patterns One or more glob patterns to use for matching.\n\t * @param {Object} [options] See available [options](#options).\n\t * @return {Boolean} Returns true if any patterns match `str`\n\t * @api public\n\t */\n\n\tpicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n\t/**\n\t * Parse a glob pattern to create the source string for a regular\n\t * expression.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * const result = picomatch.parse(pattern[, options]);\n\t * ```\n\t * @param {String} `pattern`\n\t * @param {Object} `options`\n\t * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n\t * @api public\n\t */\n\n\tpicomatch.parse = (pattern, options) => {\n\t  if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n\t  return parse(pattern, { ...options, fastpaths: false });\n\t};\n\n\t/**\n\t * Scan a glob pattern to separate the pattern into segments.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch.scan(input[, options]);\n\t *\n\t * const result = picomatch.scan('!./foo/*.js');\n\t * console.log(result);\n\t * { prefix: '!./',\n\t *   input: '!./foo/*.js',\n\t *   start: 3,\n\t *   base: 'foo',\n\t *   glob: '*.js',\n\t *   isBrace: false,\n\t *   isBracket: false,\n\t *   isGlob: true,\n\t *   isExtglob: false,\n\t *   isGlobstar: false,\n\t *   negated: true }\n\t * ```\n\t * @param {String} `input` Glob pattern to scan.\n\t * @param {Object} `options`\n\t * @return {Object} Returns an object with\n\t * @api public\n\t */\n\n\tpicomatch.scan = (input, options) => scan(input, options);\n\n\t/**\n\t * Compile a regular expression from the `state` object returned by the\n\t * [parse()](#parse) method.\n\t *\n\t * @param {Object} `state`\n\t * @param {Object} `options`\n\t * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n\t * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n\t * @return {RegExp}\n\t * @api public\n\t */\n\n\tpicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n\t  if (returnOutput === true) {\n\t    return state.output;\n\t  }\n\n\t  const opts = options || {};\n\t  const prepend = opts.contains ? '' : '^';\n\t  const append = opts.contains ? '' : '$';\n\n\t  let source = `${prepend}(?:${state.output})${append}`;\n\t  if (state && state.negated === true) {\n\t    source = `^(?!${source}).*$`;\n\t  }\n\n\t  const regex = picomatch.toRegex(source, options);\n\t  if (returnState === true) {\n\t    regex.state = state;\n\t  }\n\n\t  return regex;\n\t};\n\n\t/**\n\t * Create a regular expression from a parsed glob pattern.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * const state = picomatch.parse('*.js');\n\t * // picomatch.compileRe(state[, options]);\n\t *\n\t * console.log(picomatch.compileRe(state));\n\t * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n\t * ```\n\t * @param {String} `state` The object returned from the `.parse` method.\n\t * @param {Object} `options`\n\t * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n\t * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n\t * @return {RegExp} Returns a regex created from the given pattern.\n\t * @api public\n\t */\n\n\tpicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n\t  if (!input || typeof input !== 'string') {\n\t    throw new TypeError('Expected a non-empty string');\n\t  }\n\n\t  let parsed = { negated: false, fastpaths: true };\n\n\t  if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n\t    parsed.output = parse.fastpaths(input, options);\n\t  }\n\n\t  if (!parsed.output) {\n\t    parsed = parse(input, options);\n\t  }\n\n\t  return picomatch.compileRe(parsed, options, returnOutput, returnState);\n\t};\n\n\t/**\n\t * Create a regular expression from the given regex source string.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch.toRegex(source[, options]);\n\t *\n\t * const { output } = picomatch.parse('*.js');\n\t * console.log(picomatch.toRegex(output));\n\t * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n\t * ```\n\t * @param {String} `source` Regular expression source string.\n\t * @param {Object} `options`\n\t * @return {RegExp}\n\t * @api public\n\t */\n\n\tpicomatch.toRegex = (source, options) => {\n\t  try {\n\t    const opts = options || {};\n\t    return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n\t  } catch (err) {\n\t    if (options && options.debug === true) throw err;\n\t    return /$^/;\n\t  }\n\t};\n\n\t/**\n\t * Picomatch constants.\n\t * @return {Object}\n\t */\n\n\tpicomatch.constants = constants;\n\n\t/**\n\t * Expose \"picomatch\"\n\t */\n\n\tpicomatch_1$1 = picomatch;\n\treturn picomatch_1$1;\n}\n\nvar picomatch$1;\nvar hasRequiredPicomatch$2;\n\nfunction requirePicomatch$2 () {\n\tif (hasRequiredPicomatch$2) return picomatch$1;\n\thasRequiredPicomatch$2 = 1;\n\n\tpicomatch$1 = /*@__PURE__*/ requirePicomatch$3();\n\treturn picomatch$1;\n}\n\nvar readdirp_1;\nvar hasRequiredReaddirp;\n\nfunction requireReaddirp () {\n\tif (hasRequiredReaddirp) return readdirp_1;\n\thasRequiredReaddirp = 1;\n\n\tconst fs = require$$0$2;\n\tconst { Readable } = require$$1;\n\tconst sysPath = require$$0$1;\n\tconst { promisify } = require$$2;\n\tconst picomatch = /*@__PURE__*/ requirePicomatch$2();\n\n\tconst readdir = promisify(fs.readdir);\n\tconst stat = promisify(fs.stat);\n\tconst lstat = promisify(fs.lstat);\n\tconst realpath = promisify(fs.realpath);\n\n\t/**\n\t * @typedef {Object} EntryInfo\n\t * @property {String} path\n\t * @property {String} fullPath\n\t * @property {fs.Stats=} stats\n\t * @property {fs.Dirent=} dirent\n\t * @property {String} basename\n\t */\n\n\tconst BANG = '!';\n\tconst RECURSIVE_ERROR_CODE = 'READDIRP_RECURSIVE_ERROR';\n\tconst NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP', RECURSIVE_ERROR_CODE]);\n\tconst FILE_TYPE = 'files';\n\tconst DIR_TYPE = 'directories';\n\tconst FILE_DIR_TYPE = 'files_directories';\n\tconst EVERYTHING_TYPE = 'all';\n\tconst ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE];\n\n\tconst isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code);\n\tconst [maj, min] = process.versions.node.split('.').slice(0, 2).map(n => Number.parseInt(n, 10));\n\tconst wantBigintFsStats = process.platform === 'win32' && (maj > 10 || (maj === 10 && min >= 5));\n\n\tconst normalizeFilter = filter => {\n\t  if (filter === undefined) return;\n\t  if (typeof filter === 'function') return filter;\n\n\t  if (typeof filter === 'string') {\n\t    const glob = picomatch(filter.trim());\n\t    return entry => glob(entry.basename);\n\t  }\n\n\t  if (Array.isArray(filter)) {\n\t    const positive = [];\n\t    const negative = [];\n\t    for (const item of filter) {\n\t      const trimmed = item.trim();\n\t      if (trimmed.charAt(0) === BANG) {\n\t        negative.push(picomatch(trimmed.slice(1)));\n\t      } else {\n\t        positive.push(picomatch(trimmed));\n\t      }\n\t    }\n\n\t    if (negative.length > 0) {\n\t      if (positive.length > 0) {\n\t        return entry =>\n\t          positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename));\n\t      }\n\t      return entry => !negative.some(f => f(entry.basename));\n\t    }\n\t    return entry => positive.some(f => f(entry.basename));\n\t  }\n\t};\n\n\tclass ReaddirpStream extends Readable {\n\t  static get defaultOptions() {\n\t    return {\n\t      root: '.',\n\t      /* eslint-disable no-unused-vars */\n\t      fileFilter: (path) => true,\n\t      directoryFilter: (path) => true,\n\t      /* eslint-enable no-unused-vars */\n\t      type: FILE_TYPE,\n\t      lstat: false,\n\t      depth: 2147483648,\n\t      alwaysStat: false\n\t    };\n\t  }\n\n\t  constructor(options = {}) {\n\t    super({\n\t      objectMode: true,\n\t      autoDestroy: true,\n\t      highWaterMark: options.highWaterMark || 4096\n\t    });\n\t    const opts = { ...ReaddirpStream.defaultOptions, ...options };\n\t    const { root, type } = opts;\n\n\t    this._fileFilter = normalizeFilter(opts.fileFilter);\n\t    this._directoryFilter = normalizeFilter(opts.directoryFilter);\n\n\t    const statMethod = opts.lstat ? lstat : stat;\n\t    // Use bigint stats if it's windows and stat() supports options (node 10+).\n\t    if (wantBigintFsStats) {\n\t      this._stat = path => statMethod(path, { bigint: true });\n\t    } else {\n\t      this._stat = statMethod;\n\t    }\n\n\t    this._maxDepth = opts.depth;\n\t    this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n\t    this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n\t    this._wantsEverything = type === EVERYTHING_TYPE;\n\t    this._root = sysPath.resolve(root);\n\t    this._isDirent = ('Dirent' in fs) && !opts.alwaysStat;\n\t    this._statsProp = this._isDirent ? 'dirent' : 'stats';\n\t    this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent };\n\n\t    // Launch stream with one parent, the root dir.\n\t    this.parents = [this._exploreDir(root, 1)];\n\t    this.reading = false;\n\t    this.parent = undefined;\n\t  }\n\n\t  async _read(batch) {\n\t    if (this.reading) return;\n\t    this.reading = true;\n\n\t    try {\n\t      while (!this.destroyed && batch > 0) {\n\t        const { path, depth, files = [] } = this.parent || {};\n\n\t        if (files.length > 0) {\n\t          const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path));\n\t          for (const entry of await Promise.all(slice)) {\n\t            if (this.destroyed) return;\n\n\t            const entryType = await this._getEntryType(entry);\n\t            if (entryType === 'directory' && this._directoryFilter(entry)) {\n\t              if (depth <= this._maxDepth) {\n\t                this.parents.push(this._exploreDir(entry.fullPath, depth + 1));\n\t              }\n\n\t              if (this._wantsDir) {\n\t                this.push(entry);\n\t                batch--;\n\t              }\n\t            } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) {\n\t              if (this._wantsFile) {\n\t                this.push(entry);\n\t                batch--;\n\t              }\n\t            }\n\t          }\n\t        } else {\n\t          const parent = this.parents.pop();\n\t          if (!parent) {\n\t            this.push(null);\n\t            break;\n\t          }\n\t          this.parent = await parent;\n\t          if (this.destroyed) return;\n\t        }\n\t      }\n\t    } catch (error) {\n\t      this.destroy(error);\n\t    } finally {\n\t      this.reading = false;\n\t    }\n\t  }\n\n\t  async _exploreDir(path, depth) {\n\t    let files;\n\t    try {\n\t      files = await readdir(path, this._rdOptions);\n\t    } catch (error) {\n\t      this._onError(error);\n\t    }\n\t    return { files, depth, path };\n\t  }\n\n\t  async _formatEntry(dirent, path) {\n\t    let entry;\n\t    try {\n\t      const basename = this._isDirent ? dirent.name : dirent;\n\t      const fullPath = sysPath.resolve(sysPath.join(path, basename));\n\t      entry = { path: sysPath.relative(this._root, fullPath), fullPath, basename };\n\t      entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);\n\t    } catch (err) {\n\t      this._onError(err);\n\t    }\n\t    return entry;\n\t  }\n\n\t  _onError(err) {\n\t    if (isNormalFlowError(err) && !this.destroyed) {\n\t      this.emit('warn', err);\n\t    } else {\n\t      this.destroy(err);\n\t    }\n\t  }\n\n\t  async _getEntryType(entry) {\n\t    // entry may be undefined, because a warning or an error were emitted\n\t    // and the statsProp is undefined\n\t    const stats = entry && entry[this._statsProp];\n\t    if (!stats) {\n\t      return;\n\t    }\n\t    if (stats.isFile()) {\n\t      return 'file';\n\t    }\n\t    if (stats.isDirectory()) {\n\t      return 'directory';\n\t    }\n\t    if (stats && stats.isSymbolicLink()) {\n\t      const full = entry.fullPath;\n\t      try {\n\t        const entryRealPath = await realpath(full);\n\t        const entryRealPathStats = await lstat(entryRealPath);\n\t        if (entryRealPathStats.isFile()) {\n\t          return 'file';\n\t        }\n\t        if (entryRealPathStats.isDirectory()) {\n\t          const len = entryRealPath.length;\n\t          if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath.sep) {\n\t            const recursiveError = new Error(\n\t              `Circular symlink detected: \"${full}\" points to \"${entryRealPath}\"`\n\t            );\n\t            recursiveError.code = RECURSIVE_ERROR_CODE;\n\t            return this._onError(recursiveError);\n\t          }\n\t          return 'directory';\n\t        }\n\t      } catch (error) {\n\t        this._onError(error);\n\t      }\n\t    }\n\t  }\n\n\t  _includeAsFile(entry) {\n\t    const stats = entry && entry[this._statsProp];\n\n\t    return stats && this._wantsEverything && !stats.isDirectory();\n\t  }\n\t}\n\n\t/**\n\t * @typedef {Object} ReaddirpArguments\n\t * @property {Function=} fileFilter\n\t * @property {Function=} directoryFilter\n\t * @property {String=} type\n\t * @property {Number=} depth\n\t * @property {String=} root\n\t * @property {Boolean=} lstat\n\t * @property {Boolean=} bigint\n\t */\n\n\t/**\n\t * Main function which ends up calling readdirRec and reads all files and directories in given root recursively.\n\t * @param {String} root Root directory\n\t * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth\n\t */\n\tconst readdirp = (root, options = {}) => {\n\t  let type = options.entryType || options.type;\n\t  if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility\n\t  if (type) options.type = type;\n\t  if (!root) {\n\t    throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)');\n\t  } else if (typeof root !== 'string') {\n\t    throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)');\n\t  } else if (type && !ALL_TYPES.includes(type)) {\n\t    throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`);\n\t  }\n\n\t  options.root = root;\n\t  return new ReaddirpStream(options);\n\t};\n\n\tconst readdirpPromise = (root, options = {}) => {\n\t  return new Promise((resolve, reject) => {\n\t    const files = [];\n\t    readdirp(root, options)\n\t      .on('data', entry => files.push(entry))\n\t      .on('end', () => resolve(files))\n\t      .on('error', error => reject(error));\n\t  });\n\t};\n\n\treaddirp.promise = readdirpPromise;\n\treaddirp.ReaddirpStream = ReaddirpStream;\n\treaddirp.default = readdirp;\n\n\treaddirp_1 = readdirp;\n\treturn readdirp_1;\n}\n\nvar anymatch = {exports: {}};\n\nvar utils$1 = {};\n\nvar constants$2;\nvar hasRequiredConstants$2;\n\nfunction requireConstants$2 () {\n\tif (hasRequiredConstants$2) return constants$2;\n\thasRequiredConstants$2 = 1;\n\n\tconst path = require$$0$1;\n\tconst WIN_SLASH = '\\\\\\\\/';\n\tconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n\t/**\n\t * Posix glob regex\n\t */\n\n\tconst DOT_LITERAL = '\\\\.';\n\tconst PLUS_LITERAL = '\\\\+';\n\tconst QMARK_LITERAL = '\\\\?';\n\tconst SLASH_LITERAL = '\\\\/';\n\tconst ONE_CHAR = '(?=.)';\n\tconst QMARK = '[^/]';\n\tconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\n\tconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\n\tconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\n\tconst NO_DOT = `(?!${DOT_LITERAL})`;\n\tconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\n\tconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\n\tconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\n\tconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\n\tconst STAR = `${QMARK}*?`;\n\n\tconst POSIX_CHARS = {\n\t  DOT_LITERAL,\n\t  PLUS_LITERAL,\n\t  QMARK_LITERAL,\n\t  SLASH_LITERAL,\n\t  ONE_CHAR,\n\t  QMARK,\n\t  END_ANCHOR,\n\t  DOTS_SLASH,\n\t  NO_DOT,\n\t  NO_DOTS,\n\t  NO_DOT_SLASH,\n\t  NO_DOTS_SLASH,\n\t  QMARK_NO_DOT,\n\t  STAR,\n\t  START_ANCHOR\n\t};\n\n\t/**\n\t * Windows glob regex\n\t */\n\n\tconst WINDOWS_CHARS = {\n\t  ...POSIX_CHARS,\n\n\t  SLASH_LITERAL: `[${WIN_SLASH}]`,\n\t  QMARK: WIN_NO_SLASH,\n\t  STAR: `${WIN_NO_SLASH}*?`,\n\t  DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n\t  NO_DOT: `(?!${DOT_LITERAL})`,\n\t  NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n\t  NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n\t  NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n\t  QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n\t  START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n\t  END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n\t};\n\n\t/**\n\t * POSIX Bracket Regex\n\t */\n\n\tconst POSIX_REGEX_SOURCE = {\n\t  alnum: 'a-zA-Z0-9',\n\t  alpha: 'a-zA-Z',\n\t  ascii: '\\\\x00-\\\\x7F',\n\t  blank: ' \\\\t',\n\t  cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n\t  digit: '0-9',\n\t  graph: '\\\\x21-\\\\x7E',\n\t  lower: 'a-z',\n\t  print: '\\\\x20-\\\\x7E ',\n\t  punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n\t  space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n\t  upper: 'A-Z',\n\t  word: 'A-Za-z0-9_',\n\t  xdigit: 'A-Fa-f0-9'\n\t};\n\n\tconstants$2 = {\n\t  MAX_LENGTH: 1024 * 64,\n\t  POSIX_REGEX_SOURCE,\n\n\t  // regular expressions\n\t  REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n\t  REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n\t  REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n\t  REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n\t  REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n\t  REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n\t  // Replace globs with equivalent patterns to reduce parsing time.\n\t  REPLACEMENTS: {\n\t    '***': '*',\n\t    '**/**': '**',\n\t    '**/**/**': '**'\n\t  },\n\n\t  // Digits\n\t  CHAR_0: 48, /* 0 */\n\t  CHAR_9: 57, /* 9 */\n\n\t  // Alphabet chars.\n\t  CHAR_UPPERCASE_A: 65, /* A */\n\t  CHAR_LOWERCASE_A: 97, /* a */\n\t  CHAR_UPPERCASE_Z: 90, /* Z */\n\t  CHAR_LOWERCASE_Z: 122, /* z */\n\n\t  CHAR_LEFT_PARENTHESES: 40, /* ( */\n\t  CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n\t  CHAR_ASTERISK: 42, /* * */\n\n\t  // Non-alphabetic chars.\n\t  CHAR_AMPERSAND: 38, /* & */\n\t  CHAR_AT: 64, /* @ */\n\t  CHAR_BACKWARD_SLASH: 92, /* \\ */\n\t  CHAR_CARRIAGE_RETURN: 13, /* \\r */\n\t  CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n\t  CHAR_COLON: 58, /* : */\n\t  CHAR_COMMA: 44, /* , */\n\t  CHAR_DOT: 46, /* . */\n\t  CHAR_DOUBLE_QUOTE: 34, /* \" */\n\t  CHAR_EQUAL: 61, /* = */\n\t  CHAR_EXCLAMATION_MARK: 33, /* ! */\n\t  CHAR_FORM_FEED: 12, /* \\f */\n\t  CHAR_FORWARD_SLASH: 47, /* / */\n\t  CHAR_GRAVE_ACCENT: 96, /* ` */\n\t  CHAR_HASH: 35, /* # */\n\t  CHAR_HYPHEN_MINUS: 45, /* - */\n\t  CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n\t  CHAR_LEFT_CURLY_BRACE: 123, /* { */\n\t  CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n\t  CHAR_LINE_FEED: 10, /* \\n */\n\t  CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n\t  CHAR_PERCENT: 37, /* % */\n\t  CHAR_PLUS: 43, /* + */\n\t  CHAR_QUESTION_MARK: 63, /* ? */\n\t  CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n\t  CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n\t  CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n\t  CHAR_SEMICOLON: 59, /* ; */\n\t  CHAR_SINGLE_QUOTE: 39, /* ' */\n\t  CHAR_SPACE: 32, /*   */\n\t  CHAR_TAB: 9, /* \\t */\n\t  CHAR_UNDERSCORE: 95, /* _ */\n\t  CHAR_VERTICAL_LINE: 124, /* | */\n\t  CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n\t  SEP: path.sep,\n\n\t  /**\n\t   * Create EXTGLOB_CHARS\n\t   */\n\n\t  extglobChars(chars) {\n\t    return {\n\t      '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n\t      '?': { type: 'qmark', open: '(?:', close: ')?' },\n\t      '+': { type: 'plus', open: '(?:', close: ')+' },\n\t      '*': { type: 'star', open: '(?:', close: ')*' },\n\t      '@': { type: 'at', open: '(?:', close: ')' }\n\t    };\n\t  },\n\n\t  /**\n\t   * Create GLOB_CHARS\n\t   */\n\n\t  globChars(win32) {\n\t    return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n\t  }\n\t};\n\treturn constants$2;\n}\n\nvar hasRequiredUtils$1;\n\nfunction requireUtils$1 () {\n\tif (hasRequiredUtils$1) return utils$1;\n\thasRequiredUtils$1 = 1;\n\t(function (exports) {\n\n\t\tconst path = require$$0$1;\n\t\tconst win32 = process.platform === 'win32';\n\t\tconst {\n\t\t  REGEX_BACKSLASH,\n\t\t  REGEX_REMOVE_BACKSLASH,\n\t\t  REGEX_SPECIAL_CHARS,\n\t\t  REGEX_SPECIAL_CHARS_GLOBAL\n\t\t} = /*@__PURE__*/ requireConstants$2();\n\n\t\texports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\t\texports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\n\t\texports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\n\t\texports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\n\t\texports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\n\t\texports.removeBackslashes = str => {\n\t\t  return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n\t\t    return match === '\\\\' ? '' : match;\n\t\t  });\n\t\t};\n\n\t\texports.supportsLookbehinds = () => {\n\t\t  const segs = process.version.slice(1).split('.').map(Number);\n\t\t  if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n\t\t    return true;\n\t\t  }\n\t\t  return false;\n\t\t};\n\n\t\texports.isWindows = options => {\n\t\t  if (options && typeof options.windows === 'boolean') {\n\t\t    return options.windows;\n\t\t  }\n\t\t  return win32 === true || path.sep === '\\\\';\n\t\t};\n\n\t\texports.escapeLast = (input, char, lastIdx) => {\n\t\t  const idx = input.lastIndexOf(char, lastIdx);\n\t\t  if (idx === -1) return input;\n\t\t  if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n\t\t  return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n\t\t};\n\n\t\texports.removePrefix = (input, state = {}) => {\n\t\t  let output = input;\n\t\t  if (output.startsWith('./')) {\n\t\t    output = output.slice(2);\n\t\t    state.prefix = './';\n\t\t  }\n\t\t  return output;\n\t\t};\n\n\t\texports.wrapOutput = (input, state = {}, options = {}) => {\n\t\t  const prepend = options.contains ? '' : '^';\n\t\t  const append = options.contains ? '' : '$';\n\n\t\t  let output = `${prepend}(?:${input})${append}`;\n\t\t  if (state.negated === true) {\n\t\t    output = `(?:^(?!${output}).*$)`;\n\t\t  }\n\t\t  return output;\n\t\t}; \n\t} (utils$1));\n\treturn utils$1;\n}\n\nvar scan_1;\nvar hasRequiredScan;\n\nfunction requireScan () {\n\tif (hasRequiredScan) return scan_1;\n\thasRequiredScan = 1;\n\n\tconst utils = /*@__PURE__*/ requireUtils$1();\n\tconst {\n\t  CHAR_ASTERISK,             /* * */\n\t  CHAR_AT,                   /* @ */\n\t  CHAR_BACKWARD_SLASH,       /* \\ */\n\t  CHAR_COMMA,                /* , */\n\t  CHAR_DOT,                  /* . */\n\t  CHAR_EXCLAMATION_MARK,     /* ! */\n\t  CHAR_FORWARD_SLASH,        /* / */\n\t  CHAR_LEFT_CURLY_BRACE,     /* { */\n\t  CHAR_LEFT_PARENTHESES,     /* ( */\n\t  CHAR_LEFT_SQUARE_BRACKET,  /* [ */\n\t  CHAR_PLUS,                 /* + */\n\t  CHAR_QUESTION_MARK,        /* ? */\n\t  CHAR_RIGHT_CURLY_BRACE,    /* } */\n\t  CHAR_RIGHT_PARENTHESES,    /* ) */\n\t  CHAR_RIGHT_SQUARE_BRACKET  /* ] */\n\t} = /*@__PURE__*/ requireConstants$2();\n\n\tconst isPathSeparator = code => {\n\t  return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n\t};\n\n\tconst depth = token => {\n\t  if (token.isPrefix !== true) {\n\t    token.depth = token.isGlobstar ? Infinity : 1;\n\t  }\n\t};\n\n\t/**\n\t * Quickly scans a glob pattern and returns an object with a handful of\n\t * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n\t * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n\t * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n\t *\n\t * ```js\n\t * const pm = require('picomatch');\n\t * console.log(pm.scan('foo/bar/*.js'));\n\t * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n\t * ```\n\t * @param {String} `str`\n\t * @param {Object} `options`\n\t * @return {Object} Returns an object with tokens and regex source string.\n\t * @api public\n\t */\n\n\tconst scan = (input, options) => {\n\t  const opts = options || {};\n\n\t  const length = input.length - 1;\n\t  const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n\t  const slashes = [];\n\t  const tokens = [];\n\t  const parts = [];\n\n\t  let str = input;\n\t  let index = -1;\n\t  let start = 0;\n\t  let lastIndex = 0;\n\t  let isBrace = false;\n\t  let isBracket = false;\n\t  let isGlob = false;\n\t  let isExtglob = false;\n\t  let isGlobstar = false;\n\t  let braceEscaped = false;\n\t  let backslashes = false;\n\t  let negated = false;\n\t  let negatedExtglob = false;\n\t  let finished = false;\n\t  let braces = 0;\n\t  let prev;\n\t  let code;\n\t  let token = { value: '', depth: 0, isGlob: false };\n\n\t  const eos = () => index >= length;\n\t  const peek = () => str.charCodeAt(index + 1);\n\t  const advance = () => {\n\t    prev = code;\n\t    return str.charCodeAt(++index);\n\t  };\n\n\t  while (index < length) {\n\t    code = advance();\n\t    let next;\n\n\t    if (code === CHAR_BACKWARD_SLASH) {\n\t      backslashes = token.backslashes = true;\n\t      code = advance();\n\n\t      if (code === CHAR_LEFT_CURLY_BRACE) {\n\t        braceEscaped = true;\n\t      }\n\t      continue;\n\t    }\n\n\t    if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n\t      braces++;\n\n\t      while (eos() !== true && (code = advance())) {\n\t        if (code === CHAR_BACKWARD_SLASH) {\n\t          backslashes = token.backslashes = true;\n\t          advance();\n\t          continue;\n\t        }\n\n\t        if (code === CHAR_LEFT_CURLY_BRACE) {\n\t          braces++;\n\t          continue;\n\t        }\n\n\t        if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n\t          isBrace = token.isBrace = true;\n\t          isGlob = token.isGlob = true;\n\t          finished = true;\n\n\t          if (scanToEnd === true) {\n\t            continue;\n\t          }\n\n\t          break;\n\t        }\n\n\t        if (braceEscaped !== true && code === CHAR_COMMA) {\n\t          isBrace = token.isBrace = true;\n\t          isGlob = token.isGlob = true;\n\t          finished = true;\n\n\t          if (scanToEnd === true) {\n\t            continue;\n\t          }\n\n\t          break;\n\t        }\n\n\t        if (code === CHAR_RIGHT_CURLY_BRACE) {\n\t          braces--;\n\n\t          if (braces === 0) {\n\t            braceEscaped = false;\n\t            isBrace = token.isBrace = true;\n\t            finished = true;\n\t            break;\n\t          }\n\t        }\n\t      }\n\n\t      if (scanToEnd === true) {\n\t        continue;\n\t      }\n\n\t      break;\n\t    }\n\n\t    if (code === CHAR_FORWARD_SLASH) {\n\t      slashes.push(index);\n\t      tokens.push(token);\n\t      token = { value: '', depth: 0, isGlob: false };\n\n\t      if (finished === true) continue;\n\t      if (prev === CHAR_DOT && index === (start + 1)) {\n\t        start += 2;\n\t        continue;\n\t      }\n\n\t      lastIndex = index + 1;\n\t      continue;\n\t    }\n\n\t    if (opts.noext !== true) {\n\t      const isExtglobChar = code === CHAR_PLUS\n\t        || code === CHAR_AT\n\t        || code === CHAR_ASTERISK\n\t        || code === CHAR_QUESTION_MARK\n\t        || code === CHAR_EXCLAMATION_MARK;\n\n\t      if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n\t        isGlob = token.isGlob = true;\n\t        isExtglob = token.isExtglob = true;\n\t        finished = true;\n\t        if (code === CHAR_EXCLAMATION_MARK && index === start) {\n\t          negatedExtglob = true;\n\t        }\n\n\t        if (scanToEnd === true) {\n\t          while (eos() !== true && (code = advance())) {\n\t            if (code === CHAR_BACKWARD_SLASH) {\n\t              backslashes = token.backslashes = true;\n\t              code = advance();\n\t              continue;\n\t            }\n\n\t            if (code === CHAR_RIGHT_PARENTHESES) {\n\t              isGlob = token.isGlob = true;\n\t              finished = true;\n\t              break;\n\t            }\n\t          }\n\t          continue;\n\t        }\n\t        break;\n\t      }\n\t    }\n\n\t    if (code === CHAR_ASTERISK) {\n\t      if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n\t      isGlob = token.isGlob = true;\n\t      finished = true;\n\n\t      if (scanToEnd === true) {\n\t        continue;\n\t      }\n\t      break;\n\t    }\n\n\t    if (code === CHAR_QUESTION_MARK) {\n\t      isGlob = token.isGlob = true;\n\t      finished = true;\n\n\t      if (scanToEnd === true) {\n\t        continue;\n\t      }\n\t      break;\n\t    }\n\n\t    if (code === CHAR_LEFT_SQUARE_BRACKET) {\n\t      while (eos() !== true && (next = advance())) {\n\t        if (next === CHAR_BACKWARD_SLASH) {\n\t          backslashes = token.backslashes = true;\n\t          advance();\n\t          continue;\n\t        }\n\n\t        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n\t          isBracket = token.isBracket = true;\n\t          isGlob = token.isGlob = true;\n\t          finished = true;\n\t          break;\n\t        }\n\t      }\n\n\t      if (scanToEnd === true) {\n\t        continue;\n\t      }\n\n\t      break;\n\t    }\n\n\t    if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n\t      negated = token.negated = true;\n\t      start++;\n\t      continue;\n\t    }\n\n\t    if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n\t      isGlob = token.isGlob = true;\n\n\t      if (scanToEnd === true) {\n\t        while (eos() !== true && (code = advance())) {\n\t          if (code === CHAR_LEFT_PARENTHESES) {\n\t            backslashes = token.backslashes = true;\n\t            code = advance();\n\t            continue;\n\t          }\n\n\t          if (code === CHAR_RIGHT_PARENTHESES) {\n\t            finished = true;\n\t            break;\n\t          }\n\t        }\n\t        continue;\n\t      }\n\t      break;\n\t    }\n\n\t    if (isGlob === true) {\n\t      finished = true;\n\n\t      if (scanToEnd === true) {\n\t        continue;\n\t      }\n\n\t      break;\n\t    }\n\t  }\n\n\t  if (opts.noext === true) {\n\t    isExtglob = false;\n\t    isGlob = false;\n\t  }\n\n\t  let base = str;\n\t  let prefix = '';\n\t  let glob = '';\n\n\t  if (start > 0) {\n\t    prefix = str.slice(0, start);\n\t    str = str.slice(start);\n\t    lastIndex -= start;\n\t  }\n\n\t  if (base && isGlob === true && lastIndex > 0) {\n\t    base = str.slice(0, lastIndex);\n\t    glob = str.slice(lastIndex);\n\t  } else if (isGlob === true) {\n\t    base = '';\n\t    glob = str;\n\t  } else {\n\t    base = str;\n\t  }\n\n\t  if (base && base !== '' && base !== '/' && base !== str) {\n\t    if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n\t      base = base.slice(0, -1);\n\t    }\n\t  }\n\n\t  if (opts.unescape === true) {\n\t    if (glob) glob = utils.removeBackslashes(glob);\n\n\t    if (base && backslashes === true) {\n\t      base = utils.removeBackslashes(base);\n\t    }\n\t  }\n\n\t  const state = {\n\t    prefix,\n\t    input,\n\t    start,\n\t    base,\n\t    glob,\n\t    isBrace,\n\t    isBracket,\n\t    isGlob,\n\t    isExtglob,\n\t    isGlobstar,\n\t    negated,\n\t    negatedExtglob\n\t  };\n\n\t  if (opts.tokens === true) {\n\t    state.maxDepth = 0;\n\t    if (!isPathSeparator(code)) {\n\t      tokens.push(token);\n\t    }\n\t    state.tokens = tokens;\n\t  }\n\n\t  if (opts.parts === true || opts.tokens === true) {\n\t    let prevIndex;\n\n\t    for (let idx = 0; idx < slashes.length; idx++) {\n\t      const n = prevIndex ? prevIndex + 1 : start;\n\t      const i = slashes[idx];\n\t      const value = input.slice(n, i);\n\t      if (opts.tokens) {\n\t        if (idx === 0 && start !== 0) {\n\t          tokens[idx].isPrefix = true;\n\t          tokens[idx].value = prefix;\n\t        } else {\n\t          tokens[idx].value = value;\n\t        }\n\t        depth(tokens[idx]);\n\t        state.maxDepth += tokens[idx].depth;\n\t      }\n\t      if (idx !== 0 || value !== '') {\n\t        parts.push(value);\n\t      }\n\t      prevIndex = i;\n\t    }\n\n\t    if (prevIndex && prevIndex + 1 < input.length) {\n\t      const value = input.slice(prevIndex + 1);\n\t      parts.push(value);\n\n\t      if (opts.tokens) {\n\t        tokens[tokens.length - 1].value = value;\n\t        depth(tokens[tokens.length - 1]);\n\t        state.maxDepth += tokens[tokens.length - 1].depth;\n\t      }\n\t    }\n\n\t    state.slashes = slashes;\n\t    state.parts = parts;\n\t  }\n\n\t  return state;\n\t};\n\n\tscan_1 = scan;\n\treturn scan_1;\n}\n\nvar parse_1$1;\nvar hasRequiredParse$1;\n\nfunction requireParse$1 () {\n\tif (hasRequiredParse$1) return parse_1$1;\n\thasRequiredParse$1 = 1;\n\n\tconst constants = /*@__PURE__*/ requireConstants$2();\n\tconst utils = /*@__PURE__*/ requireUtils$1();\n\n\t/**\n\t * Constants\n\t */\n\n\tconst {\n\t  MAX_LENGTH,\n\t  POSIX_REGEX_SOURCE,\n\t  REGEX_NON_SPECIAL_CHARS,\n\t  REGEX_SPECIAL_CHARS_BACKREF,\n\t  REPLACEMENTS\n\t} = constants;\n\n\t/**\n\t * Helpers\n\t */\n\n\tconst expandRange = (args, options) => {\n\t  if (typeof options.expandRange === 'function') {\n\t    return options.expandRange(...args, options);\n\t  }\n\n\t  args.sort();\n\t  const value = `[${args.join('-')}]`;\n\n\t  return value;\n\t};\n\n\t/**\n\t * Create the message for a syntax error\n\t */\n\n\tconst syntaxError = (type, char) => {\n\t  return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n\t};\n\n\t/**\n\t * Parse the given input string.\n\t * @param {String} input\n\t * @param {Object} options\n\t * @return {Object}\n\t */\n\n\tconst parse = (input, options) => {\n\t  if (typeof input !== 'string') {\n\t    throw new TypeError('Expected a string');\n\t  }\n\n\t  input = REPLACEMENTS[input] || input;\n\n\t  const opts = { ...options };\n\t  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n\t  let len = input.length;\n\t  if (len > max) {\n\t    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n\t  }\n\n\t  const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n\t  const tokens = [bos];\n\n\t  const capture = opts.capture ? '' : '?:';\n\t  const win32 = utils.isWindows(options);\n\n\t  // create constants based on platform, for windows or posix\n\t  const PLATFORM_CHARS = constants.globChars(win32);\n\t  const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n\t  const {\n\t    DOT_LITERAL,\n\t    PLUS_LITERAL,\n\t    SLASH_LITERAL,\n\t    ONE_CHAR,\n\t    DOTS_SLASH,\n\t    NO_DOT,\n\t    NO_DOT_SLASH,\n\t    NO_DOTS_SLASH,\n\t    QMARK,\n\t    QMARK_NO_DOT,\n\t    STAR,\n\t    START_ANCHOR\n\t  } = PLATFORM_CHARS;\n\n\t  const globstar = opts => {\n\t    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n\t  };\n\n\t  const nodot = opts.dot ? '' : NO_DOT;\n\t  const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n\t  let star = opts.bash === true ? globstar(opts) : STAR;\n\n\t  if (opts.capture) {\n\t    star = `(${star})`;\n\t  }\n\n\t  // minimatch options support\n\t  if (typeof opts.noext === 'boolean') {\n\t    opts.noextglob = opts.noext;\n\t  }\n\n\t  const state = {\n\t    input,\n\t    index: -1,\n\t    start: 0,\n\t    dot: opts.dot === true,\n\t    consumed: '',\n\t    output: '',\n\t    prefix: '',\n\t    backtrack: false,\n\t    negated: false,\n\t    brackets: 0,\n\t    braces: 0,\n\t    parens: 0,\n\t    quotes: 0,\n\t    globstar: false,\n\t    tokens\n\t  };\n\n\t  input = utils.removePrefix(input, state);\n\t  len = input.length;\n\n\t  const extglobs = [];\n\t  const braces = [];\n\t  const stack = [];\n\t  let prev = bos;\n\t  let value;\n\n\t  /**\n\t   * Tokenizing helpers\n\t   */\n\n\t  const eos = () => state.index === len - 1;\n\t  const peek = state.peek = (n = 1) => input[state.index + n];\n\t  const advance = state.advance = () => input[++state.index] || '';\n\t  const remaining = () => input.slice(state.index + 1);\n\t  const consume = (value = '', num = 0) => {\n\t    state.consumed += value;\n\t    state.index += num;\n\t  };\n\n\t  const append = token => {\n\t    state.output += token.output != null ? token.output : token.value;\n\t    consume(token.value);\n\t  };\n\n\t  const negate = () => {\n\t    let count = 1;\n\n\t    while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n\t      advance();\n\t      state.start++;\n\t      count++;\n\t    }\n\n\t    if (count % 2 === 0) {\n\t      return false;\n\t    }\n\n\t    state.negated = true;\n\t    state.start++;\n\t    return true;\n\t  };\n\n\t  const increment = type => {\n\t    state[type]++;\n\t    stack.push(type);\n\t  };\n\n\t  const decrement = type => {\n\t    state[type]--;\n\t    stack.pop();\n\t  };\n\n\t  /**\n\t   * Push tokens onto the tokens array. This helper speeds up\n\t   * tokenizing by 1) helping us avoid backtracking as much as possible,\n\t   * and 2) helping us avoid creating extra tokens when consecutive\n\t   * characters are plain text. This improves performance and simplifies\n\t   * lookbehinds.\n\t   */\n\n\t  const push = tok => {\n\t    if (prev.type === 'globstar') {\n\t      const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n\t      const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n\t      if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n\t        state.output = state.output.slice(0, -prev.output.length);\n\t        prev.type = 'star';\n\t        prev.value = '*';\n\t        prev.output = star;\n\t        state.output += prev.output;\n\t      }\n\t    }\n\n\t    if (extglobs.length && tok.type !== 'paren') {\n\t      extglobs[extglobs.length - 1].inner += tok.value;\n\t    }\n\n\t    if (tok.value || tok.output) append(tok);\n\t    if (prev && prev.type === 'text' && tok.type === 'text') {\n\t      prev.value += tok.value;\n\t      prev.output = (prev.output || '') + tok.value;\n\t      return;\n\t    }\n\n\t    tok.prev = prev;\n\t    tokens.push(tok);\n\t    prev = tok;\n\t  };\n\n\t  const extglobOpen = (type, value) => {\n\t    const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n\t    token.prev = prev;\n\t    token.parens = state.parens;\n\t    token.output = state.output;\n\t    const output = (opts.capture ? '(' : '') + token.open;\n\n\t    increment('parens');\n\t    push({ type, value, output: state.output ? '' : ONE_CHAR });\n\t    push({ type: 'paren', extglob: true, value: advance(), output });\n\t    extglobs.push(token);\n\t  };\n\n\t  const extglobClose = token => {\n\t    let output = token.close + (opts.capture ? ')' : '');\n\t    let rest;\n\n\t    if (token.type === 'negate') {\n\t      let extglobStar = star;\n\n\t      if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n\t        extglobStar = globstar(opts);\n\t      }\n\n\t      if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n\t        output = token.close = `)$))${extglobStar}`;\n\t      }\n\n\t      if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n\t        // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n\t        // In this case, we need to parse the string and use it in the output of the original pattern.\n\t        // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n\t        //\n\t        // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n\t        const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n\t        output = token.close = `)${expression})${extglobStar})`;\n\t      }\n\n\t      if (token.prev.type === 'bos') {\n\t        state.negatedExtglob = true;\n\t      }\n\t    }\n\n\t    push({ type: 'paren', extglob: true, value, output });\n\t    decrement('parens');\n\t  };\n\n\t  /**\n\t   * Fast paths\n\t   */\n\n\t  if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n\t    let backslashes = false;\n\n\t    let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n\t      if (first === '\\\\') {\n\t        backslashes = true;\n\t        return m;\n\t      }\n\n\t      if (first === '?') {\n\t        if (esc) {\n\t          return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n\t        }\n\t        if (index === 0) {\n\t          return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n\t        }\n\t        return QMARK.repeat(chars.length);\n\t      }\n\n\t      if (first === '.') {\n\t        return DOT_LITERAL.repeat(chars.length);\n\t      }\n\n\t      if (first === '*') {\n\t        if (esc) {\n\t          return esc + first + (rest ? star : '');\n\t        }\n\t        return star;\n\t      }\n\t      return esc ? m : `\\\\${m}`;\n\t    });\n\n\t    if (backslashes === true) {\n\t      if (opts.unescape === true) {\n\t        output = output.replace(/\\\\/g, '');\n\t      } else {\n\t        output = output.replace(/\\\\+/g, m => {\n\t          return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n\t        });\n\t      }\n\t    }\n\n\t    if (output === input && opts.contains === true) {\n\t      state.output = input;\n\t      return state;\n\t    }\n\n\t    state.output = utils.wrapOutput(output, state, options);\n\t    return state;\n\t  }\n\n\t  /**\n\t   * Tokenize input until we reach end-of-string\n\t   */\n\n\t  while (!eos()) {\n\t    value = advance();\n\n\t    if (value === '\\u0000') {\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Escaped characters\n\t     */\n\n\t    if (value === '\\\\') {\n\t      const next = peek();\n\n\t      if (next === '/' && opts.bash !== true) {\n\t        continue;\n\t      }\n\n\t      if (next === '.' || next === ';') {\n\t        continue;\n\t      }\n\n\t      if (!next) {\n\t        value += '\\\\';\n\t        push({ type: 'text', value });\n\t        continue;\n\t      }\n\n\t      // collapse slashes to reduce potential for exploits\n\t      const match = /^\\\\+/.exec(remaining());\n\t      let slashes = 0;\n\n\t      if (match && match[0].length > 2) {\n\t        slashes = match[0].length;\n\t        state.index += slashes;\n\t        if (slashes % 2 !== 0) {\n\t          value += '\\\\';\n\t        }\n\t      }\n\n\t      if (opts.unescape === true) {\n\t        value = advance();\n\t      } else {\n\t        value += advance();\n\t      }\n\n\t      if (state.brackets === 0) {\n\t        push({ type: 'text', value });\n\t        continue;\n\t      }\n\t    }\n\n\t    /**\n\t     * If we're inside a regex character class, continue\n\t     * until we reach the closing bracket.\n\t     */\n\n\t    if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n\t      if (opts.posix !== false && value === ':') {\n\t        const inner = prev.value.slice(1);\n\t        if (inner.includes('[')) {\n\t          prev.posix = true;\n\n\t          if (inner.includes(':')) {\n\t            const idx = prev.value.lastIndexOf('[');\n\t            const pre = prev.value.slice(0, idx);\n\t            const rest = prev.value.slice(idx + 2);\n\t            const posix = POSIX_REGEX_SOURCE[rest];\n\t            if (posix) {\n\t              prev.value = pre + posix;\n\t              state.backtrack = true;\n\t              advance();\n\n\t              if (!bos.output && tokens.indexOf(prev) === 1) {\n\t                bos.output = ONE_CHAR;\n\t              }\n\t              continue;\n\t            }\n\t          }\n\t        }\n\t      }\n\n\t      if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n\t        value = `\\\\${value}`;\n\t      }\n\n\t      if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n\t        value = `\\\\${value}`;\n\t      }\n\n\t      if (opts.posix === true && value === '!' && prev.value === '[') {\n\t        value = '^';\n\t      }\n\n\t      prev.value += value;\n\t      append({ value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * If we're inside a quoted string, continue\n\t     * until we reach the closing double quote.\n\t     */\n\n\t    if (state.quotes === 1 && value !== '\"') {\n\t      value = utils.escapeRegex(value);\n\t      prev.value += value;\n\t      append({ value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Double quotes\n\t     */\n\n\t    if (value === '\"') {\n\t      state.quotes = state.quotes === 1 ? 0 : 1;\n\t      if (opts.keepQuotes === true) {\n\t        push({ type: 'text', value });\n\t      }\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Parentheses\n\t     */\n\n\t    if (value === '(') {\n\t      increment('parens');\n\t      push({ type: 'paren', value });\n\t      continue;\n\t    }\n\n\t    if (value === ')') {\n\t      if (state.parens === 0 && opts.strictBrackets === true) {\n\t        throw new SyntaxError(syntaxError('opening', '('));\n\t      }\n\n\t      const extglob = extglobs[extglobs.length - 1];\n\t      if (extglob && state.parens === extglob.parens + 1) {\n\t        extglobClose(extglobs.pop());\n\t        continue;\n\t      }\n\n\t      push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n\t      decrement('parens');\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Square brackets\n\t     */\n\n\t    if (value === '[') {\n\t      if (opts.nobracket === true || !remaining().includes(']')) {\n\t        if (opts.nobracket !== true && opts.strictBrackets === true) {\n\t          throw new SyntaxError(syntaxError('closing', ']'));\n\t        }\n\n\t        value = `\\\\${value}`;\n\t      } else {\n\t        increment('brackets');\n\t      }\n\n\t      push({ type: 'bracket', value });\n\t      continue;\n\t    }\n\n\t    if (value === ']') {\n\t      if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n\t        push({ type: 'text', value, output: `\\\\${value}` });\n\t        continue;\n\t      }\n\n\t      if (state.brackets === 0) {\n\t        if (opts.strictBrackets === true) {\n\t          throw new SyntaxError(syntaxError('opening', '['));\n\t        }\n\n\t        push({ type: 'text', value, output: `\\\\${value}` });\n\t        continue;\n\t      }\n\n\t      decrement('brackets');\n\n\t      const prevValue = prev.value.slice(1);\n\t      if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n\t        value = `/${value}`;\n\t      }\n\n\t      prev.value += value;\n\t      append({ value });\n\n\t      // when literal brackets are explicitly disabled\n\t      // assume we should match with a regex character class\n\t      if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n\t        continue;\n\t      }\n\n\t      const escaped = utils.escapeRegex(prev.value);\n\t      state.output = state.output.slice(0, -prev.value.length);\n\n\t      // when literal brackets are explicitly enabled\n\t      // assume we should escape the brackets to match literal characters\n\t      if (opts.literalBrackets === true) {\n\t        state.output += escaped;\n\t        prev.value = escaped;\n\t        continue;\n\t      }\n\n\t      // when the user specifies nothing, try to match both\n\t      prev.value = `(${capture}${escaped}|${prev.value})`;\n\t      state.output += prev.value;\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Braces\n\t     */\n\n\t    if (value === '{' && opts.nobrace !== true) {\n\t      increment('braces');\n\n\t      const open = {\n\t        type: 'brace',\n\t        value,\n\t        output: '(',\n\t        outputIndex: state.output.length,\n\t        tokensIndex: state.tokens.length\n\t      };\n\n\t      braces.push(open);\n\t      push(open);\n\t      continue;\n\t    }\n\n\t    if (value === '}') {\n\t      const brace = braces[braces.length - 1];\n\n\t      if (opts.nobrace === true || !brace) {\n\t        push({ type: 'text', value, output: value });\n\t        continue;\n\t      }\n\n\t      let output = ')';\n\n\t      if (brace.dots === true) {\n\t        const arr = tokens.slice();\n\t        const range = [];\n\n\t        for (let i = arr.length - 1; i >= 0; i--) {\n\t          tokens.pop();\n\t          if (arr[i].type === 'brace') {\n\t            break;\n\t          }\n\t          if (arr[i].type !== 'dots') {\n\t            range.unshift(arr[i].value);\n\t          }\n\t        }\n\n\t        output = expandRange(range, opts);\n\t        state.backtrack = true;\n\t      }\n\n\t      if (brace.comma !== true && brace.dots !== true) {\n\t        const out = state.output.slice(0, brace.outputIndex);\n\t        const toks = state.tokens.slice(brace.tokensIndex);\n\t        brace.value = brace.output = '\\\\{';\n\t        value = output = '\\\\}';\n\t        state.output = out;\n\t        for (const t of toks) {\n\t          state.output += (t.output || t.value);\n\t        }\n\t      }\n\n\t      push({ type: 'brace', value, output });\n\t      decrement('braces');\n\t      braces.pop();\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Pipes\n\t     */\n\n\t    if (value === '|') {\n\t      if (extglobs.length > 0) {\n\t        extglobs[extglobs.length - 1].conditions++;\n\t      }\n\t      push({ type: 'text', value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Commas\n\t     */\n\n\t    if (value === ',') {\n\t      let output = value;\n\n\t      const brace = braces[braces.length - 1];\n\t      if (brace && stack[stack.length - 1] === 'braces') {\n\t        brace.comma = true;\n\t        output = '|';\n\t      }\n\n\t      push({ type: 'comma', value, output });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Slashes\n\t     */\n\n\t    if (value === '/') {\n\t      // if the beginning of the glob is \"./\", advance the start\n\t      // to the current index, and don't add the \"./\" characters\n\t      // to the state. This greatly simplifies lookbehinds when\n\t      // checking for BOS characters like \"!\" and \".\" (not \"./\")\n\t      if (prev.type === 'dot' && state.index === state.start + 1) {\n\t        state.start = state.index + 1;\n\t        state.consumed = '';\n\t        state.output = '';\n\t        tokens.pop();\n\t        prev = bos; // reset \"prev\" to the first token\n\t        continue;\n\t      }\n\n\t      push({ type: 'slash', value, output: SLASH_LITERAL });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Dots\n\t     */\n\n\t    if (value === '.') {\n\t      if (state.braces > 0 && prev.type === 'dot') {\n\t        if (prev.value === '.') prev.output = DOT_LITERAL;\n\t        const brace = braces[braces.length - 1];\n\t        prev.type = 'dots';\n\t        prev.output += value;\n\t        prev.value += value;\n\t        brace.dots = true;\n\t        continue;\n\t      }\n\n\t      if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n\t        push({ type: 'text', value, output: DOT_LITERAL });\n\t        continue;\n\t      }\n\n\t      push({ type: 'dot', value, output: DOT_LITERAL });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Question marks\n\t     */\n\n\t    if (value === '?') {\n\t      const isGroup = prev && prev.value === '(';\n\t      if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n\t        extglobOpen('qmark', value);\n\t        continue;\n\t      }\n\n\t      if (prev && prev.type === 'paren') {\n\t        const next = peek();\n\t        let output = value;\n\n\t        if (next === '<' && !utils.supportsLookbehinds()) {\n\t          throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n\t        }\n\n\t        if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n\t          output = `\\\\${value}`;\n\t        }\n\n\t        push({ type: 'text', value, output });\n\t        continue;\n\t      }\n\n\t      if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n\t        push({ type: 'qmark', value, output: QMARK_NO_DOT });\n\t        continue;\n\t      }\n\n\t      push({ type: 'qmark', value, output: QMARK });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Exclamation\n\t     */\n\n\t    if (value === '!') {\n\t      if (opts.noextglob !== true && peek() === '(') {\n\t        if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n\t          extglobOpen('negate', value);\n\t          continue;\n\t        }\n\t      }\n\n\t      if (opts.nonegate !== true && state.index === 0) {\n\t        negate();\n\t        continue;\n\t      }\n\t    }\n\n\t    /**\n\t     * Plus\n\t     */\n\n\t    if (value === '+') {\n\t      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n\t        extglobOpen('plus', value);\n\t        continue;\n\t      }\n\n\t      if ((prev && prev.value === '(') || opts.regex === false) {\n\t        push({ type: 'plus', value, output: PLUS_LITERAL });\n\t        continue;\n\t      }\n\n\t      if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n\t        push({ type: 'plus', value });\n\t        continue;\n\t      }\n\n\t      push({ type: 'plus', value: PLUS_LITERAL });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Plain text\n\t     */\n\n\t    if (value === '@') {\n\t      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n\t        push({ type: 'at', extglob: true, value, output: '' });\n\t        continue;\n\t      }\n\n\t      push({ type: 'text', value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Plain text\n\t     */\n\n\t    if (value !== '*') {\n\t      if (value === '$' || value === '^') {\n\t        value = `\\\\${value}`;\n\t      }\n\n\t      const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n\t      if (match) {\n\t        value += match[0];\n\t        state.index += match[0].length;\n\t      }\n\n\t      push({ type: 'text', value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Stars\n\t     */\n\n\t    if (prev && (prev.type === 'globstar' || prev.star === true)) {\n\t      prev.type = 'star';\n\t      prev.star = true;\n\t      prev.value += value;\n\t      prev.output = star;\n\t      state.backtrack = true;\n\t      state.globstar = true;\n\t      consume(value);\n\t      continue;\n\t    }\n\n\t    let rest = remaining();\n\t    if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n\t      extglobOpen('star', value);\n\t      continue;\n\t    }\n\n\t    if (prev.type === 'star') {\n\t      if (opts.noglobstar === true) {\n\t        consume(value);\n\t        continue;\n\t      }\n\n\t      const prior = prev.prev;\n\t      const before = prior.prev;\n\t      const isStart = prior.type === 'slash' || prior.type === 'bos';\n\t      const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n\t      if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n\t        push({ type: 'star', value, output: '' });\n\t        continue;\n\t      }\n\n\t      const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n\t      const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n\t      if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n\t        push({ type: 'star', value, output: '' });\n\t        continue;\n\t      }\n\n\t      // strip consecutive `/**/`\n\t      while (rest.slice(0, 3) === '/**') {\n\t        const after = input[state.index + 4];\n\t        if (after && after !== '/') {\n\t          break;\n\t        }\n\t        rest = rest.slice(3);\n\t        consume('/**', 3);\n\t      }\n\n\t      if (prior.type === 'bos' && eos()) {\n\t        prev.type = 'globstar';\n\t        prev.value += value;\n\t        prev.output = globstar(opts);\n\t        state.output = prev.output;\n\t        state.globstar = true;\n\t        consume(value);\n\t        continue;\n\t      }\n\n\t      if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n\t        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n\t        prior.output = `(?:${prior.output}`;\n\n\t        prev.type = 'globstar';\n\t        prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n\t        prev.value += value;\n\t        state.globstar = true;\n\t        state.output += prior.output + prev.output;\n\t        consume(value);\n\t        continue;\n\t      }\n\n\t      if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n\t        const end = rest[1] !== void 0 ? '|$' : '';\n\n\t        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n\t        prior.output = `(?:${prior.output}`;\n\n\t        prev.type = 'globstar';\n\t        prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n\t        prev.value += value;\n\n\t        state.output += prior.output + prev.output;\n\t        state.globstar = true;\n\n\t        consume(value + advance());\n\n\t        push({ type: 'slash', value: '/', output: '' });\n\t        continue;\n\t      }\n\n\t      if (prior.type === 'bos' && rest[0] === '/') {\n\t        prev.type = 'globstar';\n\t        prev.value += value;\n\t        prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n\t        state.output = prev.output;\n\t        state.globstar = true;\n\t        consume(value + advance());\n\t        push({ type: 'slash', value: '/', output: '' });\n\t        continue;\n\t      }\n\n\t      // remove single star from output\n\t      state.output = state.output.slice(0, -prev.output.length);\n\n\t      // reset previous token to globstar\n\t      prev.type = 'globstar';\n\t      prev.output = globstar(opts);\n\t      prev.value += value;\n\n\t      // reset output with globstar\n\t      state.output += prev.output;\n\t      state.globstar = true;\n\t      consume(value);\n\t      continue;\n\t    }\n\n\t    const token = { type: 'star', value, output: star };\n\n\t    if (opts.bash === true) {\n\t      token.output = '.*?';\n\t      if (prev.type === 'bos' || prev.type === 'slash') {\n\t        token.output = nodot + token.output;\n\t      }\n\t      push(token);\n\t      continue;\n\t    }\n\n\t    if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n\t      token.output = value;\n\t      push(token);\n\t      continue;\n\t    }\n\n\t    if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n\t      if (prev.type === 'dot') {\n\t        state.output += NO_DOT_SLASH;\n\t        prev.output += NO_DOT_SLASH;\n\n\t      } else if (opts.dot === true) {\n\t        state.output += NO_DOTS_SLASH;\n\t        prev.output += NO_DOTS_SLASH;\n\n\t      } else {\n\t        state.output += nodot;\n\t        prev.output += nodot;\n\t      }\n\n\t      if (peek() !== '*') {\n\t        state.output += ONE_CHAR;\n\t        prev.output += ONE_CHAR;\n\t      }\n\t    }\n\n\t    push(token);\n\t  }\n\n\t  while (state.brackets > 0) {\n\t    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n\t    state.output = utils.escapeLast(state.output, '[');\n\t    decrement('brackets');\n\t  }\n\n\t  while (state.parens > 0) {\n\t    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n\t    state.output = utils.escapeLast(state.output, '(');\n\t    decrement('parens');\n\t  }\n\n\t  while (state.braces > 0) {\n\t    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n\t    state.output = utils.escapeLast(state.output, '{');\n\t    decrement('braces');\n\t  }\n\n\t  if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n\t    push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n\t  }\n\n\t  // rebuild the output if we had to backtrack at any point\n\t  if (state.backtrack === true) {\n\t    state.output = '';\n\n\t    for (const token of state.tokens) {\n\t      state.output += token.output != null ? token.output : token.value;\n\n\t      if (token.suffix) {\n\t        state.output += token.suffix;\n\t      }\n\t    }\n\t  }\n\n\t  return state;\n\t};\n\n\t/**\n\t * Fast paths for creating regular expressions for common glob patterns.\n\t * This can significantly speed up processing and has very little downside\n\t * impact when none of the fast paths match.\n\t */\n\n\tparse.fastpaths = (input, options) => {\n\t  const opts = { ...options };\n\t  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\t  const len = input.length;\n\t  if (len > max) {\n\t    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n\t  }\n\n\t  input = REPLACEMENTS[input] || input;\n\t  const win32 = utils.isWindows(options);\n\n\t  // create constants based on platform, for windows or posix\n\t  const {\n\t    DOT_LITERAL,\n\t    SLASH_LITERAL,\n\t    ONE_CHAR,\n\t    DOTS_SLASH,\n\t    NO_DOT,\n\t    NO_DOTS,\n\t    NO_DOTS_SLASH,\n\t    STAR,\n\t    START_ANCHOR\n\t  } = constants.globChars(win32);\n\n\t  const nodot = opts.dot ? NO_DOTS : NO_DOT;\n\t  const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n\t  const capture = opts.capture ? '' : '?:';\n\t  const state = { negated: false, prefix: '' };\n\t  let star = opts.bash === true ? '.*?' : STAR;\n\n\t  if (opts.capture) {\n\t    star = `(${star})`;\n\t  }\n\n\t  const globstar = opts => {\n\t    if (opts.noglobstar === true) return star;\n\t    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n\t  };\n\n\t  const create = str => {\n\t    switch (str) {\n\t      case '*':\n\t        return `${nodot}${ONE_CHAR}${star}`;\n\n\t      case '.*':\n\t        return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n\t      case '*.*':\n\t        return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n\t      case '*/*':\n\t        return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n\t      case '**':\n\t        return nodot + globstar(opts);\n\n\t      case '**/*':\n\t        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n\t      case '**/*.*':\n\t        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n\t      case '**/.*':\n\t        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n\t      default: {\n\t        const match = /^(.*?)\\.(\\w+)$/.exec(str);\n\t        if (!match) return;\n\n\t        const source = create(match[1]);\n\t        if (!source) return;\n\n\t        return source + DOT_LITERAL + match[2];\n\t      }\n\t    }\n\t  };\n\n\t  const output = utils.removePrefix(input, state);\n\t  let source = create(output);\n\n\t  if (source && opts.strictSlashes !== true) {\n\t    source += `${SLASH_LITERAL}?`;\n\t  }\n\n\t  return source;\n\t};\n\n\tparse_1$1 = parse;\n\treturn parse_1$1;\n}\n\nvar picomatch_1;\nvar hasRequiredPicomatch$1;\n\nfunction requirePicomatch$1 () {\n\tif (hasRequiredPicomatch$1) return picomatch_1;\n\thasRequiredPicomatch$1 = 1;\n\n\tconst path = require$$0$1;\n\tconst scan = /*@__PURE__*/ requireScan();\n\tconst parse = /*@__PURE__*/ requireParse$1();\n\tconst utils = /*@__PURE__*/ requireUtils$1();\n\tconst constants = /*@__PURE__*/ requireConstants$2();\n\tconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n\t/**\n\t * Creates a matcher function from one or more glob patterns. The\n\t * returned function takes a string to match as its first argument,\n\t * and returns true if the string is a match. The returned matcher\n\t * function also takes a boolean as the second argument that, when true,\n\t * returns an object with additional information.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch(glob[, options]);\n\t *\n\t * const isMatch = picomatch('*.!(*a)');\n\t * console.log(isMatch('a.a')); //=> false\n\t * console.log(isMatch('a.b')); //=> true\n\t * ```\n\t * @name picomatch\n\t * @param {String|Array} `globs` One or more glob patterns.\n\t * @param {Object=} `options`\n\t * @return {Function=} Returns a matcher function.\n\t * @api public\n\t */\n\n\tconst picomatch = (glob, options, returnState = false) => {\n\t  if (Array.isArray(glob)) {\n\t    const fns = glob.map(input => picomatch(input, options, returnState));\n\t    const arrayMatcher = str => {\n\t      for (const isMatch of fns) {\n\t        const state = isMatch(str);\n\t        if (state) return state;\n\t      }\n\t      return false;\n\t    };\n\t    return arrayMatcher;\n\t  }\n\n\t  const isState = isObject(glob) && glob.tokens && glob.input;\n\n\t  if (glob === '' || (typeof glob !== 'string' && !isState)) {\n\t    throw new TypeError('Expected pattern to be a non-empty string');\n\t  }\n\n\t  const opts = options || {};\n\t  const posix = utils.isWindows(options);\n\t  const regex = isState\n\t    ? picomatch.compileRe(glob, options)\n\t    : picomatch.makeRe(glob, options, false, true);\n\n\t  const state = regex.state;\n\t  delete regex.state;\n\n\t  let isIgnored = () => false;\n\t  if (opts.ignore) {\n\t    const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n\t    isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n\t  }\n\n\t  const matcher = (input, returnObject = false) => {\n\t    const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n\t    const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n\t    if (typeof opts.onResult === 'function') {\n\t      opts.onResult(result);\n\t    }\n\n\t    if (isMatch === false) {\n\t      result.isMatch = false;\n\t      return returnObject ? result : false;\n\t    }\n\n\t    if (isIgnored(input)) {\n\t      if (typeof opts.onIgnore === 'function') {\n\t        opts.onIgnore(result);\n\t      }\n\t      result.isMatch = false;\n\t      return returnObject ? result : false;\n\t    }\n\n\t    if (typeof opts.onMatch === 'function') {\n\t      opts.onMatch(result);\n\t    }\n\t    return returnObject ? result : true;\n\t  };\n\n\t  if (returnState) {\n\t    matcher.state = state;\n\t  }\n\n\t  return matcher;\n\t};\n\n\t/**\n\t * Test `input` with the given `regex`. This is used by the main\n\t * `picomatch()` function to test the input string.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch.test(input, regex[, options]);\n\t *\n\t * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n\t * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n\t * ```\n\t * @param {String} `input` String to test.\n\t * @param {RegExp} `regex`\n\t * @return {Object} Returns an object with matching info.\n\t * @api public\n\t */\n\n\tpicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n\t  if (typeof input !== 'string') {\n\t    throw new TypeError('Expected input to be a string');\n\t  }\n\n\t  if (input === '') {\n\t    return { isMatch: false, output: '' };\n\t  }\n\n\t  const opts = options || {};\n\t  const format = opts.format || (posix ? utils.toPosixSlashes : null);\n\t  let match = input === glob;\n\t  let output = (match && format) ? format(input) : input;\n\n\t  if (match === false) {\n\t    output = format ? format(input) : input;\n\t    match = output === glob;\n\t  }\n\n\t  if (match === false || opts.capture === true) {\n\t    if (opts.matchBase === true || opts.basename === true) {\n\t      match = picomatch.matchBase(input, regex, options, posix);\n\t    } else {\n\t      match = regex.exec(output);\n\t    }\n\t  }\n\n\t  return { isMatch: Boolean(match), match, output };\n\t};\n\n\t/**\n\t * Match the basename of a filepath.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch.matchBase(input, glob[, options]);\n\t * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n\t * ```\n\t * @param {String} `input` String to test.\n\t * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n\t * @return {Boolean}\n\t * @api public\n\t */\n\n\tpicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n\t  const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n\t  return regex.test(path.basename(input));\n\t};\n\n\t/**\n\t * Returns true if **any** of the given glob `patterns` match the specified `string`.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch.isMatch(string, patterns[, options]);\n\t *\n\t * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n\t * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n\t * ```\n\t * @param {String|Array} str The string to test.\n\t * @param {String|Array} patterns One or more glob patterns to use for matching.\n\t * @param {Object} [options] See available [options](#options).\n\t * @return {Boolean} Returns true if any patterns match `str`\n\t * @api public\n\t */\n\n\tpicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n\t/**\n\t * Parse a glob pattern to create the source string for a regular\n\t * expression.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * const result = picomatch.parse(pattern[, options]);\n\t * ```\n\t * @param {String} `pattern`\n\t * @param {Object} `options`\n\t * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n\t * @api public\n\t */\n\n\tpicomatch.parse = (pattern, options) => {\n\t  if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n\t  return parse(pattern, { ...options, fastpaths: false });\n\t};\n\n\t/**\n\t * Scan a glob pattern to separate the pattern into segments.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch.scan(input[, options]);\n\t *\n\t * const result = picomatch.scan('!./foo/*.js');\n\t * console.log(result);\n\t * { prefix: '!./',\n\t *   input: '!./foo/*.js',\n\t *   start: 3,\n\t *   base: 'foo',\n\t *   glob: '*.js',\n\t *   isBrace: false,\n\t *   isBracket: false,\n\t *   isGlob: true,\n\t *   isExtglob: false,\n\t *   isGlobstar: false,\n\t *   negated: true }\n\t * ```\n\t * @param {String} `input` Glob pattern to scan.\n\t * @param {Object} `options`\n\t * @return {Object} Returns an object with\n\t * @api public\n\t */\n\n\tpicomatch.scan = (input, options) => scan(input, options);\n\n\t/**\n\t * Compile a regular expression from the `state` object returned by the\n\t * [parse()](#parse) method.\n\t *\n\t * @param {Object} `state`\n\t * @param {Object} `options`\n\t * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n\t * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n\t * @return {RegExp}\n\t * @api public\n\t */\n\n\tpicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n\t  if (returnOutput === true) {\n\t    return state.output;\n\t  }\n\n\t  const opts = options || {};\n\t  const prepend = opts.contains ? '' : '^';\n\t  const append = opts.contains ? '' : '$';\n\n\t  let source = `${prepend}(?:${state.output})${append}`;\n\t  if (state && state.negated === true) {\n\t    source = `^(?!${source}).*$`;\n\t  }\n\n\t  const regex = picomatch.toRegex(source, options);\n\t  if (returnState === true) {\n\t    regex.state = state;\n\t  }\n\n\t  return regex;\n\t};\n\n\t/**\n\t * Create a regular expression from a parsed glob pattern.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * const state = picomatch.parse('*.js');\n\t * // picomatch.compileRe(state[, options]);\n\t *\n\t * console.log(picomatch.compileRe(state));\n\t * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n\t * ```\n\t * @param {String} `state` The object returned from the `.parse` method.\n\t * @param {Object} `options`\n\t * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n\t * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n\t * @return {RegExp} Returns a regex created from the given pattern.\n\t * @api public\n\t */\n\n\tpicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n\t  if (!input || typeof input !== 'string') {\n\t    throw new TypeError('Expected a non-empty string');\n\t  }\n\n\t  let parsed = { negated: false, fastpaths: true };\n\n\t  if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n\t    parsed.output = parse.fastpaths(input, options);\n\t  }\n\n\t  if (!parsed.output) {\n\t    parsed = parse(input, options);\n\t  }\n\n\t  return picomatch.compileRe(parsed, options, returnOutput, returnState);\n\t};\n\n\t/**\n\t * Create a regular expression from the given regex source string.\n\t *\n\t * ```js\n\t * const picomatch = require('picomatch');\n\t * // picomatch.toRegex(source[, options]);\n\t *\n\t * const { output } = picomatch.parse('*.js');\n\t * console.log(picomatch.toRegex(output));\n\t * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n\t * ```\n\t * @param {String} `source` Regular expression source string.\n\t * @param {Object} `options`\n\t * @return {RegExp}\n\t * @api public\n\t */\n\n\tpicomatch.toRegex = (source, options) => {\n\t  try {\n\t    const opts = options || {};\n\t    return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n\t  } catch (err) {\n\t    if (options && options.debug === true) throw err;\n\t    return /$^/;\n\t  }\n\t};\n\n\t/**\n\t * Picomatch constants.\n\t * @return {Object}\n\t */\n\n\tpicomatch.constants = constants;\n\n\t/**\n\t * Expose \"picomatch\"\n\t */\n\n\tpicomatch_1 = picomatch;\n\treturn picomatch_1;\n}\n\nvar picomatch;\nvar hasRequiredPicomatch;\n\nfunction requirePicomatch () {\n\tif (hasRequiredPicomatch) return picomatch;\n\thasRequiredPicomatch = 1;\n\n\tpicomatch = /*@__PURE__*/ requirePicomatch$1();\n\treturn picomatch;\n}\n\n/*!\n * normalize-path <https://github.com/jonschlinkert/normalize-path>\n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar normalizePath;\nvar hasRequiredNormalizePath;\n\nfunction requireNormalizePath () {\n\tif (hasRequiredNormalizePath) return normalizePath;\n\thasRequiredNormalizePath = 1;\n\tnormalizePath = function(path, stripTrailing) {\n\t  if (typeof path !== 'string') {\n\t    throw new TypeError('expected path to be a string');\n\t  }\n\n\t  if (path === '\\\\' || path === '/') return '/';\n\n\t  var len = path.length;\n\t  if (len <= 1) return path;\n\n\t  // ensure that win32 namespaces has two leading slashes, so that the path is\n\t  // handled properly by the win32 version of path.parse() after being normalized\n\t  // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces\n\t  var prefix = '';\n\t  if (len > 4 && path[3] === '\\\\') {\n\t    var ch = path[2];\n\t    if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\\\\\') {\n\t      path = path.slice(2);\n\t      prefix = '//';\n\t    }\n\t  }\n\n\t  var segs = path.split(/[/\\\\]+/);\n\t  if (stripTrailing !== false && segs[segs.length - 1] === '') {\n\t    segs.pop();\n\t  }\n\t  return prefix + segs.join('/');\n\t};\n\treturn normalizePath;\n}\n\nvar anymatch_1 = anymatch.exports;\n\nvar hasRequiredAnymatch;\n\nfunction requireAnymatch () {\n\tif (hasRequiredAnymatch) return anymatch.exports;\n\thasRequiredAnymatch = 1;\n\n\tObject.defineProperty(anymatch_1, \"__esModule\", { value: true });\n\n\tconst picomatch = /*@__PURE__*/ requirePicomatch();\n\tconst normalizePath = /*@__PURE__*/ requireNormalizePath();\n\n\t/**\n\t * @typedef {(testString: string) => boolean} AnymatchFn\n\t * @typedef {string|RegExp|AnymatchFn} AnymatchPattern\n\t * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher\n\t */\n\tconst BANG = '!';\n\tconst DEFAULT_OPTIONS = {returnIndex: false};\n\tconst arrify = (item) => Array.isArray(item) ? item : [item];\n\n\t/**\n\t * @param {AnymatchPattern} matcher\n\t * @param {object} options\n\t * @returns {AnymatchFn}\n\t */\n\tconst createPattern = (matcher, options) => {\n\t  if (typeof matcher === 'function') {\n\t    return matcher;\n\t  }\n\t  if (typeof matcher === 'string') {\n\t    const glob = picomatch(matcher, options);\n\t    return (string) => matcher === string || glob(string);\n\t  }\n\t  if (matcher instanceof RegExp) {\n\t    return (string) => matcher.test(string);\n\t  }\n\t  return (string) => false;\n\t};\n\n\t/**\n\t * @param {Array<Function>} patterns\n\t * @param {Array<Function>} negPatterns\n\t * @param {String|Array} args\n\t * @param {Boolean} returnIndex\n\t * @returns {boolean|number}\n\t */\n\tconst matchPatterns = (patterns, negPatterns, args, returnIndex) => {\n\t  const isList = Array.isArray(args);\n\t  const _path = isList ? args[0] : args;\n\t  if (!isList && typeof _path !== 'string') {\n\t    throw new TypeError('anymatch: second argument must be a string: got ' +\n\t      Object.prototype.toString.call(_path))\n\t  }\n\t  const path = normalizePath(_path, false);\n\n\t  for (let index = 0; index < negPatterns.length; index++) {\n\t    const nglob = negPatterns[index];\n\t    if (nglob(path)) {\n\t      return returnIndex ? -1 : false;\n\t    }\n\t  }\n\n\t  const applied = isList && [path].concat(args.slice(1));\n\t  for (let index = 0; index < patterns.length; index++) {\n\t    const pattern = patterns[index];\n\t    if (isList ? pattern(...applied) : pattern(path)) {\n\t      return returnIndex ? index : true;\n\t    }\n\t  }\n\n\t  return returnIndex ? -1 : false;\n\t};\n\n\t/**\n\t * @param {AnymatchMatcher} matchers\n\t * @param {Array|string} testString\n\t * @param {object} options\n\t * @returns {boolean|number|Function}\n\t */\n\tconst anymatch$1 = (matchers, testString, options = DEFAULT_OPTIONS) => {\n\t  if (matchers == null) {\n\t    throw new TypeError('anymatch: specify first argument');\n\t  }\n\t  const opts = typeof options === 'boolean' ? {returnIndex: options} : options;\n\t  const returnIndex = opts.returnIndex || false;\n\n\t  // Early cache for matchers.\n\t  const mtchers = arrify(matchers);\n\t  const negatedGlobs = mtchers\n\t    .filter(item => typeof item === 'string' && item.charAt(0) === BANG)\n\t    .map(item => item.slice(1))\n\t    .map(item => picomatch(item, opts));\n\t  const patterns = mtchers\n\t    .filter(item => typeof item !== 'string' || (typeof item === 'string' && item.charAt(0) !== BANG))\n\t    .map(matcher => createPattern(matcher, opts));\n\n\t  if (testString == null) {\n\t    return (testString, ri = false) => {\n\t      const returnIndex = typeof ri === 'boolean' ? ri : false;\n\t      return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n\t    }\n\t  }\n\n\t  return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n\t};\n\n\tanymatch$1.default = anymatch$1;\n\tanymatch.exports = anymatch$1;\n\treturn anymatch.exports;\n}\n\n/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nvar isExtglob;\nvar hasRequiredIsExtglob;\n\nfunction requireIsExtglob () {\n\tif (hasRequiredIsExtglob) return isExtglob;\n\thasRequiredIsExtglob = 1;\n\tisExtglob = function isExtglob(str) {\n\t  if (typeof str !== 'string' || str === '') {\n\t    return false;\n\t  }\n\n\t  var match;\n\t  while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n\t    if (match[2]) return true;\n\t    str = str.slice(match.index + match[0].length);\n\t  }\n\n\t  return false;\n\t};\n\treturn isExtglob;\n}\n\n/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isGlob;\nvar hasRequiredIsGlob;\n\nfunction requireIsGlob () {\n\tif (hasRequiredIsGlob) return isGlob;\n\thasRequiredIsGlob = 1;\n\tvar isExtglob = /*@__PURE__*/ requireIsExtglob();\n\tvar chars = { '{': '}', '(': ')', '[': ']'};\n\tvar strictCheck = function(str) {\n\t  if (str[0] === '!') {\n\t    return true;\n\t  }\n\t  var index = 0;\n\t  var pipeIndex = -2;\n\t  var closeSquareIndex = -2;\n\t  var closeCurlyIndex = -2;\n\t  var closeParenIndex = -2;\n\t  var backSlashIndex = -2;\n\t  while (index < str.length) {\n\t    if (str[index] === '*') {\n\t      return true;\n\t    }\n\n\t    if (str[index + 1] === '?' && /[\\].+)]/.test(str[index])) {\n\t      return true;\n\t    }\n\n\t    if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') {\n\t      if (closeSquareIndex < index) {\n\t        closeSquareIndex = str.indexOf(']', index);\n\t      }\n\t      if (closeSquareIndex > index) {\n\t        if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n\t          return true;\n\t        }\n\t        backSlashIndex = str.indexOf('\\\\', index);\n\t        if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n\t          return true;\n\t        }\n\t      }\n\t    }\n\n\t    if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') {\n\t      closeCurlyIndex = str.indexOf('}', index);\n\t      if (closeCurlyIndex > index) {\n\t        backSlashIndex = str.indexOf('\\\\', index);\n\t        if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) {\n\t          return true;\n\t        }\n\t      }\n\t    }\n\n\t    if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') {\n\t      closeParenIndex = str.indexOf(')', index);\n\t      if (closeParenIndex > index) {\n\t        backSlashIndex = str.indexOf('\\\\', index);\n\t        if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n\t          return true;\n\t        }\n\t      }\n\t    }\n\n\t    if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') {\n\t      if (pipeIndex < index) {\n\t        pipeIndex = str.indexOf('|', index);\n\t      }\n\t      if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') {\n\t        closeParenIndex = str.indexOf(')', pipeIndex);\n\t        if (closeParenIndex > pipeIndex) {\n\t          backSlashIndex = str.indexOf('\\\\', pipeIndex);\n\t          if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n\t            return true;\n\t          }\n\t        }\n\t      }\n\t    }\n\n\t    if (str[index] === '\\\\') {\n\t      var open = str[index + 1];\n\t      index += 2;\n\t      var close = chars[open];\n\n\t      if (close) {\n\t        var n = str.indexOf(close, index);\n\t        if (n !== -1) {\n\t          index = n + 1;\n\t        }\n\t      }\n\n\t      if (str[index] === '!') {\n\t        return true;\n\t      }\n\t    } else {\n\t      index++;\n\t    }\n\t  }\n\t  return false;\n\t};\n\n\tvar relaxedCheck = function(str) {\n\t  if (str[0] === '!') {\n\t    return true;\n\t  }\n\t  var index = 0;\n\t  while (index < str.length) {\n\t    if (/[*?{}()[\\]]/.test(str[index])) {\n\t      return true;\n\t    }\n\n\t    if (str[index] === '\\\\') {\n\t      var open = str[index + 1];\n\t      index += 2;\n\t      var close = chars[open];\n\n\t      if (close) {\n\t        var n = str.indexOf(close, index);\n\t        if (n !== -1) {\n\t          index = n + 1;\n\t        }\n\t      }\n\n\t      if (str[index] === '!') {\n\t        return true;\n\t      }\n\t    } else {\n\t      index++;\n\t    }\n\t  }\n\t  return false;\n\t};\n\n\tisGlob = function isGlob(str, options) {\n\t  if (typeof str !== 'string' || str === '') {\n\t    return false;\n\t  }\n\n\t  if (isExtglob(str)) {\n\t    return true;\n\t  }\n\n\t  var check = strictCheck;\n\n\t  // optionally relax check\n\t  if (options && options.strict === false) {\n\t    check = relaxedCheck;\n\t  }\n\n\t  return check(str);\n\t};\n\treturn isGlob;\n}\n\nvar globParent;\nvar hasRequiredGlobParent;\n\nfunction requireGlobParent () {\n\tif (hasRequiredGlobParent) return globParent;\n\thasRequiredGlobParent = 1;\n\n\tvar isGlob = /*@__PURE__*/ requireIsGlob();\n\tvar pathPosixDirname = require$$0$1.posix.dirname;\n\tvar isWin32 = require$$2$1.platform() === 'win32';\n\n\tvar slash = '/';\n\tvar backslash = /\\\\/g;\n\tvar enclosure = /[\\{\\[].*[\\}\\]]$/;\n\tvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\n\tvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n\t/**\n\t * @param {string} str\n\t * @param {Object} opts\n\t * @param {boolean} [opts.flipBackslashes=true]\n\t * @returns {string}\n\t */\n\tglobParent = function globParent(str, opts) {\n\t  var options = Object.assign({ flipBackslashes: true }, opts);\n\n\t  // flip windows path separators\n\t  if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n\t    str = str.replace(backslash, slash);\n\t  }\n\n\t  // special case for strings ending in enclosure containing path separator\n\t  if (enclosure.test(str)) {\n\t    str += slash;\n\t  }\n\n\t  // preserves full path in case of trailing path separator\n\t  str += 'a';\n\n\t  // remove path parts that are globby\n\t  do {\n\t    str = pathPosixDirname(str);\n\t  } while (isGlob(str) || globby.test(str));\n\n\t  // remove escape chars and return result\n\t  return str.replace(escaped, '$1');\n\t};\n\treturn globParent;\n}\n\nvar utils = {};\n\nvar hasRequiredUtils;\n\nfunction requireUtils () {\n\tif (hasRequiredUtils) return utils;\n\thasRequiredUtils = 1;\n\t(function (exports) {\n\n\t\texports.isInteger = num => {\n\t\t  if (typeof num === 'number') {\n\t\t    return Number.isInteger(num);\n\t\t  }\n\t\t  if (typeof num === 'string' && num.trim() !== '') {\n\t\t    return Number.isInteger(Number(num));\n\t\t  }\n\t\t  return false;\n\t\t};\n\n\t\t/**\n\t\t * Find a node of the given type\n\t\t */\n\n\t\texports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n\t\t/**\n\t\t * Find a node of the given type\n\t\t */\n\n\t\texports.exceedsLimit = (min, max, step = 1, limit) => {\n\t\t  if (limit === false) return false;\n\t\t  if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n\t\t  return ((Number(max) - Number(min)) / Number(step)) >= limit;\n\t\t};\n\n\t\t/**\n\t\t * Escape the given node with '\\\\' before node.value\n\t\t */\n\n\t\texports.escapeNode = (block, n = 0, type) => {\n\t\t  const node = block.nodes[n];\n\t\t  if (!node) return;\n\n\t\t  if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n\t\t    if (node.escaped !== true) {\n\t\t      node.value = '\\\\' + node.value;\n\t\t      node.escaped = true;\n\t\t    }\n\t\t  }\n\t\t};\n\n\t\t/**\n\t\t * Returns true if the given brace node should be enclosed in literal braces\n\t\t */\n\n\t\texports.encloseBrace = node => {\n\t\t  if (node.type !== 'brace') return false;\n\t\t  if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n\t\t    node.invalid = true;\n\t\t    return true;\n\t\t  }\n\t\t  return false;\n\t\t};\n\n\t\t/**\n\t\t * Returns true if a brace node is invalid.\n\t\t */\n\n\t\texports.isInvalidBrace = block => {\n\t\t  if (block.type !== 'brace') return false;\n\t\t  if (block.invalid === true || block.dollar) return true;\n\t\t  if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n\t\t    block.invalid = true;\n\t\t    return true;\n\t\t  }\n\t\t  if (block.open !== true || block.close !== true) {\n\t\t    block.invalid = true;\n\t\t    return true;\n\t\t  }\n\t\t  return false;\n\t\t};\n\n\t\t/**\n\t\t * Returns true if a node is an open or close node\n\t\t */\n\n\t\texports.isOpenOrClose = node => {\n\t\t  if (node.type === 'open' || node.type === 'close') {\n\t\t    return true;\n\t\t  }\n\t\t  return node.open === true || node.close === true;\n\t\t};\n\n\t\t/**\n\t\t * Reduce an array of text nodes.\n\t\t */\n\n\t\texports.reduce = nodes => nodes.reduce((acc, node) => {\n\t\t  if (node.type === 'text') acc.push(node.value);\n\t\t  if (node.type === 'range') node.type = 'text';\n\t\t  return acc;\n\t\t}, []);\n\n\t\t/**\n\t\t * Flatten an array\n\t\t */\n\n\t\texports.flatten = (...args) => {\n\t\t  const result = [];\n\n\t\t  const flat = arr => {\n\t\t    for (let i = 0; i < arr.length; i++) {\n\t\t      const ele = arr[i];\n\n\t\t      if (Array.isArray(ele)) {\n\t\t        flat(ele);\n\t\t        continue;\n\t\t      }\n\n\t\t      if (ele !== undefined) {\n\t\t        result.push(ele);\n\t\t      }\n\t\t    }\n\t\t    return result;\n\t\t  };\n\n\t\t  flat(args);\n\t\t  return result;\n\t\t}; \n\t} (utils));\n\treturn utils;\n}\n\nvar stringify;\nvar hasRequiredStringify;\n\nfunction requireStringify () {\n\tif (hasRequiredStringify) return stringify;\n\thasRequiredStringify = 1;\n\n\tconst utils = /*@__PURE__*/ requireUtils();\n\n\tstringify = (ast, options = {}) => {\n\t  const stringify = (node, parent = {}) => {\n\t    const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n\t    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n\t    let output = '';\n\n\t    if (node.value) {\n\t      if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n\t        return '\\\\' + node.value;\n\t      }\n\t      return node.value;\n\t    }\n\n\t    if (node.value) {\n\t      return node.value;\n\t    }\n\n\t    if (node.nodes) {\n\t      for (const child of node.nodes) {\n\t        output += stringify(child);\n\t      }\n\t    }\n\t    return output;\n\t  };\n\n\t  return stringify(ast);\n\t};\n\treturn stringify;\n}\n\n/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isNumber;\nvar hasRequiredIsNumber;\n\nfunction requireIsNumber () {\n\tif (hasRequiredIsNumber) return isNumber;\n\thasRequiredIsNumber = 1;\n\n\tisNumber = function(num) {\n\t  if (typeof num === 'number') {\n\t    return num - num === 0;\n\t  }\n\t  if (typeof num === 'string' && num.trim() !== '') {\n\t    return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n\t  }\n\t  return false;\n\t};\n\treturn isNumber;\n}\n\n/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar toRegexRange_1;\nvar hasRequiredToRegexRange;\n\nfunction requireToRegexRange () {\n\tif (hasRequiredToRegexRange) return toRegexRange_1;\n\thasRequiredToRegexRange = 1;\n\n\tconst isNumber = /*@__PURE__*/ requireIsNumber();\n\n\tconst toRegexRange = (min, max, options) => {\n\t  if (isNumber(min) === false) {\n\t    throw new TypeError('toRegexRange: expected the first argument to be a number');\n\t  }\n\n\t  if (max === void 0 || min === max) {\n\t    return String(min);\n\t  }\n\n\t  if (isNumber(max) === false) {\n\t    throw new TypeError('toRegexRange: expected the second argument to be a number.');\n\t  }\n\n\t  let opts = { relaxZeros: true, ...options };\n\t  if (typeof opts.strictZeros === 'boolean') {\n\t    opts.relaxZeros = opts.strictZeros === false;\n\t  }\n\n\t  let relax = String(opts.relaxZeros);\n\t  let shorthand = String(opts.shorthand);\n\t  let capture = String(opts.capture);\n\t  let wrap = String(opts.wrap);\n\t  let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n\t  if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n\t    return toRegexRange.cache[cacheKey].result;\n\t  }\n\n\t  let a = Math.min(min, max);\n\t  let b = Math.max(min, max);\n\n\t  if (Math.abs(a - b) === 1) {\n\t    let result = min + '|' + max;\n\t    if (opts.capture) {\n\t      return `(${result})`;\n\t    }\n\t    if (opts.wrap === false) {\n\t      return result;\n\t    }\n\t    return `(?:${result})`;\n\t  }\n\n\t  let isPadded = hasPadding(min) || hasPadding(max);\n\t  let state = { min, max, a, b };\n\t  let positives = [];\n\t  let negatives = [];\n\n\t  if (isPadded) {\n\t    state.isPadded = isPadded;\n\t    state.maxLen = String(state.max).length;\n\t  }\n\n\t  if (a < 0) {\n\t    let newMin = b < 0 ? Math.abs(b) : 1;\n\t    negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n\t    a = state.a = 0;\n\t  }\n\n\t  if (b >= 0) {\n\t    positives = splitToPatterns(a, b, state, opts);\n\t  }\n\n\t  state.negatives = negatives;\n\t  state.positives = positives;\n\t  state.result = collatePatterns(negatives, positives);\n\n\t  if (opts.capture === true) {\n\t    state.result = `(${state.result})`;\n\t  } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n\t    state.result = `(?:${state.result})`;\n\t  }\n\n\t  toRegexRange.cache[cacheKey] = state;\n\t  return state.result;\n\t};\n\n\tfunction collatePatterns(neg, pos, options) {\n\t  let onlyNegative = filterPatterns(neg, pos, '-', false) || [];\n\t  let onlyPositive = filterPatterns(pos, neg, '', false) || [];\n\t  let intersected = filterPatterns(neg, pos, '-?', true) || [];\n\t  let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n\t  return subpatterns.join('|');\n\t}\n\n\tfunction splitToRanges(min, max) {\n\t  let nines = 1;\n\t  let zeros = 1;\n\n\t  let stop = countNines(min, nines);\n\t  let stops = new Set([max]);\n\n\t  while (min <= stop && stop <= max) {\n\t    stops.add(stop);\n\t    nines += 1;\n\t    stop = countNines(min, nines);\n\t  }\n\n\t  stop = countZeros(max + 1, zeros) - 1;\n\n\t  while (min < stop && stop <= max) {\n\t    stops.add(stop);\n\t    zeros += 1;\n\t    stop = countZeros(max + 1, zeros) - 1;\n\t  }\n\n\t  stops = [...stops];\n\t  stops.sort(compare);\n\t  return stops;\n\t}\n\n\t/**\n\t * Convert a range to a regex pattern\n\t * @param {Number} `start`\n\t * @param {Number} `stop`\n\t * @return {String}\n\t */\n\n\tfunction rangeToPattern(start, stop, options) {\n\t  if (start === stop) {\n\t    return { pattern: start, count: [], digits: 0 };\n\t  }\n\n\t  let zipped = zip(start, stop);\n\t  let digits = zipped.length;\n\t  let pattern = '';\n\t  let count = 0;\n\n\t  for (let i = 0; i < digits; i++) {\n\t    let [startDigit, stopDigit] = zipped[i];\n\n\t    if (startDigit === stopDigit) {\n\t      pattern += startDigit;\n\n\t    } else if (startDigit !== '0' || stopDigit !== '9') {\n\t      pattern += toCharacterClass(startDigit, stopDigit);\n\n\t    } else {\n\t      count++;\n\t    }\n\t  }\n\n\t  if (count) {\n\t    pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n\t  }\n\n\t  return { pattern, count: [count], digits };\n\t}\n\n\tfunction splitToPatterns(min, max, tok, options) {\n\t  let ranges = splitToRanges(min, max);\n\t  let tokens = [];\n\t  let start = min;\n\t  let prev;\n\n\t  for (let i = 0; i < ranges.length; i++) {\n\t    let max = ranges[i];\n\t    let obj = rangeToPattern(String(start), String(max), options);\n\t    let zeros = '';\n\n\t    if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n\t      if (prev.count.length > 1) {\n\t        prev.count.pop();\n\t      }\n\n\t      prev.count.push(obj.count[0]);\n\t      prev.string = prev.pattern + toQuantifier(prev.count);\n\t      start = max + 1;\n\t      continue;\n\t    }\n\n\t    if (tok.isPadded) {\n\t      zeros = padZeros(max, tok, options);\n\t    }\n\n\t    obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n\t    tokens.push(obj);\n\t    start = max + 1;\n\t    prev = obj;\n\t  }\n\n\t  return tokens;\n\t}\n\n\tfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n\t  let result = [];\n\n\t  for (let ele of arr) {\n\t    let { string } = ele;\n\n\t    // only push if _both_ are negative...\n\t    if (!intersection && !contains(comparison, 'string', string)) {\n\t      result.push(prefix + string);\n\t    }\n\n\t    // or _both_ are positive\n\t    if (intersection && contains(comparison, 'string', string)) {\n\t      result.push(prefix + string);\n\t    }\n\t  }\n\t  return result;\n\t}\n\n\t/**\n\t * Zip strings\n\t */\n\n\tfunction zip(a, b) {\n\t  let arr = [];\n\t  for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n\t  return arr;\n\t}\n\n\tfunction compare(a, b) {\n\t  return a > b ? 1 : b > a ? -1 : 0;\n\t}\n\n\tfunction contains(arr, key, val) {\n\t  return arr.some(ele => ele[key] === val);\n\t}\n\n\tfunction countNines(min, len) {\n\t  return Number(String(min).slice(0, -len) + '9'.repeat(len));\n\t}\n\n\tfunction countZeros(integer, zeros) {\n\t  return integer - (integer % Math.pow(10, zeros));\n\t}\n\n\tfunction toQuantifier(digits) {\n\t  let [start = 0, stop = ''] = digits;\n\t  if (stop || start > 1) {\n\t    return `{${start + (stop ? ',' + stop : '')}}`;\n\t  }\n\t  return '';\n\t}\n\n\tfunction toCharacterClass(a, b, options) {\n\t  return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n\t}\n\n\tfunction hasPadding(str) {\n\t  return /^-?(0+)\\d/.test(str);\n\t}\n\n\tfunction padZeros(value, tok, options) {\n\t  if (!tok.isPadded) {\n\t    return value;\n\t  }\n\n\t  let diff = Math.abs(tok.maxLen - String(value).length);\n\t  let relax = options.relaxZeros !== false;\n\n\t  switch (diff) {\n\t    case 0:\n\t      return '';\n\t    case 1:\n\t      return relax ? '0?' : '0';\n\t    case 2:\n\t      return relax ? '0{0,2}' : '00';\n\t    default: {\n\t      return relax ? `0{0,${diff}}` : `0{${diff}}`;\n\t    }\n\t  }\n\t}\n\n\t/**\n\t * Cache\n\t */\n\n\ttoRegexRange.cache = {};\n\ttoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n\t/**\n\t * Expose `toRegexRange`\n\t */\n\n\ttoRegexRange_1 = toRegexRange;\n\treturn toRegexRange_1;\n}\n\n/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nvar fillRange;\nvar hasRequiredFillRange;\n\nfunction requireFillRange () {\n\tif (hasRequiredFillRange) return fillRange;\n\thasRequiredFillRange = 1;\n\n\tconst util = require$$2;\n\tconst toRegexRange = /*@__PURE__*/ requireToRegexRange();\n\n\tconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\n\tconst transform = toNumber => {\n\t  return value => toNumber === true ? Number(value) : String(value);\n\t};\n\n\tconst isValidValue = value => {\n\t  return typeof value === 'number' || (typeof value === 'string' && value !== '');\n\t};\n\n\tconst isNumber = num => Number.isInteger(+num);\n\n\tconst zeros = input => {\n\t  let value = `${input}`;\n\t  let index = -1;\n\t  if (value[0] === '-') value = value.slice(1);\n\t  if (value === '0') return false;\n\t  while (value[++index] === '0');\n\t  return index > 0;\n\t};\n\n\tconst stringify = (start, end, options) => {\n\t  if (typeof start === 'string' || typeof end === 'string') {\n\t    return true;\n\t  }\n\t  return options.stringify === true;\n\t};\n\n\tconst pad = (input, maxLength, toNumber) => {\n\t  if (maxLength > 0) {\n\t    let dash = input[0] === '-' ? '-' : '';\n\t    if (dash) input = input.slice(1);\n\t    input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n\t  }\n\t  if (toNumber === false) {\n\t    return String(input);\n\t  }\n\t  return input;\n\t};\n\n\tconst toMaxLen = (input, maxLength) => {\n\t  let negative = input[0] === '-' ? '-' : '';\n\t  if (negative) {\n\t    input = input.slice(1);\n\t    maxLength--;\n\t  }\n\t  while (input.length < maxLength) input = '0' + input;\n\t  return negative ? ('-' + input) : input;\n\t};\n\n\tconst toSequence = (parts, options, maxLen) => {\n\t  parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\t  parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n\t  let prefix = options.capture ? '' : '?:';\n\t  let positives = '';\n\t  let negatives = '';\n\t  let result;\n\n\t  if (parts.positives.length) {\n\t    positives = parts.positives.map(v => toMaxLen(String(v), maxLen)).join('|');\n\t  }\n\n\t  if (parts.negatives.length) {\n\t    negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).join('|')})`;\n\t  }\n\n\t  if (positives && negatives) {\n\t    result = `${positives}|${negatives}`;\n\t  } else {\n\t    result = positives || negatives;\n\t  }\n\n\t  if (options.wrap) {\n\t    return `(${prefix}${result})`;\n\t  }\n\n\t  return result;\n\t};\n\n\tconst toRange = (a, b, isNumbers, options) => {\n\t  if (isNumbers) {\n\t    return toRegexRange(a, b, { wrap: false, ...options });\n\t  }\n\n\t  let start = String.fromCharCode(a);\n\t  if (a === b) return start;\n\n\t  let stop = String.fromCharCode(b);\n\t  return `[${start}-${stop}]`;\n\t};\n\n\tconst toRegex = (start, end, options) => {\n\t  if (Array.isArray(start)) {\n\t    let wrap = options.wrap === true;\n\t    let prefix = options.capture ? '' : '?:';\n\t    return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n\t  }\n\t  return toRegexRange(start, end, options);\n\t};\n\n\tconst rangeError = (...args) => {\n\t  return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n\t};\n\n\tconst invalidRange = (start, end, options) => {\n\t  if (options.strictRanges === true) throw rangeError([start, end]);\n\t  return [];\n\t};\n\n\tconst invalidStep = (step, options) => {\n\t  if (options.strictRanges === true) {\n\t    throw new TypeError(`Expected step \"${step}\" to be a number`);\n\t  }\n\t  return [];\n\t};\n\n\tconst fillNumbers = (start, end, step = 1, options = {}) => {\n\t  let a = Number(start);\n\t  let b = Number(end);\n\n\t  if (!Number.isInteger(a) || !Number.isInteger(b)) {\n\t    if (options.strictRanges === true) throw rangeError([start, end]);\n\t    return [];\n\t  }\n\n\t  // fix negative zero\n\t  if (a === 0) a = 0;\n\t  if (b === 0) b = 0;\n\n\t  let descending = a > b;\n\t  let startString = String(start);\n\t  let endString = String(end);\n\t  let stepString = String(step);\n\t  step = Math.max(Math.abs(step), 1);\n\n\t  let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n\t  let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n\t  let toNumber = padded === false && stringify(start, end, options) === false;\n\t  let format = options.transform || transform(toNumber);\n\n\t  if (options.toRegex && step === 1) {\n\t    return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n\t  }\n\n\t  let parts = { negatives: [], positives: [] };\n\t  let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n\t  let range = [];\n\t  let index = 0;\n\n\t  while (descending ? a >= b : a <= b) {\n\t    if (options.toRegex === true && step > 1) {\n\t      push(a);\n\t    } else {\n\t      range.push(pad(format(a, index), maxLen, toNumber));\n\t    }\n\t    a = descending ? a - step : a + step;\n\t    index++;\n\t  }\n\n\t  if (options.toRegex === true) {\n\t    return step > 1\n\t      ? toSequence(parts, options, maxLen)\n\t      : toRegex(range, null, { wrap: false, ...options });\n\t  }\n\n\t  return range;\n\t};\n\n\tconst fillLetters = (start, end, step = 1, options = {}) => {\n\t  if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n\t    return invalidRange(start, end, options);\n\t  }\n\n\t  let format = options.transform || (val => String.fromCharCode(val));\n\t  let a = `${start}`.charCodeAt(0);\n\t  let b = `${end}`.charCodeAt(0);\n\n\t  let descending = a > b;\n\t  let min = Math.min(a, b);\n\t  let max = Math.max(a, b);\n\n\t  if (options.toRegex && step === 1) {\n\t    return toRange(min, max, false, options);\n\t  }\n\n\t  let range = [];\n\t  let index = 0;\n\n\t  while (descending ? a >= b : a <= b) {\n\t    range.push(format(a, index));\n\t    a = descending ? a - step : a + step;\n\t    index++;\n\t  }\n\n\t  if (options.toRegex === true) {\n\t    return toRegex(range, null, { wrap: false, options });\n\t  }\n\n\t  return range;\n\t};\n\n\tconst fill = (start, end, step, options = {}) => {\n\t  if (end == null && isValidValue(start)) {\n\t    return [start];\n\t  }\n\n\t  if (!isValidValue(start) || !isValidValue(end)) {\n\t    return invalidRange(start, end, options);\n\t  }\n\n\t  if (typeof step === 'function') {\n\t    return fill(start, end, 1, { transform: step });\n\t  }\n\n\t  if (isObject(step)) {\n\t    return fill(start, end, 0, step);\n\t  }\n\n\t  let opts = { ...options };\n\t  if (opts.capture === true) opts.wrap = true;\n\t  step = step || opts.step || 1;\n\n\t  if (!isNumber(step)) {\n\t    if (step != null && !isObject(step)) return invalidStep(step, opts);\n\t    return fill(start, end, 1, step);\n\t  }\n\n\t  if (isNumber(start) && isNumber(end)) {\n\t    return fillNumbers(start, end, step, opts);\n\t  }\n\n\t  return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n\t};\n\n\tfillRange = fill;\n\treturn fillRange;\n}\n\nvar compile_1;\nvar hasRequiredCompile;\n\nfunction requireCompile () {\n\tif (hasRequiredCompile) return compile_1;\n\thasRequiredCompile = 1;\n\n\tconst fill = /*@__PURE__*/ requireFillRange();\n\tconst utils = /*@__PURE__*/ requireUtils();\n\n\tconst compile = (ast, options = {}) => {\n\t  const walk = (node, parent = {}) => {\n\t    const invalidBlock = utils.isInvalidBrace(parent);\n\t    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n\t    const invalid = invalidBlock === true || invalidNode === true;\n\t    const prefix = options.escapeInvalid === true ? '\\\\' : '';\n\t    let output = '';\n\n\t    if (node.isOpen === true) {\n\t      return prefix + node.value;\n\t    }\n\n\t    if (node.isClose === true) {\n\t      console.log('node.isClose', prefix, node.value);\n\t      return prefix + node.value;\n\t    }\n\n\t    if (node.type === 'open') {\n\t      return invalid ? prefix + node.value : '(';\n\t    }\n\n\t    if (node.type === 'close') {\n\t      return invalid ? prefix + node.value : ')';\n\t    }\n\n\t    if (node.type === 'comma') {\n\t      return node.prev.type === 'comma' ? '' : invalid ? node.value : '|';\n\t    }\n\n\t    if (node.value) {\n\t      return node.value;\n\t    }\n\n\t    if (node.nodes && node.ranges > 0) {\n\t      const args = utils.reduce(node.nodes);\n\t      const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: true });\n\n\t      if (range.length !== 0) {\n\t        return args.length > 1 && range.length > 1 ? `(${range})` : range;\n\t      }\n\t    }\n\n\t    if (node.nodes) {\n\t      for (const child of node.nodes) {\n\t        output += walk(child, node);\n\t      }\n\t    }\n\n\t    return output;\n\t  };\n\n\t  return walk(ast);\n\t};\n\n\tcompile_1 = compile;\n\treturn compile_1;\n}\n\nvar expand_1;\nvar hasRequiredExpand;\n\nfunction requireExpand () {\n\tif (hasRequiredExpand) return expand_1;\n\thasRequiredExpand = 1;\n\n\tconst fill = /*@__PURE__*/ requireFillRange();\n\tconst stringify = /*@__PURE__*/ requireStringify();\n\tconst utils = /*@__PURE__*/ requireUtils();\n\n\tconst append = (queue = '', stash = '', enclose = false) => {\n\t  const result = [];\n\n\t  queue = [].concat(queue);\n\t  stash = [].concat(stash);\n\n\t  if (!stash.length) return queue;\n\t  if (!queue.length) {\n\t    return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n\t  }\n\n\t  for (const item of queue) {\n\t    if (Array.isArray(item)) {\n\t      for (const value of item) {\n\t        result.push(append(value, stash, enclose));\n\t      }\n\t    } else {\n\t      for (let ele of stash) {\n\t        if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n\t        result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele);\n\t      }\n\t    }\n\t  }\n\t  return utils.flatten(result);\n\t};\n\n\tconst expand = (ast, options = {}) => {\n\t  const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n\t  const walk = (node, parent = {}) => {\n\t    node.queue = [];\n\n\t    let p = parent;\n\t    let q = parent.queue;\n\n\t    while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n\t      p = p.parent;\n\t      q = p.queue;\n\t    }\n\n\t    if (node.invalid || node.dollar) {\n\t      q.push(append(q.pop(), stringify(node, options)));\n\t      return;\n\t    }\n\n\t    if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n\t      q.push(append(q.pop(), ['{}']));\n\t      return;\n\t    }\n\n\t    if (node.nodes && node.ranges > 0) {\n\t      const args = utils.reduce(node.nodes);\n\n\t      if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n\t        throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n\t      }\n\n\t      let range = fill(...args, options);\n\t      if (range.length === 0) {\n\t        range = stringify(node, options);\n\t      }\n\n\t      q.push(append(q.pop(), range));\n\t      node.nodes = [];\n\t      return;\n\t    }\n\n\t    const enclose = utils.encloseBrace(node);\n\t    let queue = node.queue;\n\t    let block = node;\n\n\t    while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n\t      block = block.parent;\n\t      queue = block.queue;\n\t    }\n\n\t    for (let i = 0; i < node.nodes.length; i++) {\n\t      const child = node.nodes[i];\n\n\t      if (child.type === 'comma' && node.type === 'brace') {\n\t        if (i === 1) queue.push('');\n\t        queue.push('');\n\t        continue;\n\t      }\n\n\t      if (child.type === 'close') {\n\t        q.push(append(q.pop(), queue, enclose));\n\t        continue;\n\t      }\n\n\t      if (child.value && child.type !== 'open') {\n\t        queue.push(append(queue.pop(), child.value));\n\t        continue;\n\t      }\n\n\t      if (child.nodes) {\n\t        walk(child, node);\n\t      }\n\t    }\n\n\t    return queue;\n\t  };\n\n\t  return utils.flatten(walk(ast));\n\t};\n\n\texpand_1 = expand;\n\treturn expand_1;\n}\n\nvar constants$1;\nvar hasRequiredConstants$1;\n\nfunction requireConstants$1 () {\n\tif (hasRequiredConstants$1) return constants$1;\n\thasRequiredConstants$1 = 1;\n\n\tconstants$1 = {\n\t  MAX_LENGTH: 10000,\n\n\t  // Digits\n\t  CHAR_0: '0', /* 0 */\n\t  CHAR_9: '9', /* 9 */\n\n\t  // Alphabet chars.\n\t  CHAR_UPPERCASE_A: 'A', /* A */\n\t  CHAR_LOWERCASE_A: 'a', /* a */\n\t  CHAR_UPPERCASE_Z: 'Z', /* Z */\n\t  CHAR_LOWERCASE_Z: 'z', /* z */\n\n\t  CHAR_LEFT_PARENTHESES: '(', /* ( */\n\t  CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n\t  CHAR_ASTERISK: '*', /* * */\n\n\t  // Non-alphabetic chars.\n\t  CHAR_AMPERSAND: '&', /* & */\n\t  CHAR_AT: '@', /* @ */\n\t  CHAR_BACKSLASH: '\\\\', /* \\ */\n\t  CHAR_BACKTICK: '`', /* ` */\n\t  CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n\t  CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n\t  CHAR_COLON: ':', /* : */\n\t  CHAR_COMMA: ',', /* , */\n\t  CHAR_DOLLAR: '$', /* . */\n\t  CHAR_DOT: '.', /* . */\n\t  CHAR_DOUBLE_QUOTE: '\"', /* \" */\n\t  CHAR_EQUAL: '=', /* = */\n\t  CHAR_EXCLAMATION_MARK: '!', /* ! */\n\t  CHAR_FORM_FEED: '\\f', /* \\f */\n\t  CHAR_FORWARD_SLASH: '/', /* / */\n\t  CHAR_HASH: '#', /* # */\n\t  CHAR_HYPHEN_MINUS: '-', /* - */\n\t  CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n\t  CHAR_LEFT_CURLY_BRACE: '{', /* { */\n\t  CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n\t  CHAR_LINE_FEED: '\\n', /* \\n */\n\t  CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n\t  CHAR_PERCENT: '%', /* % */\n\t  CHAR_PLUS: '+', /* + */\n\t  CHAR_QUESTION_MARK: '?', /* ? */\n\t  CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n\t  CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n\t  CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n\t  CHAR_SEMICOLON: ';', /* ; */\n\t  CHAR_SINGLE_QUOTE: '\\'', /* ' */\n\t  CHAR_SPACE: ' ', /*   */\n\t  CHAR_TAB: '\\t', /* \\t */\n\t  CHAR_UNDERSCORE: '_', /* _ */\n\t  CHAR_VERTICAL_LINE: '|', /* | */\n\t  CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n\t};\n\treturn constants$1;\n}\n\nvar parse_1;\nvar hasRequiredParse;\n\nfunction requireParse () {\n\tif (hasRequiredParse) return parse_1;\n\thasRequiredParse = 1;\n\n\tconst stringify = /*@__PURE__*/ requireStringify();\n\n\t/**\n\t * Constants\n\t */\n\n\tconst {\n\t  MAX_LENGTH,\n\t  CHAR_BACKSLASH, /* \\ */\n\t  CHAR_BACKTICK, /* ` */\n\t  CHAR_COMMA, /* , */\n\t  CHAR_DOT, /* . */\n\t  CHAR_LEFT_PARENTHESES, /* ( */\n\t  CHAR_RIGHT_PARENTHESES, /* ) */\n\t  CHAR_LEFT_CURLY_BRACE, /* { */\n\t  CHAR_RIGHT_CURLY_BRACE, /* } */\n\t  CHAR_LEFT_SQUARE_BRACKET, /* [ */\n\t  CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n\t  CHAR_DOUBLE_QUOTE, /* \" */\n\t  CHAR_SINGLE_QUOTE, /* ' */\n\t  CHAR_NO_BREAK_SPACE,\n\t  CHAR_ZERO_WIDTH_NOBREAK_SPACE\n\t} = /*@__PURE__*/ requireConstants$1();\n\n\t/**\n\t * parse\n\t */\n\n\tconst parse = (input, options = {}) => {\n\t  if (typeof input !== 'string') {\n\t    throw new TypeError('Expected a string');\n\t  }\n\n\t  const opts = options || {};\n\t  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\t  if (input.length > max) {\n\t    throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n\t  }\n\n\t  const ast = { type: 'root', input, nodes: [] };\n\t  const stack = [ast];\n\t  let block = ast;\n\t  let prev = ast;\n\t  let brackets = 0;\n\t  const length = input.length;\n\t  let index = 0;\n\t  let depth = 0;\n\t  let value;\n\n\t  /**\n\t   * Helpers\n\t   */\n\n\t  const advance = () => input[index++];\n\t  const push = node => {\n\t    if (node.type === 'text' && prev.type === 'dot') {\n\t      prev.type = 'text';\n\t    }\n\n\t    if (prev && prev.type === 'text' && node.type === 'text') {\n\t      prev.value += node.value;\n\t      return;\n\t    }\n\n\t    block.nodes.push(node);\n\t    node.parent = block;\n\t    node.prev = prev;\n\t    prev = node;\n\t    return node;\n\t  };\n\n\t  push({ type: 'bos' });\n\n\t  while (index < length) {\n\t    block = stack[stack.length - 1];\n\t    value = advance();\n\n\t    /**\n\t     * Invalid chars\n\t     */\n\n\t    if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Escaped chars\n\t     */\n\n\t    if (value === CHAR_BACKSLASH) {\n\t      push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Right square bracket (literal): ']'\n\t     */\n\n\t    if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n\t      push({ type: 'text', value: '\\\\' + value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Left square bracket: '['\n\t     */\n\n\t    if (value === CHAR_LEFT_SQUARE_BRACKET) {\n\t      brackets++;\n\n\t      let next;\n\n\t      while (index < length && (next = advance())) {\n\t        value += next;\n\n\t        if (next === CHAR_LEFT_SQUARE_BRACKET) {\n\t          brackets++;\n\t          continue;\n\t        }\n\n\t        if (next === CHAR_BACKSLASH) {\n\t          value += advance();\n\t          continue;\n\t        }\n\n\t        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n\t          brackets--;\n\n\t          if (brackets === 0) {\n\t            break;\n\t          }\n\t        }\n\t      }\n\n\t      push({ type: 'text', value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Parentheses\n\t     */\n\n\t    if (value === CHAR_LEFT_PARENTHESES) {\n\t      block = push({ type: 'paren', nodes: [] });\n\t      stack.push(block);\n\t      push({ type: 'text', value });\n\t      continue;\n\t    }\n\n\t    if (value === CHAR_RIGHT_PARENTHESES) {\n\t      if (block.type !== 'paren') {\n\t        push({ type: 'text', value });\n\t        continue;\n\t      }\n\t      block = stack.pop();\n\t      push({ type: 'text', value });\n\t      block = stack[stack.length - 1];\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Quotes: '|\"|`\n\t     */\n\n\t    if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n\t      const open = value;\n\t      let next;\n\n\t      if (options.keepQuotes !== true) {\n\t        value = '';\n\t      }\n\n\t      while (index < length && (next = advance())) {\n\t        if (next === CHAR_BACKSLASH) {\n\t          value += next + advance();\n\t          continue;\n\t        }\n\n\t        if (next === open) {\n\t          if (options.keepQuotes === true) value += next;\n\t          break;\n\t        }\n\n\t        value += next;\n\t      }\n\n\t      push({ type: 'text', value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Left curly brace: '{'\n\t     */\n\n\t    if (value === CHAR_LEFT_CURLY_BRACE) {\n\t      depth++;\n\n\t      const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n\t      const brace = {\n\t        type: 'brace',\n\t        open: true,\n\t        close: false,\n\t        dollar,\n\t        depth,\n\t        commas: 0,\n\t        ranges: 0,\n\t        nodes: []\n\t      };\n\n\t      block = push(brace);\n\t      stack.push(block);\n\t      push({ type: 'open', value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Right curly brace: '}'\n\t     */\n\n\t    if (value === CHAR_RIGHT_CURLY_BRACE) {\n\t      if (block.type !== 'brace') {\n\t        push({ type: 'text', value });\n\t        continue;\n\t      }\n\n\t      const type = 'close';\n\t      block = stack.pop();\n\t      block.close = true;\n\n\t      push({ type, value });\n\t      depth--;\n\n\t      block = stack[stack.length - 1];\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Comma: ','\n\t     */\n\n\t    if (value === CHAR_COMMA && depth > 0) {\n\t      if (block.ranges > 0) {\n\t        block.ranges = 0;\n\t        const open = block.nodes.shift();\n\t        block.nodes = [open, { type: 'text', value: stringify(block) }];\n\t      }\n\n\t      push({ type: 'comma', value });\n\t      block.commas++;\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Dot: '.'\n\t     */\n\n\t    if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n\t      const siblings = block.nodes;\n\n\t      if (depth === 0 || siblings.length === 0) {\n\t        push({ type: 'text', value });\n\t        continue;\n\t      }\n\n\t      if (prev.type === 'dot') {\n\t        block.range = [];\n\t        prev.value += value;\n\t        prev.type = 'range';\n\n\t        if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n\t          block.invalid = true;\n\t          block.ranges = 0;\n\t          prev.type = 'text';\n\t          continue;\n\t        }\n\n\t        block.ranges++;\n\t        block.args = [];\n\t        continue;\n\t      }\n\n\t      if (prev.type === 'range') {\n\t        siblings.pop();\n\n\t        const before = siblings[siblings.length - 1];\n\t        before.value += prev.value + value;\n\t        prev = before;\n\t        block.ranges--;\n\t        continue;\n\t      }\n\n\t      push({ type: 'dot', value });\n\t      continue;\n\t    }\n\n\t    /**\n\t     * Text\n\t     */\n\n\t    push({ type: 'text', value });\n\t  }\n\n\t  // Mark imbalanced braces and brackets as invalid\n\t  do {\n\t    block = stack.pop();\n\n\t    if (block.type !== 'root') {\n\t      block.nodes.forEach(node => {\n\t        if (!node.nodes) {\n\t          if (node.type === 'open') node.isOpen = true;\n\t          if (node.type === 'close') node.isClose = true;\n\t          if (!node.nodes) node.type = 'text';\n\t          node.invalid = true;\n\t        }\n\t      });\n\n\t      // get the location of the block on parent.nodes (block's siblings)\n\t      const parent = stack[stack.length - 1];\n\t      const index = parent.nodes.indexOf(block);\n\t      // replace the (invalid) block with it's nodes\n\t      parent.nodes.splice(index, 1, ...block.nodes);\n\t    }\n\t  } while (stack.length > 0);\n\n\t  push({ type: 'eos' });\n\t  return ast;\n\t};\n\n\tparse_1 = parse;\n\treturn parse_1;\n}\n\nvar braces_1;\nvar hasRequiredBraces;\n\nfunction requireBraces () {\n\tif (hasRequiredBraces) return braces_1;\n\thasRequiredBraces = 1;\n\n\tconst stringify = /*@__PURE__*/ requireStringify();\n\tconst compile = /*@__PURE__*/ requireCompile();\n\tconst expand = /*@__PURE__*/ requireExpand();\n\tconst parse = /*@__PURE__*/ requireParse();\n\n\t/**\n\t * Expand the given pattern or create a regex-compatible string.\n\t *\n\t * ```js\n\t * const braces = require('braces');\n\t * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n\t * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n\t * ```\n\t * @param {String} `str`\n\t * @param {Object} `options`\n\t * @return {String}\n\t * @api public\n\t */\n\n\tconst braces = (input, options = {}) => {\n\t  let output = [];\n\n\t  if (Array.isArray(input)) {\n\t    for (const pattern of input) {\n\t      const result = braces.create(pattern, options);\n\t      if (Array.isArray(result)) {\n\t        output.push(...result);\n\t      } else {\n\t        output.push(result);\n\t      }\n\t    }\n\t  } else {\n\t    output = [].concat(braces.create(input, options));\n\t  }\n\n\t  if (options && options.expand === true && options.nodupes === true) {\n\t    output = [...new Set(output)];\n\t  }\n\t  return output;\n\t};\n\n\t/**\n\t * Parse the given `str` with the given `options`.\n\t *\n\t * ```js\n\t * // braces.parse(pattern, [, options]);\n\t * const ast = braces.parse('a/{b,c}/d');\n\t * console.log(ast);\n\t * ```\n\t * @param {String} pattern Brace pattern to parse\n\t * @param {Object} options\n\t * @return {Object} Returns an AST\n\t * @api public\n\t */\n\n\tbraces.parse = (input, options = {}) => parse(input, options);\n\n\t/**\n\t * Creates a braces string from an AST, or an AST node.\n\t *\n\t * ```js\n\t * const braces = require('braces');\n\t * let ast = braces.parse('foo/{a,b}/bar');\n\t * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n\t * ```\n\t * @param {String} `input` Brace pattern or AST.\n\t * @param {Object} `options`\n\t * @return {Array} Returns an array of expanded values.\n\t * @api public\n\t */\n\n\tbraces.stringify = (input, options = {}) => {\n\t  if (typeof input === 'string') {\n\t    return stringify(braces.parse(input, options), options);\n\t  }\n\t  return stringify(input, options);\n\t};\n\n\t/**\n\t * Compiles a brace pattern into a regex-compatible, optimized string.\n\t * This method is called by the main [braces](#braces) function by default.\n\t *\n\t * ```js\n\t * const braces = require('braces');\n\t * console.log(braces.compile('a/{b,c}/d'));\n\t * //=> ['a/(b|c)/d']\n\t * ```\n\t * @param {String} `input` Brace pattern or AST.\n\t * @param {Object} `options`\n\t * @return {Array} Returns an array of expanded values.\n\t * @api public\n\t */\n\n\tbraces.compile = (input, options = {}) => {\n\t  if (typeof input === 'string') {\n\t    input = braces.parse(input, options);\n\t  }\n\t  return compile(input, options);\n\t};\n\n\t/**\n\t * Expands a brace pattern into an array. This method is called by the\n\t * main [braces](#braces) function when `options.expand` is true. Before\n\t * using this method it's recommended that you read the [performance notes](#performance))\n\t * and advantages of using [.compile](#compile) instead.\n\t *\n\t * ```js\n\t * const braces = require('braces');\n\t * console.log(braces.expand('a/{b,c}/d'));\n\t * //=> ['a/b/d', 'a/c/d'];\n\t * ```\n\t * @param {String} `pattern` Brace pattern\n\t * @param {Object} `options`\n\t * @return {Array} Returns an array of expanded values.\n\t * @api public\n\t */\n\n\tbraces.expand = (input, options = {}) => {\n\t  if (typeof input === 'string') {\n\t    input = braces.parse(input, options);\n\t  }\n\n\t  let result = expand(input, options);\n\n\t  // filter out empty strings if specified\n\t  if (options.noempty === true) {\n\t    result = result.filter(Boolean);\n\t  }\n\n\t  // filter out duplicates if specified\n\t  if (options.nodupes === true) {\n\t    result = [...new Set(result)];\n\t  }\n\n\t  return result;\n\t};\n\n\t/**\n\t * Processes a brace pattern and returns either an expanded array\n\t * (if `options.expand` is true), a highly optimized regex-compatible string.\n\t * This method is called by the main [braces](#braces) function.\n\t *\n\t * ```js\n\t * const braces = require('braces');\n\t * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n\t * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n\t * ```\n\t * @param {String} `pattern` Brace pattern\n\t * @param {Object} `options`\n\t * @return {Array} Returns an array of expanded values.\n\t * @api public\n\t */\n\n\tbraces.create = (input, options = {}) => {\n\t  if (input === '' || input.length < 3) {\n\t    return [input];\n\t  }\n\n\t  return options.expand !== true\n\t    ? braces.compile(input, options)\n\t    : braces.expand(input, options);\n\t};\n\n\t/**\n\t * Expose \"braces\"\n\t */\n\n\tbraces_1 = braces;\n\treturn braces_1;\n}\n\nconst require$$0 = [\n\t\"3dm\",\n\t\"3ds\",\n\t\"3g2\",\n\t\"3gp\",\n\t\"7z\",\n\t\"a\",\n\t\"aac\",\n\t\"adp\",\n\t\"afdesign\",\n\t\"afphoto\",\n\t\"afpub\",\n\t\"ai\",\n\t\"aif\",\n\t\"aiff\",\n\t\"alz\",\n\t\"ape\",\n\t\"apk\",\n\t\"appimage\",\n\t\"ar\",\n\t\"arj\",\n\t\"asf\",\n\t\"au\",\n\t\"avi\",\n\t\"bak\",\n\t\"baml\",\n\t\"bh\",\n\t\"bin\",\n\t\"bk\",\n\t\"bmp\",\n\t\"btif\",\n\t\"bz2\",\n\t\"bzip2\",\n\t\"cab\",\n\t\"caf\",\n\t\"cgm\",\n\t\"class\",\n\t\"cmx\",\n\t\"cpio\",\n\t\"cr2\",\n\t\"cur\",\n\t\"dat\",\n\t\"dcm\",\n\t\"deb\",\n\t\"dex\",\n\t\"djvu\",\n\t\"dll\",\n\t\"dmg\",\n\t\"dng\",\n\t\"doc\",\n\t\"docm\",\n\t\"docx\",\n\t\"dot\",\n\t\"dotm\",\n\t\"dra\",\n\t\"DS_Store\",\n\t\"dsk\",\n\t\"dts\",\n\t\"dtshd\",\n\t\"dvb\",\n\t\"dwg\",\n\t\"dxf\",\n\t\"ecelp4800\",\n\t\"ecelp7470\",\n\t\"ecelp9600\",\n\t\"egg\",\n\t\"eol\",\n\t\"eot\",\n\t\"epub\",\n\t\"exe\",\n\t\"f4v\",\n\t\"fbs\",\n\t\"fh\",\n\t\"fla\",\n\t\"flac\",\n\t\"flatpak\",\n\t\"fli\",\n\t\"flv\",\n\t\"fpx\",\n\t\"fst\",\n\t\"fvt\",\n\t\"g3\",\n\t\"gh\",\n\t\"gif\",\n\t\"graffle\",\n\t\"gz\",\n\t\"gzip\",\n\t\"h261\",\n\t\"h263\",\n\t\"h264\",\n\t\"icns\",\n\t\"ico\",\n\t\"ief\",\n\t\"img\",\n\t\"ipa\",\n\t\"iso\",\n\t\"jar\",\n\t\"jpeg\",\n\t\"jpg\",\n\t\"jpgv\",\n\t\"jpm\",\n\t\"jxr\",\n\t\"key\",\n\t\"ktx\",\n\t\"lha\",\n\t\"lib\",\n\t\"lvp\",\n\t\"lz\",\n\t\"lzh\",\n\t\"lzma\",\n\t\"lzo\",\n\t\"m3u\",\n\t\"m4a\",\n\t\"m4v\",\n\t\"mar\",\n\t\"mdi\",\n\t\"mht\",\n\t\"mid\",\n\t\"midi\",\n\t\"mj2\",\n\t\"mka\",\n\t\"mkv\",\n\t\"mmr\",\n\t\"mng\",\n\t\"mobi\",\n\t\"mov\",\n\t\"movie\",\n\t\"mp3\",\n\t\"mp4\",\n\t\"mp4a\",\n\t\"mpeg\",\n\t\"mpg\",\n\t\"mpga\",\n\t\"mxu\",\n\t\"nef\",\n\t\"npx\",\n\t\"numbers\",\n\t\"nupkg\",\n\t\"o\",\n\t\"odp\",\n\t\"ods\",\n\t\"odt\",\n\t\"oga\",\n\t\"ogg\",\n\t\"ogv\",\n\t\"otf\",\n\t\"ott\",\n\t\"pages\",\n\t\"pbm\",\n\t\"pcx\",\n\t\"pdb\",\n\t\"pdf\",\n\t\"pea\",\n\t\"pgm\",\n\t\"pic\",\n\t\"png\",\n\t\"pnm\",\n\t\"pot\",\n\t\"potm\",\n\t\"potx\",\n\t\"ppa\",\n\t\"ppam\",\n\t\"ppm\",\n\t\"pps\",\n\t\"ppsm\",\n\t\"ppsx\",\n\t\"ppt\",\n\t\"pptm\",\n\t\"pptx\",\n\t\"psd\",\n\t\"pya\",\n\t\"pyc\",\n\t\"pyo\",\n\t\"pyv\",\n\t\"qt\",\n\t\"rar\",\n\t\"ras\",\n\t\"raw\",\n\t\"resources\",\n\t\"rgb\",\n\t\"rip\",\n\t\"rlc\",\n\t\"rmf\",\n\t\"rmvb\",\n\t\"rpm\",\n\t\"rtf\",\n\t\"rz\",\n\t\"s3m\",\n\t\"s7z\",\n\t\"scpt\",\n\t\"sgi\",\n\t\"shar\",\n\t\"snap\",\n\t\"sil\",\n\t\"sketch\",\n\t\"slk\",\n\t\"smv\",\n\t\"snk\",\n\t\"so\",\n\t\"stl\",\n\t\"suo\",\n\t\"sub\",\n\t\"swf\",\n\t\"tar\",\n\t\"tbz\",\n\t\"tbz2\",\n\t\"tga\",\n\t\"tgz\",\n\t\"thmx\",\n\t\"tif\",\n\t\"tiff\",\n\t\"tlz\",\n\t\"ttc\",\n\t\"ttf\",\n\t\"txz\",\n\t\"udf\",\n\t\"uvh\",\n\t\"uvi\",\n\t\"uvm\",\n\t\"uvp\",\n\t\"uvs\",\n\t\"uvu\",\n\t\"viv\",\n\t\"vob\",\n\t\"war\",\n\t\"wav\",\n\t\"wax\",\n\t\"wbmp\",\n\t\"wdp\",\n\t\"weba\",\n\t\"webm\",\n\t\"webp\",\n\t\"whl\",\n\t\"wim\",\n\t\"wm\",\n\t\"wma\",\n\t\"wmv\",\n\t\"wmx\",\n\t\"woff\",\n\t\"woff2\",\n\t\"wrm\",\n\t\"wvx\",\n\t\"xbm\",\n\t\"xif\",\n\t\"xla\",\n\t\"xlam\",\n\t\"xls\",\n\t\"xlsb\",\n\t\"xlsm\",\n\t\"xlsx\",\n\t\"xlt\",\n\t\"xltm\",\n\t\"xltx\",\n\t\"xm\",\n\t\"xmind\",\n\t\"xpi\",\n\t\"xpm\",\n\t\"xwd\",\n\t\"xz\",\n\t\"z\",\n\t\"zip\",\n\t\"zipx\"\n];\n\nvar binaryExtensions;\nvar hasRequiredBinaryExtensions;\n\nfunction requireBinaryExtensions () {\n\tif (hasRequiredBinaryExtensions) return binaryExtensions;\n\thasRequiredBinaryExtensions = 1;\n\tbinaryExtensions = require$$0;\n\treturn binaryExtensions;\n}\n\nvar isBinaryPath;\nvar hasRequiredIsBinaryPath;\n\nfunction requireIsBinaryPath () {\n\tif (hasRequiredIsBinaryPath) return isBinaryPath;\n\thasRequiredIsBinaryPath = 1;\n\tconst path = require$$0$1;\n\tconst binaryExtensions = /*@__PURE__*/ requireBinaryExtensions();\n\n\tconst extensions = new Set(binaryExtensions);\n\n\tisBinaryPath = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());\n\treturn isBinaryPath;\n}\n\nvar constants = {};\n\nvar hasRequiredConstants;\n\nfunction requireConstants () {\n\tif (hasRequiredConstants) return constants;\n\thasRequiredConstants = 1;\n\t(function (exports) {\n\n\t\tconst {sep} = require$$0$1;\n\t\tconst {platform} = process;\n\t\tconst os = require$$2$1;\n\n\t\texports.EV_ALL = 'all';\n\t\texports.EV_READY = 'ready';\n\t\texports.EV_ADD = 'add';\n\t\texports.EV_CHANGE = 'change';\n\t\texports.EV_ADD_DIR = 'addDir';\n\t\texports.EV_UNLINK = 'unlink';\n\t\texports.EV_UNLINK_DIR = 'unlinkDir';\n\t\texports.EV_RAW = 'raw';\n\t\texports.EV_ERROR = 'error';\n\n\t\texports.STR_DATA = 'data';\n\t\texports.STR_END = 'end';\n\t\texports.STR_CLOSE = 'close';\n\n\t\texports.FSEVENT_CREATED = 'created';\n\t\texports.FSEVENT_MODIFIED = 'modified';\n\t\texports.FSEVENT_DELETED = 'deleted';\n\t\texports.FSEVENT_MOVED = 'moved';\n\t\texports.FSEVENT_CLONED = 'cloned';\n\t\texports.FSEVENT_UNKNOWN = 'unknown';\n\t\texports.FSEVENT_FLAG_MUST_SCAN_SUBDIRS = 1;\n\t\texports.FSEVENT_TYPE_FILE = 'file';\n\t\texports.FSEVENT_TYPE_DIRECTORY = 'directory';\n\t\texports.FSEVENT_TYPE_SYMLINK = 'symlink';\n\n\t\texports.KEY_LISTENERS = 'listeners';\n\t\texports.KEY_ERR = 'errHandlers';\n\t\texports.KEY_RAW = 'rawEmitters';\n\t\texports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW];\n\n\t\texports.DOT_SLASH = `.${sep}`;\n\n\t\texports.BACK_SLASH_RE = /\\\\/g;\n\t\texports.DOUBLE_SLASH_RE = /\\/\\//;\n\t\texports.SLASH_OR_BACK_SLASH_RE = /[/\\\\]/;\n\t\texports.DOT_RE = /\\..*\\.(sw[px])$|~$|\\.subl.*\\.tmp/;\n\t\texports.REPLACER_RE = /^\\.[/\\\\]/;\n\n\t\texports.SLASH = '/';\n\t\texports.SLASH_SLASH = '//';\n\t\texports.BRACE_START = '{';\n\t\texports.BANG = '!';\n\t\texports.ONE_DOT = '.';\n\t\texports.TWO_DOTS = '..';\n\t\texports.STAR = '*';\n\t\texports.GLOBSTAR = '**';\n\t\texports.ROOT_GLOBSTAR = '/**/*';\n\t\texports.SLASH_GLOBSTAR = '/**';\n\t\texports.DIR_SUFFIX = 'Dir';\n\t\texports.ANYMATCH_OPTS = {dot: true};\n\t\texports.STRING_TYPE = 'string';\n\t\texports.FUNCTION_TYPE = 'function';\n\t\texports.EMPTY_STR = '';\n\t\texports.EMPTY_FN = () => {};\n\t\texports.IDENTITY_FN = val => val;\n\n\t\texports.isWindows = platform === 'win32';\n\t\texports.isMacos = platform === 'darwin';\n\t\texports.isLinux = platform === 'linux';\n\t\texports.isIBMi = os.type() === 'OS400'; \n\t} (constants));\n\treturn constants;\n}\n\nvar nodefsHandler;\nvar hasRequiredNodefsHandler;\n\nfunction requireNodefsHandler () {\n\tif (hasRequiredNodefsHandler) return nodefsHandler;\n\thasRequiredNodefsHandler = 1;\n\n\tconst fs = require$$0$2;\n\tconst sysPath = require$$0$1;\n\tconst { promisify } = require$$2;\n\tconst isBinaryPath = /*@__PURE__*/ requireIsBinaryPath();\n\tconst {\n\t  isWindows,\n\t  isLinux,\n\t  EMPTY_FN,\n\t  EMPTY_STR,\n\t  KEY_LISTENERS,\n\t  KEY_ERR,\n\t  KEY_RAW,\n\t  HANDLER_KEYS,\n\t  EV_CHANGE,\n\t  EV_ADD,\n\t  EV_ADD_DIR,\n\t  EV_ERROR,\n\t  STR_DATA,\n\t  STR_END,\n\t  BRACE_START,\n\t  STAR\n\t} = /*@__PURE__*/ requireConstants();\n\n\tconst THROTTLE_MODE_WATCH = 'watch';\n\n\tconst open = promisify(fs.open);\n\tconst stat = promisify(fs.stat);\n\tconst lstat = promisify(fs.lstat);\n\tconst close = promisify(fs.close);\n\tconst fsrealpath = promisify(fs.realpath);\n\n\tconst statMethods = { lstat, stat };\n\n\t// TODO: emit errors properly. Example: EMFILE on Macos.\n\tconst foreach = (val, fn) => {\n\t  if (val instanceof Set) {\n\t    val.forEach(fn);\n\t  } else {\n\t    fn(val);\n\t  }\n\t};\n\n\tconst addAndConvert = (main, prop, item) => {\n\t  let container = main[prop];\n\t  if (!(container instanceof Set)) {\n\t    main[prop] = container = new Set([container]);\n\t  }\n\t  container.add(item);\n\t};\n\n\tconst clearItem = cont => key => {\n\t  const set = cont[key];\n\t  if (set instanceof Set) {\n\t    set.clear();\n\t  } else {\n\t    delete cont[key];\n\t  }\n\t};\n\n\tconst delFromSet = (main, prop, item) => {\n\t  const container = main[prop];\n\t  if (container instanceof Set) {\n\t    container.delete(item);\n\t  } else if (container === item) {\n\t    delete main[prop];\n\t  }\n\t};\n\n\tconst isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val;\n\n\t/**\n\t * @typedef {String} Path\n\t */\n\n\t// fs_watch helpers\n\n\t// object to hold per-process fs_watch instances\n\t// (may be shared across chokidar FSWatcher instances)\n\n\t/**\n\t * @typedef {Object} FsWatchContainer\n\t * @property {Set} listeners\n\t * @property {Set} errHandlers\n\t * @property {Set} rawEmitters\n\t * @property {fs.FSWatcher=} watcher\n\t * @property {Boolean=} watcherUnusable\n\t */\n\n\t/**\n\t * @type {Map<String,FsWatchContainer>}\n\t */\n\tconst FsWatchInstances = new Map();\n\n\t/**\n\t * Instantiates the fs_watch interface\n\t * @param {String} path to be watched\n\t * @param {Object} options to be passed to fs_watch\n\t * @param {Function} listener main event handler\n\t * @param {Function} errHandler emits info about errors\n\t * @param {Function} emitRaw emits raw event data\n\t * @returns {fs.FSWatcher} new fsevents instance\n\t */\n\tfunction createFsWatchInstance(path, options, listener, errHandler, emitRaw) {\n\t  const handleEvent = (rawEvent, evPath) => {\n\t    listener(path);\n\t    emitRaw(rawEvent, evPath, {watchedPath: path});\n\n\t    // emit based on events occurring for files from a directory's watcher in\n\t    // case the file's watcher misses it (and rely on throttling to de-dupe)\n\t    if (evPath && path !== evPath) {\n\t      fsWatchBroadcast(\n\t        sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath)\n\t      );\n\t    }\n\t  };\n\t  try {\n\t    return fs.watch(path, options, handleEvent);\n\t  } catch (error) {\n\t    errHandler(error);\n\t  }\n\t}\n\n\t/**\n\t * Helper for passing fs_watch event data to a collection of listeners\n\t * @param {Path} fullPath absolute path bound to fs_watch instance\n\t * @param {String} type listener type\n\t * @param {*=} val1 arguments to be passed to listeners\n\t * @param {*=} val2\n\t * @param {*=} val3\n\t */\n\tconst fsWatchBroadcast = (fullPath, type, val1, val2, val3) => {\n\t  const cont = FsWatchInstances.get(fullPath);\n\t  if (!cont) return;\n\t  foreach(cont[type], (listener) => {\n\t    listener(val1, val2, val3);\n\t  });\n\t};\n\n\t/**\n\t * Instantiates the fs_watch interface or binds listeners\n\t * to an existing one covering the same file system entry\n\t * @param {String} path\n\t * @param {String} fullPath absolute path\n\t * @param {Object} options to be passed to fs_watch\n\t * @param {Object} handlers container for event listener functions\n\t */\n\tconst setFsWatchListener = (path, fullPath, options, handlers) => {\n\t  const {listener, errHandler, rawEmitter} = handlers;\n\t  let cont = FsWatchInstances.get(fullPath);\n\n\t  /** @type {fs.FSWatcher=} */\n\t  let watcher;\n\t  if (!options.persistent) {\n\t    watcher = createFsWatchInstance(\n\t      path, options, listener, errHandler, rawEmitter\n\t    );\n\t    return watcher.close.bind(watcher);\n\t  }\n\t  if (cont) {\n\t    addAndConvert(cont, KEY_LISTENERS, listener);\n\t    addAndConvert(cont, KEY_ERR, errHandler);\n\t    addAndConvert(cont, KEY_RAW, rawEmitter);\n\t  } else {\n\t    watcher = createFsWatchInstance(\n\t      path,\n\t      options,\n\t      fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS),\n\t      errHandler, // no need to use broadcast here\n\t      fsWatchBroadcast.bind(null, fullPath, KEY_RAW)\n\t    );\n\t    if (!watcher) return;\n\t    watcher.on(EV_ERROR, async (error) => {\n\t      const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);\n\t      cont.watcherUnusable = true; // documented since Node 10.4.1\n\t      // Workaround for https://github.com/joyent/node/issues/4337\n\t      if (isWindows && error.code === 'EPERM') {\n\t        try {\n\t          const fd = await open(path, 'r');\n\t          await close(fd);\n\t          broadcastErr(error);\n\t        } catch (err) {}\n\t      } else {\n\t        broadcastErr(error);\n\t      }\n\t    });\n\t    cont = {\n\t      listeners: listener,\n\t      errHandlers: errHandler,\n\t      rawEmitters: rawEmitter,\n\t      watcher\n\t    };\n\t    FsWatchInstances.set(fullPath, cont);\n\t  }\n\t  // const index = cont.listeners.indexOf(listener);\n\n\t  // removes this instance's listeners and closes the underlying fs_watch\n\t  // instance if there are no more listeners left\n\t  return () => {\n\t    delFromSet(cont, KEY_LISTENERS, listener);\n\t    delFromSet(cont, KEY_ERR, errHandler);\n\t    delFromSet(cont, KEY_RAW, rawEmitter);\n\t    if (isEmptySet(cont.listeners)) {\n\t      // Check to protect against issue gh-730.\n\t      // if (cont.watcherUnusable) {\n\t      cont.watcher.close();\n\t      // }\n\t      FsWatchInstances.delete(fullPath);\n\t      HANDLER_KEYS.forEach(clearItem(cont));\n\t      cont.watcher = undefined;\n\t      Object.freeze(cont);\n\t    }\n\t  };\n\t};\n\n\t// fs_watchFile helpers\n\n\t// object to hold per-process fs_watchFile instances\n\t// (may be shared across chokidar FSWatcher instances)\n\tconst FsWatchFileInstances = new Map();\n\n\t/**\n\t * Instantiates the fs_watchFile interface or binds listeners\n\t * to an existing one covering the same file system entry\n\t * @param {String} path to be watched\n\t * @param {String} fullPath absolute path\n\t * @param {Object} options options to be passed to fs_watchFile\n\t * @param {Object} handlers container for event listener functions\n\t * @returns {Function} closer\n\t */\n\tconst setFsWatchFileListener = (path, fullPath, options, handlers) => {\n\t  const {listener, rawEmitter} = handlers;\n\t  let cont = FsWatchFileInstances.get(fullPath);\n\n\t  const copts = cont && cont.options;\n\t  if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {\n\t    fs.unwatchFile(fullPath);\n\t    cont = undefined;\n\t  }\n\n\t  /* eslint-enable no-unused-vars, prefer-destructuring */\n\n\t  if (cont) {\n\t    addAndConvert(cont, KEY_LISTENERS, listener);\n\t    addAndConvert(cont, KEY_RAW, rawEmitter);\n\t  } else {\n\t    // TODO\n\t    // listeners.add(listener);\n\t    // rawEmitters.add(rawEmitter);\n\t    cont = {\n\t      listeners: listener,\n\t      rawEmitters: rawEmitter,\n\t      options,\n\t      watcher: fs.watchFile(fullPath, options, (curr, prev) => {\n\t        foreach(cont.rawEmitters, (rawEmitter) => {\n\t          rawEmitter(EV_CHANGE, fullPath, {curr, prev});\n\t        });\n\t        const currmtime = curr.mtimeMs;\n\t        if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {\n\t          foreach(cont.listeners, (listener) => listener(path, curr));\n\t        }\n\t      })\n\t    };\n\t    FsWatchFileInstances.set(fullPath, cont);\n\t  }\n\t  // const index = cont.listeners.indexOf(listener);\n\n\t  // Removes this instance's listeners and closes the underlying fs_watchFile\n\t  // instance if there are no more listeners left.\n\t  return () => {\n\t    delFromSet(cont, KEY_LISTENERS, listener);\n\t    delFromSet(cont, KEY_RAW, rawEmitter);\n\t    if (isEmptySet(cont.listeners)) {\n\t      FsWatchFileInstances.delete(fullPath);\n\t      fs.unwatchFile(fullPath);\n\t      cont.options = cont.watcher = undefined;\n\t      Object.freeze(cont);\n\t    }\n\t  };\n\t};\n\n\t/**\n\t * @mixin\n\t */\n\tclass NodeFsHandler {\n\n\t/**\n\t * @param {import(\"../index\").FSWatcher} fsW\n\t */\n\tconstructor(fsW) {\n\t  this.fsw = fsW;\n\t  this._boundHandleError = (error) => fsW._handleError(error);\n\t}\n\n\t/**\n\t * Watch file for changes with fs_watchFile or fs_watch.\n\t * @param {String} path to file or dir\n\t * @param {Function} listener on fs change\n\t * @returns {Function} closer for the watcher instance\n\t */\n\t_watchWithNodeFs(path, listener) {\n\t  const opts = this.fsw.options;\n\t  const directory = sysPath.dirname(path);\n\t  const basename = sysPath.basename(path);\n\t  const parent = this.fsw._getWatchedDir(directory);\n\t  parent.add(basename);\n\t  const absolutePath = sysPath.resolve(path);\n\t  const options = {persistent: opts.persistent};\n\t  if (!listener) listener = EMPTY_FN;\n\n\t  let closer;\n\t  if (opts.usePolling) {\n\t    options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ?\n\t      opts.binaryInterval : opts.interval;\n\t    closer = setFsWatchFileListener(path, absolutePath, options, {\n\t      listener,\n\t      rawEmitter: this.fsw._emitRaw\n\t    });\n\t  } else {\n\t    closer = setFsWatchListener(path, absolutePath, options, {\n\t      listener,\n\t      errHandler: this._boundHandleError,\n\t      rawEmitter: this.fsw._emitRaw\n\t    });\n\t  }\n\t  return closer;\n\t}\n\n\t/**\n\t * Watch a file and emit add event if warranted.\n\t * @param {Path} file Path\n\t * @param {fs.Stats} stats result of fs_stat\n\t * @param {Boolean} initialAdd was the file added at watch instantiation?\n\t * @returns {Function} closer for the watcher instance\n\t */\n\t_handleFile(file, stats, initialAdd) {\n\t  if (this.fsw.closed) {\n\t    return;\n\t  }\n\t  const dirname = sysPath.dirname(file);\n\t  const basename = sysPath.basename(file);\n\t  const parent = this.fsw._getWatchedDir(dirname);\n\t  // stats is always present\n\t  let prevStats = stats;\n\n\t  // if the file is already being watched, do nothing\n\t  if (parent.has(basename)) return;\n\n\t  const listener = async (path, newStats) => {\n\t    if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return;\n\t    if (!newStats || newStats.mtimeMs === 0) {\n\t      try {\n\t        const newStats = await stat(file);\n\t        if (this.fsw.closed) return;\n\t        // Check that change event was not fired because of changed only accessTime.\n\t        const at = newStats.atimeMs;\n\t        const mt = newStats.mtimeMs;\n\t        if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n\t          this.fsw._emit(EV_CHANGE, file, newStats);\n\t        }\n\t        if (isLinux && prevStats.ino !== newStats.ino) {\n\t          this.fsw._closeFile(path);\n\t          prevStats = newStats;\n\t          this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener));\n\t        } else {\n\t          prevStats = newStats;\n\t        }\n\t      } catch (error) {\n\t        // Fix issues where mtime is null but file is still present\n\t        this.fsw._remove(dirname, basename);\n\t      }\n\t      // add is about to be emitted if file not already tracked in parent\n\t    } else if (parent.has(basename)) {\n\t      // Check that change event was not fired because of changed only accessTime.\n\t      const at = newStats.atimeMs;\n\t      const mt = newStats.mtimeMs;\n\t      if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n\t        this.fsw._emit(EV_CHANGE, file, newStats);\n\t      }\n\t      prevStats = newStats;\n\t    }\n\t  };\n\t  // kick off the watcher\n\t  const closer = this._watchWithNodeFs(file, listener);\n\n\t  // emit an add event if we're supposed to\n\t  if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {\n\t    if (!this.fsw._throttle(EV_ADD, file, 0)) return;\n\t    this.fsw._emit(EV_ADD, file, stats);\n\t  }\n\n\t  return closer;\n\t}\n\n\t/**\n\t * Handle symlinks encountered while reading a dir.\n\t * @param {Object} entry returned by readdirp\n\t * @param {String} directory path of dir being read\n\t * @param {String} path of this item\n\t * @param {String} item basename of this item\n\t * @returns {Promise<Boolean>} true if no more processing is needed for this entry.\n\t */\n\tasync _handleSymlink(entry, directory, path, item) {\n\t  if (this.fsw.closed) {\n\t    return;\n\t  }\n\t  const full = entry.fullPath;\n\t  const dir = this.fsw._getWatchedDir(directory);\n\n\t  if (!this.fsw.options.followSymlinks) {\n\t    // watch symlink directly (don't follow) and detect changes\n\t    this.fsw._incrReadyCount();\n\n\t    let linkPath;\n\t    try {\n\t      linkPath = await fsrealpath(path);\n\t    } catch (e) {\n\t      this.fsw._emitReady();\n\t      return true;\n\t    }\n\n\t    if (this.fsw.closed) return;\n\t    if (dir.has(item)) {\n\t      if (this.fsw._symlinkPaths.get(full) !== linkPath) {\n\t        this.fsw._symlinkPaths.set(full, linkPath);\n\t        this.fsw._emit(EV_CHANGE, path, entry.stats);\n\t      }\n\t    } else {\n\t      dir.add(item);\n\t      this.fsw._symlinkPaths.set(full, linkPath);\n\t      this.fsw._emit(EV_ADD, path, entry.stats);\n\t    }\n\t    this.fsw._emitReady();\n\t    return true;\n\t  }\n\n\t  // don't follow the same symlink more than once\n\t  if (this.fsw._symlinkPaths.has(full)) {\n\t    return true;\n\t  }\n\n\t  this.fsw._symlinkPaths.set(full, true);\n\t}\n\n\t_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {\n\t  // Normalize the directory name on Windows\n\t  directory = sysPath.join(directory, EMPTY_STR);\n\n\t  if (!wh.hasGlob) {\n\t    throttler = this.fsw._throttle('readdir', directory, 1000);\n\t    if (!throttler) return;\n\t  }\n\n\t  const previous = this.fsw._getWatchedDir(wh.path);\n\t  const current = new Set();\n\n\t  let stream = this.fsw._readdirp(directory, {\n\t    fileFilter: entry => wh.filterPath(entry),\n\t    directoryFilter: entry => wh.filterDir(entry),\n\t    depth: 0\n\t  }).on(STR_DATA, async (entry) => {\n\t    if (this.fsw.closed) {\n\t      stream = undefined;\n\t      return;\n\t    }\n\t    const item = entry.path;\n\t    let path = sysPath.join(directory, item);\n\t    current.add(item);\n\n\t    if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) {\n\t      return;\n\t    }\n\n\t    if (this.fsw.closed) {\n\t      stream = undefined;\n\t      return;\n\t    }\n\t    // Files that present in current directory snapshot\n\t    // but absent in previous are added to watch list and\n\t    // emit `add` event.\n\t    if (item === target || !target && !previous.has(item)) {\n\t      this.fsw._incrReadyCount();\n\n\t      // ensure relativeness of path is preserved in case of watcher reuse\n\t      path = sysPath.join(dir, sysPath.relative(dir, path));\n\n\t      this._addToNodeFs(path, initialAdd, wh, depth + 1);\n\t    }\n\t  }).on(EV_ERROR, this._boundHandleError);\n\n\t  return new Promise(resolve =>\n\t    stream.once(STR_END, () => {\n\t      if (this.fsw.closed) {\n\t        stream = undefined;\n\t        return;\n\t      }\n\t      const wasThrottled = throttler ? throttler.clear() : false;\n\n\t      resolve();\n\n\t      // Files that absent in current directory snapshot\n\t      // but present in previous emit `remove` event\n\t      // and are removed from @watched[directory].\n\t      previous.getChildren().filter((item) => {\n\t        return item !== directory &&\n\t          !current.has(item) &&\n\t          // in case of intersecting globs;\n\t          // a path may have been filtered out of this readdir, but\n\t          // shouldn't be removed because it matches a different glob\n\t          (!wh.hasGlob || wh.filterPath({\n\t            fullPath: sysPath.resolve(directory, item)\n\t          }));\n\t      }).forEach((item) => {\n\t        this.fsw._remove(directory, item);\n\t      });\n\n\t      stream = undefined;\n\n\t      // one more time for any missed in case changes came in extremely quickly\n\t      if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler);\n\t    })\n\t  );\n\t}\n\n\t/**\n\t * Read directory to add / remove files from `@watched` list and re-read it on change.\n\t * @param {String} dir fs path\n\t * @param {fs.Stats} stats\n\t * @param {Boolean} initialAdd\n\t * @param {Number} depth relative to user-supplied path\n\t * @param {String} target child path targeted for watch\n\t * @param {Object} wh Common watch helpers for this path\n\t * @param {String} realpath\n\t * @returns {Promise<Function>} closer for the watcher instance.\n\t */\n\tasync _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) {\n\t  const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));\n\t  const tracked = parentDir.has(sysPath.basename(dir));\n\t  if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {\n\t    if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats);\n\t  }\n\n\t  // ensure dir is tracked (harmless if redundant)\n\t  parentDir.add(sysPath.basename(dir));\n\t  this.fsw._getWatchedDir(dir);\n\t  let throttler;\n\t  let closer;\n\n\t  const oDepth = this.fsw.options.depth;\n\t  if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) {\n\t    if (!target) {\n\t      await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);\n\t      if (this.fsw.closed) return;\n\t    }\n\n\t    closer = this._watchWithNodeFs(dir, (dirPath, stats) => {\n\t      // if current directory is removed, do nothing\n\t      if (stats && stats.mtimeMs === 0) return;\n\n\t      this._handleRead(dirPath, false, wh, target, dir, depth, throttler);\n\t    });\n\t  }\n\t  return closer;\n\t}\n\n\t/**\n\t * Handle added file, directory, or glob pattern.\n\t * Delegates call to _handleFile / _handleDir after checks.\n\t * @param {String} path to file or ir\n\t * @param {Boolean} initialAdd was the file added at watch instantiation?\n\t * @param {Object} priorWh depth relative to user-supplied path\n\t * @param {Number} depth Child path actually targeted for watch\n\t * @param {String=} target Child path actually targeted for watch\n\t * @returns {Promise}\n\t */\n\tasync _addToNodeFs(path, initialAdd, priorWh, depth, target) {\n\t  const ready = this.fsw._emitReady;\n\t  if (this.fsw._isIgnored(path) || this.fsw.closed) {\n\t    ready();\n\t    return false;\n\t  }\n\n\t  const wh = this.fsw._getWatchHelpers(path, depth);\n\t  if (!wh.hasGlob && priorWh) {\n\t    wh.hasGlob = priorWh.hasGlob;\n\t    wh.globFilter = priorWh.globFilter;\n\t    wh.filterPath = entry => priorWh.filterPath(entry);\n\t    wh.filterDir = entry => priorWh.filterDir(entry);\n\t  }\n\n\t  // evaluate what is at the path we're being asked to watch\n\t  try {\n\t    const stats = await statMethods[wh.statMethod](wh.watchPath);\n\t    if (this.fsw.closed) return;\n\t    if (this.fsw._isIgnored(wh.watchPath, stats)) {\n\t      ready();\n\t      return false;\n\t    }\n\n\t    const follow = this.fsw.options.followSymlinks && !path.includes(STAR) && !path.includes(BRACE_START);\n\t    let closer;\n\t    if (stats.isDirectory()) {\n\t      const absPath = sysPath.resolve(path);\n\t      const targetPath = follow ? await fsrealpath(path) : path;\n\t      if (this.fsw.closed) return;\n\t      closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);\n\t      if (this.fsw.closed) return;\n\t      // preserve this symlink's target path\n\t      if (absPath !== targetPath && targetPath !== undefined) {\n\t        this.fsw._symlinkPaths.set(absPath, targetPath);\n\t      }\n\t    } else if (stats.isSymbolicLink()) {\n\t      const targetPath = follow ? await fsrealpath(path) : path;\n\t      if (this.fsw.closed) return;\n\t      const parent = sysPath.dirname(wh.watchPath);\n\t      this.fsw._getWatchedDir(parent).add(wh.watchPath);\n\t      this.fsw._emit(EV_ADD, wh.watchPath, stats);\n\t      closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath);\n\t      if (this.fsw.closed) return;\n\n\t      // preserve this symlink's target path\n\t      if (targetPath !== undefined) {\n\t        this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath);\n\t      }\n\t    } else {\n\t      closer = this._handleFile(wh.watchPath, stats, initialAdd);\n\t    }\n\t    ready();\n\n\t    this.fsw._addPathCloser(path, closer);\n\t    return false;\n\n\t  } catch (error) {\n\t    if (this.fsw._handleError(error)) {\n\t      ready();\n\t      return path;\n\t    }\n\t  }\n\t}\n\n\t}\n\n\tnodefsHandler = NodeFsHandler;\n\treturn nodefsHandler;\n}\n\nvar fseventsHandler = {exports: {}};\n\nconst require$$3 = /*@__PURE__*/getAugmentedNamespace(fseventsImporter);\n\nvar hasRequiredFseventsHandler;\n\nfunction requireFseventsHandler () {\n\tif (hasRequiredFseventsHandler) return fseventsHandler.exports;\n\thasRequiredFseventsHandler = 1;\n\n\tconst fs = require$$0$2;\n\tconst sysPath = require$$0$1;\n\tconst { promisify } = require$$2;\n\n\tlet fsevents;\n\ttry {\n\t  fsevents = require$$3.getFsEvents();\n\t} catch (error) {\n\t  if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error);\n\t}\n\n\tif (fsevents) {\n\t  // TODO: real check\n\t  const mtch = process.version.match(/v(\\d+)\\.(\\d+)/);\n\t  if (mtch && mtch[1] && mtch[2]) {\n\t    const maj = Number.parseInt(mtch[1], 10);\n\t    const min = Number.parseInt(mtch[2], 10);\n\t    if (maj === 8 && min < 16) {\n\t      fsevents = undefined;\n\t    }\n\t  }\n\t}\n\n\tconst {\n\t  EV_ADD,\n\t  EV_CHANGE,\n\t  EV_ADD_DIR,\n\t  EV_UNLINK,\n\t  EV_ERROR,\n\t  STR_DATA,\n\t  STR_END,\n\t  FSEVENT_CREATED,\n\t  FSEVENT_MODIFIED,\n\t  FSEVENT_DELETED,\n\t  FSEVENT_MOVED,\n\t  // FSEVENT_CLONED,\n\t  FSEVENT_UNKNOWN,\n\t  FSEVENT_FLAG_MUST_SCAN_SUBDIRS,\n\t  FSEVENT_TYPE_FILE,\n\t  FSEVENT_TYPE_DIRECTORY,\n\t  FSEVENT_TYPE_SYMLINK,\n\n\t  ROOT_GLOBSTAR,\n\t  DIR_SUFFIX,\n\t  DOT_SLASH,\n\t  FUNCTION_TYPE,\n\t  EMPTY_FN,\n\t  IDENTITY_FN\n\t} = /*@__PURE__*/ requireConstants();\n\n\tconst Depth = (value) => isNaN(value) ? {} : {depth: value};\n\n\tconst stat = promisify(fs.stat);\n\tconst lstat = promisify(fs.lstat);\n\tconst realpath = promisify(fs.realpath);\n\n\tconst statMethods = { stat, lstat };\n\n\t/**\n\t * @typedef {String} Path\n\t */\n\n\t/**\n\t * @typedef {Object} FsEventsWatchContainer\n\t * @property {Set<Function>} listeners\n\t * @property {Function} rawEmitter\n\t * @property {{stop: Function}} watcher\n\t */\n\n\t// fsevents instance helper functions\n\t/**\n\t * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances)\n\t * @type {Map<Path,FsEventsWatchContainer>}\n\t */\n\tconst FSEventsWatchers = new Map();\n\n\t// Threshold of duplicate path prefixes at which to start\n\t// consolidating going forward\n\tconst consolidateThreshhold = 10;\n\n\tconst wrongEventFlags = new Set([\n\t  69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912\n\t]);\n\n\t/**\n\t * Instantiates the fsevents interface\n\t * @param {Path} path path to be watched\n\t * @param {Function} callback called when fsevents is bound and ready\n\t * @returns {{stop: Function}} new fsevents instance\n\t */\n\tconst createFSEventsInstance = (path, callback) => {\n\t  const stop = fsevents.watch(path, callback);\n\t  return {stop};\n\t};\n\n\t/**\n\t * Instantiates the fsevents interface or binds listeners to an existing one covering\n\t * the same file tree.\n\t * @param {Path} path           - to be watched\n\t * @param {Path} realPath       - real path for symlinks\n\t * @param {Function} listener   - called when fsevents emits events\n\t * @param {Function} rawEmitter - passes data to listeners of the 'raw' event\n\t * @returns {Function} closer\n\t */\n\tfunction setFSEventsListener(path, realPath, listener, rawEmitter) {\n\t  let watchPath = sysPath.extname(realPath) ? sysPath.dirname(realPath) : realPath;\n\n\t  const parentPath = sysPath.dirname(watchPath);\n\t  let cont = FSEventsWatchers.get(watchPath);\n\n\t  // If we've accumulated a substantial number of paths that\n\t  // could have been consolidated by watching one directory\n\t  // above the current one, create a watcher on the parent\n\t  // path instead, so that we do consolidate going forward.\n\t  if (couldConsolidate(parentPath)) {\n\t    watchPath = parentPath;\n\t  }\n\n\t  const resolvedPath = sysPath.resolve(path);\n\t  const hasSymlink = resolvedPath !== realPath;\n\n\t  const filteredListener = (fullPath, flags, info) => {\n\t    if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath);\n\t    if (\n\t      fullPath === resolvedPath ||\n\t      !fullPath.indexOf(resolvedPath + sysPath.sep)\n\t    ) listener(fullPath, flags, info);\n\t  };\n\n\t  // check if there is already a watcher on a parent path\n\t  // modifies `watchPath` to the parent path when it finds a match\n\t  let watchedParent = false;\n\t  for (const watchedPath of FSEventsWatchers.keys()) {\n\t    if (realPath.indexOf(sysPath.resolve(watchedPath) + sysPath.sep) === 0) {\n\t      watchPath = watchedPath;\n\t      cont = FSEventsWatchers.get(watchPath);\n\t      watchedParent = true;\n\t      break;\n\t    }\n\t  }\n\n\t  if (cont || watchedParent) {\n\t    cont.listeners.add(filteredListener);\n\t  } else {\n\t    cont = {\n\t      listeners: new Set([filteredListener]),\n\t      rawEmitter,\n\t      watcher: createFSEventsInstance(watchPath, (fullPath, flags) => {\n\t        if (!cont.listeners.size) return;\n\t        if (flags & FSEVENT_FLAG_MUST_SCAN_SUBDIRS) return;\n\t        const info = fsevents.getInfo(fullPath, flags);\n\t        cont.listeners.forEach(list => {\n\t          list(fullPath, flags, info);\n\t        });\n\n\t        cont.rawEmitter(info.event, fullPath, info);\n\t      })\n\t    };\n\t    FSEventsWatchers.set(watchPath, cont);\n\t  }\n\n\t  // removes this instance's listeners and closes the underlying fsevents\n\t  // instance if there are no more listeners left\n\t  return () => {\n\t    const lst = cont.listeners;\n\n\t    lst.delete(filteredListener);\n\t    if (!lst.size) {\n\t      FSEventsWatchers.delete(watchPath);\n\t      if (cont.watcher) return cont.watcher.stop().then(() => {\n\t        cont.rawEmitter = cont.watcher = undefined;\n\t        Object.freeze(cont);\n\t      });\n\t    }\n\t  };\n\t}\n\n\t// Decide whether or not we should start a new higher-level\n\t// parent watcher\n\tconst couldConsolidate = (path) => {\n\t  let count = 0;\n\t  for (const watchPath of FSEventsWatchers.keys()) {\n\t    if (watchPath.indexOf(path) === 0) {\n\t      count++;\n\t      if (count >= consolidateThreshhold) {\n\t        return true;\n\t      }\n\t    }\n\t  }\n\n\t  return false;\n\t};\n\n\t// returns boolean indicating whether fsevents can be used\n\tconst canUse = () => fsevents && FSEventsWatchers.size < 128;\n\n\t// determines subdirectory traversal levels from root to path\n\tconst calcDepth = (path, root) => {\n\t  let i = 0;\n\t  while (!path.indexOf(root) && (path = sysPath.dirname(path)) !== root) i++;\n\t  return i;\n\t};\n\n\t// returns boolean indicating whether the fsevents' event info has the same type\n\t// as the one returned by fs.stat\n\tconst sameTypes = (info, stats) => (\n\t  info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() ||\n\t  info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() ||\n\t  info.type === FSEVENT_TYPE_FILE && stats.isFile()\n\t);\n\n\t/**\n\t * @mixin\n\t */\n\tclass FsEventsHandler {\n\n\t/**\n\t * @param {import('../index').FSWatcher} fsw\n\t */\n\tconstructor(fsw) {\n\t  this.fsw = fsw;\n\t}\n\tcheckIgnored(path, stats) {\n\t  const ipaths = this.fsw._ignoredPaths;\n\t  if (this.fsw._isIgnored(path, stats)) {\n\t    ipaths.add(path);\n\t    if (stats && stats.isDirectory()) {\n\t      ipaths.add(path + ROOT_GLOBSTAR);\n\t    }\n\t    return true;\n\t  }\n\n\t  ipaths.delete(path);\n\t  ipaths.delete(path + ROOT_GLOBSTAR);\n\t}\n\n\taddOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n\t  const event = watchedDir.has(item) ? EV_CHANGE : EV_ADD;\n\t  this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n\t}\n\n\tasync checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n\t  try {\n\t    const stats = await stat(path);\n\t    if (this.fsw.closed) return;\n\t    if (sameTypes(info, stats)) {\n\t      this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n\t    } else {\n\t      this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n\t    }\n\t  } catch (error) {\n\t    if (error.code === 'EACCES') {\n\t      this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n\t    } else {\n\t      this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n\t    }\n\t  }\n\t}\n\n\thandleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n\t  if (this.fsw.closed || this.checkIgnored(path)) return;\n\n\t  if (event === EV_UNLINK) {\n\t    const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY;\n\t    // suppress unlink events on never before seen files\n\t    if (isDirectory || watchedDir.has(item)) {\n\t      this.fsw._remove(parent, item, isDirectory);\n\t    }\n\t  } else {\n\t    if (event === EV_ADD) {\n\t      // track new directories\n\t      if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path);\n\n\t      if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) {\n\t        // push symlinks back to the top of the stack to get handled\n\t        const curDepth = opts.depth === undefined ?\n\t          undefined : calcDepth(fullPath, realPath) + 1;\n\t        return this._addToFsEvents(path, false, true, curDepth);\n\t      }\n\n\t      // track new paths\n\t      // (other than symlinks being followed, which will be tracked soon)\n\t      this.fsw._getWatchedDir(parent).add(item);\n\t    }\n\t    /**\n\t     * @type {'add'|'addDir'|'unlink'|'unlinkDir'}\n\t     */\n\t    const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event;\n\t    this.fsw._emit(eventName, path);\n\t    if (eventName === EV_ADD_DIR) this._addToFsEvents(path, false, true);\n\t  }\n\t}\n\n\t/**\n\t * Handle symlinks encountered during directory scan\n\t * @param {String} watchPath  - file/dir path to be watched with fsevents\n\t * @param {String} realPath   - real path (in case of symlinks)\n\t * @param {Function} transform  - path transformer\n\t * @param {Function} globFilter - path filter in case a glob pattern was provided\n\t * @returns {Function} closer for the watcher instance\n\t*/\n\t_watchWithFsEvents(watchPath, realPath, transform, globFilter) {\n\t  if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return;\n\t  const opts = this.fsw.options;\n\t  const watchCallback = async (fullPath, flags, info) => {\n\t    if (this.fsw.closed) return;\n\t    if (\n\t      opts.depth !== undefined &&\n\t      calcDepth(fullPath, realPath) > opts.depth\n\t    ) return;\n\t    const path = transform(sysPath.join(\n\t      watchPath, sysPath.relative(watchPath, fullPath)\n\t    ));\n\t    if (globFilter && !globFilter(path)) return;\n\t    // ensure directories are tracked\n\t    const parent = sysPath.dirname(path);\n\t    const item = sysPath.basename(path);\n\t    const watchedDir = this.fsw._getWatchedDir(\n\t      info.type === FSEVENT_TYPE_DIRECTORY ? path : parent\n\t    );\n\n\t    // correct for wrong events emitted\n\t    if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) {\n\t      if (typeof opts.ignored === FUNCTION_TYPE) {\n\t        let stats;\n\t        try {\n\t          stats = await stat(path);\n\t        } catch (error) {}\n\t        if (this.fsw.closed) return;\n\t        if (this.checkIgnored(path, stats)) return;\n\t        if (sameTypes(info, stats)) {\n\t          this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n\t        } else {\n\t          this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n\t        }\n\t      } else {\n\t        this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n\t      }\n\t    } else {\n\t      switch (info.event) {\n\t      case FSEVENT_CREATED:\n\t      case FSEVENT_MODIFIED:\n\t        return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n\t      case FSEVENT_DELETED:\n\t      case FSEVENT_MOVED:\n\t        return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n\t      }\n\t    }\n\t  };\n\n\t  const closer = setFSEventsListener(\n\t    watchPath,\n\t    realPath,\n\t    watchCallback,\n\t    this.fsw._emitRaw\n\t  );\n\n\t  this.fsw._emitReady();\n\t  return closer;\n\t}\n\n\t/**\n\t * Handle symlinks encountered during directory scan\n\t * @param {String} linkPath path to symlink\n\t * @param {String} fullPath absolute path to the symlink\n\t * @param {Function} transform pre-existing path transformer\n\t * @param {Number} curDepth level of subdirectories traversed to where symlink is\n\t * @returns {Promise<void>}\n\t */\n\tasync _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) {\n\t  // don't follow the same symlink more than once\n\t  if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return;\n\n\t  this.fsw._symlinkPaths.set(fullPath, true);\n\t  this.fsw._incrReadyCount();\n\n\t  try {\n\t    const linkTarget = await realpath(linkPath);\n\t    if (this.fsw.closed) return;\n\t    if (this.fsw._isIgnored(linkTarget)) {\n\t      return this.fsw._emitReady();\n\t    }\n\n\t    this.fsw._incrReadyCount();\n\n\t    // add the linkTarget for watching with a wrapper for transform\n\t    // that causes emitted paths to incorporate the link's path\n\t    this._addToFsEvents(linkTarget || linkPath, (path) => {\n\t      let aliasedPath = linkPath;\n\t      if (linkTarget && linkTarget !== DOT_SLASH) {\n\t        aliasedPath = path.replace(linkTarget, linkPath);\n\t      } else if (path !== DOT_SLASH) {\n\t        aliasedPath = sysPath.join(linkPath, path);\n\t      }\n\t      return transform(aliasedPath);\n\t    }, false, curDepth);\n\t  } catch(error) {\n\t    if (this.fsw._handleError(error)) {\n\t      return this.fsw._emitReady();\n\t    }\n\t  }\n\t}\n\n\t/**\n\t *\n\t * @param {Path} newPath\n\t * @param {fs.Stats} stats\n\t */\n\temitAdd(newPath, stats, processPath, opts, forceAdd) {\n\t  const pp = processPath(newPath);\n\t  const isDir = stats.isDirectory();\n\t  const dirObj = this.fsw._getWatchedDir(sysPath.dirname(pp));\n\t  const base = sysPath.basename(pp);\n\n\t  // ensure empty dirs get tracked\n\t  if (isDir) this.fsw._getWatchedDir(pp);\n\t  if (dirObj.has(base)) return;\n\t  dirObj.add(base);\n\n\t  if (!opts.ignoreInitial || forceAdd === true) {\n\t    this.fsw._emit(isDir ? EV_ADD_DIR : EV_ADD, pp, stats);\n\t  }\n\t}\n\n\tinitWatch(realPath, path, wh, processPath) {\n\t  if (this.fsw.closed) return;\n\t  const closer = this._watchWithFsEvents(\n\t    wh.watchPath,\n\t    sysPath.resolve(realPath || wh.watchPath),\n\t    processPath,\n\t    wh.globFilter\n\t  );\n\t  this.fsw._addPathCloser(path, closer);\n\t}\n\n\t/**\n\t * Handle added path with fsevents\n\t * @param {String} path file/dir path or glob pattern\n\t * @param {Function|Boolean=} transform converts working path to what the user expects\n\t * @param {Boolean=} forceAdd ensure add is emitted\n\t * @param {Number=} priorDepth Level of subdirectories already traversed.\n\t * @returns {Promise<void>}\n\t */\n\tasync _addToFsEvents(path, transform, forceAdd, priorDepth) {\n\t  if (this.fsw.closed) {\n\t    return;\n\t  }\n\t  const opts = this.fsw.options;\n\t  const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN;\n\n\t  const wh = this.fsw._getWatchHelpers(path);\n\n\t  // evaluate what is at the path we're being asked to watch\n\t  try {\n\t    const stats = await statMethods[wh.statMethod](wh.watchPath);\n\t    if (this.fsw.closed) return;\n\t    if (this.fsw._isIgnored(wh.watchPath, stats)) {\n\t      throw null;\n\t    }\n\t    if (stats.isDirectory()) {\n\t      // emit addDir unless this is a glob parent\n\t      if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd);\n\n\t      // don't recurse further if it would exceed depth setting\n\t      if (priorDepth && priorDepth > opts.depth) return;\n\n\t      // scan the contents of the dir\n\t      this.fsw._readdirp(wh.watchPath, {\n\t        fileFilter: entry => wh.filterPath(entry),\n\t        directoryFilter: entry => wh.filterDir(entry),\n\t        ...Depth(opts.depth - (priorDepth || 0))\n\t      }).on(STR_DATA, (entry) => {\n\t        // need to check filterPath on dirs b/c filterDir is less restrictive\n\t        if (this.fsw.closed) {\n\t          return;\n\t        }\n\t        if (entry.stats.isDirectory() && !wh.filterPath(entry)) return;\n\n\t        const joinedPath = sysPath.join(wh.watchPath, entry.path);\n\t        const {fullPath} = entry;\n\n\t        if (wh.followSymlinks && entry.stats.isSymbolicLink()) {\n\t          // preserve the current depth here since it can't be derived from\n\t          // real paths past the symlink\n\t          const curDepth = opts.depth === undefined ?\n\t            undefined : calcDepth(joinedPath, sysPath.resolve(wh.watchPath)) + 1;\n\n\t          this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth);\n\t        } else {\n\t          this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd);\n\t        }\n\t      }).on(EV_ERROR, EMPTY_FN).on(STR_END, () => {\n\t        this.fsw._emitReady();\n\t      });\n\t    } else {\n\t      this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd);\n\t      this.fsw._emitReady();\n\t    }\n\t  } catch (error) {\n\t    if (!error || this.fsw._handleError(error)) {\n\t      // TODO: Strange thing: \"should not choke on an ignored watch path\" will be failed without 2 ready calls -__-\n\t      this.fsw._emitReady();\n\t      this.fsw._emitReady();\n\t    }\n\t  }\n\n\t  if (opts.persistent && forceAdd !== true) {\n\t    if (typeof transform === FUNCTION_TYPE) {\n\t      // realpath has already been resolved\n\t      this.initWatch(undefined, path, wh, processPath);\n\t    } else {\n\t      let realPath;\n\t      try {\n\t        realPath = await realpath(wh.watchPath);\n\t      } catch (e) {}\n\t      this.initWatch(realPath, path, wh, processPath);\n\t    }\n\t  }\n\t}\n\n\t}\n\n\tfseventsHandler.exports = FsEventsHandler;\n\tfseventsHandler.exports.canUse = canUse;\n\treturn fseventsHandler.exports;\n}\n\nvar hasRequiredChokidar;\n\nfunction requireChokidar () {\n\tif (hasRequiredChokidar) return chokidar$1;\n\thasRequiredChokidar = 1;\n\n\tconst { EventEmitter } = require$$0$3;\n\tconst fs = require$$0$2;\n\tconst sysPath = require$$0$1;\n\tconst { promisify } = require$$2;\n\tconst readdirp = /*@__PURE__*/ requireReaddirp();\n\tconst anymatch = /*@__PURE__*/ requireAnymatch().default;\n\tconst globParent = /*@__PURE__*/ requireGlobParent();\n\tconst isGlob = /*@__PURE__*/ requireIsGlob();\n\tconst braces = /*@__PURE__*/ requireBraces();\n\tconst normalizePath = /*@__PURE__*/ requireNormalizePath();\n\n\tconst NodeFsHandler = /*@__PURE__*/ requireNodefsHandler();\n\tconst FsEventsHandler = /*@__PURE__*/ requireFseventsHandler();\n\tconst {\n\t  EV_ALL,\n\t  EV_READY,\n\t  EV_ADD,\n\t  EV_CHANGE,\n\t  EV_UNLINK,\n\t  EV_ADD_DIR,\n\t  EV_UNLINK_DIR,\n\t  EV_RAW,\n\t  EV_ERROR,\n\n\t  STR_CLOSE,\n\t  STR_END,\n\n\t  BACK_SLASH_RE,\n\t  DOUBLE_SLASH_RE,\n\t  SLASH_OR_BACK_SLASH_RE,\n\t  DOT_RE,\n\t  REPLACER_RE,\n\n\t  SLASH,\n\t  SLASH_SLASH,\n\t  BRACE_START,\n\t  BANG,\n\t  ONE_DOT,\n\t  TWO_DOTS,\n\t  GLOBSTAR,\n\t  SLASH_GLOBSTAR,\n\t  ANYMATCH_OPTS,\n\t  STRING_TYPE,\n\t  FUNCTION_TYPE,\n\t  EMPTY_STR,\n\t  EMPTY_FN,\n\n\t  isWindows,\n\t  isMacos,\n\t  isIBMi\n\t} = /*@__PURE__*/ requireConstants();\n\n\tconst stat = promisify(fs.stat);\n\tconst readdir = promisify(fs.readdir);\n\n\t/**\n\t * @typedef {String} Path\n\t * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName\n\t * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType\n\t */\n\n\t/**\n\t *\n\t * @typedef {Object} WatchHelpers\n\t * @property {Boolean} followSymlinks\n\t * @property {'stat'|'lstat'} statMethod\n\t * @property {Path} path\n\t * @property {Path} watchPath\n\t * @property {Function} entryPath\n\t * @property {Boolean} hasGlob\n\t * @property {Object} globFilter\n\t * @property {Function} filterPath\n\t * @property {Function} filterDir\n\t */\n\n\tconst arrify = (value = []) => Array.isArray(value) ? value : [value];\n\tconst flatten = (list, result = []) => {\n\t  list.forEach(item => {\n\t    if (Array.isArray(item)) {\n\t      flatten(item, result);\n\t    } else {\n\t      result.push(item);\n\t    }\n\t  });\n\t  return result;\n\t};\n\n\tconst unifyPaths = (paths_) => {\n\t  /**\n\t   * @type {Array<String>}\n\t   */\n\t  const paths = flatten(arrify(paths_));\n\t  if (!paths.every(p => typeof p === STRING_TYPE)) {\n\t    throw new TypeError(`Non-string provided as watch path: ${paths}`);\n\t  }\n\t  return paths.map(normalizePathToUnix);\n\t};\n\n\t// If SLASH_SLASH occurs at the beginning of path, it is not replaced\n\t//     because \"//StoragePC/DrivePool/Movies\" is a valid network path\n\tconst toUnix = (string) => {\n\t  let str = string.replace(BACK_SLASH_RE, SLASH);\n\t  let prepend = false;\n\t  if (str.startsWith(SLASH_SLASH)) {\n\t    prepend = true;\n\t  }\n\t  while (str.match(DOUBLE_SLASH_RE)) {\n\t    str = str.replace(DOUBLE_SLASH_RE, SLASH);\n\t  }\n\t  if (prepend) {\n\t    str = SLASH + str;\n\t  }\n\t  return str;\n\t};\n\n\t// Our version of upath.normalize\n\t// TODO: this is not equal to path-normalize module - investigate why\n\tconst normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path)));\n\n\tconst normalizeIgnored = (cwd = EMPTY_STR) => (path) => {\n\t  if (typeof path !== STRING_TYPE) return path;\n\t  return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path));\n\t};\n\n\tconst getAbsolutePath = (path, cwd) => {\n\t  if (sysPath.isAbsolute(path)) {\n\t    return path;\n\t  }\n\t  if (path.startsWith(BANG)) {\n\t    return BANG + sysPath.join(cwd, path.slice(1));\n\t  }\n\t  return sysPath.join(cwd, path);\n\t};\n\n\tconst undef = (opts, key) => opts[key] === undefined;\n\n\t/**\n\t * Directory entry.\n\t * @property {Path} path\n\t * @property {Set<Path>} items\n\t */\n\tclass DirEntry {\n\t  /**\n\t   * @param {Path} dir\n\t   * @param {Function} removeWatcher\n\t   */\n\t  constructor(dir, removeWatcher) {\n\t    this.path = dir;\n\t    this._removeWatcher = removeWatcher;\n\t    /** @type {Set<Path>} */\n\t    this.items = new Set();\n\t  }\n\n\t  add(item) {\n\t    const {items} = this;\n\t    if (!items) return;\n\t    if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item);\n\t  }\n\n\t  async remove(item) {\n\t    const {items} = this;\n\t    if (!items) return;\n\t    items.delete(item);\n\t    if (items.size > 0) return;\n\n\t    const dir = this.path;\n\t    try {\n\t      await readdir(dir);\n\t    } catch (err) {\n\t      if (this._removeWatcher) {\n\t        this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));\n\t      }\n\t    }\n\t  }\n\n\t  has(item) {\n\t    const {items} = this;\n\t    if (!items) return;\n\t    return items.has(item);\n\t  }\n\n\t  /**\n\t   * @returns {Array<String>}\n\t   */\n\t  getChildren() {\n\t    const {items} = this;\n\t    if (!items) return;\n\t    return [...items.values()];\n\t  }\n\n\t  dispose() {\n\t    this.items.clear();\n\t    delete this.path;\n\t    delete this._removeWatcher;\n\t    delete this.items;\n\t    Object.freeze(this);\n\t  }\n\t}\n\n\tconst STAT_METHOD_F = 'stat';\n\tconst STAT_METHOD_L = 'lstat';\n\tclass WatchHelper {\n\t  constructor(path, watchPath, follow, fsw) {\n\t    this.fsw = fsw;\n\t    this.path = path = path.replace(REPLACER_RE, EMPTY_STR);\n\t    this.watchPath = watchPath;\n\t    this.fullWatchPath = sysPath.resolve(watchPath);\n\t    this.hasGlob = watchPath !== path;\n\t    /** @type {object|boolean} */\n\t    if (path === EMPTY_STR) this.hasGlob = false;\n\t    this.globSymlink = this.hasGlob && follow ? undefined : false;\n\t    this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false;\n\t    this.dirParts = this.getDirParts(path);\n\t    this.dirParts.forEach((parts) => {\n\t      if (parts.length > 1) parts.pop();\n\t    });\n\t    this.followSymlinks = follow;\n\t    this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;\n\t  }\n\n\t  checkGlobSymlink(entry) {\n\t    // only need to resolve once\n\t    // first entry should always have entry.parentDir === EMPTY_STR\n\t    if (this.globSymlink === undefined) {\n\t      this.globSymlink = entry.fullParentDir === this.fullWatchPath ?\n\t        false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath};\n\t    }\n\n\t    if (this.globSymlink) {\n\t      return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath);\n\t    }\n\n\t    return entry.fullPath;\n\t  }\n\n\t  entryPath(entry) {\n\t    return sysPath.join(this.watchPath,\n\t      sysPath.relative(this.watchPath, this.checkGlobSymlink(entry))\n\t    );\n\t  }\n\n\t  filterPath(entry) {\n\t    const {stats} = entry;\n\t    if (stats && stats.isSymbolicLink()) return this.filterDir(entry);\n\t    const resolvedPath = this.entryPath(entry);\n\t    const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ?\n\t      this.globFilter(resolvedPath) : true;\n\t    return matchesGlob &&\n\t      this.fsw._isntIgnored(resolvedPath, stats) &&\n\t      this.fsw._hasReadPermissions(stats);\n\t  }\n\n\t  getDirParts(path) {\n\t    if (!this.hasGlob) return [];\n\t    const parts = [];\n\t    const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path];\n\t    expandedPath.forEach((path) => {\n\t      parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE));\n\t    });\n\t    return parts;\n\t  }\n\n\t  filterDir(entry) {\n\t    if (this.hasGlob) {\n\t      const entryParts = this.getDirParts(this.checkGlobSymlink(entry));\n\t      let globstar = false;\n\t      this.unmatchedGlob = !this.dirParts.some((parts) => {\n\t        return parts.every((part, i) => {\n\t          if (part === GLOBSTAR) globstar = true;\n\t          return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS);\n\t        });\n\t      });\n\t    }\n\t    return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats);\n\t  }\n\t}\n\n\t/**\n\t * Watches files & directories for changes. Emitted events:\n\t * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error`\n\t *\n\t *     new FSWatcher()\n\t *       .add(directories)\n\t *       .on('add', path => log('File', path, 'was added'))\n\t */\n\tclass FSWatcher extends EventEmitter {\n\t// Not indenting methods for history sake; for now.\n\tconstructor(_opts) {\n\t  super();\n\n\t  const opts = {};\n\t  if (_opts) Object.assign(opts, _opts); // for frozen objects\n\n\t  /** @type {Map<String, DirEntry>} */\n\t  this._watched = new Map();\n\t  /** @type {Map<String, Array>} */\n\t  this._closers = new Map();\n\t  /** @type {Set<String>} */\n\t  this._ignoredPaths = new Set();\n\n\t  /** @type {Map<ThrottleType, Map>} */\n\t  this._throttled = new Map();\n\n\t  /** @type {Map<Path, String|Boolean>} */\n\t  this._symlinkPaths = new Map();\n\n\t  this._streams = new Set();\n\t  this.closed = false;\n\n\t  // Set up default options.\n\t  if (undef(opts, 'persistent')) opts.persistent = true;\n\t  if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false;\n\t  if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false;\n\t  if (undef(opts, 'interval')) opts.interval = 100;\n\t  if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300;\n\t  if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false;\n\t  opts.enableBinaryInterval = opts.binaryInterval !== opts.interval;\n\n\t  // Enable fsevents on OS X when polling isn't explicitly enabled.\n\t  if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling;\n\n\t  // If we can't use fsevents, ensure the options reflect it's disabled.\n\t  const canUseFsEvents = FsEventsHandler.canUse();\n\t  if (!canUseFsEvents) opts.useFsEvents = false;\n\n\t  // Use polling on Mac if not using fsevents.\n\t  // Other platforms use non-polling fs_watch.\n\t  if (undef(opts, 'usePolling') && !opts.useFsEvents) {\n\t    opts.usePolling = isMacos;\n\t  }\n\n\t  // Always default to polling on IBM i because fs.watch() is not available on IBM i.\n\t  if(isIBMi) {\n\t    opts.usePolling = true;\n\t  }\n\n\t  // Global override (useful for end-developers that need to force polling for all\n\t  // instances of chokidar, regardless of usage/dependency depth)\n\t  const envPoll = process.env.CHOKIDAR_USEPOLLING;\n\t  if (envPoll !== undefined) {\n\t    const envLower = envPoll.toLowerCase();\n\n\t    if (envLower === 'false' || envLower === '0') {\n\t      opts.usePolling = false;\n\t    } else if (envLower === 'true' || envLower === '1') {\n\t      opts.usePolling = true;\n\t    } else {\n\t      opts.usePolling = !!envLower;\n\t    }\n\t  }\n\t  const envInterval = process.env.CHOKIDAR_INTERVAL;\n\t  if (envInterval) {\n\t    opts.interval = Number.parseInt(envInterval, 10);\n\t  }\n\n\t  // Editor atomic write normalization enabled by default with fs.watch\n\t  if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents;\n\t  if (opts.atomic) this._pendingUnlinks = new Map();\n\n\t  if (undef(opts, 'followSymlinks')) opts.followSymlinks = true;\n\n\t  if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false;\n\t  if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {};\n\t  const awf = opts.awaitWriteFinish;\n\t  if (awf) {\n\t    if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000;\n\t    if (!awf.pollInterval) awf.pollInterval = 100;\n\t    this._pendingWrites = new Map();\n\t  }\n\t  if (opts.ignored) opts.ignored = arrify(opts.ignored);\n\n\t  let readyCalls = 0;\n\t  this._emitReady = () => {\n\t    readyCalls++;\n\t    if (readyCalls >= this._readyCount) {\n\t      this._emitReady = EMPTY_FN;\n\t      this._readyEmitted = true;\n\t      // use process.nextTick to allow time for listener to be bound\n\t      process.nextTick(() => this.emit(EV_READY));\n\t    }\n\t  };\n\t  this._emitRaw = (...args) => this.emit(EV_RAW, ...args);\n\t  this._readyEmitted = false;\n\t  this.options = opts;\n\n\t  // Initialize with proper watcher.\n\t  if (opts.useFsEvents) {\n\t    this._fsEventsHandler = new FsEventsHandler(this);\n\t  } else {\n\t    this._nodeFsHandler = new NodeFsHandler(this);\n\t  }\n\n\t  // You’re frozen when your heart’s not open.\n\t  Object.freeze(opts);\n\t}\n\n\t// Public methods\n\n\t/**\n\t * Adds paths to be watched on an existing FSWatcher instance\n\t * @param {Path|Array<Path>} paths_\n\t * @param {String=} _origAdd private; for handling non-existent paths to be watched\n\t * @param {Boolean=} _internal private; indicates a non-user add\n\t * @returns {FSWatcher} for chaining\n\t */\n\tadd(paths_, _origAdd, _internal) {\n\t  const {cwd, disableGlobbing} = this.options;\n\t  this.closed = false;\n\t  let paths = unifyPaths(paths_);\n\t  if (cwd) {\n\t    paths = paths.map((path) => {\n\t      const absPath = getAbsolutePath(path, cwd);\n\n\t      // Check `path` instead of `absPath` because the cwd portion can't be a glob\n\t      if (disableGlobbing || !isGlob(path)) {\n\t        return absPath;\n\t      }\n\t      return normalizePath(absPath);\n\t    });\n\t  }\n\n\t  // set aside negated glob strings\n\t  paths = paths.filter((path) => {\n\t    if (path.startsWith(BANG)) {\n\t      this._ignoredPaths.add(path.slice(1));\n\t      return false;\n\t    }\n\n\t    // if a path is being added that was previously ignored, stop ignoring it\n\t    this._ignoredPaths.delete(path);\n\t    this._ignoredPaths.delete(path + SLASH_GLOBSTAR);\n\n\t    // reset the cached userIgnored anymatch fn\n\t    // to make ignoredPaths changes effective\n\t    this._userIgnored = undefined;\n\n\t    return true;\n\t  });\n\n\t  if (this.options.useFsEvents && this._fsEventsHandler) {\n\t    if (!this._readyCount) this._readyCount = paths.length;\n\t    if (this.options.persistent) this._readyCount += paths.length;\n\t    paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path));\n\t  } else {\n\t    if (!this._readyCount) this._readyCount = 0;\n\t    this._readyCount += paths.length;\n\t    Promise.all(\n\t      paths.map(async path => {\n\t        const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd);\n\t        if (res) this._emitReady();\n\t        return res;\n\t      })\n\t    ).then(results => {\n\t      if (this.closed) return;\n\t      results.filter(item => item).forEach(item => {\n\t        this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));\n\t      });\n\t    });\n\t  }\n\n\t  return this;\n\t}\n\n\t/**\n\t * Close watchers or start ignoring events from specified paths.\n\t * @param {Path|Array<Path>} paths_ - string or array of strings, file/directory paths and/or globs\n\t * @returns {FSWatcher} for chaining\n\t*/\n\tunwatch(paths_) {\n\t  if (this.closed) return this;\n\t  const paths = unifyPaths(paths_);\n\t  const {cwd} = this.options;\n\n\t  paths.forEach((path) => {\n\t    // convert to absolute path unless relative path already matches\n\t    if (!sysPath.isAbsolute(path) && !this._closers.has(path)) {\n\t      if (cwd) path = sysPath.join(cwd, path);\n\t      path = sysPath.resolve(path);\n\t    }\n\n\t    this._closePath(path);\n\n\t    this._ignoredPaths.add(path);\n\t    if (this._watched.has(path)) {\n\t      this._ignoredPaths.add(path + SLASH_GLOBSTAR);\n\t    }\n\n\t    // reset the cached userIgnored anymatch fn\n\t    // to make ignoredPaths changes effective\n\t    this._userIgnored = undefined;\n\t  });\n\n\t  return this;\n\t}\n\n\t/**\n\t * Close watchers and remove all listeners from watched paths.\n\t * @returns {Promise<void>}.\n\t*/\n\tclose() {\n\t  if (this.closed) return this._closePromise;\n\t  this.closed = true;\n\n\t  // Memory management.\n\t  this.removeAllListeners();\n\t  const closers = [];\n\t  this._closers.forEach(closerList => closerList.forEach(closer => {\n\t    const promise = closer();\n\t    if (promise instanceof Promise) closers.push(promise);\n\t  }));\n\t  this._streams.forEach(stream => stream.destroy());\n\t  this._userIgnored = undefined;\n\t  this._readyCount = 0;\n\t  this._readyEmitted = false;\n\t  this._watched.forEach(dirent => dirent.dispose());\n\t  ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => {\n\t    this[`_${key}`].clear();\n\t  });\n\n\t  this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve();\n\t  return this._closePromise;\n\t}\n\n\t/**\n\t * Expose list of watched paths\n\t * @returns {Object} for chaining\n\t*/\n\tgetWatched() {\n\t  const watchList = {};\n\t  this._watched.forEach((entry, dir) => {\n\t    const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;\n\t    watchList[key || ONE_DOT] = entry.getChildren().sort();\n\t  });\n\t  return watchList;\n\t}\n\n\temitWithAll(event, args) {\n\t  this.emit(...args);\n\t  if (event !== EV_ERROR) this.emit(EV_ALL, ...args);\n\t}\n\n\t// Common helpers\n\t// --------------\n\n\t/**\n\t * Normalize and emit events.\n\t * Calling _emit DOES NOT MEAN emit() would be called!\n\t * @param {EventName} event Type of event\n\t * @param {Path} path File or directory path\n\t * @param {*=} val1 arguments to be passed with event\n\t * @param {*=} val2\n\t * @param {*=} val3\n\t * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n\t */\n\tasync _emit(event, path, val1, val2, val3) {\n\t  if (this.closed) return;\n\n\t  const opts = this.options;\n\t  if (isWindows) path = sysPath.normalize(path);\n\t  if (opts.cwd) path = sysPath.relative(opts.cwd, path);\n\t  /** @type Array<any> */\n\t  const args = [event, path];\n\t  if (val3 !== undefined) args.push(val1, val2, val3);\n\t  else if (val2 !== undefined) args.push(val1, val2);\n\t  else if (val1 !== undefined) args.push(val1);\n\n\t  const awf = opts.awaitWriteFinish;\n\t  let pw;\n\t  if (awf && (pw = this._pendingWrites.get(path))) {\n\t    pw.lastChange = new Date();\n\t    return this;\n\t  }\n\n\t  if (opts.atomic) {\n\t    if (event === EV_UNLINK) {\n\t      this._pendingUnlinks.set(path, args);\n\t      setTimeout(() => {\n\t        this._pendingUnlinks.forEach((entry, path) => {\n\t          this.emit(...entry);\n\t          this.emit(EV_ALL, ...entry);\n\t          this._pendingUnlinks.delete(path);\n\t        });\n\t      }, typeof opts.atomic === 'number' ? opts.atomic : 100);\n\t      return this;\n\t    }\n\t    if (event === EV_ADD && this._pendingUnlinks.has(path)) {\n\t      event = args[0] = EV_CHANGE;\n\t      this._pendingUnlinks.delete(path);\n\t    }\n\t  }\n\n\t  if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) {\n\t    const awfEmit = (err, stats) => {\n\t      if (err) {\n\t        event = args[0] = EV_ERROR;\n\t        args[1] = err;\n\t        this.emitWithAll(event, args);\n\t      } else if (stats) {\n\t        // if stats doesn't exist the file must have been deleted\n\t        if (args.length > 2) {\n\t          args[2] = stats;\n\t        } else {\n\t          args.push(stats);\n\t        }\n\t        this.emitWithAll(event, args);\n\t      }\n\t    };\n\n\t    this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit);\n\t    return this;\n\t  }\n\n\t  if (event === EV_CHANGE) {\n\t    const isThrottled = !this._throttle(EV_CHANGE, path, 50);\n\t    if (isThrottled) return this;\n\t  }\n\n\t  if (opts.alwaysStat && val1 === undefined &&\n\t    (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE)\n\t  ) {\n\t    const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path;\n\t    let stats;\n\t    try {\n\t      stats = await stat(fullPath);\n\t    } catch (err) {}\n\t    // Suppress event when fs_stat fails, to avoid sending undefined 'stat'\n\t    if (!stats || this.closed) return;\n\t    args.push(stats);\n\t  }\n\t  this.emitWithAll(event, args);\n\n\t  return this;\n\t}\n\n\t/**\n\t * Common handler for errors\n\t * @param {Error} error\n\t * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n\t */\n\t_handleError(error) {\n\t  const code = error && error.code;\n\t  if (error && code !== 'ENOENT' && code !== 'ENOTDIR' &&\n\t    (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES'))\n\t  ) {\n\t    this.emit(EV_ERROR, error);\n\t  }\n\t  return error || this.closed;\n\t}\n\n\t/**\n\t * Helper utility for throttling\n\t * @param {ThrottleType} actionType type being throttled\n\t * @param {Path} path being acted upon\n\t * @param {Number} timeout duration of time to suppress duplicate actions\n\t * @returns {Object|false} tracking object or false if action should be suppressed\n\t */\n\t_throttle(actionType, path, timeout) {\n\t  if (!this._throttled.has(actionType)) {\n\t    this._throttled.set(actionType, new Map());\n\t  }\n\n\t  /** @type {Map<Path, Object>} */\n\t  const action = this._throttled.get(actionType);\n\t  /** @type {Object} */\n\t  const actionPath = action.get(path);\n\n\t  if (actionPath) {\n\t    actionPath.count++;\n\t    return false;\n\t  }\n\n\t  let timeoutObject;\n\t  const clear = () => {\n\t    const item = action.get(path);\n\t    const count = item ? item.count : 0;\n\t    action.delete(path);\n\t    clearTimeout(timeoutObject);\n\t    if (item) clearTimeout(item.timeoutObject);\n\t    return count;\n\t  };\n\t  timeoutObject = setTimeout(clear, timeout);\n\t  const thr = {timeoutObject, clear, count: 0};\n\t  action.set(path, thr);\n\t  return thr;\n\t}\n\n\t_incrReadyCount() {\n\t  return this._readyCount++;\n\t}\n\n\t/**\n\t * Awaits write operation to finish.\n\t * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.\n\t * @param {Path} path being acted upon\n\t * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished\n\t * @param {EventName} event\n\t * @param {Function} awfEmit Callback to be called when ready for event to be emitted.\n\t */\n\t_awaitWriteFinish(path, threshold, event, awfEmit) {\n\t  let timeoutHandler;\n\n\t  let fullPath = path;\n\t  if (this.options.cwd && !sysPath.isAbsolute(path)) {\n\t    fullPath = sysPath.join(this.options.cwd, path);\n\t  }\n\n\t  const now = new Date();\n\n\t  const awaitWriteFinish = (prevStat) => {\n\t    fs.stat(fullPath, (err, curStat) => {\n\t      if (err || !this._pendingWrites.has(path)) {\n\t        if (err && err.code !== 'ENOENT') awfEmit(err);\n\t        return;\n\t      }\n\n\t      const now = Number(new Date());\n\n\t      if (prevStat && curStat.size !== prevStat.size) {\n\t        this._pendingWrites.get(path).lastChange = now;\n\t      }\n\t      const pw = this._pendingWrites.get(path);\n\t      const df = now - pw.lastChange;\n\n\t      if (df >= threshold) {\n\t        this._pendingWrites.delete(path);\n\t        awfEmit(undefined, curStat);\n\t      } else {\n\t        timeoutHandler = setTimeout(\n\t          awaitWriteFinish,\n\t          this.options.awaitWriteFinish.pollInterval,\n\t          curStat\n\t        );\n\t      }\n\t    });\n\t  };\n\n\t  if (!this._pendingWrites.has(path)) {\n\t    this._pendingWrites.set(path, {\n\t      lastChange: now,\n\t      cancelWait: () => {\n\t        this._pendingWrites.delete(path);\n\t        clearTimeout(timeoutHandler);\n\t        return event;\n\t      }\n\t    });\n\t    timeoutHandler = setTimeout(\n\t      awaitWriteFinish,\n\t      this.options.awaitWriteFinish.pollInterval\n\t    );\n\t  }\n\t}\n\n\t_getGlobIgnored() {\n\t  return [...this._ignoredPaths.values()];\n\t}\n\n\t/**\n\t * Determines whether user has asked to ignore this path.\n\t * @param {Path} path filepath or dir\n\t * @param {fs.Stats=} stats result of fs.stat\n\t * @returns {Boolean}\n\t */\n\t_isIgnored(path, stats) {\n\t  if (this.options.atomic && DOT_RE.test(path)) return true;\n\t  if (!this._userIgnored) {\n\t    const {cwd} = this.options;\n\t    const ign = this.options.ignored;\n\n\t    const ignored = ign && ign.map(normalizeIgnored(cwd));\n\t    const paths = arrify(ignored)\n\t      .filter((path) => typeof path === STRING_TYPE && !isGlob(path))\n\t      .map((path) => path + SLASH_GLOBSTAR);\n\t    const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths);\n\t    this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS);\n\t  }\n\n\t  return this._userIgnored([path, stats]);\n\t}\n\n\t_isntIgnored(path, stat) {\n\t  return !this._isIgnored(path, stat);\n\t}\n\n\t/**\n\t * Provides a set of common helpers and properties relating to symlink and glob handling.\n\t * @param {Path} path file, directory, or glob pattern being watched\n\t * @param {Number=} depth at any depth > 0, this isn't a glob\n\t * @returns {WatchHelper} object containing helpers for this path\n\t */\n\t_getWatchHelpers(path, depth) {\n\t  const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path);\n\t  const follow = this.options.followSymlinks;\n\n\t  return new WatchHelper(path, watchPath, follow, this);\n\t}\n\n\t// Directory helpers\n\t// -----------------\n\n\t/**\n\t * Provides directory tracking objects\n\t * @param {String} directory path of the directory\n\t * @returns {DirEntry} the directory's tracking object\n\t */\n\t_getWatchedDir(directory) {\n\t  if (!this._boundRemove) this._boundRemove = this._remove.bind(this);\n\t  const dir = sysPath.resolve(directory);\n\t  if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove));\n\t  return this._watched.get(dir);\n\t}\n\n\t// File helpers\n\t// ------------\n\n\t/**\n\t * Check for read permissions.\n\t * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405\n\t * @param {fs.Stats} stats - object, result of fs_stat\n\t * @returns {Boolean} indicates whether the file can be read\n\t*/\n\t_hasReadPermissions(stats) {\n\t  if (this.options.ignorePermissionErrors) return true;\n\n\t  // stats.mode may be bigint\n\t  const md = stats && Number.parseInt(stats.mode, 10);\n\t  const st = md & 0o777;\n\t  const it = Number.parseInt(st.toString(8)[0], 10);\n\t  return Boolean(4 & it);\n\t}\n\n\t/**\n\t * Handles emitting unlink events for\n\t * files and directories, and via recursion, for\n\t * files and directories within directories that are unlinked\n\t * @param {String} directory within which the following item is located\n\t * @param {String} item      base path of item/directory\n\t * @returns {void}\n\t*/\n\t_remove(directory, item, isDirectory) {\n\t  // if what is being deleted is a directory, get that directory's paths\n\t  // for recursive deleting and cleaning of watched object\n\t  // if it is not a directory, nestedDirectoryChildren will be empty array\n\t  const path = sysPath.join(directory, item);\n\t  const fullPath = sysPath.resolve(path);\n\t  isDirectory = isDirectory != null\n\t    ? isDirectory\n\t    : this._watched.has(path) || this._watched.has(fullPath);\n\n\t  // prevent duplicate handling in case of arriving here nearly simultaneously\n\t  // via multiple paths (such as _handleFile and _handleDir)\n\t  if (!this._throttle('remove', path, 100)) return;\n\n\t  // if the only watched file is removed, watch for its return\n\t  if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) {\n\t    this.add(directory, item, true);\n\t  }\n\n\t  // This will create a new entry in the watched object in either case\n\t  // so we got to do the directory check beforehand\n\t  const wp = this._getWatchedDir(path);\n\t  const nestedDirectoryChildren = wp.getChildren();\n\n\t  // Recursively remove children directories / files.\n\t  nestedDirectoryChildren.forEach(nested => this._remove(path, nested));\n\n\t  // Check if item was on the watched list and remove it\n\t  const parent = this._getWatchedDir(directory);\n\t  const wasTracked = parent.has(item);\n\t  parent.remove(item);\n\n\t  // Fixes issue #1042 -> Relative paths were detected and added as symlinks\n\t  // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612),\n\t  // but never removed from the map in case the path was deleted.\n\t  // This leads to an incorrect state if the path was recreated:\n\t  // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553\n\t  if (this._symlinkPaths.has(fullPath)) {\n\t    this._symlinkPaths.delete(fullPath);\n\t  }\n\n\t  // If we wait for this file to be fully written, cancel the wait.\n\t  let relPath = path;\n\t  if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path);\n\t  if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {\n\t    const event = this._pendingWrites.get(relPath).cancelWait();\n\t    if (event === EV_ADD) return;\n\t  }\n\n\t  // The Entry will either be a directory that just got removed\n\t  // or a bogus entry to a file, in either case we have to remove it\n\t  this._watched.delete(path);\n\t  this._watched.delete(fullPath);\n\t  const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK;\n\t  if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path);\n\n\t  // Avoid conflicts if we later create another file with the same name\n\t  if (!this.options.useFsEvents) {\n\t    this._closePath(path);\n\t  }\n\t}\n\n\t/**\n\t * Closes all watchers for a path\n\t * @param {Path} path\n\t */\n\t_closePath(path) {\n\t  this._closeFile(path);\n\t  const dir = sysPath.dirname(path);\n\t  this._getWatchedDir(dir).remove(sysPath.basename(path));\n\t}\n\n\t/**\n\t * Closes only file-specific watchers\n\t * @param {Path} path\n\t */\n\t_closeFile(path) {\n\t  const closers = this._closers.get(path);\n\t  if (!closers) return;\n\t  closers.forEach(closer => closer());\n\t  this._closers.delete(path);\n\t}\n\n\t/**\n\t *\n\t * @param {Path} path\n\t * @param {Function} closer\n\t */\n\t_addPathCloser(path, closer) {\n\t  if (!closer) return;\n\t  let list = this._closers.get(path);\n\t  if (!list) {\n\t    list = [];\n\t    this._closers.set(path, list);\n\t  }\n\t  list.push(closer);\n\t}\n\n\t_readdirp(root, opts) {\n\t  if (this.closed) return;\n\t  const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts};\n\t  let stream = readdirp(root, options);\n\t  this._streams.add(stream);\n\t  stream.once(STR_CLOSE, () => {\n\t    stream = undefined;\n\t  });\n\t  stream.once(STR_END, () => {\n\t    if (stream) {\n\t      this._streams.delete(stream);\n\t      stream = undefined;\n\t    }\n\t  });\n\t  return stream;\n\t}\n\n\t}\n\n\t// Export FSWatcher class\n\tchokidar$1.FSWatcher = FSWatcher;\n\n\t/**\n\t * Instantiates watcher with paths to be tracked.\n\t * @param {String|Array<String>} paths file/directory paths and/or globs\n\t * @param {Object=} options chokidar opts\n\t * @returns an instance of FSWatcher for chaining.\n\t */\n\tconst watch = (paths, options) => {\n\t  const watcher = new FSWatcher(options);\n\t  watcher.add(paths);\n\t  return watcher;\n\t};\n\n\tchokidar$1.watch = watch;\n\treturn chokidar$1;\n}\n\nvar chokidarExports = /*@__PURE__*/ requireChokidar();\nconst chokidar = /*@__PURE__*/getDefaultExportFromCjs(chokidarExports);\n\nclass FileWatcher {\n    constructor(task, chokidarOptions) {\n        this.transformWatchers = new Map();\n        this.chokidarOptions = chokidarOptions;\n        this.task = task;\n        this.watcher = this.createWatcher(null);\n    }\n    close() {\n        this.watcher.close();\n        for (const watcher of this.transformWatchers.values()) {\n            watcher.close();\n        }\n    }\n    unwatch(id) {\n        this.watcher.unwatch(id);\n        const transformWatcher = this.transformWatchers.get(id);\n        if (transformWatcher) {\n            this.transformWatchers.delete(id);\n            transformWatcher.close();\n        }\n    }\n    watch(id, isTransformDependency) {\n        if (isTransformDependency) {\n            const watcher = this.transformWatchers.get(id) ?? this.createWatcher(id);\n            watcher.add(id);\n            this.transformWatchers.set(id, watcher);\n        }\n        else {\n            this.watcher.add(id);\n        }\n    }\n    createWatcher(transformWatcherId) {\n        const task = this.task;\n        const isLinux = platform() === 'linux';\n        const isFreeBSD = platform() === 'freebsd';\n        const isTransformDependency = transformWatcherId !== null;\n        const handleChange = (id, event) => {\n            const changedId = transformWatcherId || id;\n            if (isLinux || isFreeBSD) {\n                // unwatching and watching fixes an issue with chokidar where on certain systems,\n                // a file that was unlinked and immediately recreated would create a change event\n                // but then no longer any further events\n                watcher.unwatch(changedId);\n                watcher.add(changedId);\n            }\n            task.invalidate(changedId, { event, isTransformDependency });\n        };\n        const watcher = chokidar\n            .watch([], this.chokidarOptions)\n            .on('add', id => handleChange(id, 'create'))\n            .on('change', id => handleChange(id, 'update'))\n            .on('unlink', id => handleChange(id, 'delete'));\n        return watcher;\n    }\n}\n\nconst eventsRewrites = {\n    create: {\n        create: 'buggy',\n        delete: null, //delete file from map\n        update: 'create'\n    },\n    delete: {\n        create: 'update',\n        delete: 'buggy',\n        update: 'buggy'\n    },\n    update: {\n        create: 'buggy',\n        delete: 'delete',\n        update: 'update'\n    }\n};\nclass Watcher {\n    constructor(optionsList, emitter) {\n        this.buildDelay = 0;\n        this.buildTimeout = null;\n        this.closed = false;\n        this.invalidatedIds = new Map();\n        this.rerun = false;\n        this.running = true;\n        this.emitter = emitter;\n        emitter.close = this.close.bind(this);\n        this.tasks = optionsList.map(options => new Task(this, options));\n        for (const { watch } of optionsList) {\n            if (watch && typeof watch.buildDelay === 'number') {\n                this.buildDelay = Math.max(this.buildDelay, watch.buildDelay);\n            }\n        }\n        process$1.nextTick(() => this.run());\n    }\n    async close() {\n        if (this.closed)\n            return;\n        this.closed = true;\n        if (this.buildTimeout)\n            clearTimeout(this.buildTimeout);\n        for (const task of this.tasks) {\n            task.close();\n        }\n        await this.emitter.emit('close');\n        this.emitter.removeAllListeners();\n    }\n    invalidate(file) {\n        if (file) {\n            const previousEvent = this.invalidatedIds.get(file.id);\n            const event = previousEvent ? eventsRewrites[previousEvent][file.event] : file.event;\n            if (event === 'buggy') {\n                //TODO: throws or warn? Currently just ignore, uses new event\n                this.invalidatedIds.set(file.id, file.event);\n            }\n            else if (event === null) {\n                this.invalidatedIds.delete(file.id);\n            }\n            else {\n                this.invalidatedIds.set(file.id, event);\n            }\n        }\n        if (this.running) {\n            this.rerun = true;\n            return;\n        }\n        if (this.buildTimeout)\n            clearTimeout(this.buildTimeout);\n        this.buildTimeout = setTimeout(async () => {\n            this.buildTimeout = null;\n            try {\n                await Promise.all([...this.invalidatedIds].map(([id, event]) => this.emitter.emit('change', id, { event })));\n                this.invalidatedIds.clear();\n                await this.emitter.emit('restart');\n                this.emitter.removeListenersForCurrentRun();\n                this.run();\n            }\n            catch (error) {\n                this.invalidatedIds.clear();\n                await this.emitter.emit('event', {\n                    code: 'ERROR',\n                    error,\n                    result: null\n                });\n                await this.emitter.emit('event', {\n                    code: 'END'\n                });\n            }\n        }, this.buildDelay);\n    }\n    async run() {\n        this.running = true;\n        await this.emitter.emit('event', {\n            code: 'START'\n        });\n        for (const task of this.tasks) {\n            await task.run();\n        }\n        this.running = false;\n        await this.emitter.emit('event', {\n            code: 'END'\n        });\n        if (this.rerun) {\n            this.rerun = false;\n            this.invalidate();\n        }\n    }\n}\nclass Task {\n    constructor(watcher, options) {\n        this.cache = { modules: [] };\n        this.watchFiles = [];\n        this.closed = false;\n        this.invalidated = true;\n        this.watched = new Set();\n        this.watcher = watcher;\n        this.options = options;\n        this.skipWrite = Boolean(options.watch && options.watch.skipWrite);\n        this.outputs = this.options.output;\n        this.outputFiles = this.outputs.map(output => {\n            if (output.file || output.dir)\n                return path.resolve(output.file || output.dir);\n            return undefined;\n        });\n        this.watchOptions = this.options.watch || {};\n        this.filter = createFilter(this.watchOptions.include, this.watchOptions.exclude);\n        this.fileWatcher = new FileWatcher(this, {\n            ...this.watchOptions.chokidar,\n            disableGlobbing: true,\n            ignoreInitial: true\n        });\n    }\n    close() {\n        this.closed = true;\n        this.fileWatcher.close();\n    }\n    invalidate(id, details) {\n        this.invalidated = true;\n        if (details.isTransformDependency) {\n            for (const module of this.cache.modules) {\n                if (!module.transformDependencies.includes(id))\n                    continue;\n                // effective invalidation\n                module.originalCode = null;\n            }\n        }\n        this.watcher.invalidate({ event: details.event, id });\n        this.watchOptions.onInvalidate?.(id);\n    }\n    async run() {\n        if (!this.invalidated)\n            return;\n        this.invalidated = false;\n        const options = {\n            ...this.options,\n            cache: this.cache\n        };\n        const start = Date.now();\n        await this.watcher.emitter.emit('event', {\n            code: 'BUNDLE_START',\n            input: this.options.input,\n            output: this.outputFiles\n        });\n        let result = null;\n        try {\n            result = await rollupInternal(options, this.watcher.emitter);\n            if (this.closed) {\n                return;\n            }\n            this.updateWatchedFiles(result);\n            if (!this.skipWrite) {\n                await Promise.all(this.outputs.map(output => result.write(output)));\n                if (this.closed) {\n                    return;\n                }\n                this.updateWatchedFiles(result);\n            }\n            await this.watcher.emitter.emit('event', {\n                code: 'BUNDLE_END',\n                duration: Date.now() - start,\n                input: this.options.input,\n                output: this.outputFiles,\n                result\n            });\n        }\n        catch (error) {\n            if (!this.closed) {\n                if (Array.isArray(error.watchFiles)) {\n                    for (const id of error.watchFiles) {\n                        this.watchFile(id);\n                    }\n                }\n                if (error.id) {\n                    this.cache.modules = this.cache.modules.filter(module => module.id !== error.id);\n                }\n            }\n            await this.watcher.emitter.emit('event', {\n                code: 'ERROR',\n                error,\n                result\n            });\n        }\n    }\n    updateWatchedFiles(result) {\n        const previouslyWatched = this.watched;\n        this.watched = new Set();\n        this.watchFiles = result.watchFiles;\n        this.cache = result.cache;\n        for (const id of this.watchFiles) {\n            this.watchFile(id);\n        }\n        for (const module of this.cache.modules) {\n            for (const depId of module.transformDependencies) {\n                this.watchFile(depId, true);\n            }\n        }\n        for (const id of previouslyWatched) {\n            if (!this.watched.has(id)) {\n                this.fileWatcher.unwatch(id);\n            }\n        }\n    }\n    watchFile(id, isTransformDependency = false) {\n        if (!this.filter(id))\n            return;\n        this.watched.add(id);\n        if (this.outputFiles.includes(id)) {\n            throw new Error('Cannot import the generated bundle');\n        }\n        // this is necessary to ensure that any 'renamed' files\n        // continue to be watched following an error\n        this.fileWatcher.watch(id, isTransformDependency);\n    }\n}\n\nexport { Task, Watcher };\n"],"names":["chokidar$1","utils$2","constants$3","hasRequiredConstants$3","requireConstants$3","path","require$$0$1","WIN_SLASH","WIN_NO_SLASH","DOT_LITERAL","PLUS_LITERAL","QMARK_LITERAL","SLASH_LITERAL","ONE_CHAR","QMARK","END_ANCHOR","START_ANCHOR","DOTS_SLASH","NO_DOT","NO_DOTS","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK_NO_DOT","STAR","POSIX_CHARS","WINDOWS_CHARS","POSIX_REGEX_SOURCE","chars","win32","hasRequiredUtils$2","requireUtils$2","exports","REGEX_BACKSLASH","REGEX_REMOVE_BACKSLASH","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_GLOBAL","val","str","match","segs","options","input","char","lastIdx","idx","state","output","prepend","append","scan_1$1","hasRequiredScan$1","requireScan$1","utils","CHAR_ASTERISK","CHAR_AT","CHAR_BACKWARD_SLASH","CHAR_COMMA","CHAR_DOT","CHAR_EXCLAMATION_MARK","CHAR_FORWARD_SLASH","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_PARENTHESES","CHAR_LEFT_SQUARE_BRACKET","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_PARENTHESES","CHAR_RIGHT_SQUARE_BRACKET","isPathSeparator","code","depth","token","opts","length","scanToEnd","slashes","tokens","parts","index","start","lastIndex","isBrace","isBracket","isGlob","isExtglob","isGlobstar","braceEscaped","backslashes","negated","negatedExtglob","finished","braces","prev","eos","peek","advance","next","base","prefix","glob","prevIndex","n","i","value","parse_1$2","hasRequiredParse$2","requireParse$2","constants","MAX_LENGTH","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REPLACEMENTS","expandRange","args","syntaxError","type","parse","max","len","bos","capture","PLATFORM_CHARS","EXTGLOB_CHARS","globstar","nodot","qmarkNoDot","star","extglobs","stack","remaining","consume","num","negate","count","increment","decrement","push","tok","extglobOpen","extglobClose","rest","extglobStar","expression","m","esc","first","inner","pre","posix","extglob","prevValue","escaped","open","brace","arr","range","out","toks","t","prior","before","isStart","afterStar","after","end","slashDot","create","source","picomatch_1$1","hasRequiredPicomatch$3","requirePicomatch$3","scan","isObject","picomatch","returnState","fns","isMatch","isState","regex","isIgnored","ignoreOpts","matcher","returnObject","result","format","patterns","pattern","p","returnOutput","parsed","err","picomatch$1","hasRequiredPicomatch$2","requirePicomatch$2","readdirp_1","hasRequiredReaddirp","requireReaddirp","fs","require$$0$2","Readable","require$$1","sysPath","promisify","require$$2","readdir","stat","lstat","realpath","BANG","RECURSIVE_ERROR_CODE","NORMAL_FLOW_ERRORS","FILE_TYPE","DIR_TYPE","FILE_DIR_TYPE","EVERYTHING_TYPE","ALL_TYPES","isNormalFlowError","error","maj","min","wantBigintFsStats","normalizeFilter","filter","entry","positive","negative","item","trimmed","f","ReaddirpStream","root","statMethod","batch","files","slice","dirent","entryType","parent","basename","fullPath","stats","full","entryRealPath","entryRealPathStats","recursiveError","readdirp","readdirpPromise","resolve","reject","anymatch","utils$1","constants$2","hasRequiredConstants$2","requireConstants$2","hasRequiredUtils$1","requireUtils$1","scan_1","hasRequiredScan","requireScan","parse_1$1","hasRequiredParse$1","requireParse$1","picomatch_1","hasRequiredPicomatch$1","requirePicomatch$1","hasRequiredPicomatch","requirePicomatch","normalizePath","hasRequiredNormalizePath","requireNormalizePath","stripTrailing","ch","anymatch_1","hasRequiredAnymatch","requireAnymatch","DEFAULT_OPTIONS","arrify","createPattern","string","matchPatterns","negPatterns","returnIndex","isList","_path","nglob","applied","anymatch$1","matchers","testString","mtchers","negatedGlobs","ri","hasRequiredIsExtglob","requireIsExtglob","hasRequiredIsGlob","requireIsGlob","strictCheck","pipeIndex","closeSquareIndex","closeCurlyIndex","closeParenIndex","backSlashIndex","close","relaxedCheck","check","globParent","hasRequiredGlobParent","requireGlobParent","pathPosixDirname","isWin32","require$$2$1","slash","backslash","enclosure","globby","hasRequiredUtils","requireUtils","node","step","limit","block","nodes","acc","flat","ele","stringify","hasRequiredStringify","requireStringify","ast","invalidBlock","invalidNode","child","isNumber","hasRequiredIsNumber","requireIsNumber","toRegexRange_1","hasRequiredToRegexRange","requireToRegexRange","toRegexRange","relax","shorthand","wrap","cacheKey","a","b","isPadded","hasPadding","positives","negatives","newMin","splitToPatterns","collatePatterns","neg","pos","onlyNegative","filterPatterns","onlyPositive","intersected","splitToRanges","nines","zeros","stop","countNines","stops","countZeros","compare","rangeToPattern","zipped","zip","digits","startDigit","stopDigit","toCharacterClass","ranges","obj","toQuantifier","padZeros","comparison","intersection","contains","key","integer","diff","fillRange","hasRequiredFillRange","requireFillRange","util","transform","toNumber","isValidValue","pad","maxLength","dash","toMaxLen","toSequence","maxLen","v","toRange","isNumbers","toRegex","rangeError","invalidRange","invalidStep","fillNumbers","descending","startString","endString","stepString","padded","fillLetters","fill","compile_1","hasRequiredCompile","requireCompile","walk","invalid","expand_1","hasRequiredExpand","requireExpand","queue","stash","enclose","rangeLimit","q","constants$1","hasRequiredConstants$1","requireConstants$1","parse_1","hasRequiredParse","requireParse","CHAR_BACKSLASH","CHAR_BACKTICK","CHAR_DOUBLE_QUOTE","CHAR_SINGLE_QUOTE","CHAR_NO_BREAK_SPACE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","brackets","siblings","braces_1","hasRequiredBraces","requireBraces","compile","expand","require$$0","binaryExtensions","hasRequiredBinaryExtensions","requireBinaryExtensions","isBinaryPath","hasRequiredIsBinaryPath","requireIsBinaryPath","extensions","filePath","hasRequiredConstants","requireConstants","sep","platform","os","nodefsHandler","hasRequiredNodefsHandler","requireNodefsHandler","isWindows","isLinux","EMPTY_FN","EMPTY_STR","KEY_LISTENERS","KEY_ERR","KEY_RAW","HANDLER_KEYS","EV_CHANGE","EV_ADD","EV_ADD_DIR","EV_ERROR","STR_DATA","STR_END","BRACE_START","THROTTLE_MODE_WATCH","fsrealpath","statMethods","foreach","fn","addAndConvert","main","prop","container","clearItem","cont","set","delFromSet","isEmptySet","FsWatchInstances","createFsWatchInstance","listener","errHandler","emitRaw","handleEvent","rawEvent","evPath","fsWatchBroadcast","val1","val2","val3","setFsWatchListener","handlers","rawEmitter","watcher","broadcastErr","fd","FsWatchFileInstances","setFsWatchFileListener","copts","curr","currmtime","NodeFsHandler","fsW","directory","absolutePath","closer","file","initialAdd","dirname","prevStats","newStats","at","mt","dir","linkPath","wh","target","throttler","previous","current","stream","wasThrottled","parentDir","tracked","oDepth","dirPath","priorWh","ready","follow","absPath","targetPath","fseventsHandler","require$$3","getAugmentedNamespace","fseventsImporter","hasRequiredFseventsHandler","requireFseventsHandler","fsevents","mtch","EV_UNLINK","FSEVENT_CREATED","FSEVENT_MODIFIED","FSEVENT_DELETED","FSEVENT_MOVED","FSEVENT_UNKNOWN","FSEVENT_FLAG_MUST_SCAN_SUBDIRS","FSEVENT_TYPE_FILE","FSEVENT_TYPE_DIRECTORY","FSEVENT_TYPE_SYMLINK","ROOT_GLOBSTAR","DIR_SUFFIX","DOT_SLASH","FUNCTION_TYPE","IDENTITY_FN","Depth","FSEventsWatchers","consolidateThreshhold","wrongEventFlags","createFSEventsInstance","callback","setFSEventsListener","realPath","watchPath","parentPath","couldConsolidate","resolvedPath","hasSymlink","filteredListener","flags","info","watchedParent","watchedPath","list","lst","canUse","calcDepth","sameTypes","FsEventsHandler","fsw","ipaths","watchedDir","event","isDirectory","curDepth","eventName","globFilter","linkTarget","aliasedPath","newPath","processPath","forceAdd","pp","isDir","dirObj","priorDepth","joinedPath","hasRequiredChokidar","requireChokidar","EventEmitter","require$$0$3","EV_ALL","EV_READY","EV_UNLINK_DIR","EV_RAW","STR_CLOSE","BACK_SLASH_RE","DOUBLE_SLASH_RE","SLASH_OR_BACK_SLASH_RE","DOT_RE","REPLACER_RE","SLASH","SLASH_SLASH","ONE_DOT","TWO_DOTS","GLOBSTAR","SLASH_GLOBSTAR","ANYMATCH_OPTS","STRING_TYPE","isMacos","isIBMi","flatten","unifyPaths","paths_","paths","normalizePathToUnix","toUnix","normalizeIgnored","cwd","getAbsolutePath","undef","DirEntry","removeWatcher","items","STAT_METHOD_F","STAT_METHOD_L","WatchHelper","entryParts","part","FSWatcher","_opts","envPoll","envLower","envInterval","awf","readyCalls","_origAdd","_internal","disableGlobbing","res","results","closers","closerList","promise","watchList","pw","awfEmit","actionType","timeout","action","actionPath","timeoutObject","clear","thr","threshold","timeoutHandler","now","awaitWriteFinish","prevStat","curStat","ign","ignored","st","nested","wasTracked","relPath","watch","chokidarExports","chokidar","getDefaultExportFromCjs","FileWatcher","task","chokidarOptions","id","transformWatcher","isTransformDependency","transformWatcherId","isFreeBSD","handleChange","changedId","eventsRewrites","Watcher","optionsList","emitter","Task","process$1","previousEvent","createFilter","details","module","rollupInternal","previouslyWatched","depId"],"mappings":"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ACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,E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","x_google_ignoreList":[0]}