{"version":3,"sources":["../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/is.js","../node_modules/.pnpm/detect-libc@2.1.2/node_modules/detect-libc/lib/process.js","../node_modules/.pnpm/detect-libc@2.1.2/node_modules/detect-libc/lib/filesystem.js","../node_modules/.pnpm/detect-libc@2.1.2/node_modules/detect-libc/lib/elf.js","../node_modules/.pnpm/detect-libc@2.1.2/node_modules/detect-libc/lib/detect-libc.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.js","../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.js","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/package.json","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/libvips.js","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/sharp.js","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/constructor.js","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/input.js","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/resize.js","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/composite.js","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/operation.js","../node_modules/.pnpm/@img+colour@1.0.0/node_modules/@img/colour/color.cjs","../node_modules/.pnpm/@img+colour@1.0.0/node_modules/@img/colour/index.cjs","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/colour.js","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/channel.js","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/output.js","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/utility.js","../node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/index.js"],"names":["exports","family","version","globalLibvipsVersion","clone","debuglog","queueListener","metadata","stats","extend","composite","flip","flop","gamma","threshold","require_colour","tint","greyscale","grayscale","colourspace","_","concurrency","simd"],"mappings":"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","file":"lib-M3PPQDJJ.mjs","sourcesContent":["/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\n/**\n * Is this value defined and not null?\n * @private\n */\nconst defined = (val) => typeof val !== 'undefined' && val !== null;\n\n/**\n * Is this value an object?\n * @private\n */\nconst object = (val) => typeof val === 'object';\n\n/**\n * Is this value a plain object?\n * @private\n */\nconst plainObject = (val) => Object.prototype.toString.call(val) === '[object Object]';\n\n/**\n * Is this value a function?\n * @private\n */\nconst fn = (val) => typeof val === 'function';\n\n/**\n * Is this value a boolean?\n * @private\n */\nconst bool = (val) => typeof val === 'boolean';\n\n/**\n * Is this value a Buffer object?\n * @private\n */\nconst buffer = (val) => val instanceof Buffer;\n\n/**\n * Is this value a typed array object?. E.g. Uint8Array or Uint8ClampedArray?\n * @private\n */\nconst typedArray = (val) => {\n  if (defined(val)) {\n    switch (val.constructor) {\n      case Uint8Array:\n      case Uint8ClampedArray:\n      case Int8Array:\n      case Uint16Array:\n      case Int16Array:\n      case Uint32Array:\n      case Int32Array:\n      case Float32Array:\n      case Float64Array:\n        return true;\n    }\n  }\n\n  return false;\n};\n\n/**\n * Is this value an ArrayBuffer object?\n * @private\n */\nconst arrayBuffer = (val) => val instanceof ArrayBuffer;\n\n/**\n * Is this value a non-empty string?\n * @private\n */\nconst string = (val) => typeof val === 'string' && val.length > 0;\n\n/**\n * Is this value a real number?\n * @private\n */\nconst number = (val) => typeof val === 'number' && !Number.isNaN(val);\n\n/**\n * Is this value an integer?\n * @private\n */\nconst integer = (val) => Number.isInteger(val);\n\n/**\n * Is this value within an inclusive given range?\n * @private\n */\nconst inRange = (val, min, max) => val >= min && val <= max;\n\n/**\n * Is this value within the elements of an array?\n * @private\n */\nconst inArray = (val, list) => list.includes(val);\n\n/**\n * Create an Error with a message relating to an invalid parameter.\n *\n * @param {string} name - parameter name.\n * @param {string} expected - description of the type/value/range expected.\n * @param {*} actual - the value received.\n * @returns {Error} Containing the formatted message.\n * @private\n */\nconst invalidParameterError = (name, expected, actual) => new Error(\n    `Expected ${expected} for ${name} but received ${actual} of type ${typeof actual}`\n  );\n\n/**\n * Ensures an Error from C++ contains a JS stack.\n *\n * @param {Error} native - Error with message from C++.\n * @param {Error} context - Error with stack from JS.\n * @returns {Error} Error with message and stack.\n * @private\n */\nconst nativeError = (native, context) => {\n  context.message = native.message;\n  return context;\n};\n\nmodule.exports = {\n  defined,\n  object,\n  plainObject,\n  fn,\n  bool,\n  buffer,\n  typedArray,\n  arrayBuffer,\n  string,\n  number,\n  integer,\n  inRange,\n  inArray,\n  invalidParameterError,\n  nativeError\n};\n","// Copyright 2017 Lovell Fuller and others.\n// SPDX-License-Identifier: Apache-2.0\n\n'use strict';\n\nconst isLinux = () => process.platform === 'linux';\n\nlet report = null;\nconst getReport = () => {\n  if (!report) {\n    /* istanbul ignore next */\n    if (isLinux() && process.report) {\n      const orig = process.report.excludeNetwork;\n      process.report.excludeNetwork = true;\n      report = process.report.getReport();\n      process.report.excludeNetwork = orig;\n    } else {\n      report = {};\n    }\n  }\n  return report;\n};\n\nmodule.exports = { isLinux, getReport };\n","// Copyright 2017 Lovell Fuller and others.\n// SPDX-License-Identifier: Apache-2.0\n\n'use strict';\n\nconst fs = require('fs');\n\nconst LDD_PATH = '/usr/bin/ldd';\nconst SELF_PATH = '/proc/self/exe';\nconst MAX_LENGTH = 2048;\n\n/**\n * Read the content of a file synchronous\n *\n * @param {string} path\n * @returns {Buffer}\n */\nconst readFileSync = (path) => {\n  const fd = fs.openSync(path, 'r');\n  const buffer = Buffer.alloc(MAX_LENGTH);\n  const bytesRead = fs.readSync(fd, buffer, 0, MAX_LENGTH, 0);\n  fs.close(fd, () => {});\n  return buffer.subarray(0, bytesRead);\n};\n\n/**\n * Read the content of a file\n *\n * @param {string} path\n * @returns {Promise<Buffer>}\n */\nconst readFile = (path) => new Promise((resolve, reject) => {\n  fs.open(path, 'r', (err, fd) => {\n    if (err) {\n      reject(err);\n    } else {\n      const buffer = Buffer.alloc(MAX_LENGTH);\n      fs.read(fd, buffer, 0, MAX_LENGTH, 0, (_, bytesRead) => {\n        resolve(buffer.subarray(0, bytesRead));\n        fs.close(fd, () => {});\n      });\n    }\n  });\n});\n\nmodule.exports = {\n  LDD_PATH,\n  SELF_PATH,\n  readFileSync,\n  readFile\n};\n","// Copyright 2017 Lovell Fuller and others.\n// SPDX-License-Identifier: Apache-2.0\n\n'use strict';\n\nconst interpreterPath = (elf) => {\n  if (elf.length < 64) {\n    return null;\n  }\n  if (elf.readUInt32BE(0) !== 0x7F454C46) {\n    // Unexpected magic bytes\n    return null;\n  }\n  if (elf.readUInt8(4) !== 2) {\n    // Not a 64-bit ELF\n    return null;\n  }\n  if (elf.readUInt8(5) !== 1) {\n    // Not little-endian\n    return null;\n  }\n  const offset = elf.readUInt32LE(32);\n  const size = elf.readUInt16LE(54);\n  const count = elf.readUInt16LE(56);\n  for (let i = 0; i < count; i++) {\n    const headerOffset = offset + (i * size);\n    const type = elf.readUInt32LE(headerOffset);\n    if (type === 3) {\n      const fileOffset = elf.readUInt32LE(headerOffset + 8);\n      const fileSize = elf.readUInt32LE(headerOffset + 32);\n      return elf.subarray(fileOffset, fileOffset + fileSize).toString().replace(/\\0.*$/g, '');\n    }\n  }\n  return null;\n};\n\nmodule.exports = {\n  interpreterPath\n};\n","// Copyright 2017 Lovell Fuller and others.\n// SPDX-License-Identifier: Apache-2.0\n\n'use strict';\n\nconst childProcess = require('child_process');\nconst { isLinux, getReport } = require('./process');\nconst { LDD_PATH, SELF_PATH, readFile, readFileSync } = require('./filesystem');\nconst { interpreterPath } = require('./elf');\n\nlet cachedFamilyInterpreter;\nlet cachedFamilyFilesystem;\nlet cachedVersionFilesystem;\n\nconst command = 'getconf GNU_LIBC_VERSION 2>&1 || true; ldd --version 2>&1 || true';\nlet commandOut = '';\n\nconst safeCommand = () => {\n  if (!commandOut) {\n    return new Promise((resolve) => {\n      childProcess.exec(command, (err, out) => {\n        commandOut = err ? ' ' : out;\n        resolve(commandOut);\n      });\n    });\n  }\n  return commandOut;\n};\n\nconst safeCommandSync = () => {\n  if (!commandOut) {\n    try {\n      commandOut = childProcess.execSync(command, { encoding: 'utf8' });\n    } catch (_err) {\n      commandOut = ' ';\n    }\n  }\n  return commandOut;\n};\n\n/**\n * A String constant containing the value `glibc`.\n * @type {string}\n * @public\n */\nconst GLIBC = 'glibc';\n\n/**\n * A Regexp constant to get the GLIBC Version.\n * @type {string}\n */\nconst RE_GLIBC_VERSION = /LIBC[a-z0-9 \\-).]*?(\\d+\\.\\d+)/i;\n\n/**\n * A String constant containing the value `musl`.\n * @type {string}\n * @public\n */\nconst MUSL = 'musl';\n\nconst isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-');\n\nconst familyFromReport = () => {\n  const report = getReport();\n  if (report.header && report.header.glibcVersionRuntime) {\n    return GLIBC;\n  }\n  if (Array.isArray(report.sharedObjects)) {\n    if (report.sharedObjects.some(isFileMusl)) {\n      return MUSL;\n    }\n  }\n  return null;\n};\n\nconst familyFromCommand = (out) => {\n  const [getconf, ldd1] = out.split(/[\\r\\n]+/);\n  if (getconf && getconf.includes(GLIBC)) {\n    return GLIBC;\n  }\n  if (ldd1 && ldd1.includes(MUSL)) {\n    return MUSL;\n  }\n  return null;\n};\n\nconst familyFromInterpreterPath = (path) => {\n  if (path) {\n    if (path.includes('/ld-musl-')) {\n      return MUSL;\n    } else if (path.includes('/ld-linux-')) {\n      return GLIBC;\n    }\n  }\n  return null;\n};\n\nconst getFamilyFromLddContent = (content) => {\n  content = content.toString();\n  if (content.includes('musl')) {\n    return MUSL;\n  }\n  if (content.includes('GNU C Library')) {\n    return GLIBC;\n  }\n  return null;\n};\n\nconst familyFromFilesystem = async () => {\n  if (cachedFamilyFilesystem !== undefined) {\n    return cachedFamilyFilesystem;\n  }\n  cachedFamilyFilesystem = null;\n  try {\n    const lddContent = await readFile(LDD_PATH);\n    cachedFamilyFilesystem = getFamilyFromLddContent(lddContent);\n  } catch (e) {}\n  return cachedFamilyFilesystem;\n};\n\nconst familyFromFilesystemSync = () => {\n  if (cachedFamilyFilesystem !== undefined) {\n    return cachedFamilyFilesystem;\n  }\n  cachedFamilyFilesystem = null;\n  try {\n    const lddContent = readFileSync(LDD_PATH);\n    cachedFamilyFilesystem = getFamilyFromLddContent(lddContent);\n  } catch (e) {}\n  return cachedFamilyFilesystem;\n};\n\nconst familyFromInterpreter = async () => {\n  if (cachedFamilyInterpreter !== undefined) {\n    return cachedFamilyInterpreter;\n  }\n  cachedFamilyInterpreter = null;\n  try {\n    const selfContent = await readFile(SELF_PATH);\n    const path = interpreterPath(selfContent);\n    cachedFamilyInterpreter = familyFromInterpreterPath(path);\n  } catch (e) {}\n  return cachedFamilyInterpreter;\n};\n\nconst familyFromInterpreterSync = () => {\n  if (cachedFamilyInterpreter !== undefined) {\n    return cachedFamilyInterpreter;\n  }\n  cachedFamilyInterpreter = null;\n  try {\n    const selfContent = readFileSync(SELF_PATH);\n    const path = interpreterPath(selfContent);\n    cachedFamilyInterpreter = familyFromInterpreterPath(path);\n  } catch (e) {}\n  return cachedFamilyInterpreter;\n};\n\n/**\n * Resolves with the libc family when it can be determined, `null` otherwise.\n * @returns {Promise<?string>}\n */\nconst family = async () => {\n  let family = null;\n  if (isLinux()) {\n    family = await familyFromInterpreter();\n    if (!family) {\n      family = await familyFromFilesystem();\n      if (!family) {\n        family = familyFromReport();\n      }\n      if (!family) {\n        const out = await safeCommand();\n        family = familyFromCommand(out);\n      }\n    }\n  }\n  return family;\n};\n\n/**\n * Returns the libc family when it can be determined, `null` otherwise.\n * @returns {?string}\n */\nconst familySync = () => {\n  let family = null;\n  if (isLinux()) {\n    family = familyFromInterpreterSync();\n    if (!family) {\n      family = familyFromFilesystemSync();\n      if (!family) {\n        family = familyFromReport();\n      }\n      if (!family) {\n        const out = safeCommandSync();\n        family = familyFromCommand(out);\n      }\n    }\n  }\n  return family;\n};\n\n/**\n * Resolves `true` only when the platform is Linux and the libc family is not `glibc`.\n * @returns {Promise<boolean>}\n */\nconst isNonGlibcLinux = async () => isLinux() && await family() !== GLIBC;\n\n/**\n * Returns `true` only when the platform is Linux and the libc family is not `glibc`.\n * @returns {boolean}\n */\nconst isNonGlibcLinuxSync = () => isLinux() && familySync() !== GLIBC;\n\nconst versionFromFilesystem = async () => {\n  if (cachedVersionFilesystem !== undefined) {\n    return cachedVersionFilesystem;\n  }\n  cachedVersionFilesystem = null;\n  try {\n    const lddContent = await readFile(LDD_PATH);\n    const versionMatch = lddContent.match(RE_GLIBC_VERSION);\n    if (versionMatch) {\n      cachedVersionFilesystem = versionMatch[1];\n    }\n  } catch (e) {}\n  return cachedVersionFilesystem;\n};\n\nconst versionFromFilesystemSync = () => {\n  if (cachedVersionFilesystem !== undefined) {\n    return cachedVersionFilesystem;\n  }\n  cachedVersionFilesystem = null;\n  try {\n    const lddContent = readFileSync(LDD_PATH);\n    const versionMatch = lddContent.match(RE_GLIBC_VERSION);\n    if (versionMatch) {\n      cachedVersionFilesystem = versionMatch[1];\n    }\n  } catch (e) {}\n  return cachedVersionFilesystem;\n};\n\nconst versionFromReport = () => {\n  const report = getReport();\n  if (report.header && report.header.glibcVersionRuntime) {\n    return report.header.glibcVersionRuntime;\n  }\n  return null;\n};\n\nconst versionSuffix = (s) => s.trim().split(/\\s+/)[1];\n\nconst versionFromCommand = (out) => {\n  const [getconf, ldd1, ldd2] = out.split(/[\\r\\n]+/);\n  if (getconf && getconf.includes(GLIBC)) {\n    return versionSuffix(getconf);\n  }\n  if (ldd1 && ldd2 && ldd1.includes(MUSL)) {\n    return versionSuffix(ldd2);\n  }\n  return null;\n};\n\n/**\n * Resolves with the libc version when it can be determined, `null` otherwise.\n * @returns {Promise<?string>}\n */\nconst version = async () => {\n  let version = null;\n  if (isLinux()) {\n    version = await versionFromFilesystem();\n    if (!version) {\n      version = versionFromReport();\n    }\n    if (!version) {\n      const out = await safeCommand();\n      version = versionFromCommand(out);\n    }\n  }\n  return version;\n};\n\n/**\n * Returns the libc version when it can be determined, `null` otherwise.\n * @returns {?string}\n */\nconst versionSync = () => {\n  let version = null;\n  if (isLinux()) {\n    version = versionFromFilesystemSync();\n    if (!version) {\n      version = versionFromReport();\n    }\n    if (!version) {\n      const out = safeCommandSync();\n      version = versionFromCommand(out);\n    }\n  }\n  return version;\n};\n\nmodule.exports = {\n  GLIBC,\n  MUSL,\n  family,\n  familySync,\n  isNonGlibcLinux,\n  isNonGlibcLinuxSync,\n  version,\n  versionSync\n};\n","'use strict'\n\nconst debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n","'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n  'major',\n  'premajor',\n  'minor',\n  'preminor',\n  'patch',\n  'prepatch',\n  'prerelease',\n]\n\nmodule.exports = {\n  MAX_LENGTH,\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_SAFE_INTEGER,\n  RELEASE_TYPES,\n  SEMVER_SPEC_VERSION,\n  FLAG_INCLUDE_PRERELEASE: 0b001,\n  FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst {\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n  for (const [token, max] of safeRegexReplacements) {\n    value = value\n      .split(`${token}*`).join(`${token}{0,${max}}`)\n      .split(`${token}+`).join(`${token}{1,${max}}`)\n  }\n  return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n  const safe = makeSafeRegex(value)\n  const index = R++\n  debug(name, index, value)\n  t[name] = index\n  src[index] = value\n  safeSrc[index] = safe\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n  safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numberic identifiers include numberic identifiers but can be longer.\n// Therefore non-numberic identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:${src[t.PRERELEASE]})?${\n                     src[t.BUILD]}?` +\n                   `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:${src[t.PRERELEASELOOSE]})?${\n                          src[t.BUILD]}?` +\n                        `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n              `(?:${src[t.PRERELEASE]})?` +\n              `(?:${src[t.BUILD]})?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s+-\\\\s+` +\n                   `(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s+-\\\\s+` +\n                        `(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n  if (!options) {\n    return emptyOpts\n  }\n\n  if (typeof options !== 'object') {\n    return looseOption\n  }\n\n  return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  if (typeof a === 'number' && typeof b === 'number') {\n    return a === b ? 0 : a < b ? -1 : 1\n  }\n\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n        version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    if (this.major < other.major) {\n      return -1\n    }\n    if (this.major > other.major) {\n      return 1\n    }\n    if (this.minor < other.minor) {\n      return -1\n    }\n    if (this.minor > other.minor) {\n      return 1\n    }\n    if (this.patch < other.patch) {\n      return -1\n    }\n    if (this.patch > other.patch) {\n      return 1\n    }\n    return 0\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('build compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier, identifierBase) {\n    if (release.startsWith('pre')) {\n      if (!identifier && identifierBase === false) {\n        throw new Error('invalid increment argument: identifier is empty')\n      }\n      // Avoid an invalid semver results\n      if (identifier) {\n        const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n        if (!match || match[1] !== identifier) {\n          throw new Error(`invalid identifier: ${identifier}`)\n        }\n      }\n    }\n\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier, identifierBase)\n        this.inc('pre', identifier, identifierBase)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier, identifierBase)\n        }\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'release':\n        if (this.prerelease.length === 0) {\n          throw new Error(`version ${this.raw} is not a prerelease`)\n        }\n        this.prerelease.length = 0\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre': {\n        const base = Number(identifierBase) ? 1 : 0\n\n        if (this.prerelease.length === 0) {\n          this.prerelease = [base]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            if (identifier === this.prerelease.join('.') && identifierBase === false) {\n              throw new Error('invalid increment argument: identifier already exists')\n            }\n            this.prerelease.push(base)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          let prerelease = [identifier, base]\n          if (identifierBase === false) {\n            prerelease = [identifier]\n          }\n          if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n            if (isNaN(this.prerelease[1])) {\n              this.prerelease = prerelease\n            }\n          } else {\n            this.prerelease = prerelease\n          }\n        }\n        break\n      }\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.raw = this.format()\n    if (this.build.length) {\n      this.raw += `+${this.build.join('.')}`\n    }\n    return this\n  }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    if (!throwErrors) {\n      return null\n    }\n    throw er\n  }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version === 'number') {\n    version = String(version)\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  options = options || {}\n\n  let match = null\n  if (!options.rtl) {\n    match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n  } else {\n    // Find the right-most coercible string that does not share\n    // a terminus with a more left-ward coercible string.\n    // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n    // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n    //\n    // Walk through the string checking with a /g regexp\n    // Manually set the index so as to pick up overlapping matches.\n    // Stop when we get a match that ends at the string end, since no\n    // coercible string can be more right-ward without the same terminus.\n    const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n    let next\n    while ((next = coerceRtlRegex.exec(version)) &&\n        (!match || match.index + match[0].length !== version.length)\n    ) {\n      if (!match ||\n            next.index + next[0].length !== match.index + match[0].length) {\n        match = next\n      }\n      coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n    }\n    // leave it in a clean state\n    coerceRtlRegex.lastIndex = -1\n  }\n\n  if (match === null) {\n    return null\n  }\n\n  const major = match[2]\n  const minor = match[3] || '0'\n  const patch = match[4] || '0'\n  const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n  const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n  return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nclass LRUCache {\n  constructor () {\n    this.max = 1000\n    this.map = new Map()\n  }\n\n  get (key) {\n    const value = this.map.get(key)\n    if (value === undefined) {\n      return undefined\n    } else {\n      // Remove the key from the map and add it to the end\n      this.map.delete(key)\n      this.map.set(key, value)\n      return value\n    }\n  }\n\n  delete (key) {\n    return this.map.delete(key)\n  }\n\n  set (key, value) {\n    const deleted = this.delete(key)\n\n    if (!deleted && value !== undefined) {\n      // If cache is full, delete the least recently used item\n      if (this.map.size >= this.max) {\n        const firstKey = this.map.keys().next().value\n        this.delete(firstKey)\n      }\n\n      this.map.set(key, value)\n    }\n\n    return this\n  }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError(`Invalid operator: ${op}`)\n  }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n  static get ANY () {\n    return ANY\n  }\n\n  constructor (comp, options) {\n    options = parseOptions(options)\n\n    if (comp instanceof Comparator) {\n      if (comp.loose === !!options.loose) {\n        return comp\n      } else {\n        comp = comp.value\n      }\n    }\n\n    comp = comp.trim().split(/\\s+/).join(' ')\n    debug('comparator', comp, options)\n    this.options = options\n    this.loose = !!options.loose\n    this.parse(comp)\n\n    if (this.semver === ANY) {\n      this.value = ''\n    } else {\n      this.value = this.operator + this.semver.version\n    }\n\n    debug('comp', this)\n  }\n\n  parse (comp) {\n    const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const m = comp.match(r)\n\n    if (!m) {\n      throw new TypeError(`Invalid comparator: ${comp}`)\n    }\n\n    this.operator = m[1] !== undefined ? m[1] : ''\n    if (this.operator === '=') {\n      this.operator = ''\n    }\n\n    // if it literally is just '>' or '' then allow anything.\n    if (!m[2]) {\n      this.semver = ANY\n    } else {\n      this.semver = new SemVer(m[2], this.options.loose)\n    }\n  }\n\n  toString () {\n    return this.value\n  }\n\n  test (version) {\n    debug('Comparator.test', version, this.options.loose)\n\n    if (this.semver === ANY || version === ANY) {\n      return true\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    return cmp(version, this.operator, this.semver, this.options)\n  }\n\n  intersects (comp, options) {\n    if (!(comp instanceof Comparator)) {\n      throw new TypeError('a Comparator is required')\n    }\n\n    if (this.operator === '') {\n      if (this.value === '') {\n        return true\n      }\n      return new Range(comp.value, options).test(this.value)\n    } else if (comp.operator === '') {\n      if (comp.value === '') {\n        return true\n      }\n      return new Range(this.value, options).test(comp.semver)\n    }\n\n    options = parseOptions(options)\n\n    // Special cases where nothing can possibly be lower\n    if (options.includePrerelease &&\n      (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n      return false\n    }\n    if (!options.includePrerelease &&\n      (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n      return false\n    }\n\n    // Same direction increasing (> or >=)\n    if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n      return true\n    }\n    // Same direction decreasing (< or <=)\n    if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // same SemVer and both sides are inclusive (<= or >=)\n    if (\n      (this.semver.version === comp.semver.version) &&\n      this.operator.includes('=') && comp.operator.includes('=')) {\n      return true\n    }\n    // opposite directions less than\n    if (cmp(this.semver, '<', comp.semver, options) &&\n      this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // opposite directions greater than\n    if (cmp(this.semver, '>', comp.semver, options) &&\n      this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n      return true\n    }\n    return false\n  }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.formatted = undefined\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First reduce all whitespace as much as possible so we do not have to rely\n    // on potentially slow regexes like \\s*. This is then stored and used for\n    // future error messages as well.\n    this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n    // First, split on ||\n    this.set = this.raw\n      .split('||')\n      // map the range to a 2d array of comparators\n      .map(r => this.parseRange(r.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0) {\n        this.set = [first]\n      } else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.formatted = undefined\n  }\n\n  get range () {\n    if (this.formatted === undefined) {\n      this.formatted = ''\n      for (let i = 0; i < this.set.length; i++) {\n        if (i > 0) {\n          this.formatted += '||'\n        }\n        const comps = this.set[i]\n        for (let k = 0; k < comps.length; k++) {\n          if (k > 0) {\n            this.formatted += ' '\n          }\n          this.formatted += comps[k].toString().trim()\n        }\n      }\n    }\n    return this.formatted\n  }\n\n  format () {\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts =\n      (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n      (this.options.loose && FLAG_LOOSE)\n    const memoKey = memoOpts + ':' + range\n    const cached = cache.get(memoKey)\n    if (cached) {\n      return cached\n    }\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range)\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n    debug('tilde trim', range)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n    debug('caret trim', range)\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    let rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n\n    if (loose) {\n      // in loose mode, throw out any that are not valid comparators\n      rangeList = rangeList.filter(comp => {\n        debug('loose invalid filter', comp, this.options)\n        return !!comp.match(re[t.COMPARATORLOOSE])\n      })\n    }\n    debug('range list', rangeList)\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const rangeMap = new Map()\n    const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n    for (const comp of comparators) {\n      if (isNullSet(comp)) {\n        return [comp]\n      }\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has('')) {\n      rangeMap.delete('')\n    }\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n  safeRe: re,\n  t,\n  comparatorTrimReplace,\n  tildeTrimReplace,\n  caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n  let result = true\n  const remainingComparators = comparators.slice()\n  let testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every((otherComparator) => {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n  comp = comp.replace(re[t.BUILD], '')\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceTilde(c, options))\n    .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('tilde', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = `>=${M}.${m}.${p}-${pr\n      } <${M}.${+m + 1}.0-0`\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceCaret(c, options))\n    .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n  debug('caret', comp, options)\n  const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('caret', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr\n        } <${+M + 1}.0.0-0`\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p\n        } <${+M + 1}.0.0-0`\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nconst replaceXRanges = (comp, options) => {\n  debug('replaceXRanges', comp, options)\n  return comp\n    .split(/\\s+/)\n    .map((c) => replaceXRange(c, options))\n    .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n  comp = comp.trim()\n  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    const xM = isX(M)\n    const xm = xM || isX(m)\n    const xp = xm || isX(p)\n    const anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0'\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp\n    .trim()\n    .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n  debug('replaceGTE0', comp, options)\n  return comp\n    .trim()\n    .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\nmodule.exports = satisfies\n","{\n  \"name\": \"sharp\",\n  \"description\": \"High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images\",\n  \"version\": \"0.34.5\",\n  \"author\": \"Lovell Fuller <npm@lovell.info>\",\n  \"homepage\": \"https://sharp.pixelplumbing.com\",\n  \"contributors\": [\n    \"Pierre Inglebert <pierre.inglebert@gmail.com>\",\n    \"Jonathan Ong <jonathanrichardong@gmail.com>\",\n    \"Chanon Sajjamanochai <chanon.s@gmail.com>\",\n    \"Juliano Julio <julianojulio@gmail.com>\",\n    \"Daniel Gasienica <daniel@gasienica.ch>\",\n    \"Julian Walker <julian@fiftythree.com>\",\n    \"Amit Pitaru <pitaru.amit@gmail.com>\",\n    \"Brandon Aaron <hello.brandon@aaron.sh>\",\n    \"Andreas Lind <andreas@one.com>\",\n    \"Maurus Cuelenaere <mcuelenaere@gmail.com>\",\n    \"Linus Unnebäck <linus@folkdatorn.se>\",\n    \"Victor Mateevitsi <mvictoras@gmail.com>\",\n    \"Alaric Holloway <alaric.holloway@gmail.com>\",\n    \"Bernhard K. Weisshuhn <bkw@codingforce.com>\",\n    \"Chris Riley <criley@primedia.com>\",\n    \"David Carley <dacarley@gmail.com>\",\n    \"John Tobin <john@limelightmobileinc.com>\",\n    \"Kenton Gray <kentongray@gmail.com>\",\n    \"Felix Bünemann <Felix.Buenemann@gmail.com>\",\n    \"Samy Al Zahrani <samyalzahrany@gmail.com>\",\n    \"Chintan Thakkar <lemnisk8@gmail.com>\",\n    \"F. Orlando Galashan <frulo@gmx.de>\",\n    \"Kleis Auke Wolthuizen <info@kleisauke.nl>\",\n    \"Matt Hirsch <mhirsch@media.mit.edu>\",\n    \"Matthias Thoemmes <thoemmes@gmail.com>\",\n    \"Patrick Paskaris <patrick@paskaris.gr>\",\n    \"Jérémy Lal <kapouer@melix.org>\",\n    \"Rahul Nanwani <r.nanwani@gmail.com>\",\n    \"Alice Monday <alice0meta@gmail.com>\",\n    \"Kristo Jorgenson <kristo.jorgenson@gmail.com>\",\n    \"YvesBos <yves_bos@outlook.com>\",\n    \"Guy Maliar <guy@tailorbrands.com>\",\n    \"Nicolas Coden <nicolas@ncoden.fr>\",\n    \"Matt Parrish <matt.r.parrish@gmail.com>\",\n    \"Marcel Bretschneider <marcel.bretschneider@gmail.com>\",\n    \"Matthew McEachen <matthew+github@mceachen.org>\",\n    \"Jarda Kotěšovec <jarda.kotesovec@gmail.com>\",\n    \"Kenric D'Souza <kenric.dsouza@gmail.com>\",\n    \"Oleh Aleinyk <oleg.aleynik@gmail.com>\",\n    \"Marcel Bretschneider <marcel.bretschneider@gmail.com>\",\n    \"Andrea Bianco <andrea.bianco@unibas.ch>\",\n    \"Rik Heywood <rik@rik.org>\",\n    \"Thomas Parisot <hi@oncletom.io>\",\n    \"Nathan Graves <nathanrgraves+github@gmail.com>\",\n    \"Tom Lokhorst <tom@lokhorst.eu>\",\n    \"Espen Hovlandsdal <espen@hovlandsdal.com>\",\n    \"Sylvain Dumont <sylvain.dumont35@gmail.com>\",\n    \"Alun Davies <alun.owain.davies@googlemail.com>\",\n    \"Aidan Hoolachan <ajhoolachan21@gmail.com>\",\n    \"Axel Eirola <axel.eirola@iki.fi>\",\n    \"Freezy <freezy@xbmc.org>\",\n    \"Daiz <taneli.vatanen@gmail.com>\",\n    \"Julian Aubourg <j@ubourg.net>\",\n    \"Keith Belovay <keith@picthrive.com>\",\n    \"Michael B. Klein <mbklein@gmail.com>\",\n    \"Jordan Prudhomme <jordan@raboland.fr>\",\n    \"Ilya Ovdin <iovdin@gmail.com>\",\n    \"Andargor <andargor@yahoo.com>\",\n    \"Paul Neave <paul.neave@gmail.com>\",\n    \"Brendan Kennedy <brenwken@gmail.com>\",\n    \"Brychan Bennett-Odlum <git@brychan.io>\",\n    \"Edward Silverton <e.silverton@gmail.com>\",\n    \"Roman Malieiev <aromaleev@gmail.com>\",\n    \"Tomas Szabo <tomas.szabo@deftomat.com>\",\n    \"Robert O'Rourke <robert@o-rourke.org>\",\n    \"Guillermo Alfonso Varela Chouciño <guillevch@gmail.com>\",\n    \"Christian Flintrup <chr@gigahost.dk>\",\n    \"Manan Jadhav <manan@motionden.com>\",\n    \"Leon Radley <leon@radley.se>\",\n    \"alza54 <alza54@thiocod.in>\",\n    \"Jacob Smith <jacob@frende.me>\",\n    \"Michael Nutt <michael@nutt.im>\",\n    \"Brad Parham <baparham@gmail.com>\",\n    \"Taneli Vatanen <taneli.vatanen@gmail.com>\",\n    \"Joris Dugué <zaruike10@gmail.com>\",\n    \"Chris Banks <christopher.bradley.banks@gmail.com>\",\n    \"Ompal Singh <ompal.hitm09@gmail.com>\",\n    \"Brodan <christopher.hranj@gmail.com>\",\n    \"Ankur Parihar <ankur.github@gmail.com>\",\n    \"Brahim Ait elhaj <brahima@gmail.com>\",\n    \"Mart Jansink <m.jansink@gmail.com>\",\n    \"Lachlan Newman <lachnewman007@gmail.com>\",\n    \"Dennis Beatty <dennis@dcbeatty.com>\",\n    \"Ingvar Stepanyan <me@rreverser.com>\",\n    \"Don Denton <don@happycollision.com>\"\n  ],\n  \"scripts\": {\n    \"build\": \"node install/build.js\",\n    \"install\": \"node install/check.js || npm run build\",\n    \"clean\": \"rm -rf src/build/ .nyc_output/ coverage/ test/fixtures/output.*\",\n    \"test\": \"npm run lint && npm run test-unit\",\n    \"lint\": \"npm run lint-cpp && npm run lint-js && npm run lint-types\",\n    \"lint-cpp\": \"cpplint --quiet src/*.h src/*.cc\",\n    \"lint-js\": \"biome lint\",\n    \"lint-types\": \"tsd --files ./test/types/sharp.test-d.ts\",\n    \"test-leak\": \"./test/leak/leak.sh\",\n    \"test-unit\": \"node --experimental-test-coverage test/unit.mjs\",\n    \"package-from-local-build\": \"node npm/from-local-build.js\",\n    \"package-release-notes\": \"node npm/release-notes.js\",\n    \"docs-build\": \"node docs/build.mjs\",\n    \"docs-serve\": \"cd docs && npm start\",\n    \"docs-publish\": \"cd docs && npm run build && npx firebase-tools deploy --project pixelplumbing --only hosting:pixelplumbing-sharp\"\n  },\n  \"type\": \"commonjs\",\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"files\": [\n    \"install\",\n    \"lib\",\n    \"src/*.{cc,h,gyp}\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/lovell/sharp.git\"\n  },\n  \"keywords\": [\n    \"jpeg\",\n    \"png\",\n    \"webp\",\n    \"avif\",\n    \"tiff\",\n    \"gif\",\n    \"svg\",\n    \"jp2\",\n    \"dzi\",\n    \"image\",\n    \"resize\",\n    \"thumbnail\",\n    \"crop\",\n    \"embed\",\n    \"libvips\",\n    \"vips\"\n  ],\n  \"dependencies\": {\n    \"@img/colour\": \"^1.0.0\",\n    \"detect-libc\": \"^2.1.2\",\n    \"semver\": \"^7.7.3\"\n  },\n  \"optionalDependencies\": {\n    \"@img/sharp-darwin-arm64\": \"0.34.5\",\n    \"@img/sharp-darwin-x64\": \"0.34.5\",\n    \"@img/sharp-libvips-darwin-arm64\": \"1.2.4\",\n    \"@img/sharp-libvips-darwin-x64\": \"1.2.4\",\n    \"@img/sharp-libvips-linux-arm\": \"1.2.4\",\n    \"@img/sharp-libvips-linux-arm64\": \"1.2.4\",\n    \"@img/sharp-libvips-linux-ppc64\": \"1.2.4\",\n    \"@img/sharp-libvips-linux-riscv64\": \"1.2.4\",\n    \"@img/sharp-libvips-linux-s390x\": \"1.2.4\",\n    \"@img/sharp-libvips-linux-x64\": \"1.2.4\",\n    \"@img/sharp-libvips-linuxmusl-arm64\": \"1.2.4\",\n    \"@img/sharp-libvips-linuxmusl-x64\": \"1.2.4\",\n    \"@img/sharp-linux-arm\": \"0.34.5\",\n    \"@img/sharp-linux-arm64\": \"0.34.5\",\n    \"@img/sharp-linux-ppc64\": \"0.34.5\",\n    \"@img/sharp-linux-riscv64\": \"0.34.5\",\n    \"@img/sharp-linux-s390x\": \"0.34.5\",\n    \"@img/sharp-linux-x64\": \"0.34.5\",\n    \"@img/sharp-linuxmusl-arm64\": \"0.34.5\",\n    \"@img/sharp-linuxmusl-x64\": \"0.34.5\",\n    \"@img/sharp-wasm32\": \"0.34.5\",\n    \"@img/sharp-win32-arm64\": \"0.34.5\",\n    \"@img/sharp-win32-ia32\": \"0.34.5\",\n    \"@img/sharp-win32-x64\": \"0.34.5\"\n  },\n  \"devDependencies\": {\n    \"@biomejs/biome\": \"^2.3.4\",\n    \"@cpplint/cli\": \"^0.1.0\",\n    \"@emnapi/runtime\": \"^1.7.0\",\n    \"@img/sharp-libvips-dev\": \"1.2.4\",\n    \"@img/sharp-libvips-dev-wasm32\": \"1.2.4\",\n    \"@img/sharp-libvips-win32-arm64\": \"1.2.4\",\n    \"@img/sharp-libvips-win32-ia32\": \"1.2.4\",\n    \"@img/sharp-libvips-win32-x64\": \"1.2.4\",\n    \"@types/node\": \"*\",\n    \"emnapi\": \"^1.7.0\",\n    \"exif-reader\": \"^2.0.2\",\n    \"extract-zip\": \"^2.0.1\",\n    \"icc\": \"^3.0.0\",\n    \"jsdoc-to-markdown\": \"^9.1.3\",\n    \"node-addon-api\": \"^8.5.0\",\n    \"node-gyp\": \"^11.5.0\",\n    \"tar-fs\": \"^3.1.1\",\n    \"tsd\": \"^0.33.0\"\n  },\n  \"license\": \"Apache-2.0\",\n  \"engines\": {\n    \"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n  },\n  \"config\": {\n    \"libvips\": \">=8.17.3\"\n  },\n  \"funding\": {\n    \"url\": \"https://opencollective.com/libvips\"\n  }\n}\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\nconst { spawnSync } = require('node:child_process');\nconst { createHash } = require('node:crypto');\nconst semverCoerce = require('semver/functions/coerce');\nconst semverGreaterThanOrEqualTo = require('semver/functions/gte');\nconst semverSatisfies = require('semver/functions/satisfies');\nconst detectLibc = require('detect-libc');\n\nconst { config, engines, optionalDependencies } = require('../package.json');\n\n/* node:coverage ignore next */\nconst minimumLibvipsVersionLabelled = process.env.npm_package_config_libvips || config.libvips;\nconst minimumLibvipsVersion = semverCoerce(minimumLibvipsVersionLabelled).version;\n\nconst prebuiltPlatforms = [\n  'darwin-arm64', 'darwin-x64',\n  'linux-arm', 'linux-arm64', 'linux-ppc64', 'linux-riscv64', 'linux-s390x', 'linux-x64',\n  'linuxmusl-arm64', 'linuxmusl-x64',\n  'win32-arm64', 'win32-ia32', 'win32-x64'\n];\n\nconst spawnSyncOptions = {\n  encoding: 'utf8',\n  shell: true\n};\n\nconst log = (item) => {\n  if (item instanceof Error) {\n    console.error(`sharp: Installation error: ${item.message}`);\n  } else {\n    console.log(`sharp: ${item}`);\n  }\n};\n\n/* node:coverage ignore next */\nconst runtimeLibc = () => detectLibc.isNonGlibcLinuxSync() ? detectLibc.familySync() : '';\n\nconst runtimePlatformArch = () => `${process.platform}${runtimeLibc()}-${process.arch}`;\n\nconst buildPlatformArch = () => {\n  /* node:coverage ignore next 3 */\n  if (isEmscripten()) {\n    return 'wasm32';\n  }\n  const { npm_config_arch, npm_config_platform, npm_config_libc } = process.env;\n  const libc = typeof npm_config_libc === 'string' ? npm_config_libc : runtimeLibc();\n  return `${npm_config_platform || process.platform}${libc}-${npm_config_arch || process.arch}`;\n};\n\nconst buildSharpLibvipsIncludeDir = () => {\n  try {\n    return require(`@img/sharp-libvips-dev-${buildPlatformArch()}/include`);\n  } catch {\n    /* node:coverage ignore next 5 */\n    try {\n      return require('@img/sharp-libvips-dev/include');\n    } catch {}\n  }\n  return '';\n};\n\nconst buildSharpLibvipsCPlusPlusDir = () => {\n  /* node:coverage ignore next 4 */\n  try {\n    return require('@img/sharp-libvips-dev/cplusplus');\n  } catch {}\n  return '';\n};\n\nconst buildSharpLibvipsLibDir = () => {\n  try {\n    return require(`@img/sharp-libvips-dev-${buildPlatformArch()}/lib`);\n  } catch {\n    /* node:coverage ignore next 5 */\n    try {\n      return require(`@img/sharp-libvips-${buildPlatformArch()}/lib`);\n    } catch {}\n  }\n  return '';\n};\n\n/* node:coverage disable */\n\nconst isUnsupportedNodeRuntime = () => {\n  if (process.release?.name === 'node' && process.versions) {\n    if (!semverSatisfies(process.versions.node, engines.node)) {\n      return { found: process.versions.node, expected: engines.node };\n    }\n  }\n};\n\nconst isEmscripten = () => {\n  const { CC } = process.env;\n  return Boolean(CC?.endsWith('/emcc'));\n};\n\nconst isRosetta = () => {\n  if (process.platform === 'darwin' && process.arch === 'x64') {\n    const translated = spawnSync('sysctl sysctl.proc_translated', spawnSyncOptions).stdout;\n    return (translated || '').trim() === 'sysctl.proc_translated: 1';\n  }\n  return false;\n};\n\n/* node:coverage enable */\n\nconst sha512 = (s) => createHash('sha512').update(s).digest('hex');\n\nconst yarnLocator = () => {\n  try {\n    const identHash = sha512(`imgsharp-libvips-${buildPlatformArch()}`);\n    const npmVersion = semverCoerce(optionalDependencies[`@img/sharp-libvips-${buildPlatformArch()}`], {\n      includePrerelease: true\n    }).version;\n    return sha512(`${identHash}npm:${npmVersion}`).slice(0, 10);\n  } catch {}\n  return '';\n};\n\n/* node:coverage disable */\n\nconst spawnRebuild = () =>\n  spawnSync(`node-gyp rebuild --directory=src ${isEmscripten() ? '--nodedir=emscripten' : ''}`, {\n    ...spawnSyncOptions,\n    stdio: 'inherit'\n  }).status;\n\nconst globalLibvipsVersion = () => {\n  if (process.platform !== 'win32') {\n    const globalLibvipsVersion = spawnSync('pkg-config --modversion vips-cpp', {\n      ...spawnSyncOptions,\n      env: {\n        ...process.env,\n        PKG_CONFIG_PATH: pkgConfigPath()\n      }\n    }).stdout;\n    return (globalLibvipsVersion || '').trim();\n  } else {\n    return '';\n  }\n};\n\n/* node:coverage enable */\n\nconst pkgConfigPath = () => {\n  if (process.platform !== 'win32') {\n    /* node:coverage ignore next 4 */\n    const brewPkgConfigPath = spawnSync(\n      'which brew >/dev/null 2>&1 && brew environment --plain | grep PKG_CONFIG_LIBDIR | cut -d\" \" -f2',\n      spawnSyncOptions\n    ).stdout || '';\n    return [\n      brewPkgConfigPath.trim(),\n      process.env.PKG_CONFIG_PATH,\n      '/usr/local/lib/pkgconfig',\n      '/usr/lib/pkgconfig',\n      '/usr/local/libdata/pkgconfig',\n      '/usr/libdata/pkgconfig'\n    ].filter(Boolean).join(':');\n  } else {\n    return '';\n  }\n};\n\nconst skipSearch = (status, reason, logger) => {\n  if (logger) {\n    logger(`Detected ${reason}, skipping search for globally-installed libvips`);\n  }\n  return status;\n};\n\nconst useGlobalLibvips = (logger) => {\n  if (Boolean(process.env.SHARP_IGNORE_GLOBAL_LIBVIPS) === true) {\n    return skipSearch(false, 'SHARP_IGNORE_GLOBAL_LIBVIPS', logger);\n  }\n  if (Boolean(process.env.SHARP_FORCE_GLOBAL_LIBVIPS) === true) {\n    return skipSearch(true, 'SHARP_FORCE_GLOBAL_LIBVIPS', logger);\n  }\n  /* node:coverage ignore next 3 */\n  if (isRosetta()) {\n    return skipSearch(false, 'Rosetta', logger);\n  }\n  const globalVipsVersion = globalLibvipsVersion();\n  /* node:coverage ignore next */\n  return !!globalVipsVersion && semverGreaterThanOrEqualTo(globalVipsVersion, minimumLibvipsVersion);\n};\n\nmodule.exports = {\n  minimumLibvipsVersion,\n  prebuiltPlatforms,\n  buildPlatformArch,\n  buildSharpLibvipsIncludeDir,\n  buildSharpLibvipsCPlusPlusDir,\n  buildSharpLibvipsLibDir,\n  isUnsupportedNodeRuntime,\n  runtimePlatformArch,\n  log,\n  yarnLocator,\n  spawnRebuild,\n  globalLibvipsVersion,\n  pkgConfigPath,\n  useGlobalLibvips\n};\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\n// Inspects the runtime environment and exports the relevant sharp.node binary\n\nconst { familySync, versionSync } = require('detect-libc');\n\nconst { runtimePlatformArch, isUnsupportedNodeRuntime, prebuiltPlatforms, minimumLibvipsVersion } = require('./libvips');\nconst runtimePlatform = runtimePlatformArch();\n\nconst paths = [\n  `../src/build/Release/sharp-${runtimePlatform}.node`,\n  '../src/build/Release/sharp-wasm32.node',\n  `@img/sharp-${runtimePlatform}/sharp.node`,\n  '@img/sharp-wasm32/sharp.node'\n];\n\n/* node:coverage disable */\n\nlet path, sharp;\nconst errors = [];\nfor (path of paths) {\n  try {\n    sharp = require(path);\n    break;\n  } catch (err) {\n    errors.push(err);\n  }\n}\n\nif (sharp && path.startsWith('@img/sharp-linux-x64') && !sharp._isUsingX64V2()) {\n  const err = new Error('Prebuilt binaries for linux-x64 require v2 microarchitecture');\n  err.code = 'Unsupported CPU';\n  errors.push(err);\n  sharp = null;\n}\n\nif (sharp) {\n  module.exports = sharp;\n} else {\n  const [isLinux, isMacOs, isWindows] = ['linux', 'darwin', 'win32'].map(os => runtimePlatform.startsWith(os));\n\n  const help = [`Could not load the \"sharp\" module using the ${runtimePlatform} runtime`];\n  errors.forEach(err => {\n    if (err.code !== 'MODULE_NOT_FOUND') {\n      help.push(`${err.code}: ${err.message}`);\n    }\n  });\n  const messages = errors.map(err => err.message).join(' ');\n  help.push('Possible solutions:');\n  // Common error messages\n  if (isUnsupportedNodeRuntime()) {\n    const { found, expected } = isUnsupportedNodeRuntime();\n    help.push(\n      '- Please upgrade Node.js:',\n      `    Found ${found}`,\n      `    Requires ${expected}`\n    );\n  } else if (prebuiltPlatforms.includes(runtimePlatform)) {\n    const [os, cpu] = runtimePlatform.split('-');\n    const libc = os.endsWith('musl') ? ' --libc=musl' : '';\n    help.push(\n      '- Ensure optional dependencies can be installed:',\n      '    npm install --include=optional sharp',\n      '- Ensure your package manager supports multi-platform installation:',\n      '    See https://sharp.pixelplumbing.com/install#cross-platform',\n      '- Add platform-specific dependencies:',\n      `    npm install --os=${os.replace('musl', '')}${libc} --cpu=${cpu} sharp`\n    );\n  } else {\n    help.push(\n      `- Manually install libvips >= ${minimumLibvipsVersion}`,\n      '- Add experimental WebAssembly-based dependencies:',\n      '    npm install --cpu=wasm32 sharp',\n      '    npm install @img/sharp-wasm32'\n    );\n  }\n  if (isLinux && /(symbol not found|CXXABI_)/i.test(messages)) {\n    try {\n      const { config } = require(`@img/sharp-libvips-${runtimePlatform}/package`);\n      const libcFound = `${familySync()} ${versionSync()}`;\n      const libcRequires = `${config.musl ? 'musl' : 'glibc'} ${config.musl || config.glibc}`;\n      help.push(\n        '- Update your OS:',\n        `    Found ${libcFound}`,\n        `    Requires ${libcRequires}`\n      );\n    } catch (_errEngines) {}\n  }\n  if (isLinux && /\\/snap\\/core[0-9]{2}/.test(messages)) {\n    help.push(\n      '- Remove the Node.js Snap, which does not support native modules',\n      '    snap remove node'\n    );\n  }\n  if (isMacOs && /Incompatible library version/.test(messages)) {\n    help.push(\n      '- Update Homebrew:',\n      '    brew update && brew upgrade vips'\n    );\n  }\n  if (errors.some(err => err.code === 'ERR_DLOPEN_DISABLED')) {\n    help.push('- Run Node.js without using the --no-addons flag');\n  }\n  // Link to installation docs\n  if (isWindows && /The specified procedure could not be found/.test(messages)) {\n    help.push(\n      '- Using the canvas package on Windows?',\n      '    See https://sharp.pixelplumbing.com/install#canvas-and-windows',\n      '- Check for outdated versions of sharp in the dependency tree:',\n      '    npm ls sharp'\n    );\n  }\n  help.push(\n    '- Consult the installation documentation:',\n    '    See https://sharp.pixelplumbing.com/install'\n  );\n  throw new Error(help.join('\\n'));\n}\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\nconst util = require('node:util');\nconst stream = require('node:stream');\nconst is = require('./is');\n\nrequire('./sharp');\n\n// Use NODE_DEBUG=sharp to enable libvips warnings\nconst debuglog = util.debuglog('sharp');\n\nconst queueListener = (queueLength) => {\n  Sharp.queue.emit('change', queueLength);\n};\n\n/**\n * Constructor factory to create an instance of `sharp`, to which further methods are chained.\n *\n * JPEG, PNG, WebP, GIF, AVIF or TIFF format image data can be streamed out from this object.\n * When using Stream based output, derived attributes are available from the `info` event.\n *\n * Non-critical problems encountered during processing are emitted as `warning` events.\n *\n * Implements the [stream.Duplex](http://nodejs.org/api/stream.html#stream_class_stream_duplex) class.\n *\n * When loading more than one page/frame of an animated image,\n * these are combined as a vertically-stacked \"toilet roll\" image\n * where the overall height is the `pageHeight` multiplied by the number of `pages`.\n *\n * @constructs Sharp\n *\n * @emits Sharp#info\n * @emits Sharp#warning\n *\n * @example\n * sharp('input.jpg')\n *   .resize(300, 200)\n *   .toFile('output.jpg', function(err) {\n *     // output.jpg is a 300 pixels wide and 200 pixels high image\n *     // containing a scaled and cropped version of input.jpg\n *   });\n *\n * @example\n * // Read image data from remote URL,\n * // resize to 300 pixels wide,\n * // emit an 'info' event with calculated dimensions\n * // and finally write image data to writableStream\n * const { body } = fetch('https://...');\n * const readableStream = Readable.fromWeb(body);\n * const transformer = sharp()\n *   .resize(300)\n *   .on('info', ({ height }) => {\n *     console.log(`Image height is ${height}`);\n *   });\n * readableStream.pipe(transformer).pipe(writableStream);\n *\n * @example\n * // Create a blank 300x200 PNG image of semi-translucent red pixels\n * sharp({\n *   create: {\n *     width: 300,\n *     height: 200,\n *     channels: 4,\n *     background: { r: 255, g: 0, b: 0, alpha: 0.5 }\n *   }\n * })\n * .png()\n * .toBuffer()\n * .then( ... );\n *\n * @example\n * // Convert an animated GIF to an animated WebP\n * await sharp('in.gif', { animated: true }).toFile('out.webp');\n *\n * @example\n * // Read a raw array of pixels and save it to a png\n * const input = Uint8Array.from([255, 255, 255, 0, 0, 0]); // or Uint8ClampedArray\n * const image = sharp(input, {\n *   // because the input does not contain its dimensions or how many channels it has\n *   // we need to specify it in the constructor options\n *   raw: {\n *     width: 2,\n *     height: 1,\n *     channels: 3\n *   }\n * });\n * await image.toFile('my-two-pixels.png');\n *\n * @example\n * // Generate RGB Gaussian noise\n * await sharp({\n *   create: {\n *     width: 300,\n *     height: 200,\n *     channels: 3,\n *     noise: {\n *       type: 'gaussian',\n *       mean: 128,\n *       sigma: 30\n *     }\n *  }\n * }).toFile('noise.png');\n *\n * @example\n * // Generate an image from text\n * await sharp({\n *   text: {\n *     text: 'Hello, world!',\n *     width: 400, // max width\n *     height: 300 // max height\n *   }\n * }).toFile('text_bw.png');\n *\n * @example\n * // Generate an rgba image from text using pango markup and font\n * await sharp({\n *   text: {\n *     text: '<span foreground=\"red\">Red!</span><span background=\"cyan\">blue</span>',\n *     font: 'sans',\n *     rgba: true,\n *     dpi: 300\n *   }\n * }).toFile('text_rgba.png');\n *\n * @example\n * // Join four input images as a 2x2 grid with a 4 pixel gutter\n * const data = await sharp(\n *  [image1, image2, image3, image4],\n *  { join: { across: 2, shim: 4 } }\n * ).toBuffer();\n *\n * @example\n * // Generate a two-frame animated image from emoji\n * const images = ['😀', '😛'].map(text => ({\n *   text: { text, width: 64, height: 64, channels: 4, rgba: true }\n * }));\n * await sharp(images, { join: { animated: true } }).toFile('out.gif');\n *\n * @param {(Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray|Int8Array|Uint16Array|Int16Array|Uint32Array|Int32Array|Float32Array|Float64Array|string|Array)} [input] - if present, can be\n *  a Buffer / ArrayBuffer / Uint8Array / Uint8ClampedArray containing JPEG, PNG, WebP, AVIF, GIF, SVG or TIFF image data, or\n *  a TypedArray containing raw pixel image data, or\n *  a String containing the filesystem path to an JPEG, PNG, WebP, AVIF, GIF, SVG or TIFF image file.\n *  An array of inputs can be provided, and these will be joined together.\n *  JPEG, PNG, WebP, AVIF, GIF, SVG, TIFF or raw pixel image data can be streamed into the object when not present.\n * @param {Object} [options] - if present, is an Object with optional attributes.\n * @param {string} [options.failOn='warning'] - When to abort processing of invalid pixel data, one of (in order of sensitivity, least to most): 'none', 'truncated', 'error', 'warning'. Higher levels imply lower levels. Invalid metadata will always abort.\n * @param {number|boolean} [options.limitInputPixels=268402689] - Do not process input images where the number of pixels\n *  (width x height) exceeds this limit. Assumes image dimensions contained in the input metadata can be trusted.\n *  An integral Number of pixels, zero or false to remove limit, true to use default limit of 268402689 (0x3FFF x 0x3FFF).\n * @param {boolean} [options.unlimited=false] - Set this to `true` to remove safety features that help prevent memory exhaustion (JPEG, PNG, SVG, HEIF).\n * @param {boolean} [options.autoOrient=false] - Set this to `true` to rotate/flip the image to match EXIF `Orientation`, if any.\n * @param {boolean} [options.sequentialRead=true] - Set this to `false` to use random access rather than sequential read. Some operations will do this automatically.\n * @param {number} [options.density=72] - number representing the DPI for vector images in the range 1 to 100000.\n * @param {number} [options.ignoreIcc=false] - should the embedded ICC profile, if any, be ignored.\n * @param {number} [options.pages=1] - Number of pages to extract for multi-page input (GIF, WebP, TIFF), use -1 for all pages.\n * @param {number} [options.page=0] - Page number to start extracting from for multi-page input (GIF, WebP, TIFF), zero based.\n * @param {boolean} [options.animated=false] - Set to `true` to read all frames/pages of an animated image (GIF, WebP, TIFF), equivalent of setting `pages` to `-1`.\n * @param {Object} [options.raw] - describes raw pixel input image data. See `raw()` for pixel ordering.\n * @param {number} [options.raw.width] - integral number of pixels wide.\n * @param {number} [options.raw.height] - integral number of pixels high.\n * @param {number} [options.raw.channels] - integral number of channels, between 1 and 4.\n * @param {boolean} [options.raw.premultiplied] - specifies that the raw input has already been premultiplied, set to `true`\n *  to avoid sharp premultiplying the image. (optional, default `false`)\n * @param {number} [options.raw.pageHeight] - The pixel height of each page/frame for animated images, must be an integral factor of `raw.height`.\n * @param {Object} [options.create] - describes a new image to be created.\n * @param {number} [options.create.width] - integral number of pixels wide.\n * @param {number} [options.create.height] - integral number of pixels high.\n * @param {number} [options.create.channels] - integral number of channels, either 3 (RGB) or 4 (RGBA).\n * @param {string|Object} [options.create.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @param {number} [options.create.pageHeight] - The pixel height of each page/frame for animated images, must be an integral factor of `create.height`.\n * @param {Object} [options.create.noise] - describes a noise to be created.\n * @param {string} [options.create.noise.type] - type of generated noise, currently only `gaussian` is supported.\n * @param {number} [options.create.noise.mean=128] - Mean value of pixels in the generated noise.\n * @param {number} [options.create.noise.sigma=30] - Standard deviation of pixel values in the generated noise.\n * @param {Object} [options.text] - describes a new text image to be created.\n * @param {string} [options.text.text] - text to render as a UTF-8 string. It can contain Pango markup, for example `<i>Le</i>Monde`.\n * @param {string} [options.text.font] - font name to render with.\n * @param {string} [options.text.fontfile] - absolute filesystem path to a font file that can be used by `font`.\n * @param {number} [options.text.width=0] - Integral number of pixels to word-wrap at. Lines of text wider than this will be broken at word boundaries.\n * @param {number} [options.text.height=0] - Maximum integral number of pixels high. When defined, `dpi` will be ignored and the text will automatically fit the pixel resolution defined by `width` and `height`. Will be ignored if `width` is not specified or set to 0.\n * @param {string} [options.text.align='left'] - Alignment style for multi-line text (`'left'`, `'centre'`, `'center'`, `'right'`).\n * @param {boolean} [options.text.justify=false] - set this to true to apply justification to the text.\n * @param {number} [options.text.dpi=72] - the resolution (size) at which to render the text. Does not take effect if `height` is specified.\n * @param {boolean} [options.text.rgba=false] - set this to true to enable RGBA output. This is useful for colour emoji rendering, or support for pango markup features like `<span foreground=\"red\">Red!</span>`.\n * @param {number} [options.text.spacing=0] - text line height in points. Will use the font line height if none is specified.\n * @param {string} [options.text.wrap='word'] - word wrapping style when width is provided, one of: 'word', 'char', 'word-char' (prefer word, fallback to char) or 'none'.\n * @param {Object} [options.join] - describes how an array of input images should be joined.\n * @param {number} [options.join.across=1] - number of images to join horizontally.\n * @param {boolean} [options.join.animated=false] - set this to `true` to join the images as an animated image.\n * @param {number} [options.join.shim=0] - number of pixels to insert between joined images.\n * @param {string|Object} [options.join.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @param {string} [options.join.halign='left'] - horizontal alignment style for images joined horizontally (`'left'`, `'centre'`, `'center'`, `'right'`).\n * @param {string} [options.join.valign='top'] - vertical alignment style for images joined vertically (`'top'`, `'centre'`, `'center'`, `'bottom'`).\n * @param {Object} [options.tiff] - Describes TIFF specific options.\n * @param {number} [options.tiff.subifd=-1] - Sub Image File Directory to extract for OME-TIFF, defaults to main image.\n * @param {Object} [options.svg] - Describes SVG specific options.\n * @param {string} [options.svg.stylesheet] - Custom CSS for SVG input, applied with a User Origin during the CSS cascade.\n * @param {boolean} [options.svg.highBitdepth=false] - Set to `true` to render SVG input at 32-bits per channel (128-bit) instead of 8-bits per channel (32-bit) RGBA.\n * @param {Object} [options.pdf] - Describes PDF specific options. Requires the use of a globally-installed libvips compiled with support for PDFium, Poppler, ImageMagick or GraphicsMagick.\n * @param {string|Object} [options.pdf.background] - Background colour to use when PDF is partially transparent. Parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @param {Object} [options.openSlide] - Describes OpenSlide specific options. Requires the use of a globally-installed libvips compiled with support for OpenSlide.\n * @param {number} [options.openSlide.level=0] - Level to extract from a multi-level input, zero based.\n * @param {Object} [options.jp2] - Describes JPEG 2000 specific options. Requires the use of a globally-installed libvips compiled with support for OpenJPEG.\n * @param {boolean} [options.jp2.oneshot=false] - Set to `true` to decode tiled JPEG 2000 images in a single operation, improving compatibility.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nconst Sharp = function (input, options) {\n  // biome-ignore lint/complexity/noArguments: constructor factory\n  if (arguments.length === 1 && !is.defined(input)) {\n    throw new Error('Invalid input');\n  }\n  if (!(this instanceof Sharp)) {\n    return new Sharp(input, options);\n  }\n  stream.Duplex.call(this);\n  this.options = {\n    // resize options\n    topOffsetPre: -1,\n    leftOffsetPre: -1,\n    widthPre: -1,\n    heightPre: -1,\n    topOffsetPost: -1,\n    leftOffsetPost: -1,\n    widthPost: -1,\n    heightPost: -1,\n    width: -1,\n    height: -1,\n    canvas: 'crop',\n    position: 0,\n    resizeBackground: [0, 0, 0, 255],\n    angle: 0,\n    rotationAngle: 0,\n    rotationBackground: [0, 0, 0, 255],\n    rotateBefore: false,\n    orientBefore: false,\n    flip: false,\n    flop: false,\n    extendTop: 0,\n    extendBottom: 0,\n    extendLeft: 0,\n    extendRight: 0,\n    extendBackground: [0, 0, 0, 255],\n    extendWith: 'background',\n    withoutEnlargement: false,\n    withoutReduction: false,\n    affineMatrix: [],\n    affineBackground: [0, 0, 0, 255],\n    affineIdx: 0,\n    affineIdy: 0,\n    affineOdx: 0,\n    affineOdy: 0,\n    affineInterpolator: this.constructor.interpolators.bilinear,\n    kernel: 'lanczos3',\n    fastShrinkOnLoad: true,\n    // operations\n    tint: [-1, 0, 0, 0],\n    flatten: false,\n    flattenBackground: [0, 0, 0],\n    unflatten: false,\n    negate: false,\n    negateAlpha: true,\n    medianSize: 0,\n    blurSigma: 0,\n    precision: 'integer',\n    minAmpl: 0.2,\n    sharpenSigma: 0,\n    sharpenM1: 1,\n    sharpenM2: 2,\n    sharpenX1: 2,\n    sharpenY2: 10,\n    sharpenY3: 20,\n    threshold: 0,\n    thresholdGrayscale: true,\n    trimBackground: [],\n    trimThreshold: -1,\n    trimLineArt: false,\n    dilateWidth: 0,\n    erodeWidth: 0,\n    gamma: 0,\n    gammaOut: 0,\n    greyscale: false,\n    normalise: false,\n    normaliseLower: 1,\n    normaliseUpper: 99,\n    claheWidth: 0,\n    claheHeight: 0,\n    claheMaxSlope: 3,\n    brightness: 1,\n    saturation: 1,\n    hue: 0,\n    lightness: 0,\n    booleanBufferIn: null,\n    booleanFileIn: '',\n    joinChannelIn: [],\n    extractChannel: -1,\n    removeAlpha: false,\n    ensureAlpha: -1,\n    colourspace: 'srgb',\n    colourspacePipeline: 'last',\n    composite: [],\n    // output\n    fileOut: '',\n    formatOut: 'input',\n    streamOut: false,\n    keepMetadata: 0,\n    withMetadataOrientation: -1,\n    withMetadataDensity: 0,\n    withIccProfile: '',\n    withExif: {},\n    withExifMerge: true,\n    withXmp: '',\n    resolveWithObject: false,\n    loop: -1,\n    delay: [],\n    // output format\n    jpegQuality: 80,\n    jpegProgressive: false,\n    jpegChromaSubsampling: '4:2:0',\n    jpegTrellisQuantisation: false,\n    jpegOvershootDeringing: false,\n    jpegOptimiseScans: false,\n    jpegOptimiseCoding: true,\n    jpegQuantisationTable: 0,\n    pngProgressive: false,\n    pngCompressionLevel: 6,\n    pngAdaptiveFiltering: false,\n    pngPalette: false,\n    pngQuality: 100,\n    pngEffort: 7,\n    pngBitdepth: 8,\n    pngDither: 1,\n    jp2Quality: 80,\n    jp2TileHeight: 512,\n    jp2TileWidth: 512,\n    jp2Lossless: false,\n    jp2ChromaSubsampling: '4:4:4',\n    webpQuality: 80,\n    webpAlphaQuality: 100,\n    webpLossless: false,\n    webpNearLossless: false,\n    webpSmartSubsample: false,\n    webpSmartDeblock: false,\n    webpPreset: 'default',\n    webpEffort: 4,\n    webpMinSize: false,\n    webpMixed: false,\n    gifBitdepth: 8,\n    gifEffort: 7,\n    gifDither: 1,\n    gifInterFrameMaxError: 0,\n    gifInterPaletteMaxError: 3,\n    gifKeepDuplicateFrames: false,\n    gifReuse: true,\n    gifProgressive: false,\n    tiffQuality: 80,\n    tiffCompression: 'jpeg',\n    tiffBigtiff: false,\n    tiffPredictor: 'horizontal',\n    tiffPyramid: false,\n    tiffMiniswhite: false,\n    tiffBitdepth: 8,\n    tiffTile: false,\n    tiffTileHeight: 256,\n    tiffTileWidth: 256,\n    tiffXres: 1.0,\n    tiffYres: 1.0,\n    tiffResolutionUnit: 'inch',\n    heifQuality: 50,\n    heifLossless: false,\n    heifCompression: 'av1',\n    heifEffort: 4,\n    heifChromaSubsampling: '4:4:4',\n    heifBitdepth: 8,\n    jxlDistance: 1,\n    jxlDecodingTier: 0,\n    jxlEffort: 7,\n    jxlLossless: false,\n    rawDepth: 'uchar',\n    tileSize: 256,\n    tileOverlap: 0,\n    tileContainer: 'fs',\n    tileLayout: 'dz',\n    tileFormat: 'last',\n    tileDepth: 'last',\n    tileAngle: 0,\n    tileSkipBlanks: -1,\n    tileBackground: [255, 255, 255, 255],\n    tileCentre: false,\n    tileId: 'https://example.com/iiif',\n    tileBasename: '',\n    timeoutSeconds: 0,\n    linearA: [],\n    linearB: [],\n    pdfBackground: [255, 255, 255, 255],\n    // Function to notify of libvips warnings\n    debuglog: warning => {\n      this.emit('warning', warning);\n      debuglog(warning);\n    },\n    // Function to notify of queue length changes\n    queueListener\n  };\n  this.options.input = this._createInputDescriptor(input, options, { allowStream: true });\n  return this;\n};\nObject.setPrototypeOf(Sharp.prototype, stream.Duplex.prototype);\nObject.setPrototypeOf(Sharp, stream.Duplex);\n\n/**\n * Take a \"snapshot\" of the Sharp instance, returning a new instance.\n * Cloned instances inherit the input of their parent instance.\n * This allows multiple output Streams and therefore multiple processing pipelines to share a single input Stream.\n *\n * @example\n * const pipeline = sharp().rotate();\n * pipeline.clone().resize(800, 600).pipe(firstWritableStream);\n * pipeline.clone().extract({ left: 20, top: 20, width: 100, height: 100 }).pipe(secondWritableStream);\n * readableStream.pipe(pipeline);\n * // firstWritableStream receives auto-rotated, resized readableStream\n * // secondWritableStream receives auto-rotated, extracted region of readableStream\n *\n * @example\n * // Create a pipeline that will download an image, resize it and format it to different files\n * // Using Promises to know when the pipeline is complete\n * const fs = require(\"fs\");\n * const got = require(\"got\");\n * const sharpStream = sharp({ failOn: 'none' });\n *\n * const promises = [];\n *\n * promises.push(\n *   sharpStream\n *     .clone()\n *     .jpeg({ quality: 100 })\n *     .toFile(\"originalFile.jpg\")\n * );\n *\n * promises.push(\n *   sharpStream\n *     .clone()\n *     .resize({ width: 500 })\n *     .jpeg({ quality: 80 })\n *     .toFile(\"optimized-500.jpg\")\n * );\n *\n * promises.push(\n *   sharpStream\n *     .clone()\n *     .resize({ width: 500 })\n *     .webp({ quality: 80 })\n *     .toFile(\"optimized-500.webp\")\n * );\n *\n * // https://github.com/sindresorhus/got/blob/main/documentation/3-streams.md\n * got.stream(\"https://www.example.com/some-file.jpg\").pipe(sharpStream);\n *\n * Promise.all(promises)\n *   .then(res => { console.log(\"Done!\", res); })\n *   .catch(err => {\n *     console.error(\"Error processing files, let's clean it up\", err);\n *     try {\n *       fs.unlinkSync(\"originalFile.jpg\");\n *       fs.unlinkSync(\"optimized-500.jpg\");\n *       fs.unlinkSync(\"optimized-500.webp\");\n *     } catch (e) {}\n *   });\n *\n * @returns {Sharp}\n */\nfunction clone () {\n  // Clone existing options\n  const clone = this.constructor.call();\n  const { debuglog, queueListener, ...options } = this.options;\n  clone.options = structuredClone(options);\n  clone.options.debuglog = debuglog;\n  clone.options.queueListener = queueListener;\n  // Pass 'finish' event to clone for Stream-based input\n  if (this._isStreamInput()) {\n    this.on('finish', () => {\n      // Clone inherits input data\n      this._flattenBufferIn();\n      clone.options.input.buffer = this.options.input.buffer;\n      clone.emit('finish');\n    });\n  }\n  return clone;\n}\nObject.assign(Sharp.prototype, { clone });\n\n/**\n * Export constructor.\n * @module Sharp\n * @private\n */\nmodule.exports = Sharp;\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\nconst is = require('./is');\nconst sharp = require('./sharp');\n\n/**\n * Justification alignment\n * @member\n * @private\n */\nconst align = {\n  left: 'low',\n  top: 'low',\n  low: 'low',\n  center: 'centre',\n  centre: 'centre',\n  right: 'high',\n  bottom: 'high',\n  high: 'high'\n};\n\nconst inputStreamParameters = [\n  // Limits and error handling\n  'failOn', 'limitInputPixels', 'unlimited',\n  // Format-generic\n  'animated', 'autoOrient', 'density', 'ignoreIcc', 'page', 'pages', 'sequentialRead',\n  // Format-specific\n  'jp2', 'openSlide', 'pdf', 'raw', 'svg', 'tiff',\n  // Deprecated\n  'failOnError', 'openSlideLevel', 'pdfBackground', 'tiffSubifd'\n];\n\n/**\n * Extract input options, if any, from an object.\n * @private\n */\nfunction _inputOptionsFromObject (obj) {\n  const params = inputStreamParameters\n    .filter(p => is.defined(obj[p]))\n    .map(p => ([p, obj[p]]));\n  return params.length\n    ? Object.fromEntries(params)\n    : undefined;\n}\n\n/**\n * Create Object containing input and input-related options.\n * @private\n */\nfunction _createInputDescriptor (input, inputOptions, containerOptions) {\n  const inputDescriptor = {\n    autoOrient: false,\n    failOn: 'warning',\n    limitInputPixels: 0x3FFF ** 2,\n    ignoreIcc: false,\n    unlimited: false,\n    sequentialRead: true\n  };\n  if (is.string(input)) {\n    // filesystem\n    inputDescriptor.file = input;\n  } else if (is.buffer(input)) {\n    // Buffer\n    if (input.length === 0) {\n      throw Error('Input Buffer is empty');\n    }\n    inputDescriptor.buffer = input;\n  } else if (is.arrayBuffer(input)) {\n    if (input.byteLength === 0) {\n      throw Error('Input bit Array is empty');\n    }\n    inputDescriptor.buffer = Buffer.from(input, 0, input.byteLength);\n  } else if (is.typedArray(input)) {\n    if (input.length === 0) {\n      throw Error('Input Bit Array is empty');\n    }\n    inputDescriptor.buffer = Buffer.from(input.buffer, input.byteOffset, input.byteLength);\n  } else if (is.plainObject(input) && !is.defined(inputOptions)) {\n    // Plain Object descriptor, e.g. create\n    inputOptions = input;\n    if (_inputOptionsFromObject(inputOptions)) {\n      // Stream with options\n      inputDescriptor.buffer = [];\n    }\n  } else if (!is.defined(input) && !is.defined(inputOptions) && is.object(containerOptions) && containerOptions.allowStream) {\n    // Stream without options\n    inputDescriptor.buffer = [];\n  } else if (Array.isArray(input)) {\n    if (input.length > 1) {\n      // Join images together\n      if (!this.options.joining) {\n        this.options.joining = true;\n        this.options.join = input.map(i => this._createInputDescriptor(i));\n      } else {\n        throw new Error('Recursive join is unsupported');\n      }\n    } else {\n      throw new Error('Expected at least two images to join');\n    }\n  } else {\n    throw new Error(`Unsupported input '${input}' of type ${typeof input}${\n      is.defined(inputOptions) ? ` when also providing options of type ${typeof inputOptions}` : ''\n    }`);\n  }\n  if (is.object(inputOptions)) {\n    // Deprecated: failOnError\n    if (is.defined(inputOptions.failOnError)) {\n      if (is.bool(inputOptions.failOnError)) {\n        inputDescriptor.failOn = inputOptions.failOnError ? 'warning' : 'none';\n      } else {\n        throw is.invalidParameterError('failOnError', 'boolean', inputOptions.failOnError);\n      }\n    }\n    // failOn\n    if (is.defined(inputOptions.failOn)) {\n      if (is.string(inputOptions.failOn) && is.inArray(inputOptions.failOn, ['none', 'truncated', 'error', 'warning'])) {\n        inputDescriptor.failOn = inputOptions.failOn;\n      } else {\n        throw is.invalidParameterError('failOn', 'one of: none, truncated, error, warning', inputOptions.failOn);\n      }\n    }\n    // autoOrient\n    if (is.defined(inputOptions.autoOrient)) {\n      if (is.bool(inputOptions.autoOrient)) {\n        inputDescriptor.autoOrient = inputOptions.autoOrient;\n      } else {\n        throw is.invalidParameterError('autoOrient', 'boolean', inputOptions.autoOrient);\n      }\n    }\n    // Density\n    if (is.defined(inputOptions.density)) {\n      if (is.inRange(inputOptions.density, 1, 100000)) {\n        inputDescriptor.density = inputOptions.density;\n      } else {\n        throw is.invalidParameterError('density', 'number between 1 and 100000', inputOptions.density);\n      }\n    }\n    // Ignore embeddded ICC profile\n    if (is.defined(inputOptions.ignoreIcc)) {\n      if (is.bool(inputOptions.ignoreIcc)) {\n        inputDescriptor.ignoreIcc = inputOptions.ignoreIcc;\n      } else {\n        throw is.invalidParameterError('ignoreIcc', 'boolean', inputOptions.ignoreIcc);\n      }\n    }\n    // limitInputPixels\n    if (is.defined(inputOptions.limitInputPixels)) {\n      if (is.bool(inputOptions.limitInputPixels)) {\n        inputDescriptor.limitInputPixels = inputOptions.limitInputPixels\n          ? 0x3FFF ** 2\n          : 0;\n      } else if (is.integer(inputOptions.limitInputPixels) && is.inRange(inputOptions.limitInputPixels, 0, Number.MAX_SAFE_INTEGER)) {\n        inputDescriptor.limitInputPixels = inputOptions.limitInputPixels;\n      } else {\n        throw is.invalidParameterError('limitInputPixels', 'positive integer', inputOptions.limitInputPixels);\n      }\n    }\n    // unlimited\n    if (is.defined(inputOptions.unlimited)) {\n      if (is.bool(inputOptions.unlimited)) {\n        inputDescriptor.unlimited = inputOptions.unlimited;\n      } else {\n        throw is.invalidParameterError('unlimited', 'boolean', inputOptions.unlimited);\n      }\n    }\n    // sequentialRead\n    if (is.defined(inputOptions.sequentialRead)) {\n      if (is.bool(inputOptions.sequentialRead)) {\n        inputDescriptor.sequentialRead = inputOptions.sequentialRead;\n      } else {\n        throw is.invalidParameterError('sequentialRead', 'boolean', inputOptions.sequentialRead);\n      }\n    }\n    // Raw pixel input\n    if (is.defined(inputOptions.raw)) {\n      if (\n        is.object(inputOptions.raw) &&\n        is.integer(inputOptions.raw.width) && inputOptions.raw.width > 0 &&\n        is.integer(inputOptions.raw.height) && inputOptions.raw.height > 0 &&\n        is.integer(inputOptions.raw.channels) && is.inRange(inputOptions.raw.channels, 1, 4)\n      ) {\n        inputDescriptor.rawWidth = inputOptions.raw.width;\n        inputDescriptor.rawHeight = inputOptions.raw.height;\n        inputDescriptor.rawChannels = inputOptions.raw.channels;\n        switch (input.constructor) {\n          case Uint8Array:\n          case Uint8ClampedArray:\n            inputDescriptor.rawDepth = 'uchar';\n            break;\n          case Int8Array:\n            inputDescriptor.rawDepth = 'char';\n            break;\n          case Uint16Array:\n            inputDescriptor.rawDepth = 'ushort';\n            break;\n          case Int16Array:\n            inputDescriptor.rawDepth = 'short';\n            break;\n          case Uint32Array:\n            inputDescriptor.rawDepth = 'uint';\n            break;\n          case Int32Array:\n            inputDescriptor.rawDepth = 'int';\n            break;\n          case Float32Array:\n            inputDescriptor.rawDepth = 'float';\n            break;\n          case Float64Array:\n            inputDescriptor.rawDepth = 'double';\n            break;\n          default:\n            inputDescriptor.rawDepth = 'uchar';\n            break;\n        }\n      } else {\n        throw new Error('Expected width, height and channels for raw pixel input');\n      }\n      inputDescriptor.rawPremultiplied = false;\n      if (is.defined(inputOptions.raw.premultiplied)) {\n        if (is.bool(inputOptions.raw.premultiplied)) {\n          inputDescriptor.rawPremultiplied = inputOptions.raw.premultiplied;\n        } else {\n          throw is.invalidParameterError('raw.premultiplied', 'boolean', inputOptions.raw.premultiplied);\n        }\n      }\n      inputDescriptor.rawPageHeight = 0;\n      if (is.defined(inputOptions.raw.pageHeight)) {\n        if (is.integer(inputOptions.raw.pageHeight) && inputOptions.raw.pageHeight > 0 && inputOptions.raw.pageHeight <= inputOptions.raw.height) {\n          if (inputOptions.raw.height % inputOptions.raw.pageHeight !== 0) {\n            throw new Error(`Expected raw.height ${inputOptions.raw.height} to be a multiple of raw.pageHeight ${inputOptions.raw.pageHeight}`);\n          }\n          inputDescriptor.rawPageHeight = inputOptions.raw.pageHeight;\n        } else {\n          throw is.invalidParameterError('raw.pageHeight', 'positive integer', inputOptions.raw.pageHeight);\n        }\n      }\n    }\n    // Multi-page input (GIF, TIFF, PDF)\n    if (is.defined(inputOptions.animated)) {\n      if (is.bool(inputOptions.animated)) {\n        inputDescriptor.pages = inputOptions.animated ? -1 : 1;\n      } else {\n        throw is.invalidParameterError('animated', 'boolean', inputOptions.animated);\n      }\n    }\n    if (is.defined(inputOptions.pages)) {\n      if (is.integer(inputOptions.pages) && is.inRange(inputOptions.pages, -1, 100000)) {\n        inputDescriptor.pages = inputOptions.pages;\n      } else {\n        throw is.invalidParameterError('pages', 'integer between -1 and 100000', inputOptions.pages);\n      }\n    }\n    if (is.defined(inputOptions.page)) {\n      if (is.integer(inputOptions.page) && is.inRange(inputOptions.page, 0, 100000)) {\n        inputDescriptor.page = inputOptions.page;\n      } else {\n        throw is.invalidParameterError('page', 'integer between 0 and 100000', inputOptions.page);\n      }\n    }\n    // OpenSlide specific options\n    if (is.object(inputOptions.openSlide) && is.defined(inputOptions.openSlide.level)) {\n      if (is.integer(inputOptions.openSlide.level) && is.inRange(inputOptions.openSlide.level, 0, 256)) {\n        inputDescriptor.openSlideLevel = inputOptions.openSlide.level;\n      } else {\n        throw is.invalidParameterError('openSlide.level', 'integer between 0 and 256', inputOptions.openSlide.level);\n      }\n    } else if (is.defined(inputOptions.level)) {\n      // Deprecated\n      if (is.integer(inputOptions.level) && is.inRange(inputOptions.level, 0, 256)) {\n        inputDescriptor.openSlideLevel = inputOptions.level;\n      } else {\n        throw is.invalidParameterError('level', 'integer between 0 and 256', inputOptions.level);\n      }\n    }\n    // TIFF specific options\n    if (is.object(inputOptions.tiff) && is.defined(inputOptions.tiff.subifd)) {\n      if (is.integer(inputOptions.tiff.subifd) && is.inRange(inputOptions.tiff.subifd, -1, 100000)) {\n        inputDescriptor.tiffSubifd = inputOptions.tiff.subifd;\n      } else {\n        throw is.invalidParameterError('tiff.subifd', 'integer between -1 and 100000', inputOptions.tiff.subifd);\n      }\n    } else if (is.defined(inputOptions.subifd)) {\n      // Deprecated\n      if (is.integer(inputOptions.subifd) && is.inRange(inputOptions.subifd, -1, 100000)) {\n        inputDescriptor.tiffSubifd = inputOptions.subifd;\n      } else {\n        throw is.invalidParameterError('subifd', 'integer between -1 and 100000', inputOptions.subifd);\n      }\n    }\n    // SVG specific options\n    if (is.object(inputOptions.svg)) {\n      if (is.defined(inputOptions.svg.stylesheet)) {\n        if (is.string(inputOptions.svg.stylesheet)) {\n          inputDescriptor.svgStylesheet = inputOptions.svg.stylesheet;\n        } else {\n          throw is.invalidParameterError('svg.stylesheet', 'string', inputOptions.svg.stylesheet);\n        }\n      }\n      if (is.defined(inputOptions.svg.highBitdepth)) {\n        if (is.bool(inputOptions.svg.highBitdepth)) {\n          inputDescriptor.svgHighBitdepth = inputOptions.svg.highBitdepth;\n        } else {\n          throw is.invalidParameterError('svg.highBitdepth', 'boolean', inputOptions.svg.highBitdepth);\n        }\n      }\n    }\n    // PDF specific options\n    if (is.object(inputOptions.pdf) && is.defined(inputOptions.pdf.background)) {\n      inputDescriptor.pdfBackground = this._getBackgroundColourOption(inputOptions.pdf.background);\n    } else if (is.defined(inputOptions.pdfBackground)) {\n      // Deprecated\n      inputDescriptor.pdfBackground = this._getBackgroundColourOption(inputOptions.pdfBackground);\n    }\n    // JPEG 2000 specific options\n    if (is.object(inputOptions.jp2) && is.defined(inputOptions.jp2.oneshot)) {\n      if (is.bool(inputOptions.jp2.oneshot)) {\n        inputDescriptor.jp2Oneshot = inputOptions.jp2.oneshot;\n      } else {\n        throw is.invalidParameterError('jp2.oneshot', 'boolean', inputOptions.jp2.oneshot);\n      }\n    }\n    // Create new image\n    if (is.defined(inputOptions.create)) {\n      if (\n        is.object(inputOptions.create) &&\n        is.integer(inputOptions.create.width) && inputOptions.create.width > 0 &&\n        is.integer(inputOptions.create.height) && inputOptions.create.height > 0 &&\n        is.integer(inputOptions.create.channels)\n      ) {\n        inputDescriptor.createWidth = inputOptions.create.width;\n        inputDescriptor.createHeight = inputOptions.create.height;\n        inputDescriptor.createChannels = inputOptions.create.channels;\n        inputDescriptor.createPageHeight = 0;\n        if (is.defined(inputOptions.create.pageHeight)) {\n          if (is.integer(inputOptions.create.pageHeight) && inputOptions.create.pageHeight > 0 && inputOptions.create.pageHeight <= inputOptions.create.height) {\n            if (inputOptions.create.height % inputOptions.create.pageHeight !== 0) {\n              throw new Error(`Expected create.height ${inputOptions.create.height} to be a multiple of create.pageHeight ${inputOptions.create.pageHeight}`);\n            }\n            inputDescriptor.createPageHeight = inputOptions.create.pageHeight;\n          } else {\n            throw is.invalidParameterError('create.pageHeight', 'positive integer', inputOptions.create.pageHeight);\n          }\n        }\n        // Noise\n        if (is.defined(inputOptions.create.noise)) {\n          if (!is.object(inputOptions.create.noise)) {\n            throw new Error('Expected noise to be an object');\n          }\n          if (inputOptions.create.noise.type !== 'gaussian') {\n            throw new Error('Only gaussian noise is supported at the moment');\n          }\n          inputDescriptor.createNoiseType = inputOptions.create.noise.type;\n          if (!is.inRange(inputOptions.create.channels, 1, 4)) {\n            throw is.invalidParameterError('create.channels', 'number between 1 and 4', inputOptions.create.channels);\n          }\n          inputDescriptor.createNoiseMean = 128;\n          if (is.defined(inputOptions.create.noise.mean)) {\n            if (is.number(inputOptions.create.noise.mean) && is.inRange(inputOptions.create.noise.mean, 0, 10000)) {\n              inputDescriptor.createNoiseMean = inputOptions.create.noise.mean;\n            } else {\n              throw is.invalidParameterError('create.noise.mean', 'number between 0 and 10000', inputOptions.create.noise.mean);\n            }\n          }\n          inputDescriptor.createNoiseSigma = 30;\n          if (is.defined(inputOptions.create.noise.sigma)) {\n            if (is.number(inputOptions.create.noise.sigma) && is.inRange(inputOptions.create.noise.sigma, 0, 10000)) {\n              inputDescriptor.createNoiseSigma = inputOptions.create.noise.sigma;\n            } else {\n              throw is.invalidParameterError('create.noise.sigma', 'number between 0 and 10000', inputOptions.create.noise.sigma);\n            }\n          }\n        } else if (is.defined(inputOptions.create.background)) {\n          if (!is.inRange(inputOptions.create.channels, 3, 4)) {\n            throw is.invalidParameterError('create.channels', 'number between 3 and 4', inputOptions.create.channels);\n          }\n          inputDescriptor.createBackground = this._getBackgroundColourOption(inputOptions.create.background);\n        } else {\n          throw new Error('Expected valid noise or background to create a new input image');\n        }\n        delete inputDescriptor.buffer;\n      } else {\n        throw new Error('Expected valid width, height and channels to create a new input image');\n      }\n    }\n    // Create a new image with text\n    if (is.defined(inputOptions.text)) {\n      if (is.object(inputOptions.text) && is.string(inputOptions.text.text)) {\n        inputDescriptor.textValue = inputOptions.text.text;\n        if (is.defined(inputOptions.text.height) && is.defined(inputOptions.text.dpi)) {\n          throw new Error('Expected only one of dpi or height');\n        }\n        if (is.defined(inputOptions.text.font)) {\n          if (is.string(inputOptions.text.font)) {\n            inputDescriptor.textFont = inputOptions.text.font;\n          } else {\n            throw is.invalidParameterError('text.font', 'string', inputOptions.text.font);\n          }\n        }\n        if (is.defined(inputOptions.text.fontfile)) {\n          if (is.string(inputOptions.text.fontfile)) {\n            inputDescriptor.textFontfile = inputOptions.text.fontfile;\n          } else {\n            throw is.invalidParameterError('text.fontfile', 'string', inputOptions.text.fontfile);\n          }\n        }\n        if (is.defined(inputOptions.text.width)) {\n          if (is.integer(inputOptions.text.width) && inputOptions.text.width > 0) {\n            inputDescriptor.textWidth = inputOptions.text.width;\n          } else {\n            throw is.invalidParameterError('text.width', 'positive integer', inputOptions.text.width);\n          }\n        }\n        if (is.defined(inputOptions.text.height)) {\n          if (is.integer(inputOptions.text.height) && inputOptions.text.height > 0) {\n            inputDescriptor.textHeight = inputOptions.text.height;\n          } else {\n            throw is.invalidParameterError('text.height', 'positive integer', inputOptions.text.height);\n          }\n        }\n        if (is.defined(inputOptions.text.align)) {\n          if (is.string(inputOptions.text.align) && is.string(this.constructor.align[inputOptions.text.align])) {\n            inputDescriptor.textAlign = this.constructor.align[inputOptions.text.align];\n          } else {\n            throw is.invalidParameterError('text.align', 'valid alignment', inputOptions.text.align);\n          }\n        }\n        if (is.defined(inputOptions.text.justify)) {\n          if (is.bool(inputOptions.text.justify)) {\n            inputDescriptor.textJustify = inputOptions.text.justify;\n          } else {\n            throw is.invalidParameterError('text.justify', 'boolean', inputOptions.text.justify);\n          }\n        }\n        if (is.defined(inputOptions.text.dpi)) {\n          if (is.integer(inputOptions.text.dpi) && is.inRange(inputOptions.text.dpi, 1, 1000000)) {\n            inputDescriptor.textDpi = inputOptions.text.dpi;\n          } else {\n            throw is.invalidParameterError('text.dpi', 'integer between 1 and 1000000', inputOptions.text.dpi);\n          }\n        }\n        if (is.defined(inputOptions.text.rgba)) {\n          if (is.bool(inputOptions.text.rgba)) {\n            inputDescriptor.textRgba = inputOptions.text.rgba;\n          } else {\n            throw is.invalidParameterError('text.rgba', 'bool', inputOptions.text.rgba);\n          }\n        }\n        if (is.defined(inputOptions.text.spacing)) {\n          if (is.integer(inputOptions.text.spacing) && is.inRange(inputOptions.text.spacing, -1000000, 1000000)) {\n            inputDescriptor.textSpacing = inputOptions.text.spacing;\n          } else {\n            throw is.invalidParameterError('text.spacing', 'integer between -1000000 and 1000000', inputOptions.text.spacing);\n          }\n        }\n        if (is.defined(inputOptions.text.wrap)) {\n          if (is.string(inputOptions.text.wrap) && is.inArray(inputOptions.text.wrap, ['word', 'char', 'word-char', 'none'])) {\n            inputDescriptor.textWrap = inputOptions.text.wrap;\n          } else {\n            throw is.invalidParameterError('text.wrap', 'one of: word, char, word-char, none', inputOptions.text.wrap);\n          }\n        }\n        delete inputDescriptor.buffer;\n      } else {\n        throw new Error('Expected a valid string to create an image with text.');\n      }\n    }\n    // Join images together\n    if (is.defined(inputOptions.join)) {\n      if (is.defined(this.options.join)) {\n        if (is.defined(inputOptions.join.animated)) {\n          if (is.bool(inputOptions.join.animated)) {\n            inputDescriptor.joinAnimated = inputOptions.join.animated;\n          } else {\n            throw is.invalidParameterError('join.animated', 'boolean', inputOptions.join.animated);\n          }\n        }\n        if (is.defined(inputOptions.join.across)) {\n          if (is.integer(inputOptions.join.across) && is.inRange(inputOptions.join.across, 1, 1000000)) {\n            inputDescriptor.joinAcross = inputOptions.join.across;\n          } else {\n            throw is.invalidParameterError('join.across', 'integer between 1 and 100000', inputOptions.join.across);\n          }\n        }\n        if (is.defined(inputOptions.join.shim)) {\n          if (is.integer(inputOptions.join.shim) && is.inRange(inputOptions.join.shim, 0, 1000000)) {\n            inputDescriptor.joinShim = inputOptions.join.shim;\n          } else {\n            throw is.invalidParameterError('join.shim', 'integer between 0 and 100000', inputOptions.join.shim);\n          }\n        }\n        if (is.defined(inputOptions.join.background)) {\n          inputDescriptor.joinBackground = this._getBackgroundColourOption(inputOptions.join.background);\n        }\n        if (is.defined(inputOptions.join.halign)) {\n          if (is.string(inputOptions.join.halign) && is.string(this.constructor.align[inputOptions.join.halign])) {\n            inputDescriptor.joinHalign = this.constructor.align[inputOptions.join.halign];\n          } else {\n            throw is.invalidParameterError('join.halign', 'valid alignment', inputOptions.join.halign);\n          }\n        }\n        if (is.defined(inputOptions.join.valign)) {\n          if (is.string(inputOptions.join.valign) && is.string(this.constructor.align[inputOptions.join.valign])) {\n            inputDescriptor.joinValign = this.constructor.align[inputOptions.join.valign];\n          } else {\n            throw is.invalidParameterError('join.valign', 'valid alignment', inputOptions.join.valign);\n          }\n        }\n      } else {\n        throw new Error('Expected input to be an array of images to join');\n      }\n    }\n  } else if (is.defined(inputOptions)) {\n    throw new Error(`Invalid input options ${inputOptions}`);\n  }\n  return inputDescriptor;\n}\n\n/**\n * Handle incoming Buffer chunk on Writable Stream.\n * @private\n * @param {Buffer} chunk\n * @param {string} encoding - unused\n * @param {Function} callback\n */\nfunction _write (chunk, _encoding, callback) {\n  if (Array.isArray(this.options.input.buffer)) {\n    if (is.buffer(chunk)) {\n      if (this.options.input.buffer.length === 0) {\n        this.on('finish', () => {\n          this.streamInFinished = true;\n        });\n      }\n      this.options.input.buffer.push(chunk);\n      callback();\n    } else {\n      callback(new Error('Non-Buffer data on Writable Stream'));\n    }\n  } else {\n    callback(new Error('Unexpected data on Writable Stream'));\n  }\n}\n\n/**\n * Flattens the array of chunks accumulated in input.buffer.\n * @private\n */\nfunction _flattenBufferIn () {\n  if (this._isStreamInput()) {\n    this.options.input.buffer = Buffer.concat(this.options.input.buffer);\n  }\n}\n\n/**\n * Are we expecting Stream-based input?\n * @private\n * @returns {boolean}\n */\nfunction _isStreamInput () {\n  return Array.isArray(this.options.input.buffer);\n}\n\n/**\n * Fast access to (uncached) image metadata without decoding any compressed pixel data.\n *\n * This is read from the header of the input image.\n * It does not take into consideration any operations to be applied to the output image,\n * such as resize or rotate.\n *\n * Dimensions in the response will respect the `page` and `pages` properties of the\n * {@link /api-constructor/ constructor parameters}.\n *\n * A `Promise` is returned when `callback` is not provided.\n *\n * - `format`: Name of decoder used to decompress image data e.g. `jpeg`, `png`, `webp`, `gif`, `svg`\n * - `size`: Total size of image in bytes, for Stream and Buffer input only\n * - `width`: Number of pixels wide (EXIF orientation is not taken into consideration, see example below)\n * - `height`: Number of pixels high (EXIF orientation is not taken into consideration, see example below)\n * - `space`: Name of colour space interpretation e.g. `srgb`, `rgb`, `cmyk`, `lab`, `b-w` [...](https://www.libvips.org/API/current/enum.Interpretation.html)\n * - `channels`: Number of bands e.g. `3` for sRGB, `4` for CMYK\n * - `depth`: Name of pixel depth format e.g. `uchar`, `char`, `ushort`, `float` [...](https://www.libvips.org/API/current/enum.BandFormat.html)\n * - `density`: Number of pixels per inch (DPI), if present\n * - `chromaSubsampling`: String containing JPEG chroma subsampling, `4:2:0` or `4:4:4` for RGB, `4:2:0:4` or `4:4:4:4` for CMYK\n * - `isProgressive`: Boolean indicating whether the image is interlaced using a progressive scan\n * - `isPalette`: Boolean indicating whether the image is palette-based (GIF, PNG).\n * - `bitsPerSample`: Number of bits per sample for each channel (GIF, PNG, HEIF).\n * - `pages`: Number of pages/frames contained within the image, with support for TIFF, HEIF, PDF, animated GIF and animated WebP\n * - `pageHeight`: Number of pixels high each page in a multi-page image will be.\n * - `loop`: Number of times to loop an animated image, zero refers to a continuous loop.\n * - `delay`: Delay in ms between each page in an animated image, provided as an array of integers.\n * - `pagePrimary`: Number of the primary page in a HEIF image\n * - `levels`: Details of each level in a multi-level image provided as an array of objects, requires libvips compiled with support for OpenSlide\n * - `subifds`: Number of Sub Image File Directories in an OME-TIFF image\n * - `background`: Default background colour, if present, for PNG (bKGD) and GIF images\n * - `compression`: The encoder used to compress an HEIF file, `av1` (AVIF) or `hevc` (HEIC)\n * - `resolutionUnit`: The unit of resolution (density), either `inch` or `cm`, if present\n * - `hasProfile`: Boolean indicating the presence of an embedded ICC profile\n * - `hasAlpha`: Boolean indicating the presence of an alpha transparency channel\n * - `orientation`: Number value of the EXIF Orientation header, if present\n * - `exif`: Buffer containing raw EXIF data, if present\n * - `icc`: Buffer containing raw [ICC](https://www.npmjs.com/package/icc) profile data, if present\n * - `iptc`: Buffer containing raw IPTC data, if present\n * - `xmp`: Buffer containing raw XMP data, if present\n * - `xmpAsString`: String containing XMP data, if valid UTF-8.\n * - `tifftagPhotoshop`: Buffer containing raw TIFFTAG_PHOTOSHOP data, if present\n * - `formatMagick`: String containing format for images loaded via *magick\n * - `comments`: Array of keyword/text pairs representing PNG text blocks, if present.\n *\n * @example\n * const metadata = await sharp(input).metadata();\n *\n * @example\n * const image = sharp(inputJpg);\n * image\n *   .metadata()\n *   .then(function(metadata) {\n *     return image\n *       .resize(Math.round(metadata.width / 2))\n *       .webp()\n *       .toBuffer();\n *   })\n *   .then(function(data) {\n *     // data contains a WebP image half the width and height of the original JPEG\n *   });\n *\n * @example\n * // Get dimensions taking EXIF Orientation into account.\n * const { autoOrient } = await sharp(input).metadata();\n * const { width, height } = autoOrient;\n *\n * @param {Function} [callback] - called with the arguments `(err, metadata)`\n * @returns {Promise<Object>|Sharp}\n */\nfunction metadata (callback) {\n  const stack = Error();\n  if (is.fn(callback)) {\n    if (this._isStreamInput()) {\n      this.on('finish', () => {\n        this._flattenBufferIn();\n        sharp.metadata(this.options, (err, metadata) => {\n          if (err) {\n            callback(is.nativeError(err, stack));\n          } else {\n            callback(null, metadata);\n          }\n        });\n      });\n    } else {\n      sharp.metadata(this.options, (err, metadata) => {\n        if (err) {\n          callback(is.nativeError(err, stack));\n        } else {\n          callback(null, metadata);\n        }\n      });\n    }\n    return this;\n  } else {\n    if (this._isStreamInput()) {\n      return new Promise((resolve, reject) => {\n        const finished = () => {\n          this._flattenBufferIn();\n          sharp.metadata(this.options, (err, metadata) => {\n            if (err) {\n              reject(is.nativeError(err, stack));\n            } else {\n              resolve(metadata);\n            }\n          });\n        };\n        if (this.writableFinished) {\n          finished();\n        } else {\n          this.once('finish', finished);\n        }\n      });\n    } else {\n      return new Promise((resolve, reject) => {\n        sharp.metadata(this.options, (err, metadata) => {\n          if (err) {\n            reject(is.nativeError(err, stack));\n          } else {\n            resolve(metadata);\n          }\n        });\n      });\n    }\n  }\n}\n\n/**\n * Access to pixel-derived image statistics for every channel in the image.\n * A `Promise` is returned when `callback` is not provided.\n *\n * - `channels`: Array of channel statistics for each channel in the image. Each channel statistic contains\n *     - `min` (minimum value in the channel)\n *     - `max` (maximum value in the channel)\n *     - `sum` (sum of all values in a channel)\n *     - `squaresSum` (sum of squared values in a channel)\n *     - `mean` (mean of the values in a channel)\n *     - `stdev` (standard deviation for the values in a channel)\n *     - `minX` (x-coordinate of one of the pixel where the minimum lies)\n *     - `minY` (y-coordinate of one of the pixel where the minimum lies)\n *     - `maxX` (x-coordinate of one of the pixel where the maximum lies)\n *     - `maxY` (y-coordinate of one of the pixel where the maximum lies)\n * - `isOpaque`: Is the image fully opaque? Will be `true` if the image has no alpha channel or if every pixel is fully opaque.\n * - `entropy`: Histogram-based estimation of greyscale entropy, discarding alpha channel if any.\n * - `sharpness`: Estimation of greyscale sharpness based on the standard deviation of a Laplacian convolution, discarding alpha channel if any.\n * - `dominant`: Object containing most dominant sRGB colour based on a 4096-bin 3D histogram.\n *\n * **Note**: Statistics are derived from the original input image. Any operations performed on the image must first be\n * written to a buffer in order to run `stats` on the result (see third example).\n *\n * @example\n * const image = sharp(inputJpg);\n * image\n *   .stats()\n *   .then(function(stats) {\n *      // stats contains the channel-wise statistics array and the isOpaque value\n *   });\n *\n * @example\n * const { entropy, sharpness, dominant } = await sharp(input).stats();\n * const { r, g, b } = dominant;\n *\n * @example\n * const image = sharp(input);\n * // store intermediate result\n * const part = await image.extract(region).toBuffer();\n * // create new instance to obtain statistics of extracted region\n * const stats = await sharp(part).stats();\n *\n * @param {Function} [callback] - called with the arguments `(err, stats)`\n * @returns {Promise<Object>}\n */\nfunction stats (callback) {\n  const stack = Error();\n  if (is.fn(callback)) {\n    if (this._isStreamInput()) {\n      this.on('finish', () => {\n        this._flattenBufferIn();\n        sharp.stats(this.options, (err, stats) => {\n          if (err) {\n            callback(is.nativeError(err, stack));\n          } else {\n            callback(null, stats);\n          }\n        });\n      });\n    } else {\n      sharp.stats(this.options, (err, stats) => {\n        if (err) {\n          callback(is.nativeError(err, stack));\n        } else {\n          callback(null, stats);\n        }\n      });\n    }\n    return this;\n  } else {\n    if (this._isStreamInput()) {\n      return new Promise((resolve, reject) => {\n        this.on('finish', function () {\n          this._flattenBufferIn();\n          sharp.stats(this.options, (err, stats) => {\n            if (err) {\n              reject(is.nativeError(err, stack));\n            } else {\n              resolve(stats);\n            }\n          });\n        });\n      });\n    } else {\n      return new Promise((resolve, reject) => {\n        sharp.stats(this.options, (err, stats) => {\n          if (err) {\n            reject(is.nativeError(err, stack));\n          } else {\n            resolve(stats);\n          }\n        });\n      });\n    }\n  }\n}\n\n/**\n * Decorate the Sharp prototype with input-related functions.\n * @module Sharp\n * @private\n */\nmodule.exports = (Sharp) => {\n  Object.assign(Sharp.prototype, {\n    // Private\n    _inputOptionsFromObject,\n    _createInputDescriptor,\n    _write,\n    _flattenBufferIn,\n    _isStreamInput,\n    // Public\n    metadata,\n    stats\n  });\n  // Class attributes\n  Sharp.align = align;\n};\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\nconst is = require('./is');\n\n/**\n * Weighting to apply when using contain/cover fit.\n * @member\n * @private\n */\nconst gravity = {\n  center: 0,\n  centre: 0,\n  north: 1,\n  east: 2,\n  south: 3,\n  west: 4,\n  northeast: 5,\n  southeast: 6,\n  southwest: 7,\n  northwest: 8\n};\n\n/**\n * Position to apply when using contain/cover fit.\n * @member\n * @private\n */\nconst position = {\n  top: 1,\n  right: 2,\n  bottom: 3,\n  left: 4,\n  'right top': 5,\n  'right bottom': 6,\n  'left bottom': 7,\n  'left top': 8\n};\n\n/**\n * How to extend the image.\n * @member\n * @private\n */\nconst extendWith = {\n  background: 'background',\n  copy: 'copy',\n  repeat: 'repeat',\n  mirror: 'mirror'\n};\n\n/**\n * Strategies for automagic cover behaviour.\n * @member\n * @private\n */\nconst strategy = {\n  entropy: 16,\n  attention: 17\n};\n\n/**\n * Reduction kernels.\n * @member\n * @private\n */\nconst kernel = {\n  nearest: 'nearest',\n  linear: 'linear',\n  cubic: 'cubic',\n  mitchell: 'mitchell',\n  lanczos2: 'lanczos2',\n  lanczos3: 'lanczos3',\n  mks2013: 'mks2013',\n  mks2021: 'mks2021'\n};\n\n/**\n * Methods by which an image can be resized to fit the provided dimensions.\n * @member\n * @private\n */\nconst fit = {\n  contain: 'contain',\n  cover: 'cover',\n  fill: 'fill',\n  inside: 'inside',\n  outside: 'outside'\n};\n\n/**\n * Map external fit property to internal canvas property.\n * @member\n * @private\n */\nconst mapFitToCanvas = {\n  contain: 'embed',\n  cover: 'crop',\n  fill: 'ignore_aspect',\n  inside: 'max',\n  outside: 'min'\n};\n\n/**\n * @private\n */\nfunction isRotationExpected (options) {\n  return (options.angle % 360) !== 0 || options.rotationAngle !== 0;\n}\n\n/**\n * @private\n */\nfunction isResizeExpected (options) {\n  return options.width !== -1 || options.height !== -1;\n}\n\n/**\n * Resize image to `width`, `height` or `width x height`.\n *\n * When both a `width` and `height` are provided, the possible methods by which the image should **fit** these are:\n * - `cover`: (default) Preserving aspect ratio, attempt to ensure the image covers both provided dimensions by cropping/clipping to fit.\n * - `contain`: Preserving aspect ratio, contain within both provided dimensions using \"letterboxing\" where necessary.\n * - `fill`: Ignore the aspect ratio of the input and stretch to both provided dimensions.\n * - `inside`: Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to both those specified.\n * - `outside`: Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to both those specified.\n *\n * Some of these values are based on the [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) CSS property.\n *\n * <img alt=\"Examples of various values for the fit property when resizing\" width=\"100%\" style=\"aspect-ratio: 998/243\" src=\"/api-resize-fit.svg\">\n *\n * When using a **fit** of `cover` or `contain`, the default **position** is `centre`. Other options are:\n * - `sharp.position`: `top`, `right top`, `right`, `right bottom`, `bottom`, `left bottom`, `left`, `left top`.\n * - `sharp.gravity`: `north`, `northeast`, `east`, `southeast`, `south`, `southwest`, `west`, `northwest`, `center` or `centre`.\n * - `sharp.strategy`: `cover` only, dynamically crop using either the `entropy` or `attention` strategy.\n *\n * Some of these values are based on the [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position) CSS property.\n *\n * The strategy-based approach initially resizes so one dimension is at its target length\n * then repeatedly ranks edge regions, discarding the edge with the lowest score based on the selected strategy.\n * - `entropy`: focus on the region with the highest [Shannon entropy](https://en.wikipedia.org/wiki/Entropy_%28information_theory%29).\n * - `attention`: focus on the region with the highest luminance frequency, colour saturation and presence of skin tones.\n *\n * Possible downsizing kernels are:\n * - `nearest`: Use [nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation).\n * - `linear`: Use a [triangle filter](https://en.wikipedia.org/wiki/Triangular_function).\n * - `cubic`: Use a [Catmull-Rom spline](https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline).\n * - `mitchell`: Use a [Mitchell-Netravali spline](https://www.cs.utexas.edu/~fussell/courses/cs384g-fall2013/lectures/mitchell/Mitchell.pdf).\n * - `lanczos2`: Use a [Lanczos kernel](https://en.wikipedia.org/wiki/Lanczos_resampling#Lanczos_kernel) with `a=2`.\n * - `lanczos3`: Use a Lanczos kernel with `a=3` (the default).\n * - `mks2013`: Use a [Magic Kernel Sharp](https://johncostella.com/magic/mks.pdf) 2013 kernel, as adopted by Facebook.\n * - `mks2021`: Use a Magic Kernel Sharp 2021 kernel, with more accurate (reduced) sharpening than the 2013 version.\n *\n * When upsampling, these kernels map to `nearest`, `linear` and `cubic` interpolators.\n * Downsampling kernels without a matching upsampling interpolator map to `cubic`.\n *\n * Only one resize can occur per pipeline.\n * Previous calls to `resize` in the same pipeline will be ignored.\n *\n * @example\n * sharp(input)\n *   .resize({ width: 100 })\n *   .toBuffer()\n *   .then(data => {\n *     // 100 pixels wide, auto-scaled height\n *   });\n *\n * @example\n * sharp(input)\n *   .resize({ height: 100 })\n *   .toBuffer()\n *   .then(data => {\n *     // 100 pixels high, auto-scaled width\n *   });\n *\n * @example\n * sharp(input)\n *   .resize(200, 300, {\n *     kernel: sharp.kernel.nearest,\n *     fit: 'contain',\n *     position: 'right top',\n *     background: { r: 255, g: 255, b: 255, alpha: 0.5 }\n *   })\n *   .toFile('output.png')\n *   .then(() => {\n *     // output.png is a 200 pixels wide and 300 pixels high image\n *     // containing a nearest-neighbour scaled version\n *     // contained within the north-east corner of a semi-transparent white canvas\n *   });\n *\n * @example\n * const transformer = sharp()\n *   .resize({\n *     width: 200,\n *     height: 200,\n *     fit: sharp.fit.cover,\n *     position: sharp.strategy.entropy\n *   });\n * // Read image data from readableStream\n * // Write 200px square auto-cropped image data to writableStream\n * readableStream\n *   .pipe(transformer)\n *   .pipe(writableStream);\n *\n * @example\n * sharp(input)\n *   .resize(200, 200, {\n *     fit: sharp.fit.inside,\n *     withoutEnlargement: true\n *   })\n *   .toFormat('jpeg')\n *   .toBuffer()\n *   .then(function(outputBuffer) {\n *     // outputBuffer contains JPEG image data\n *     // no wider and no higher than 200 pixels\n *     // and no larger than the input image\n *   });\n *\n * @example\n * sharp(input)\n *   .resize(200, 200, {\n *     fit: sharp.fit.outside,\n *     withoutReduction: true\n *   })\n *   .toFormat('jpeg')\n *   .toBuffer()\n *   .then(function(outputBuffer) {\n *     // outputBuffer contains JPEG image data\n *     // of at least 200 pixels wide and 200 pixels high while maintaining aspect ratio\n *     // and no smaller than the input image\n *   });\n *\n * @example\n * const scaleByHalf = await sharp(input)\n *   .metadata()\n *   .then(({ width }) => sharp(input)\n *     .resize(Math.round(width * 0.5))\n *     .toBuffer()\n *   );\n *\n * @param {number} [width] - How many pixels wide the resultant image should be. Use `null` or `undefined` to auto-scale the width to match the height.\n * @param {number} [height] - How many pixels high the resultant image should be. Use `null` or `undefined` to auto-scale the height to match the width.\n * @param {Object} [options]\n * @param {number} [options.width] - An alternative means of specifying `width`. If both are present this takes priority.\n * @param {number} [options.height] - An alternative means of specifying `height`. If both are present this takes priority.\n * @param {String} [options.fit='cover'] - How the image should be resized/cropped to fit the target dimension(s), one of `cover`, `contain`, `fill`, `inside` or `outside`.\n * @param {String} [options.position='centre'] - A position, gravity or strategy to use when `fit` is `cover` or `contain`.\n * @param {String|Object} [options.background={r: 0, g: 0, b: 0, alpha: 1}] - background colour when `fit` is `contain`, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black without transparency.\n * @param {String} [options.kernel='lanczos3'] - The kernel to use for image reduction and the inferred interpolator to use for upsampling. Use the `fastShrinkOnLoad` option to control kernel vs shrink-on-load.\n * @param {Boolean} [options.withoutEnlargement=false] - Do not scale up if the width *or* height are already less than the target dimensions, equivalent to GraphicsMagick's `>` geometry option. This may result in output dimensions smaller than the target dimensions.\n * @param {Boolean} [options.withoutReduction=false] - Do not scale down if the width *or* height are already greater than the target dimensions, equivalent to GraphicsMagick's `<` geometry option. This may still result in a crop to reach the target dimensions.\n * @param {Boolean} [options.fastShrinkOnLoad=true] - Take greater advantage of the JPEG and WebP shrink-on-load feature, which can lead to a slight moiré pattern or round-down of an auto-scaled dimension.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction resize (widthOrOptions, height, options) {\n  if (isResizeExpected(this.options)) {\n    this.options.debuglog('ignoring previous resize options');\n  }\n  if (this.options.widthPost !== -1) {\n    this.options.debuglog('operation order will be: extract, resize, extract');\n  }\n  if (is.defined(widthOrOptions)) {\n    if (is.object(widthOrOptions) && !is.defined(options)) {\n      options = widthOrOptions;\n    } else if (is.integer(widthOrOptions) && widthOrOptions > 0) {\n      this.options.width = widthOrOptions;\n    } else {\n      throw is.invalidParameterError('width', 'positive integer', widthOrOptions);\n    }\n  } else {\n    this.options.width = -1;\n  }\n  if (is.defined(height)) {\n    if (is.integer(height) && height > 0) {\n      this.options.height = height;\n    } else {\n      throw is.invalidParameterError('height', 'positive integer', height);\n    }\n  } else {\n    this.options.height = -1;\n  }\n  if (is.object(options)) {\n    // Width\n    if (is.defined(options.width)) {\n      if (is.integer(options.width) && options.width > 0) {\n        this.options.width = options.width;\n      } else {\n        throw is.invalidParameterError('width', 'positive integer', options.width);\n      }\n    }\n    // Height\n    if (is.defined(options.height)) {\n      if (is.integer(options.height) && options.height > 0) {\n        this.options.height = options.height;\n      } else {\n        throw is.invalidParameterError('height', 'positive integer', options.height);\n      }\n    }\n    // Fit\n    if (is.defined(options.fit)) {\n      const canvas = mapFitToCanvas[options.fit];\n      if (is.string(canvas)) {\n        this.options.canvas = canvas;\n      } else {\n        throw is.invalidParameterError('fit', 'valid fit', options.fit);\n      }\n    }\n    // Position\n    if (is.defined(options.position)) {\n      const pos = is.integer(options.position)\n        ? options.position\n        : strategy[options.position] || position[options.position] || gravity[options.position];\n      if (is.integer(pos) && (is.inRange(pos, 0, 8) || is.inRange(pos, 16, 17))) {\n        this.options.position = pos;\n      } else {\n        throw is.invalidParameterError('position', 'valid position/gravity/strategy', options.position);\n      }\n    }\n    // Background\n    this._setBackgroundColourOption('resizeBackground', options.background);\n    // Kernel\n    if (is.defined(options.kernel)) {\n      if (is.string(kernel[options.kernel])) {\n        this.options.kernel = kernel[options.kernel];\n      } else {\n        throw is.invalidParameterError('kernel', 'valid kernel name', options.kernel);\n      }\n    }\n    // Without enlargement\n    if (is.defined(options.withoutEnlargement)) {\n      this._setBooleanOption('withoutEnlargement', options.withoutEnlargement);\n    }\n    // Without reduction\n    if (is.defined(options.withoutReduction)) {\n      this._setBooleanOption('withoutReduction', options.withoutReduction);\n    }\n    // Shrink on load\n    if (is.defined(options.fastShrinkOnLoad)) {\n      this._setBooleanOption('fastShrinkOnLoad', options.fastShrinkOnLoad);\n    }\n  }\n  if (isRotationExpected(this.options) && isResizeExpected(this.options)) {\n    this.options.rotateBefore = true;\n  }\n  return this;\n}\n\n/**\n * Extend / pad / extrude one or more edges of the image with either\n * the provided background colour or pixels derived from the image.\n * This operation will always occur after resizing and extraction, if any.\n *\n * @example\n * // Resize to 140 pixels wide, then add 10 transparent pixels\n * // to the top, left and right edges and 20 to the bottom edge\n * sharp(input)\n *   .resize(140)\n *   .extend({\n *     top: 10,\n *     bottom: 20,\n *     left: 10,\n *     right: 10,\n *     background: { r: 0, g: 0, b: 0, alpha: 0 }\n *   })\n *   ...\n *\n* @example\n * // Add a row of 10 red pixels to the bottom\n * sharp(input)\n *   .extend({\n *     bottom: 10,\n *     background: 'red'\n *   })\n *   ...\n *\n * @example\n * // Extrude image by 8 pixels to the right, mirroring existing right hand edge\n * sharp(input)\n *   .extend({\n *     right: 8,\n *     background: 'mirror'\n *   })\n *   ...\n *\n * @param {(number|Object)} extend - single pixel count to add to all edges or an Object with per-edge counts\n * @param {number} [extend.top=0]\n * @param {number} [extend.left=0]\n * @param {number} [extend.bottom=0]\n * @param {number} [extend.right=0]\n * @param {String} [extend.extendWith='background'] - populate new pixels using this method, one of: background, copy, repeat, mirror.\n * @param {String|Object} [extend.background={r: 0, g: 0, b: 0, alpha: 1}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black without transparency.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n*/\nfunction extend (extend) {\n  if (is.integer(extend) && extend > 0) {\n    this.options.extendTop = extend;\n    this.options.extendBottom = extend;\n    this.options.extendLeft = extend;\n    this.options.extendRight = extend;\n  } else if (is.object(extend)) {\n    if (is.defined(extend.top)) {\n      if (is.integer(extend.top) && extend.top >= 0) {\n        this.options.extendTop = extend.top;\n      } else {\n        throw is.invalidParameterError('top', 'positive integer', extend.top);\n      }\n    }\n    if (is.defined(extend.bottom)) {\n      if (is.integer(extend.bottom) && extend.bottom >= 0) {\n        this.options.extendBottom = extend.bottom;\n      } else {\n        throw is.invalidParameterError('bottom', 'positive integer', extend.bottom);\n      }\n    }\n    if (is.defined(extend.left)) {\n      if (is.integer(extend.left) && extend.left >= 0) {\n        this.options.extendLeft = extend.left;\n      } else {\n        throw is.invalidParameterError('left', 'positive integer', extend.left);\n      }\n    }\n    if (is.defined(extend.right)) {\n      if (is.integer(extend.right) && extend.right >= 0) {\n        this.options.extendRight = extend.right;\n      } else {\n        throw is.invalidParameterError('right', 'positive integer', extend.right);\n      }\n    }\n    this._setBackgroundColourOption('extendBackground', extend.background);\n    if (is.defined(extend.extendWith)) {\n      if (is.string(extendWith[extend.extendWith])) {\n        this.options.extendWith = extendWith[extend.extendWith];\n      } else {\n        throw is.invalidParameterError('extendWith', 'one of: background, copy, repeat, mirror', extend.extendWith);\n      }\n    }\n  } else {\n    throw is.invalidParameterError('extend', 'integer or object', extend);\n  }\n  return this;\n}\n\n/**\n * Extract/crop a region of the image.\n *\n * - Use `extract` before `resize` for pre-resize extraction.\n * - Use `extract` after `resize` for post-resize extraction.\n * - Use `extract` twice and `resize` once for extract-then-resize-then-extract in a fixed operation order.\n *\n * @example\n * sharp(input)\n *   .extract({ left: left, top: top, width: width, height: height })\n *   .toFile(output, function(err) {\n *     // Extract a region of the input image, saving in the same format.\n *   });\n * @example\n * sharp(input)\n *   .extract({ left: leftOffsetPre, top: topOffsetPre, width: widthPre, height: heightPre })\n *   .resize(width, height)\n *   .extract({ left: leftOffsetPost, top: topOffsetPost, width: widthPost, height: heightPost })\n *   .toFile(output, function(err) {\n *     // Extract a region, resize, then extract from the resized image\n *   });\n *\n * @param {Object} options - describes the region to extract using integral pixel values\n * @param {number} options.left - zero-indexed offset from left edge\n * @param {number} options.top - zero-indexed offset from top edge\n * @param {number} options.width - width of region to extract\n * @param {number} options.height - height of region to extract\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction extract (options) {\n  const suffix = isResizeExpected(this.options) || this.options.widthPre !== -1 ? 'Post' : 'Pre';\n  if (this.options[`width${suffix}`] !== -1) {\n    this.options.debuglog('ignoring previous extract options');\n  }\n  ['left', 'top', 'width', 'height'].forEach(function (name) {\n    const value = options[name];\n    if (is.integer(value) && value >= 0) {\n      this.options[name + (name === 'left' || name === 'top' ? 'Offset' : '') + suffix] = value;\n    } else {\n      throw is.invalidParameterError(name, 'integer', value);\n    }\n  }, this);\n  // Ensure existing rotation occurs before pre-resize extraction\n  if (isRotationExpected(this.options) && !isResizeExpected(this.options)) {\n    if (this.options.widthPre === -1 || this.options.widthPost === -1) {\n      this.options.rotateBefore = true;\n    }\n  }\n  if (this.options.input.autoOrient) {\n    this.options.orientBefore = true;\n  }\n  return this;\n}\n\n/**\n * Trim pixels from all edges that contain values similar to the given background colour, which defaults to that of the top-left pixel.\n *\n * Images with an alpha channel will use the combined bounding box of alpha and non-alpha channels.\n *\n * If the result of this operation would trim an image to nothing then no change is made.\n *\n * The `info` response Object will contain `trimOffsetLeft` and `trimOffsetTop` properties.\n *\n * @example\n * // Trim pixels with a colour similar to that of the top-left pixel.\n * await sharp(input)\n *   .trim()\n *   .toFile(output);\n *\n * @example\n * // Trim pixels with the exact same colour as that of the top-left pixel.\n * await sharp(input)\n *   .trim({\n *     threshold: 0\n *   })\n *   .toFile(output);\n *\n * @example\n * // Assume input is line art and trim only pixels with a similar colour to red.\n * const output = await sharp(input)\n *   .trim({\n *     background: \"#FF0000\",\n *     lineArt: true\n *   })\n *   .toBuffer();\n *\n * @example\n * // Trim all \"yellow-ish\" pixels, being more lenient with the higher threshold.\n * const output = await sharp(input)\n *   .trim({\n *     background: \"yellow\",\n *     threshold: 42,\n *   })\n *   .toBuffer();\n *\n * @param {Object} [options]\n * @param {string|Object} [options.background='top-left pixel'] - Background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to that of the top-left pixel.\n * @param {number} [options.threshold=10] - Allowed difference from the above colour, a positive number.\n * @param {boolean} [options.lineArt=false] - Does the input more closely resemble line art (e.g. vector) rather than being photographic?\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction trim (options) {\n  this.options.trimThreshold = 10;\n  if (is.defined(options)) {\n    if (is.object(options)) {\n      if (is.defined(options.background)) {\n        this._setBackgroundColourOption('trimBackground', options.background);\n      }\n      if (is.defined(options.threshold)) {\n        if (is.number(options.threshold) && options.threshold >= 0) {\n          this.options.trimThreshold = options.threshold;\n        } else {\n          throw is.invalidParameterError('threshold', 'positive number', options.threshold);\n        }\n      }\n      if (is.defined(options.lineArt)) {\n        this._setBooleanOption('trimLineArt', options.lineArt);\n      }\n    } else {\n      throw is.invalidParameterError('trim', 'object', options);\n    }\n  }\n  if (isRotationExpected(this.options)) {\n    this.options.rotateBefore = true;\n  }\n  return this;\n}\n\n/**\n * Decorate the Sharp prototype with resize-related functions.\n * @module Sharp\n * @private\n */\nmodule.exports = (Sharp) => {\n  Object.assign(Sharp.prototype, {\n    resize,\n    extend,\n    extract,\n    trim\n  });\n  // Class attributes\n  Sharp.gravity = gravity;\n  Sharp.strategy = strategy;\n  Sharp.kernel = kernel;\n  Sharp.fit = fit;\n  Sharp.position = position;\n};\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\nconst is = require('./is');\n\n/**\n * Blend modes.\n * @member\n * @private\n */\nconst blend = {\n  clear: 'clear',\n  source: 'source',\n  over: 'over',\n  in: 'in',\n  out: 'out',\n  atop: 'atop',\n  dest: 'dest',\n  'dest-over': 'dest-over',\n  'dest-in': 'dest-in',\n  'dest-out': 'dest-out',\n  'dest-atop': 'dest-atop',\n  xor: 'xor',\n  add: 'add',\n  saturate: 'saturate',\n  multiply: 'multiply',\n  screen: 'screen',\n  overlay: 'overlay',\n  darken: 'darken',\n  lighten: 'lighten',\n  'colour-dodge': 'colour-dodge',\n  'color-dodge': 'colour-dodge',\n  'colour-burn': 'colour-burn',\n  'color-burn': 'colour-burn',\n  'hard-light': 'hard-light',\n  'soft-light': 'soft-light',\n  difference: 'difference',\n  exclusion: 'exclusion'\n};\n\n/**\n * Composite image(s) over the processed (resized, extracted etc.) image.\n *\n * The images to composite must be the same size or smaller than the processed image.\n * If both `top` and `left` options are provided, they take precedence over `gravity`.\n *\n * Other operations in the same processing pipeline (e.g. resize, rotate, flip,\n * flop, extract) will always be applied to the input image before composition.\n *\n * The `blend` option can be one of `clear`, `source`, `over`, `in`, `out`, `atop`,\n * `dest`, `dest-over`, `dest-in`, `dest-out`, `dest-atop`,\n * `xor`, `add`, `saturate`, `multiply`, `screen`, `overlay`, `darken`, `lighten`,\n * `colour-dodge`, `color-dodge`, `colour-burn`,`color-burn`,\n * `hard-light`, `soft-light`, `difference`, `exclusion`.\n *\n * More information about blend modes can be found at\n * https://www.libvips.org/API/current/enum.BlendMode.html\n * and https://www.cairographics.org/operators/\n *\n * @since 0.22.0\n *\n * @example\n * await sharp(background)\n *   .composite([\n *     { input: layer1, gravity: 'northwest' },\n *     { input: layer2, gravity: 'southeast' },\n *   ])\n *   .toFile('combined.png');\n *\n * @example\n * const output = await sharp('input.gif', { animated: true })\n *   .composite([\n *     { input: 'overlay.png', tile: true, blend: 'saturate' }\n *   ])\n *   .toBuffer();\n *\n * @example\n * sharp('input.png')\n *   .rotate(180)\n *   .resize(300)\n *   .flatten( { background: '#ff6600' } )\n *   .composite([{ input: 'overlay.png', gravity: 'southeast' }])\n *   .sharpen()\n *   .withMetadata()\n *   .webp( { quality: 90 } )\n *   .toBuffer()\n *   .then(function(outputBuffer) {\n *     // outputBuffer contains upside down, 300px wide, alpha channel flattened\n *     // onto orange background, composited with overlay.png with SE gravity,\n *     // sharpened, with metadata, 90% quality WebP image data. Phew!\n *   });\n *\n * @param {Object[]} images - Ordered list of images to composite\n * @param {Buffer|String} [images[].input] - Buffer containing image data, String containing the path to an image file, or Create object (see below)\n * @param {Object} [images[].input.create] - describes a blank overlay to be created.\n * @param {Number} [images[].input.create.width]\n * @param {Number} [images[].input.create.height]\n * @param {Number} [images[].input.create.channels] - 3-4\n * @param {String|Object} [images[].input.create.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @param {Object} [images[].input.text] - describes a new text image to be created.\n * @param {string} [images[].input.text.text] - text to render as a UTF-8 string. It can contain Pango markup, for example `<i>Le</i>Monde`.\n * @param {string} [images[].input.text.font] - font name to render with.\n * @param {string} [images[].input.text.fontfile] - absolute filesystem path to a font file that can be used by `font`.\n * @param {number} [images[].input.text.width=0] - integral number of pixels to word-wrap at. Lines of text wider than this will be broken at word boundaries.\n * @param {number} [images[].input.text.height=0] - integral number of pixels high. When defined, `dpi` will be ignored and the text will automatically fit the pixel resolution defined by `width` and `height`. Will be ignored if `width` is not specified or set to 0.\n * @param {string} [images[].input.text.align='left'] - text alignment (`'left'`, `'centre'`, `'center'`, `'right'`).\n * @param {boolean} [images[].input.text.justify=false] - set this to true to apply justification to the text.\n * @param {number} [images[].input.text.dpi=72] - the resolution (size) at which to render the text. Does not take effect if `height` is specified.\n * @param {boolean} [images[].input.text.rgba=false] - set this to true to enable RGBA output. This is useful for colour emoji rendering, or support for Pango markup features like `<span foreground=\"red\">Red!</span>`.\n * @param {number} [images[].input.text.spacing=0] - text line height in points. Will use the font line height if none is specified.\n * @param {Boolean} [images[].autoOrient=false] - set to true to use EXIF orientation data, if present, to orient the image.\n * @param {String} [images[].blend='over'] - how to blend this image with the image below.\n * @param {String} [images[].gravity='centre'] - gravity at which to place the overlay.\n * @param {Number} [images[].top] - the pixel offset from the top edge.\n * @param {Number} [images[].left] - the pixel offset from the left edge.\n * @param {Boolean} [images[].tile=false] - set to true to repeat the overlay image across the entire image with the given `gravity`.\n * @param {Boolean} [images[].premultiplied=false] - set to true to avoid premultiplying the image below. Equivalent to the `--premultiplied` vips option.\n * @param {Number} [images[].density=72] - number representing the DPI for vector overlay image.\n * @param {Object} [images[].raw] - describes overlay when using raw pixel data.\n * @param {Number} [images[].raw.width]\n * @param {Number} [images[].raw.height]\n * @param {Number} [images[].raw.channels]\n * @param {boolean} [images[].animated=false] - Set to `true` to read all frames/pages of an animated image.\n * @param {string} [images[].failOn='warning'] - @see {@link /api-constructor/ constructor parameters}\n * @param {number|boolean} [images[].limitInputPixels=268402689] - @see {@link /api-constructor/ constructor parameters}\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction composite (images) {\n  if (!Array.isArray(images)) {\n    throw is.invalidParameterError('images to composite', 'array', images);\n  }\n  this.options.composite = images.map(image => {\n    if (!is.object(image)) {\n      throw is.invalidParameterError('image to composite', 'object', image);\n    }\n    const inputOptions = this._inputOptionsFromObject(image);\n    const composite = {\n      input: this._createInputDescriptor(image.input, inputOptions, { allowStream: false }),\n      blend: 'over',\n      tile: false,\n      left: 0,\n      top: 0,\n      hasOffset: false,\n      gravity: 0,\n      premultiplied: false\n    };\n    if (is.defined(image.blend)) {\n      if (is.string(blend[image.blend])) {\n        composite.blend = blend[image.blend];\n      } else {\n        throw is.invalidParameterError('blend', 'valid blend name', image.blend);\n      }\n    }\n    if (is.defined(image.tile)) {\n      if (is.bool(image.tile)) {\n        composite.tile = image.tile;\n      } else {\n        throw is.invalidParameterError('tile', 'boolean', image.tile);\n      }\n    }\n    if (is.defined(image.left)) {\n      if (is.integer(image.left)) {\n        composite.left = image.left;\n      } else {\n        throw is.invalidParameterError('left', 'integer', image.left);\n      }\n    }\n    if (is.defined(image.top)) {\n      if (is.integer(image.top)) {\n        composite.top = image.top;\n      } else {\n        throw is.invalidParameterError('top', 'integer', image.top);\n      }\n    }\n    if (is.defined(image.top) !== is.defined(image.left)) {\n      throw new Error('Expected both left and top to be set');\n    } else {\n      composite.hasOffset = is.integer(image.top) && is.integer(image.left);\n    }\n    if (is.defined(image.gravity)) {\n      if (is.integer(image.gravity) && is.inRange(image.gravity, 0, 8)) {\n        composite.gravity = image.gravity;\n      } else if (is.string(image.gravity) && is.integer(this.constructor.gravity[image.gravity])) {\n        composite.gravity = this.constructor.gravity[image.gravity];\n      } else {\n        throw is.invalidParameterError('gravity', 'valid gravity', image.gravity);\n      }\n    }\n    if (is.defined(image.premultiplied)) {\n      if (is.bool(image.premultiplied)) {\n        composite.premultiplied = image.premultiplied;\n      } else {\n        throw is.invalidParameterError('premultiplied', 'boolean', image.premultiplied);\n      }\n    }\n    return composite;\n  });\n  return this;\n}\n\n/**\n * Decorate the Sharp prototype with composite-related functions.\n * @module Sharp\n * @private\n */\nmodule.exports = (Sharp) => {\n  Sharp.prototype.composite = composite;\n  Sharp.blend = blend;\n};\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\nconst is = require('./is');\n\n/**\n * How accurate an operation should be.\n * @member\n * @private\n */\nconst vipsPrecision = {\n  integer: 'integer',\n  float: 'float',\n  approximate: 'approximate'\n};\n\n/**\n * Rotate the output image.\n *\n * The provided angle is converted to a valid positive degree rotation.\n * For example, `-450` will produce a 270 degree rotation.\n *\n * When rotating by an angle other than a multiple of 90,\n * the background colour can be provided with the `background` option.\n *\n * For backwards compatibility, if no angle is provided, `.autoOrient()` will be called.\n *\n * Only one rotation can occur per pipeline (aside from an initial call without\n * arguments to orient via EXIF data). Previous calls to `rotate` in the same\n * pipeline will be ignored.\n *\n * Multi-page images can only be rotated by 180 degrees.\n *\n * Method order is important when rotating, resizing and/or extracting regions,\n * for example `.rotate(x).extract(y)` will produce a different result to `.extract(y).rotate(x)`.\n *\n * @example\n * const rotateThenResize = await sharp(input)\n *   .rotate(90)\n *   .resize({ width: 16, height: 8, fit: 'fill' })\n *   .toBuffer();\n * const resizeThenRotate = await sharp(input)\n *   .resize({ width: 16, height: 8, fit: 'fill' })\n *   .rotate(90)\n *   .toBuffer();\n *\n * @param {number} [angle=auto] angle of rotation.\n * @param {Object} [options] - if present, is an Object with optional attributes.\n * @param {string|Object} [options.background=\"#000000\"] parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction rotate (angle, options) {\n  if (!is.defined(angle)) {\n    return this.autoOrient();\n  }\n  if (this.options.angle || this.options.rotationAngle) {\n    this.options.debuglog('ignoring previous rotate options');\n    this.options.angle = 0;\n    this.options.rotationAngle = 0;\n  }\n  if (is.integer(angle) && !(angle % 90)) {\n    this.options.angle = angle;\n  } else if (is.number(angle)) {\n    this.options.rotationAngle = angle;\n    if (is.object(options) && options.background) {\n      this._setBackgroundColourOption('rotationBackground', options.background);\n    }\n  } else {\n    throw is.invalidParameterError('angle', 'numeric', angle);\n  }\n  return this;\n}\n\n/**\n * Auto-orient based on the EXIF `Orientation` tag, then remove the tag.\n * Mirroring is supported and may infer the use of a flip operation.\n *\n * Previous or subsequent use of `rotate(angle)` and either `flip()` or `flop()`\n * will logically occur after auto-orientation, regardless of call order.\n *\n * @example\n * const output = await sharp(input).autoOrient().toBuffer();\n *\n * @example\n * const pipeline = sharp()\n *   .autoOrient()\n *   .resize(null, 200)\n *   .toBuffer(function (err, outputBuffer, info) {\n *     // outputBuffer contains 200px high JPEG image data,\n *     // auto-oriented using EXIF Orientation tag\n *     // info.width and info.height contain the dimensions of the resized image\n *   });\n * readableStream.pipe(pipeline);\n *\n * @returns {Sharp}\n */\nfunction autoOrient () {\n  this.options.input.autoOrient = true;\n  return this;\n}\n\n/**\n * Mirror the image vertically (up-down) about the x-axis.\n * This always occurs before rotation, if any.\n *\n * This operation does not work correctly with multi-page images.\n *\n * @example\n * const output = await sharp(input).flip().toBuffer();\n *\n * @param {Boolean} [flip=true]\n * @returns {Sharp}\n */\nfunction flip (flip) {\n  this.options.flip = is.bool(flip) ? flip : true;\n  return this;\n}\n\n/**\n * Mirror the image horizontally (left-right) about the y-axis.\n * This always occurs before rotation, if any.\n *\n * @example\n * const output = await sharp(input).flop().toBuffer();\n *\n * @param {Boolean} [flop=true]\n * @returns {Sharp}\n */\nfunction flop (flop) {\n  this.options.flop = is.bool(flop) ? flop : true;\n  return this;\n}\n\n/**\n * Perform an affine transform on an image. This operation will always occur after resizing, extraction and rotation, if any.\n *\n * You must provide an array of length 4 or a 2x2 affine transformation matrix.\n * By default, new pixels are filled with a black background. You can provide a background colour with the `background` option.\n * A particular interpolator may also be specified. Set the `interpolator` option to an attribute of the `sharp.interpolators` Object e.g. `sharp.interpolators.nohalo`.\n *\n * In the case of a 2x2 matrix, the transform is:\n * - X = `matrix[0, 0]` \\* (x + `idx`) + `matrix[0, 1]` \\* (y + `idy`) + `odx`\n * - Y = `matrix[1, 0]` \\* (x + `idx`) + `matrix[1, 1]` \\* (y + `idy`) + `ody`\n *\n * where:\n * - x and y are the coordinates in input image.\n * - X and Y are the coordinates in output image.\n * - (0,0) is the upper left corner.\n *\n * @since 0.27.0\n *\n * @example\n * const pipeline = sharp()\n *   .affine([[1, 0.3], [0.1, 0.7]], {\n *      background: 'white',\n *      interpolator: sharp.interpolators.nohalo\n *   })\n *   .toBuffer((err, outputBuffer, info) => {\n *      // outputBuffer contains the transformed image\n *      // info.width and info.height contain the new dimensions\n *   });\n *\n * inputStream\n *   .pipe(pipeline);\n *\n * @param {Array<Array<number>>|Array<number>} matrix - affine transformation matrix\n * @param {Object} [options] - if present, is an Object with optional attributes.\n * @param {String|Object} [options.background=\"#000000\"] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @param {Number} [options.idx=0] - input horizontal offset\n * @param {Number} [options.idy=0] - input vertical offset\n * @param {Number} [options.odx=0] - output horizontal offset\n * @param {Number} [options.ody=0] - output vertical offset\n * @param {String} [options.interpolator=sharp.interpolators.bicubic] - interpolator\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction affine (matrix, options) {\n  const flatMatrix = [].concat(...matrix);\n  if (flatMatrix.length === 4 && flatMatrix.every(is.number)) {\n    this.options.affineMatrix = flatMatrix;\n  } else {\n    throw is.invalidParameterError('matrix', '1x4 or 2x2 array', matrix);\n  }\n\n  if (is.defined(options)) {\n    if (is.object(options)) {\n      this._setBackgroundColourOption('affineBackground', options.background);\n      if (is.defined(options.idx)) {\n        if (is.number(options.idx)) {\n          this.options.affineIdx = options.idx;\n        } else {\n          throw is.invalidParameterError('options.idx', 'number', options.idx);\n        }\n      }\n      if (is.defined(options.idy)) {\n        if (is.number(options.idy)) {\n          this.options.affineIdy = options.idy;\n        } else {\n          throw is.invalidParameterError('options.idy', 'number', options.idy);\n        }\n      }\n      if (is.defined(options.odx)) {\n        if (is.number(options.odx)) {\n          this.options.affineOdx = options.odx;\n        } else {\n          throw is.invalidParameterError('options.odx', 'number', options.odx);\n        }\n      }\n      if (is.defined(options.ody)) {\n        if (is.number(options.ody)) {\n          this.options.affineOdy = options.ody;\n        } else {\n          throw is.invalidParameterError('options.ody', 'number', options.ody);\n        }\n      }\n      if (is.defined(options.interpolator)) {\n        if (is.inArray(options.interpolator, Object.values(this.constructor.interpolators))) {\n          this.options.affineInterpolator = options.interpolator;\n        } else {\n          throw is.invalidParameterError('options.interpolator', 'valid interpolator name', options.interpolator);\n        }\n      }\n    } else {\n      throw is.invalidParameterError('options', 'object', options);\n    }\n  }\n\n  return this;\n}\n\n/**\n * Sharpen the image.\n *\n * When used without parameters, performs a fast, mild sharpen of the output image.\n *\n * When a `sigma` is provided, performs a slower, more accurate sharpen of the L channel in the LAB colour space.\n * Fine-grained control over the level of sharpening in \"flat\" (m1) and \"jagged\" (m2) areas is available.\n *\n * See {@link https://www.libvips.org/API/current/method.Image.sharpen.html libvips sharpen} operation.\n *\n * @example\n * const data = await sharp(input).sharpen().toBuffer();\n *\n * @example\n * const data = await sharp(input).sharpen({ sigma: 2 }).toBuffer();\n *\n * @example\n * const data = await sharp(input)\n *   .sharpen({\n *     sigma: 2,\n *     m1: 0,\n *     m2: 3,\n *     x1: 3,\n *     y2: 15,\n *     y3: 15,\n *   })\n *   .toBuffer();\n *\n * @param {Object|number} [options] - if present, is an Object with attributes\n * @param {number} [options.sigma] - the sigma of the Gaussian mask, where `sigma = 1 + radius / 2`, between 0.000001 and 10\n * @param {number} [options.m1=1.0] - the level of sharpening to apply to \"flat\" areas, between 0 and 1000000\n * @param {number} [options.m2=2.0] - the level of sharpening to apply to \"jagged\" areas, between 0 and 1000000\n * @param {number} [options.x1=2.0] - threshold between \"flat\" and \"jagged\", between 0 and 1000000\n * @param {number} [options.y2=10.0] - maximum amount of brightening, between 0 and 1000000\n * @param {number} [options.y3=20.0] - maximum amount of darkening, between 0 and 1000000\n * @param {number} [flat] - (deprecated) see `options.m1`.\n * @param {number} [jagged] - (deprecated) see `options.m2`.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction sharpen (options, flat, jagged) {\n  if (!is.defined(options)) {\n    // No arguments: default to mild sharpen\n    this.options.sharpenSigma = -1;\n  } else if (is.bool(options)) {\n    // Deprecated boolean argument: apply mild sharpen?\n    this.options.sharpenSigma = options ? -1 : 0;\n  } else if (is.number(options) && is.inRange(options, 0.01, 10000)) {\n    // Deprecated numeric argument: specific sigma\n    this.options.sharpenSigma = options;\n    // Deprecated control over flat areas\n    if (is.defined(flat)) {\n      if (is.number(flat) && is.inRange(flat, 0, 10000)) {\n        this.options.sharpenM1 = flat;\n      } else {\n        throw is.invalidParameterError('flat', 'number between 0 and 10000', flat);\n      }\n    }\n    // Deprecated control over jagged areas\n    if (is.defined(jagged)) {\n      if (is.number(jagged) && is.inRange(jagged, 0, 10000)) {\n        this.options.sharpenM2 = jagged;\n      } else {\n        throw is.invalidParameterError('jagged', 'number between 0 and 10000', jagged);\n      }\n    }\n  } else if (is.plainObject(options)) {\n    if (is.number(options.sigma) && is.inRange(options.sigma, 0.000001, 10)) {\n      this.options.sharpenSigma = options.sigma;\n    } else {\n      throw is.invalidParameterError('options.sigma', 'number between 0.000001 and 10', options.sigma);\n    }\n    if (is.defined(options.m1)) {\n      if (is.number(options.m1) && is.inRange(options.m1, 0, 1000000)) {\n        this.options.sharpenM1 = options.m1;\n      } else {\n        throw is.invalidParameterError('options.m1', 'number between 0 and 1000000', options.m1);\n      }\n    }\n    if (is.defined(options.m2)) {\n      if (is.number(options.m2) && is.inRange(options.m2, 0, 1000000)) {\n        this.options.sharpenM2 = options.m2;\n      } else {\n        throw is.invalidParameterError('options.m2', 'number between 0 and 1000000', options.m2);\n      }\n    }\n    if (is.defined(options.x1)) {\n      if (is.number(options.x1) && is.inRange(options.x1, 0, 1000000)) {\n        this.options.sharpenX1 = options.x1;\n      } else {\n        throw is.invalidParameterError('options.x1', 'number between 0 and 1000000', options.x1);\n      }\n    }\n    if (is.defined(options.y2)) {\n      if (is.number(options.y2) && is.inRange(options.y2, 0, 1000000)) {\n        this.options.sharpenY2 = options.y2;\n      } else {\n        throw is.invalidParameterError('options.y2', 'number between 0 and 1000000', options.y2);\n      }\n    }\n    if (is.defined(options.y3)) {\n      if (is.number(options.y3) && is.inRange(options.y3, 0, 1000000)) {\n        this.options.sharpenY3 = options.y3;\n      } else {\n        throw is.invalidParameterError('options.y3', 'number between 0 and 1000000', options.y3);\n      }\n    }\n  } else {\n    throw is.invalidParameterError('sigma', 'number between 0.01 and 10000', options);\n  }\n  return this;\n}\n\n/**\n * Apply median filter.\n * When used without parameters the default window is 3x3.\n *\n * @example\n * const output = await sharp(input).median().toBuffer();\n *\n * @example\n * const output = await sharp(input).median(5).toBuffer();\n *\n * @param {number} [size=3] square mask size: size x size\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction median (size) {\n  if (!is.defined(size)) {\n    // No arguments: default to 3x3\n    this.options.medianSize = 3;\n  } else if (is.integer(size) && is.inRange(size, 1, 1000)) {\n    // Numeric argument: specific sigma\n    this.options.medianSize = size;\n  } else {\n    throw is.invalidParameterError('size', 'integer between 1 and 1000', size);\n  }\n  return this;\n}\n\n/**\n * Blur the image.\n *\n * When used without parameters, performs a fast 3x3 box blur (equivalent to a box linear filter).\n *\n * When a `sigma` is provided, performs a slower, more accurate Gaussian blur.\n *\n * @example\n * const boxBlurred = await sharp(input)\n *   .blur()\n *   .toBuffer();\n *\n * @example\n * const gaussianBlurred = await sharp(input)\n *   .blur(5)\n *   .toBuffer();\n *\n * @param {Object|number|Boolean} [options]\n * @param {number} [options.sigma] a value between 0.3 and 1000 representing the sigma of the Gaussian mask, where `sigma = 1 + radius / 2`.\n * @param {string} [options.precision='integer'] How accurate the operation should be, one of: integer, float, approximate.\n * @param {number} [options.minAmplitude=0.2] A value between 0.001 and 1. A smaller value will generate a larger, more accurate mask.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction blur (options) {\n  let sigma;\n  if (is.number(options)) {\n    sigma = options;\n  } else if (is.plainObject(options)) {\n    if (!is.number(options.sigma)) {\n      throw is.invalidParameterError('options.sigma', 'number between 0.3 and 1000', sigma);\n    }\n    sigma = options.sigma;\n    if ('precision' in options) {\n      if (is.string(vipsPrecision[options.precision])) {\n        this.options.precision = vipsPrecision[options.precision];\n      } else {\n        throw is.invalidParameterError('precision', 'one of: integer, float, approximate', options.precision);\n      }\n    }\n    if ('minAmplitude' in options) {\n      if (is.number(options.minAmplitude) && is.inRange(options.minAmplitude, 0.001, 1)) {\n        this.options.minAmpl = options.minAmplitude;\n      } else {\n        throw is.invalidParameterError('minAmplitude', 'number between 0.001 and 1', options.minAmplitude);\n      }\n    }\n  }\n\n  if (!is.defined(options)) {\n    // No arguments: default to mild blur\n    this.options.blurSigma = -1;\n  } else if (is.bool(options)) {\n    // Boolean argument: apply mild blur?\n    this.options.blurSigma = options ? -1 : 0;\n  } else if (is.number(sigma) && is.inRange(sigma, 0.3, 1000)) {\n    // Numeric argument: specific sigma\n    this.options.blurSigma = sigma;\n  } else {\n    throw is.invalidParameterError('sigma', 'number between 0.3 and 1000', sigma);\n  }\n\n  return this;\n}\n\n/**\n * Expand foreground objects using the dilate morphological operator.\n *\n * @example\n * const output = await sharp(input)\n *   .dilate()\n *   .toBuffer();\n *\n * @param {Number} [width=1] dilation width in pixels.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction dilate (width) {\n  if (!is.defined(width)) {\n    this.options.dilateWidth = 1;\n  } else if (is.integer(width) && width > 0) {\n    this.options.dilateWidth = width;\n  } else {\n    throw is.invalidParameterError('dilate', 'positive integer', dilate);\n  }\n  return this;\n}\n\n/**\n * Shrink foreground objects using the erode morphological operator.\n *\n * @example\n * const output = await sharp(input)\n *   .erode()\n *   .toBuffer();\n *\n * @param {Number} [width=1] erosion width in pixels.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction erode (width) {\n  if (!is.defined(width)) {\n    this.options.erodeWidth = 1;\n  } else if (is.integer(width) && width > 0) {\n    this.options.erodeWidth = width;\n  } else {\n    throw is.invalidParameterError('erode', 'positive integer', erode);\n  }\n  return this;\n}\n\n/**\n * Merge alpha transparency channel, if any, with a background, then remove the alpha channel.\n *\n * See also {@link /api-channel#removealpha removeAlpha}.\n *\n * @example\n * await sharp(rgbaInput)\n *   .flatten({ background: '#F0A703' })\n *   .toBuffer();\n *\n * @param {Object} [options]\n * @param {string|Object} [options.background={r: 0, g: 0, b: 0}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black.\n * @returns {Sharp}\n */\nfunction flatten (options) {\n  this.options.flatten = is.bool(options) ? options : true;\n  if (is.object(options)) {\n    this._setBackgroundColourOption('flattenBackground', options.background);\n  }\n  return this;\n}\n\n/**\n * Ensure the image has an alpha channel\n * with all white pixel values made fully transparent.\n *\n * Existing alpha channel values for non-white pixels remain unchanged.\n *\n * This feature is experimental and the API may change.\n *\n * @since 0.32.1\n *\n * @example\n * await sharp(rgbInput)\n *   .unflatten()\n *   .toBuffer();\n *\n * @example\n * await sharp(rgbInput)\n *   .threshold(128, { grayscale: false }) // converter bright pixels to white\n *   .unflatten()\n *   .toBuffer();\n */\nfunction unflatten () {\n  this.options.unflatten = true;\n  return this;\n}\n\n/**\n * Apply a gamma correction by reducing the encoding (darken) pre-resize at a factor of `1/gamma`\n * then increasing the encoding (brighten) post-resize at a factor of `gamma`.\n * This can improve the perceived brightness of a resized image in non-linear colour spaces.\n * JPEG and WebP input images will not take advantage of the shrink-on-load performance optimisation\n * when applying a gamma correction.\n *\n * Supply a second argument to use a different output gamma value, otherwise the first value is used in both cases.\n *\n * @param {number} [gamma=2.2] value between 1.0 and 3.0.\n * @param {number} [gammaOut] value between 1.0 and 3.0. (optional, defaults to same as `gamma`)\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction gamma (gamma, gammaOut) {\n  if (!is.defined(gamma)) {\n    // Default gamma correction of 2.2 (sRGB)\n    this.options.gamma = 2.2;\n  } else if (is.number(gamma) && is.inRange(gamma, 1, 3)) {\n    this.options.gamma = gamma;\n  } else {\n    throw is.invalidParameterError('gamma', 'number between 1.0 and 3.0', gamma);\n  }\n  if (!is.defined(gammaOut)) {\n    // Default gamma correction for output is same as input\n    this.options.gammaOut = this.options.gamma;\n  } else if (is.number(gammaOut) && is.inRange(gammaOut, 1, 3)) {\n    this.options.gammaOut = gammaOut;\n  } else {\n    throw is.invalidParameterError('gammaOut', 'number between 1.0 and 3.0', gammaOut);\n  }\n  return this;\n}\n\n/**\n * Produce the \"negative\" of the image.\n *\n * @example\n * const output = await sharp(input)\n *   .negate()\n *   .toBuffer();\n *\n * @example\n * const output = await sharp(input)\n *   .negate({ alpha: false })\n *   .toBuffer();\n *\n * @param {Object} [options]\n * @param {Boolean} [options.alpha=true] Whether or not to negate any alpha channel\n * @returns {Sharp}\n */\nfunction negate (options) {\n  this.options.negate = is.bool(options) ? options : true;\n  if (is.plainObject(options) && 'alpha' in options) {\n    if (!is.bool(options.alpha)) {\n      throw is.invalidParameterError('alpha', 'should be boolean value', options.alpha);\n    } else {\n      this.options.negateAlpha = options.alpha;\n    }\n  }\n  return this;\n}\n\n/**\n * Enhance output image contrast by stretching its luminance to cover a full dynamic range.\n *\n * Uses a histogram-based approach, taking a default range of 1% to 99% to reduce sensitivity to noise at the extremes.\n *\n * Luminance values below the `lower` percentile will be underexposed by clipping to zero.\n * Luminance values above the `upper` percentile will be overexposed by clipping to the max pixel value.\n *\n * @example\n * const output = await sharp(input)\n *   .normalise()\n *   .toBuffer();\n *\n * @example\n * const output = await sharp(input)\n *   .normalise({ lower: 0, upper: 100 })\n *   .toBuffer();\n *\n * @param {Object} [options]\n * @param {number} [options.lower=1] - Percentile below which luminance values will be underexposed.\n * @param {number} [options.upper=99] - Percentile above which luminance values will be overexposed.\n * @returns {Sharp}\n */\nfunction normalise (options) {\n  if (is.plainObject(options)) {\n    if (is.defined(options.lower)) {\n      if (is.number(options.lower) && is.inRange(options.lower, 0, 99)) {\n        this.options.normaliseLower = options.lower;\n      } else {\n        throw is.invalidParameterError('lower', 'number between 0 and 99', options.lower);\n      }\n    }\n    if (is.defined(options.upper)) {\n      if (is.number(options.upper) && is.inRange(options.upper, 1, 100)) {\n        this.options.normaliseUpper = options.upper;\n      } else {\n        throw is.invalidParameterError('upper', 'number between 1 and 100', options.upper);\n      }\n    }\n  }\n  if (this.options.normaliseLower >= this.options.normaliseUpper) {\n    throw is.invalidParameterError('range', 'lower to be less than upper',\n      `${this.options.normaliseLower} >= ${this.options.normaliseUpper}`);\n  }\n  this.options.normalise = true;\n  return this;\n}\n\n/**\n * Alternative spelling of normalise.\n *\n * @example\n * const output = await sharp(input)\n *   .normalize()\n *   .toBuffer();\n *\n * @param {Object} [options]\n * @param {number} [options.lower=1] - Percentile below which luminance values will be underexposed.\n * @param {number} [options.upper=99] - Percentile above which luminance values will be overexposed.\n * @returns {Sharp}\n */\nfunction normalize (options) {\n  return this.normalise(options);\n}\n\n/**\n * Perform contrast limiting adaptive histogram equalization\n * {@link https://en.wikipedia.org/wiki/Adaptive_histogram_equalization#Contrast_Limited_AHE CLAHE}.\n *\n * This will, in general, enhance the clarity of the image by bringing out darker details.\n *\n * @since 0.28.3\n *\n * @example\n * const output = await sharp(input)\n *   .clahe({\n *     width: 3,\n *     height: 3,\n *   })\n *   .toBuffer();\n *\n * @param {Object} options\n * @param {number} options.width - Integral width of the search window, in pixels.\n * @param {number} options.height - Integral height of the search window, in pixels.\n * @param {number} [options.maxSlope=3] - Integral level of brightening, between 0 and 100, where 0 disables contrast limiting.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction clahe (options) {\n  if (is.plainObject(options)) {\n    if (is.integer(options.width) && options.width > 0) {\n      this.options.claheWidth = options.width;\n    } else {\n      throw is.invalidParameterError('width', 'integer greater than zero', options.width);\n    }\n    if (is.integer(options.height) && options.height > 0) {\n      this.options.claheHeight = options.height;\n    } else {\n      throw is.invalidParameterError('height', 'integer greater than zero', options.height);\n    }\n    if (is.defined(options.maxSlope)) {\n      if (is.integer(options.maxSlope) && is.inRange(options.maxSlope, 0, 100)) {\n        this.options.claheMaxSlope = options.maxSlope;\n      } else {\n        throw is.invalidParameterError('maxSlope', 'integer between 0 and 100', options.maxSlope);\n      }\n    }\n  } else {\n    throw is.invalidParameterError('options', 'plain object', options);\n  }\n  return this;\n}\n\n/**\n * Convolve the image with the specified kernel.\n *\n * @example\n * sharp(input)\n *   .convolve({\n *     width: 3,\n *     height: 3,\n *     kernel: [-1, 0, 1, -2, 0, 2, -1, 0, 1]\n *   })\n *   .raw()\n *   .toBuffer(function(err, data, info) {\n *     // data contains the raw pixel data representing the convolution\n *     // of the input image with the horizontal Sobel operator\n *   });\n *\n * @param {Object} kernel\n * @param {number} kernel.width - width of the kernel in pixels.\n * @param {number} kernel.height - height of the kernel in pixels.\n * @param {Array<number>} kernel.kernel - Array of length `width*height` containing the kernel values.\n * @param {number} [kernel.scale=sum] - the scale of the kernel in pixels.\n * @param {number} [kernel.offset=0] - the offset of the kernel in pixels.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction convolve (kernel) {\n  if (!is.object(kernel) || !Array.isArray(kernel.kernel) ||\n      !is.integer(kernel.width) || !is.integer(kernel.height) ||\n      !is.inRange(kernel.width, 3, 1001) || !is.inRange(kernel.height, 3, 1001) ||\n      kernel.height * kernel.width !== kernel.kernel.length\n  ) {\n    // must pass in a kernel\n    throw new Error('Invalid convolution kernel');\n  }\n  // Default scale is sum of kernel values\n  if (!is.integer(kernel.scale)) {\n    kernel.scale = kernel.kernel.reduce((a, b) => a + b, 0);\n  }\n  // Clip scale to a minimum value of 1\n  if (kernel.scale < 1) {\n    kernel.scale = 1;\n  }\n  if (!is.integer(kernel.offset)) {\n    kernel.offset = 0;\n  }\n  this.options.convKernel = kernel;\n  return this;\n}\n\n/**\n * Any pixel value greater than or equal to the threshold value will be set to 255, otherwise it will be set to 0.\n * @param {number} [threshold=128] - a value in the range 0-255 representing the level at which the threshold will be applied.\n * @param {Object} [options]\n * @param {Boolean} [options.greyscale=true] - convert to single channel greyscale.\n * @param {Boolean} [options.grayscale=true] - alternative spelling for greyscale.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction threshold (threshold, options) {\n  if (!is.defined(threshold)) {\n    this.options.threshold = 128;\n  } else if (is.bool(threshold)) {\n    this.options.threshold = threshold ? 128 : 0;\n  } else if (is.integer(threshold) && is.inRange(threshold, 0, 255)) {\n    this.options.threshold = threshold;\n  } else {\n    throw is.invalidParameterError('threshold', 'integer between 0 and 255', threshold);\n  }\n  if (!is.object(options) || options.greyscale === true || options.grayscale === true) {\n    this.options.thresholdGrayscale = true;\n  } else {\n    this.options.thresholdGrayscale = false;\n  }\n  return this;\n}\n\n/**\n * Perform a bitwise boolean operation with operand image.\n *\n * This operation creates an output image where each pixel is the result of\n * the selected bitwise boolean `operation` between the corresponding pixels of the input images.\n *\n * @param {Buffer|string} operand - Buffer containing image data or string containing the path to an image file.\n * @param {string} operator - one of `and`, `or` or `eor` to perform that bitwise operation, like the C logic operators `&`, `|` and `^` respectively.\n * @param {Object} [options]\n * @param {Object} [options.raw] - describes operand when using raw pixel data.\n * @param {number} [options.raw.width]\n * @param {number} [options.raw.height]\n * @param {number} [options.raw.channels]\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction boolean (operand, operator, options) {\n  this.options.boolean = this._createInputDescriptor(operand, options);\n  if (is.string(operator) && is.inArray(operator, ['and', 'or', 'eor'])) {\n    this.options.booleanOp = operator;\n  } else {\n    throw is.invalidParameterError('operator', 'one of: and, or, eor', operator);\n  }\n  return this;\n}\n\n/**\n * Apply the linear formula `a` * input + `b` to the image to adjust image levels.\n *\n * When a single number is provided, it will be used for all image channels.\n * When an array of numbers is provided, the array length must match the number of channels.\n *\n * @example\n * await sharp(input)\n *   .linear(0.5, 2)\n *   .toBuffer();\n *\n * @example\n * await sharp(rgbInput)\n *   .linear(\n *     [0.25, 0.5, 0.75],\n *     [150, 100, 50]\n *   )\n *   .toBuffer();\n *\n * @param {(number|number[])} [a=[]] multiplier\n * @param {(number|number[])} [b=[]] offset\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction linear (a, b) {\n  if (!is.defined(a) && is.number(b)) {\n    a = 1.0;\n  } else if (is.number(a) && !is.defined(b)) {\n    b = 0.0;\n  }\n  if (!is.defined(a)) {\n    this.options.linearA = [];\n  } else if (is.number(a)) {\n    this.options.linearA = [a];\n  } else if (Array.isArray(a) && a.length && a.every(is.number)) {\n    this.options.linearA = a;\n  } else {\n    throw is.invalidParameterError('a', 'number or array of numbers', a);\n  }\n  if (!is.defined(b)) {\n    this.options.linearB = [];\n  } else if (is.number(b)) {\n    this.options.linearB = [b];\n  } else if (Array.isArray(b) && b.length && b.every(is.number)) {\n    this.options.linearB = b;\n  } else {\n    throw is.invalidParameterError('b', 'number or array of numbers', b);\n  }\n  if (this.options.linearA.length !== this.options.linearB.length) {\n    throw new Error('Expected a and b to be arrays of the same length');\n  }\n  return this;\n}\n\n/**\n * Recombine the image with the specified matrix.\n *\n * @since 0.21.1\n *\n * @example\n * sharp(input)\n *   .recomb([\n *    [0.3588, 0.7044, 0.1368],\n *    [0.2990, 0.5870, 0.1140],\n *    [0.2392, 0.4696, 0.0912],\n *   ])\n *   .raw()\n *   .toBuffer(function(err, data, info) {\n *     // data contains the raw pixel data after applying the matrix\n *     // With this example input, a sepia filter has been applied\n *   });\n *\n * @param {Array<Array<number>>} inputMatrix - 3x3 or 4x4 Recombination matrix\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction recomb (inputMatrix) {\n  if (!Array.isArray(inputMatrix)) {\n    throw is.invalidParameterError('inputMatrix', 'array', inputMatrix);\n  }\n  if (inputMatrix.length !== 3 && inputMatrix.length !== 4) {\n    throw is.invalidParameterError('inputMatrix', '3x3 or 4x4 array', inputMatrix.length);\n  }\n  const recombMatrix = inputMatrix.flat().map(Number);\n  if (recombMatrix.length !== 9 && recombMatrix.length !== 16) {\n    throw is.invalidParameterError('inputMatrix', 'cardinality of 9 or 16', recombMatrix.length);\n  }\n  this.options.recombMatrix = recombMatrix;\n  return this;\n}\n\n/**\n * Transforms the image using brightness, saturation, hue rotation, and lightness.\n * Brightness and lightness both operate on luminance, with the difference being that\n * brightness is multiplicative whereas lightness is additive.\n *\n * @since 0.22.1\n *\n * @example\n * // increase brightness by a factor of 2\n * const output = await sharp(input)\n *   .modulate({\n *     brightness: 2\n *   })\n *   .toBuffer();\n *\n * @example\n * // hue-rotate by 180 degrees\n * const output = await sharp(input)\n *   .modulate({\n *     hue: 180\n *   })\n *   .toBuffer();\n *\n * @example\n * // increase lightness by +50\n * const output = await sharp(input)\n *   .modulate({\n *     lightness: 50\n *   })\n *   .toBuffer();\n *\n * @example\n * // decrease brightness and saturation while also hue-rotating by 90 degrees\n * const output = await sharp(input)\n *   .modulate({\n *     brightness: 0.5,\n *     saturation: 0.5,\n *     hue: 90,\n *   })\n *   .toBuffer();\n *\n * @param {Object} [options]\n * @param {number} [options.brightness] Brightness multiplier\n * @param {number} [options.saturation] Saturation multiplier\n * @param {number} [options.hue] Degrees for hue rotation\n * @param {number} [options.lightness] Lightness addend\n * @returns {Sharp}\n */\nfunction modulate (options) {\n  if (!is.plainObject(options)) {\n    throw is.invalidParameterError('options', 'plain object', options);\n  }\n  if ('brightness' in options) {\n    if (is.number(options.brightness) && options.brightness >= 0) {\n      this.options.brightness = options.brightness;\n    } else {\n      throw is.invalidParameterError('brightness', 'number above zero', options.brightness);\n    }\n  }\n  if ('saturation' in options) {\n    if (is.number(options.saturation) && options.saturation >= 0) {\n      this.options.saturation = options.saturation;\n    } else {\n      throw is.invalidParameterError('saturation', 'number above zero', options.saturation);\n    }\n  }\n  if ('hue' in options) {\n    if (is.integer(options.hue)) {\n      this.options.hue = options.hue % 360;\n    } else {\n      throw is.invalidParameterError('hue', 'number', options.hue);\n    }\n  }\n  if ('lightness' in options) {\n    if (is.number(options.lightness)) {\n      this.options.lightness = options.lightness;\n    } else {\n      throw is.invalidParameterError('lightness', 'number', options.lightness);\n    }\n  }\n  return this;\n}\n\n/**\n * Decorate the Sharp prototype with operation-related functions.\n * @module Sharp\n * @private\n */\nmodule.exports = (Sharp) => {\n  Object.assign(Sharp.prototype, {\n    autoOrient,\n    rotate,\n    flip,\n    flop,\n    affine,\n    sharpen,\n    erode,\n    dilate,\n    median,\n    blur,\n    flatten,\n    unflatten,\n    gamma,\n    negate,\n    normalise,\n    normalize,\n    clahe,\n    convolve,\n    threshold,\n    boolean,\n    linear,\n    recomb,\n    modulate\n  });\n};\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// node_modules/color/index.js\nvar index_exports = {};\n__export(index_exports, {\n  default: () => index_default\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// node_modules/color-name/index.js\nvar color_name_default = {\n  aliceblue: [240, 248, 255],\n  antiquewhite: [250, 235, 215],\n  aqua: [0, 255, 255],\n  aquamarine: [127, 255, 212],\n  azure: [240, 255, 255],\n  beige: [245, 245, 220],\n  bisque: [255, 228, 196],\n  black: [0, 0, 0],\n  blanchedalmond: [255, 235, 205],\n  blue: [0, 0, 255],\n  blueviolet: [138, 43, 226],\n  brown: [165, 42, 42],\n  burlywood: [222, 184, 135],\n  cadetblue: [95, 158, 160],\n  chartreuse: [127, 255, 0],\n  chocolate: [210, 105, 30],\n  coral: [255, 127, 80],\n  cornflowerblue: [100, 149, 237],\n  cornsilk: [255, 248, 220],\n  crimson: [220, 20, 60],\n  cyan: [0, 255, 255],\n  darkblue: [0, 0, 139],\n  darkcyan: [0, 139, 139],\n  darkgoldenrod: [184, 134, 11],\n  darkgray: [169, 169, 169],\n  darkgreen: [0, 100, 0],\n  darkgrey: [169, 169, 169],\n  darkkhaki: [189, 183, 107],\n  darkmagenta: [139, 0, 139],\n  darkolivegreen: [85, 107, 47],\n  darkorange: [255, 140, 0],\n  darkorchid: [153, 50, 204],\n  darkred: [139, 0, 0],\n  darksalmon: [233, 150, 122],\n  darkseagreen: [143, 188, 143],\n  darkslateblue: [72, 61, 139],\n  darkslategray: [47, 79, 79],\n  darkslategrey: [47, 79, 79],\n  darkturquoise: [0, 206, 209],\n  darkviolet: [148, 0, 211],\n  deeppink: [255, 20, 147],\n  deepskyblue: [0, 191, 255],\n  dimgray: [105, 105, 105],\n  dimgrey: [105, 105, 105],\n  dodgerblue: [30, 144, 255],\n  firebrick: [178, 34, 34],\n  floralwhite: [255, 250, 240],\n  forestgreen: [34, 139, 34],\n  fuchsia: [255, 0, 255],\n  gainsboro: [220, 220, 220],\n  ghostwhite: [248, 248, 255],\n  gold: [255, 215, 0],\n  goldenrod: [218, 165, 32],\n  gray: [128, 128, 128],\n  green: [0, 128, 0],\n  greenyellow: [173, 255, 47],\n  grey: [128, 128, 128],\n  honeydew: [240, 255, 240],\n  hotpink: [255, 105, 180],\n  indianred: [205, 92, 92],\n  indigo: [75, 0, 130],\n  ivory: [255, 255, 240],\n  khaki: [240, 230, 140],\n  lavender: [230, 230, 250],\n  lavenderblush: [255, 240, 245],\n  lawngreen: [124, 252, 0],\n  lemonchiffon: [255, 250, 205],\n  lightblue: [173, 216, 230],\n  lightcoral: [240, 128, 128],\n  lightcyan: [224, 255, 255],\n  lightgoldenrodyellow: [250, 250, 210],\n  lightgray: [211, 211, 211],\n  lightgreen: [144, 238, 144],\n  lightgrey: [211, 211, 211],\n  lightpink: [255, 182, 193],\n  lightsalmon: [255, 160, 122],\n  lightseagreen: [32, 178, 170],\n  lightskyblue: [135, 206, 250],\n  lightslategray: [119, 136, 153],\n  lightslategrey: [119, 136, 153],\n  lightsteelblue: [176, 196, 222],\n  lightyellow: [255, 255, 224],\n  lime: [0, 255, 0],\n  limegreen: [50, 205, 50],\n  linen: [250, 240, 230],\n  magenta: [255, 0, 255],\n  maroon: [128, 0, 0],\n  mediumaquamarine: [102, 205, 170],\n  mediumblue: [0, 0, 205],\n  mediumorchid: [186, 85, 211],\n  mediumpurple: [147, 112, 219],\n  mediumseagreen: [60, 179, 113],\n  mediumslateblue: [123, 104, 238],\n  mediumspringgreen: [0, 250, 154],\n  mediumturquoise: [72, 209, 204],\n  mediumvioletred: [199, 21, 133],\n  midnightblue: [25, 25, 112],\n  mintcream: [245, 255, 250],\n  mistyrose: [255, 228, 225],\n  moccasin: [255, 228, 181],\n  navajowhite: [255, 222, 173],\n  navy: [0, 0, 128],\n  oldlace: [253, 245, 230],\n  olive: [128, 128, 0],\n  olivedrab: [107, 142, 35],\n  orange: [255, 165, 0],\n  orangered: [255, 69, 0],\n  orchid: [218, 112, 214],\n  palegoldenrod: [238, 232, 170],\n  palegreen: [152, 251, 152],\n  paleturquoise: [175, 238, 238],\n  palevioletred: [219, 112, 147],\n  papayawhip: [255, 239, 213],\n  peachpuff: [255, 218, 185],\n  peru: [205, 133, 63],\n  pink: [255, 192, 203],\n  plum: [221, 160, 221],\n  powderblue: [176, 224, 230],\n  purple: [128, 0, 128],\n  rebeccapurple: [102, 51, 153],\n  red: [255, 0, 0],\n  rosybrown: [188, 143, 143],\n  royalblue: [65, 105, 225],\n  saddlebrown: [139, 69, 19],\n  salmon: [250, 128, 114],\n  sandybrown: [244, 164, 96],\n  seagreen: [46, 139, 87],\n  seashell: [255, 245, 238],\n  sienna: [160, 82, 45],\n  silver: [192, 192, 192],\n  skyblue: [135, 206, 235],\n  slateblue: [106, 90, 205],\n  slategray: [112, 128, 144],\n  slategrey: [112, 128, 144],\n  snow: [255, 250, 250],\n  springgreen: [0, 255, 127],\n  steelblue: [70, 130, 180],\n  tan: [210, 180, 140],\n  teal: [0, 128, 128],\n  thistle: [216, 191, 216],\n  tomato: [255, 99, 71],\n  turquoise: [64, 224, 208],\n  violet: [238, 130, 238],\n  wheat: [245, 222, 179],\n  white: [255, 255, 255],\n  whitesmoke: [245, 245, 245],\n  yellow: [255, 255, 0],\n  yellowgreen: [154, 205, 50]\n};\n\n// node_modules/color-string/index.js\nvar reverseNames = /* @__PURE__ */ Object.create(null);\nfor (const name in color_name_default) {\n  if (Object.hasOwn(color_name_default, name)) {\n    reverseNames[color_name_default[name]] = name;\n  }\n}\nvar cs = {\n  to: {},\n  get: {}\n};\ncs.get = function(string) {\n  const prefix = string.slice(0, 3).toLowerCase();\n  let value;\n  let model;\n  switch (prefix) {\n    case \"hsl\": {\n      value = cs.get.hsl(string);\n      model = \"hsl\";\n      break;\n    }\n    case \"hwb\": {\n      value = cs.get.hwb(string);\n      model = \"hwb\";\n      break;\n    }\n    default: {\n      value = cs.get.rgb(string);\n      model = \"rgb\";\n      break;\n    }\n  }\n  if (!value) {\n    return null;\n  }\n  return { model, value };\n};\ncs.get.rgb = function(string) {\n  if (!string) {\n    return null;\n  }\n  const abbr = /^#([a-f\\d]{3,4})$/i;\n  const hex = /^#([a-f\\d]{6})([a-f\\d]{2})?$/i;\n  const rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[\\s,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/;\n  const per = /^rgba?\\(\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/;\n  const keyword = /^(\\w+)$/;\n  let rgb = [0, 0, 0, 1];\n  let match;\n  let i;\n  let hexAlpha;\n  if (match = string.match(hex)) {\n    hexAlpha = match[2];\n    match = match[1];\n    for (i = 0; i < 3; i++) {\n      const i2 = i * 2;\n      rgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16);\n    }\n    if (hexAlpha) {\n      rgb[3] = Number.parseInt(hexAlpha, 16) / 255;\n    }\n  } else if (match = string.match(abbr)) {\n    match = match[1];\n    hexAlpha = match[3];\n    for (i = 0; i < 3; i++) {\n      rgb[i] = Number.parseInt(match[i] + match[i], 16);\n    }\n    if (hexAlpha) {\n      rgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255;\n    }\n  } else if (match = string.match(rgba)) {\n    for (i = 0; i < 3; i++) {\n      rgb[i] = Number.parseInt(match[i + 1], 10);\n    }\n    if (match[4]) {\n      rgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n    }\n  } else if (match = string.match(per)) {\n    for (i = 0; i < 3; i++) {\n      rgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55);\n    }\n    if (match[4]) {\n      rgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n    }\n  } else if (match = string.match(keyword)) {\n    if (match[1] === \"transparent\") {\n      return [0, 0, 0, 0];\n    }\n    if (!Object.hasOwn(color_name_default, match[1])) {\n      return null;\n    }\n    rgb = color_name_default[match[1]];\n    rgb[3] = 1;\n    return rgb;\n  } else {\n    return null;\n  }\n  for (i = 0; i < 3; i++) {\n    rgb[i] = clamp(rgb[i], 0, 255);\n  }\n  rgb[3] = clamp(rgb[3], 0, 1);\n  return rgb;\n};\ncs.get.hsl = function(string) {\n  if (!string) {\n    return null;\n  }\n  const hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n  const match = string.match(hsl);\n  if (match) {\n    const alpha = Number.parseFloat(match[4]);\n    const h = (Number.parseFloat(match[1]) % 360 + 360) % 360;\n    const s = clamp(Number.parseFloat(match[2]), 0, 100);\n    const l = clamp(Number.parseFloat(match[3]), 0, 100);\n    const a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n    return [h, s, l, a];\n  }\n  return null;\n};\ncs.get.hwb = function(string) {\n  if (!string) {\n    return null;\n  }\n  const hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n  const match = string.match(hwb);\n  if (match) {\n    const alpha = Number.parseFloat(match[4]);\n    const h = (Number.parseFloat(match[1]) % 360 + 360) % 360;\n    const w = clamp(Number.parseFloat(match[2]), 0, 100);\n    const b = clamp(Number.parseFloat(match[3]), 0, 100);\n    const a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n    return [h, w, b, a];\n  }\n  return null;\n};\ncs.to.hex = function(...rgba) {\n  return \"#\" + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (rgba[3] < 1 ? hexDouble(Math.round(rgba[3] * 255)) : \"\");\n};\ncs.to.rgb = function(...rgba) {\n  return rgba.length < 4 || rgba[3] === 1 ? \"rgb(\" + Math.round(rgba[0]) + \", \" + Math.round(rgba[1]) + \", \" + Math.round(rgba[2]) + \")\" : \"rgba(\" + Math.round(rgba[0]) + \", \" + Math.round(rgba[1]) + \", \" + Math.round(rgba[2]) + \", \" + rgba[3] + \")\";\n};\ncs.to.rgb.percent = function(...rgba) {\n  const r = Math.round(rgba[0] / 255 * 100);\n  const g = Math.round(rgba[1] / 255 * 100);\n  const b = Math.round(rgba[2] / 255 * 100);\n  return rgba.length < 4 || rgba[3] === 1 ? \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\" : \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + rgba[3] + \")\";\n};\ncs.to.hsl = function(...hsla) {\n  return hsla.length < 4 || hsla[3] === 1 ? \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\" : \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \" + hsla[3] + \")\";\n};\ncs.to.hwb = function(...hwba) {\n  let a = \"\";\n  if (hwba.length >= 4 && hwba[3] !== 1) {\n    a = \", \" + hwba[3];\n  }\n  return \"hwb(\" + hwba[0] + \", \" + hwba[1] + \"%, \" + hwba[2] + \"%\" + a + \")\";\n};\ncs.to.keyword = function(...rgb) {\n  return reverseNames[rgb.slice(0, 3)];\n};\nfunction clamp(number_, min, max) {\n  return Math.min(Math.max(min, number_), max);\n}\nfunction hexDouble(number_) {\n  const string_ = Math.round(number_).toString(16).toUpperCase();\n  return string_.length < 2 ? \"0\" + string_ : string_;\n}\nvar color_string_default = cs;\n\n// node_modules/color-convert/conversions.js\nvar reverseKeywords = {};\nfor (const key of Object.keys(color_name_default)) {\n  reverseKeywords[color_name_default[key]] = key;\n}\nvar convert = {\n  rgb: { channels: 3, labels: \"rgb\" },\n  hsl: { channels: 3, labels: \"hsl\" },\n  hsv: { channels: 3, labels: \"hsv\" },\n  hwb: { channels: 3, labels: \"hwb\" },\n  cmyk: { channels: 4, labels: \"cmyk\" },\n  xyz: { channels: 3, labels: \"xyz\" },\n  lab: { channels: 3, labels: \"lab\" },\n  oklab: { channels: 3, labels: [\"okl\", \"oka\", \"okb\"] },\n  lch: { channels: 3, labels: \"lch\" },\n  oklch: { channels: 3, labels: [\"okl\", \"okc\", \"okh\"] },\n  hex: { channels: 1, labels: [\"hex\"] },\n  keyword: { channels: 1, labels: [\"keyword\"] },\n  ansi16: { channels: 1, labels: [\"ansi16\"] },\n  ansi256: { channels: 1, labels: [\"ansi256\"] },\n  hcg: { channels: 3, labels: [\"h\", \"c\", \"g\"] },\n  apple: { channels: 3, labels: [\"r16\", \"g16\", \"b16\"] },\n  gray: { channels: 1, labels: [\"gray\"] }\n};\nvar conversions_default = convert;\nvar LAB_FT = (6 / 29) ** 3;\nfunction srgbNonlinearTransform(c) {\n  const cc = c > 31308e-7 ? 1.055 * c ** (1 / 2.4) - 0.055 : c * 12.92;\n  return Math.min(Math.max(0, cc), 1);\n}\nfunction srgbNonlinearTransformInv(c) {\n  return c > 0.04045 ? ((c + 0.055) / 1.055) ** 2.4 : c / 12.92;\n}\nfor (const model of Object.keys(convert)) {\n  if (!(\"channels\" in convert[model])) {\n    throw new Error(\"missing channels property: \" + model);\n  }\n  if (!(\"labels\" in convert[model])) {\n    throw new Error(\"missing channel labels property: \" + model);\n  }\n  if (convert[model].labels.length !== convert[model].channels) {\n    throw new Error(\"channel and label counts mismatch: \" + model);\n  }\n  const { channels, labels } = convert[model];\n  delete convert[model].channels;\n  delete convert[model].labels;\n  Object.defineProperty(convert[model], \"channels\", { value: channels });\n  Object.defineProperty(convert[model], \"labels\", { value: labels });\n}\nconvert.rgb.hsl = function(rgb) {\n  const r = rgb[0] / 255;\n  const g = rgb[1] / 255;\n  const b = rgb[2] / 255;\n  const min = Math.min(r, g, b);\n  const max = Math.max(r, g, b);\n  const delta = max - min;\n  let h;\n  let s;\n  switch (max) {\n    case min: {\n      h = 0;\n      break;\n    }\n    case r: {\n      h = (g - b) / delta;\n      break;\n    }\n    case g: {\n      h = 2 + (b - r) / delta;\n      break;\n    }\n    case b: {\n      h = 4 + (r - g) / delta;\n      break;\n    }\n  }\n  h = Math.min(h * 60, 360);\n  if (h < 0) {\n    h += 360;\n  }\n  const l = (min + max) / 2;\n  if (max === min) {\n    s = 0;\n  } else if (l <= 0.5) {\n    s = delta / (max + min);\n  } else {\n    s = delta / (2 - max - min);\n  }\n  return [h, s * 100, l * 100];\n};\nconvert.rgb.hsv = function(rgb) {\n  let rdif;\n  let gdif;\n  let bdif;\n  let h;\n  let s;\n  const r = rgb[0] / 255;\n  const g = rgb[1] / 255;\n  const b = rgb[2] / 255;\n  const v = Math.max(r, g, b);\n  const diff = v - Math.min(r, g, b);\n  const diffc = function(c) {\n    return (v - c) / 6 / diff + 1 / 2;\n  };\n  if (diff === 0) {\n    h = 0;\n    s = 0;\n  } else {\n    s = diff / v;\n    rdif = diffc(r);\n    gdif = diffc(g);\n    bdif = diffc(b);\n    switch (v) {\n      case r: {\n        h = bdif - gdif;\n        break;\n      }\n      case g: {\n        h = 1 / 3 + rdif - bdif;\n        break;\n      }\n      case b: {\n        h = 2 / 3 + gdif - rdif;\n        break;\n      }\n    }\n    if (h < 0) {\n      h += 1;\n    } else if (h > 1) {\n      h -= 1;\n    }\n  }\n  return [\n    h * 360,\n    s * 100,\n    v * 100\n  ];\n};\nconvert.rgb.hwb = function(rgb) {\n  const r = rgb[0];\n  const g = rgb[1];\n  let b = rgb[2];\n  const h = convert.rgb.hsl(rgb)[0];\n  const w = 1 / 255 * Math.min(r, Math.min(g, b));\n  b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n  return [h, w * 100, b * 100];\n};\nconvert.rgb.oklab = function(rgb) {\n  const r = srgbNonlinearTransformInv(rgb[0] / 255);\n  const g = srgbNonlinearTransformInv(rgb[1] / 255);\n  const b = srgbNonlinearTransformInv(rgb[2] / 255);\n  const lp = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);\n  const mp = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);\n  const sp = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);\n  const l = 0.2104542553 * lp + 0.793617785 * mp - 0.0040720468 * sp;\n  const aa = 1.9779984951 * lp - 2.428592205 * mp + 0.4505937099 * sp;\n  const bb = 0.0259040371 * lp + 0.7827717662 * mp - 0.808675766 * sp;\n  return [l * 100, aa * 100, bb * 100];\n};\nconvert.rgb.cmyk = function(rgb) {\n  const r = rgb[0] / 255;\n  const g = rgb[1] / 255;\n  const b = rgb[2] / 255;\n  const k = Math.min(1 - r, 1 - g, 1 - b);\n  const c = (1 - r - k) / (1 - k) || 0;\n  const m = (1 - g - k) / (1 - k) || 0;\n  const y = (1 - b - k) / (1 - k) || 0;\n  return [c * 100, m * 100, y * 100, k * 100];\n};\nfunction comparativeDistance(x, y) {\n  return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2;\n}\nconvert.rgb.keyword = function(rgb) {\n  const reversed = reverseKeywords[rgb];\n  if (reversed) {\n    return reversed;\n  }\n  let currentClosestDistance = Number.POSITIVE_INFINITY;\n  let currentClosestKeyword;\n  for (const keyword of Object.keys(color_name_default)) {\n    const value = color_name_default[keyword];\n    const distance = comparativeDistance(rgb, value);\n    if (distance < currentClosestDistance) {\n      currentClosestDistance = distance;\n      currentClosestKeyword = keyword;\n    }\n  }\n  return currentClosestKeyword;\n};\nconvert.keyword.rgb = function(keyword) {\n  return color_name_default[keyword];\n};\nconvert.rgb.xyz = function(rgb) {\n  const r = srgbNonlinearTransformInv(rgb[0] / 255);\n  const g = srgbNonlinearTransformInv(rgb[1] / 255);\n  const b = srgbNonlinearTransformInv(rgb[2] / 255);\n  const x = r * 0.4124564 + g * 0.3575761 + b * 0.1804375;\n  const y = r * 0.2126729 + g * 0.7151522 + b * 0.072175;\n  const z = r * 0.0193339 + g * 0.119192 + b * 0.9503041;\n  return [x * 100, y * 100, z * 100];\n};\nconvert.rgb.lab = function(rgb) {\n  const xyz = convert.rgb.xyz(rgb);\n  let x = xyz[0];\n  let y = xyz[1];\n  let z = xyz[2];\n  x /= 95.047;\n  y /= 100;\n  z /= 108.883;\n  x = x > LAB_FT ? x ** (1 / 3) : 7.787 * x + 16 / 116;\n  y = y > LAB_FT ? y ** (1 / 3) : 7.787 * y + 16 / 116;\n  z = z > LAB_FT ? z ** (1 / 3) : 7.787 * z + 16 / 116;\n  const l = 116 * y - 16;\n  const a = 500 * (x - y);\n  const b = 200 * (y - z);\n  return [l, a, b];\n};\nconvert.hsl.rgb = function(hsl) {\n  const h = hsl[0] / 360;\n  const s = hsl[1] / 100;\n  const l = hsl[2] / 100;\n  let t3;\n  let value;\n  if (s === 0) {\n    value = l * 255;\n    return [value, value, value];\n  }\n  const t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n  const t1 = 2 * l - t2;\n  const rgb = [0, 0, 0];\n  for (let i = 0; i < 3; i++) {\n    t3 = h + 1 / 3 * -(i - 1);\n    if (t3 < 0) {\n      t3++;\n    }\n    if (t3 > 1) {\n      t3--;\n    }\n    if (6 * t3 < 1) {\n      value = t1 + (t2 - t1) * 6 * t3;\n    } else if (2 * t3 < 1) {\n      value = t2;\n    } else if (3 * t3 < 2) {\n      value = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n    } else {\n      value = t1;\n    }\n    rgb[i] = value * 255;\n  }\n  return rgb;\n};\nconvert.hsl.hsv = function(hsl) {\n  const h = hsl[0];\n  let s = hsl[1] / 100;\n  let l = hsl[2] / 100;\n  let smin = s;\n  const lmin = Math.max(l, 0.01);\n  l *= 2;\n  s *= l <= 1 ? l : 2 - l;\n  smin *= lmin <= 1 ? lmin : 2 - lmin;\n  const v = (l + s) / 2;\n  const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);\n  return [h, sv * 100, v * 100];\n};\nconvert.hsv.rgb = function(hsv) {\n  const h = hsv[0] / 60;\n  const s = hsv[1] / 100;\n  let v = hsv[2] / 100;\n  const hi = Math.floor(h) % 6;\n  const f = h - Math.floor(h);\n  const p = 255 * v * (1 - s);\n  const q = 255 * v * (1 - s * f);\n  const t = 255 * v * (1 - s * (1 - f));\n  v *= 255;\n  switch (hi) {\n    case 0: {\n      return [v, t, p];\n    }\n    case 1: {\n      return [q, v, p];\n    }\n    case 2: {\n      return [p, v, t];\n    }\n    case 3: {\n      return [p, q, v];\n    }\n    case 4: {\n      return [t, p, v];\n    }\n    case 5: {\n      return [v, p, q];\n    }\n  }\n};\nconvert.hsv.hsl = function(hsv) {\n  const h = hsv[0];\n  const s = hsv[1] / 100;\n  const v = hsv[2] / 100;\n  const vmin = Math.max(v, 0.01);\n  let sl;\n  let l;\n  l = (2 - s) * v;\n  const lmin = (2 - s) * vmin;\n  sl = s * vmin;\n  sl /= lmin <= 1 ? lmin : 2 - lmin;\n  sl = sl || 0;\n  l /= 2;\n  return [h, sl * 100, l * 100];\n};\nconvert.hwb.rgb = function(hwb) {\n  const h = hwb[0] / 360;\n  let wh = hwb[1] / 100;\n  let bl = hwb[2] / 100;\n  const ratio = wh + bl;\n  let f;\n  if (ratio > 1) {\n    wh /= ratio;\n    bl /= ratio;\n  }\n  const i = Math.floor(6 * h);\n  const v = 1 - bl;\n  f = 6 * h - i;\n  if ((i & 1) !== 0) {\n    f = 1 - f;\n  }\n  const n = wh + f * (v - wh);\n  let r;\n  let g;\n  let b;\n  switch (i) {\n    default:\n    case 6:\n    case 0: {\n      r = v;\n      g = n;\n      b = wh;\n      break;\n    }\n    case 1: {\n      r = n;\n      g = v;\n      b = wh;\n      break;\n    }\n    case 2: {\n      r = wh;\n      g = v;\n      b = n;\n      break;\n    }\n    case 3: {\n      r = wh;\n      g = n;\n      b = v;\n      break;\n    }\n    case 4: {\n      r = n;\n      g = wh;\n      b = v;\n      break;\n    }\n    case 5: {\n      r = v;\n      g = wh;\n      b = n;\n      break;\n    }\n  }\n  return [r * 255, g * 255, b * 255];\n};\nconvert.cmyk.rgb = function(cmyk) {\n  const c = cmyk[0] / 100;\n  const m = cmyk[1] / 100;\n  const y = cmyk[2] / 100;\n  const k = cmyk[3] / 100;\n  const r = 1 - Math.min(1, c * (1 - k) + k);\n  const g = 1 - Math.min(1, m * (1 - k) + k);\n  const b = 1 - Math.min(1, y * (1 - k) + k);\n  return [r * 255, g * 255, b * 255];\n};\nconvert.xyz.rgb = function(xyz) {\n  const x = xyz[0] / 100;\n  const y = xyz[1] / 100;\n  const z = xyz[2] / 100;\n  let r;\n  let g;\n  let b;\n  r = x * 3.2404542 + y * -1.5371385 + z * -0.4985314;\n  g = x * -0.969266 + y * 1.8760108 + z * 0.041556;\n  b = x * 0.0556434 + y * -0.2040259 + z * 1.0572252;\n  r = srgbNonlinearTransform(r);\n  g = srgbNonlinearTransform(g);\n  b = srgbNonlinearTransform(b);\n  return [r * 255, g * 255, b * 255];\n};\nconvert.xyz.lab = function(xyz) {\n  let x = xyz[0];\n  let y = xyz[1];\n  let z = xyz[2];\n  x /= 95.047;\n  y /= 100;\n  z /= 108.883;\n  x = x > LAB_FT ? x ** (1 / 3) : 7.787 * x + 16 / 116;\n  y = y > LAB_FT ? y ** (1 / 3) : 7.787 * y + 16 / 116;\n  z = z > LAB_FT ? z ** (1 / 3) : 7.787 * z + 16 / 116;\n  const l = 116 * y - 16;\n  const a = 500 * (x - y);\n  const b = 200 * (y - z);\n  return [l, a, b];\n};\nconvert.xyz.oklab = function(xyz) {\n  const x = xyz[0] / 100;\n  const y = xyz[1] / 100;\n  const z = xyz[2] / 100;\n  const lp = Math.cbrt(0.8189330101 * x + 0.3618667424 * y - 0.1288597137 * z);\n  const mp = Math.cbrt(0.0329845436 * x + 0.9293118715 * y + 0.0361456387 * z);\n  const sp = Math.cbrt(0.0482003018 * x + 0.2643662691 * y + 0.633851707 * z);\n  const l = 0.2104542553 * lp + 0.793617785 * mp - 0.0040720468 * sp;\n  const a = 1.9779984951 * lp - 2.428592205 * mp + 0.4505937099 * sp;\n  const b = 0.0259040371 * lp + 0.7827717662 * mp - 0.808675766 * sp;\n  return [l * 100, a * 100, b * 100];\n};\nconvert.oklab.oklch = function(oklab) {\n  return convert.lab.lch(oklab);\n};\nconvert.oklab.xyz = function(oklab) {\n  const ll = oklab[0] / 100;\n  const a = oklab[1] / 100;\n  const b = oklab[2] / 100;\n  const l = (0.999999998 * ll + 0.396337792 * a + 0.215803758 * b) ** 3;\n  const m = (1.000000008 * ll - 0.105561342 * a - 0.063854175 * b) ** 3;\n  const s = (1.000000055 * ll - 0.089484182 * a - 1.291485538 * b) ** 3;\n  const x = 1.227013851 * l - 0.55779998 * m + 0.281256149 * s;\n  const y = -0.040580178 * l + 1.11225687 * m - 0.071676679 * s;\n  const z = -0.076381285 * l - 0.421481978 * m + 1.58616322 * s;\n  return [x * 100, y * 100, z * 100];\n};\nconvert.oklab.rgb = function(oklab) {\n  const ll = oklab[0] / 100;\n  const aa = oklab[1] / 100;\n  const bb = oklab[2] / 100;\n  const l = (ll + 0.3963377774 * aa + 0.2158037573 * bb) ** 3;\n  const m = (ll - 0.1055613458 * aa - 0.0638541728 * bb) ** 3;\n  const s = (ll - 0.0894841775 * aa - 1.291485548 * bb) ** 3;\n  const r = srgbNonlinearTransform(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s);\n  const g = srgbNonlinearTransform(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s);\n  const b = srgbNonlinearTransform(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s);\n  return [r * 255, g * 255, b * 255];\n};\nconvert.oklch.oklab = function(oklch) {\n  return convert.lch.lab(oklch);\n};\nconvert.lab.xyz = function(lab) {\n  const l = lab[0];\n  const a = lab[1];\n  const b = lab[2];\n  let x;\n  let y;\n  let z;\n  y = (l + 16) / 116;\n  x = a / 500 + y;\n  z = y - b / 200;\n  const y2 = y ** 3;\n  const x2 = x ** 3;\n  const z2 = z ** 3;\n  y = y2 > LAB_FT ? y2 : (y - 16 / 116) / 7.787;\n  x = x2 > LAB_FT ? x2 : (x - 16 / 116) / 7.787;\n  z = z2 > LAB_FT ? z2 : (z - 16 / 116) / 7.787;\n  x *= 95.047;\n  y *= 100;\n  z *= 108.883;\n  return [x, y, z];\n};\nconvert.lab.lch = function(lab) {\n  const l = lab[0];\n  const a = lab[1];\n  const b = lab[2];\n  let h;\n  const hr = Math.atan2(b, a);\n  h = hr * 360 / 2 / Math.PI;\n  if (h < 0) {\n    h += 360;\n  }\n  const c = Math.sqrt(a * a + b * b);\n  return [l, c, h];\n};\nconvert.lch.lab = function(lch) {\n  const l = lch[0];\n  const c = lch[1];\n  const h = lch[2];\n  const hr = h / 360 * 2 * Math.PI;\n  const a = c * Math.cos(hr);\n  const b = c * Math.sin(hr);\n  return [l, a, b];\n};\nconvert.rgb.ansi16 = function(args, saturation = null) {\n  const [r, g, b] = args;\n  let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation;\n  value = Math.round(value / 50);\n  if (value === 0) {\n    return 30;\n  }\n  let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));\n  if (value === 2) {\n    ansi += 60;\n  }\n  return ansi;\n};\nconvert.hsv.ansi16 = function(args) {\n  return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\nconvert.rgb.ansi256 = function(args) {\n  const r = args[0];\n  const g = args[1];\n  const b = args[2];\n  if (r >> 4 === g >> 4 && g >> 4 === b >> 4) {\n    if (r < 8) {\n      return 16;\n    }\n    if (r > 248) {\n      return 231;\n    }\n    return Math.round((r - 8) / 247 * 24) + 232;\n  }\n  const ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);\n  return ansi;\n};\nconvert.ansi16.rgb = function(args) {\n  args = args[0];\n  let color = args % 10;\n  if (color === 0 || color === 7) {\n    if (args > 50) {\n      color += 3.5;\n    }\n    color = color / 10.5 * 255;\n    return [color, color, color];\n  }\n  const mult = (Math.trunc(args > 50) + 1) * 0.5;\n  const r = (color & 1) * mult * 255;\n  const g = (color >> 1 & 1) * mult * 255;\n  const b = (color >> 2 & 1) * mult * 255;\n  return [r, g, b];\n};\nconvert.ansi256.rgb = function(args) {\n  args = args[0];\n  if (args >= 232) {\n    const c = (args - 232) * 10 + 8;\n    return [c, c, c];\n  }\n  args -= 16;\n  let rem;\n  const r = Math.floor(args / 36) / 5 * 255;\n  const g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n  const b = rem % 6 / 5 * 255;\n  return [r, g, b];\n};\nconvert.rgb.hex = function(args) {\n  const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255);\n  const string = integer.toString(16).toUpperCase();\n  return \"000000\".slice(string.length) + string;\n};\nconvert.hex.rgb = function(args) {\n  const match = args.toString(16).match(/[a-f\\d]{6}|[a-f\\d]{3}/i);\n  if (!match) {\n    return [0, 0, 0];\n  }\n  let colorString = match[0];\n  if (match[0].length === 3) {\n    colorString = [...colorString].map((char) => char + char).join(\"\");\n  }\n  const integer = Number.parseInt(colorString, 16);\n  const r = integer >> 16 & 255;\n  const g = integer >> 8 & 255;\n  const b = integer & 255;\n  return [r, g, b];\n};\nconvert.rgb.hcg = function(rgb) {\n  const r = rgb[0] / 255;\n  const g = rgb[1] / 255;\n  const b = rgb[2] / 255;\n  const max = Math.max(Math.max(r, g), b);\n  const min = Math.min(Math.min(r, g), b);\n  const chroma = max - min;\n  let hue;\n  const grayscale = chroma < 1 ? min / (1 - chroma) : 0;\n  if (chroma <= 0) {\n    hue = 0;\n  } else if (max === r) {\n    hue = (g - b) / chroma % 6;\n  } else if (max === g) {\n    hue = 2 + (b - r) / chroma;\n  } else {\n    hue = 4 + (r - g) / chroma;\n  }\n  hue /= 6;\n  hue %= 1;\n  return [hue * 360, chroma * 100, grayscale * 100];\n};\nconvert.hsl.hcg = function(hsl) {\n  const s = hsl[1] / 100;\n  const l = hsl[2] / 100;\n  const c = l < 0.5 ? 2 * s * l : 2 * s * (1 - l);\n  let f = 0;\n  if (c < 1) {\n    f = (l - 0.5 * c) / (1 - c);\n  }\n  return [hsl[0], c * 100, f * 100];\n};\nconvert.hsv.hcg = function(hsv) {\n  const s = hsv[1] / 100;\n  const v = hsv[2] / 100;\n  const c = s * v;\n  let f = 0;\n  if (c < 1) {\n    f = (v - c) / (1 - c);\n  }\n  return [hsv[0], c * 100, f * 100];\n};\nconvert.hcg.rgb = function(hcg) {\n  const h = hcg[0] / 360;\n  const c = hcg[1] / 100;\n  const g = hcg[2] / 100;\n  if (c === 0) {\n    return [g * 255, g * 255, g * 255];\n  }\n  const pure = [0, 0, 0];\n  const hi = h % 1 * 6;\n  const v = hi % 1;\n  const w = 1 - v;\n  let mg = 0;\n  switch (Math.floor(hi)) {\n    case 0: {\n      pure[0] = 1;\n      pure[1] = v;\n      pure[2] = 0;\n      break;\n    }\n    case 1: {\n      pure[0] = w;\n      pure[1] = 1;\n      pure[2] = 0;\n      break;\n    }\n    case 2: {\n      pure[0] = 0;\n      pure[1] = 1;\n      pure[2] = v;\n      break;\n    }\n    case 3: {\n      pure[0] = 0;\n      pure[1] = w;\n      pure[2] = 1;\n      break;\n    }\n    case 4: {\n      pure[0] = v;\n      pure[1] = 0;\n      pure[2] = 1;\n      break;\n    }\n    default: {\n      pure[0] = 1;\n      pure[1] = 0;\n      pure[2] = w;\n    }\n  }\n  mg = (1 - c) * g;\n  return [\n    (c * pure[0] + mg) * 255,\n    (c * pure[1] + mg) * 255,\n    (c * pure[2] + mg) * 255\n  ];\n};\nconvert.hcg.hsv = function(hcg) {\n  const c = hcg[1] / 100;\n  const g = hcg[2] / 100;\n  const v = c + g * (1 - c);\n  let f = 0;\n  if (v > 0) {\n    f = c / v;\n  }\n  return [hcg[0], f * 100, v * 100];\n};\nconvert.hcg.hsl = function(hcg) {\n  const c = hcg[1] / 100;\n  const g = hcg[2] / 100;\n  const l = g * (1 - c) + 0.5 * c;\n  let s = 0;\n  if (l > 0 && l < 0.5) {\n    s = c / (2 * l);\n  } else if (l >= 0.5 && l < 1) {\n    s = c / (2 * (1 - l));\n  }\n  return [hcg[0], s * 100, l * 100];\n};\nconvert.hcg.hwb = function(hcg) {\n  const c = hcg[1] / 100;\n  const g = hcg[2] / 100;\n  const v = c + g * (1 - c);\n  return [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\nconvert.hwb.hcg = function(hwb) {\n  const w = hwb[1] / 100;\n  const b = hwb[2] / 100;\n  const v = 1 - b;\n  const c = v - w;\n  let g = 0;\n  if (c < 1) {\n    g = (v - c) / (1 - c);\n  }\n  return [hwb[0], c * 100, g * 100];\n};\nconvert.apple.rgb = function(apple) {\n  return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];\n};\nconvert.rgb.apple = function(rgb) {\n  return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];\n};\nconvert.gray.rgb = function(args) {\n  return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\nconvert.gray.hsl = function(args) {\n  return [0, 0, args[0]];\n};\nconvert.gray.hsv = convert.gray.hsl;\nconvert.gray.hwb = function(gray) {\n  return [0, 100, gray[0]];\n};\nconvert.gray.cmyk = function(gray) {\n  return [0, 0, 0, gray[0]];\n};\nconvert.gray.lab = function(gray) {\n  return [gray[0], 0, 0];\n};\nconvert.gray.hex = function(gray) {\n  const value = Math.round(gray[0] / 100 * 255) & 255;\n  const integer = (value << 16) + (value << 8) + value;\n  const string = integer.toString(16).toUpperCase();\n  return \"000000\".slice(string.length) + string;\n};\nconvert.rgb.gray = function(rgb) {\n  const value = (rgb[0] + rgb[1] + rgb[2]) / 3;\n  return [value / 255 * 100];\n};\n\n// node_modules/color-convert/route.js\nfunction buildGraph() {\n  const graph = {};\n  const models2 = Object.keys(conversions_default);\n  for (let { length } = models2, i = 0; i < length; i++) {\n    graph[models2[i]] = {\n      // http://jsperf.com/1-vs-infinity\n      // micro-opt, but this is simple.\n      distance: -1,\n      parent: null\n    };\n  }\n  return graph;\n}\nfunction deriveBFS(fromModel) {\n  const graph = buildGraph();\n  const queue = [fromModel];\n  graph[fromModel].distance = 0;\n  while (queue.length > 0) {\n    const current = queue.pop();\n    const adjacents = Object.keys(conversions_default[current]);\n    for (let { length } = adjacents, i = 0; i < length; i++) {\n      const adjacent = adjacents[i];\n      const node = graph[adjacent];\n      if (node.distance === -1) {\n        node.distance = graph[current].distance + 1;\n        node.parent = current;\n        queue.unshift(adjacent);\n      }\n    }\n  }\n  return graph;\n}\nfunction link(from, to) {\n  return function(args) {\n    return to(from(args));\n  };\n}\nfunction wrapConversion(toModel, graph) {\n  const path = [graph[toModel].parent, toModel];\n  let fn = conversions_default[graph[toModel].parent][toModel];\n  let cur = graph[toModel].parent;\n  while (graph[cur].parent) {\n    path.unshift(graph[cur].parent);\n    fn = link(conversions_default[graph[cur].parent][cur], fn);\n    cur = graph[cur].parent;\n  }\n  fn.conversion = path;\n  return fn;\n}\nfunction route(fromModel) {\n  const graph = deriveBFS(fromModel);\n  const conversion = {};\n  const models2 = Object.keys(graph);\n  for (let { length } = models2, i = 0; i < length; i++) {\n    const toModel = models2[i];\n    const node = graph[toModel];\n    if (node.parent === null) {\n      continue;\n    }\n    conversion[toModel] = wrapConversion(toModel, graph);\n  }\n  return conversion;\n}\nvar route_default = route;\n\n// node_modules/color-convert/index.js\nvar convert2 = {};\nvar models = Object.keys(conversions_default);\nfunction wrapRaw(fn) {\n  const wrappedFn = function(...args) {\n    const arg0 = args[0];\n    if (arg0 === void 0 || arg0 === null) {\n      return arg0;\n    }\n    if (arg0.length > 1) {\n      args = arg0;\n    }\n    return fn(args);\n  };\n  if (\"conversion\" in fn) {\n    wrappedFn.conversion = fn.conversion;\n  }\n  return wrappedFn;\n}\nfunction wrapRounded(fn) {\n  const wrappedFn = function(...args) {\n    const arg0 = args[0];\n    if (arg0 === void 0 || arg0 === null) {\n      return arg0;\n    }\n    if (arg0.length > 1) {\n      args = arg0;\n    }\n    const result = fn(args);\n    if (typeof result === \"object\") {\n      for (let { length } = result, i = 0; i < length; i++) {\n        result[i] = Math.round(result[i]);\n      }\n    }\n    return result;\n  };\n  if (\"conversion\" in fn) {\n    wrappedFn.conversion = fn.conversion;\n  }\n  return wrappedFn;\n}\nfor (const fromModel of models) {\n  convert2[fromModel] = {};\n  Object.defineProperty(convert2[fromModel], \"channels\", { value: conversions_default[fromModel].channels });\n  Object.defineProperty(convert2[fromModel], \"labels\", { value: conversions_default[fromModel].labels });\n  const routes = route_default(fromModel);\n  const routeModels = Object.keys(routes);\n  for (const toModel of routeModels) {\n    const fn = routes[toModel];\n    convert2[fromModel][toModel] = wrapRounded(fn);\n    convert2[fromModel][toModel].raw = wrapRaw(fn);\n  }\n}\nvar color_convert_default = convert2;\n\n// node_modules/color/index.js\nvar skippedModels = [\n  // To be honest, I don't really feel like keyword belongs in color convert, but eh.\n  \"keyword\",\n  // Gray conflicts with some method names, and has its own method defined.\n  \"gray\",\n  // Shouldn't really be in color-convert either...\n  \"hex\"\n];\nvar hashedModelKeys = {};\nfor (const model of Object.keys(color_convert_default)) {\n  hashedModelKeys[[...color_convert_default[model].labels].sort().join(\"\")] = model;\n}\nvar limiters = {};\nfunction Color(object, model) {\n  if (!(this instanceof Color)) {\n    return new Color(object, model);\n  }\n  if (model && model in skippedModels) {\n    model = null;\n  }\n  if (model && !(model in color_convert_default)) {\n    throw new Error(\"Unknown model: \" + model);\n  }\n  let i;\n  let channels;\n  if (object == null) {\n    this.model = \"rgb\";\n    this.color = [0, 0, 0];\n    this.valpha = 1;\n  } else if (object instanceof Color) {\n    this.model = object.model;\n    this.color = [...object.color];\n    this.valpha = object.valpha;\n  } else if (typeof object === \"string\") {\n    const result = color_string_default.get(object);\n    if (result === null) {\n      throw new Error(\"Unable to parse color from string: \" + object);\n    }\n    this.model = result.model;\n    channels = color_convert_default[this.model].channels;\n    this.color = result.value.slice(0, channels);\n    this.valpha = typeof result.value[channels] === \"number\" ? result.value[channels] : 1;\n  } else if (object.length > 0) {\n    this.model = model || \"rgb\";\n    channels = color_convert_default[this.model].channels;\n    const newArray = Array.prototype.slice.call(object, 0, channels);\n    this.color = zeroArray(newArray, channels);\n    this.valpha = typeof object[channels] === \"number\" ? object[channels] : 1;\n  } else if (typeof object === \"number\") {\n    this.model = \"rgb\";\n    this.color = [\n      object >> 16 & 255,\n      object >> 8 & 255,\n      object & 255\n    ];\n    this.valpha = 1;\n  } else {\n    this.valpha = 1;\n    const keys = Object.keys(object);\n    if (\"alpha\" in object) {\n      keys.splice(keys.indexOf(\"alpha\"), 1);\n      this.valpha = typeof object.alpha === \"number\" ? object.alpha : 0;\n    }\n    const hashedKeys = keys.sort().join(\"\");\n    if (!(hashedKeys in hashedModelKeys)) {\n      throw new Error(\"Unable to parse color from object: \" + JSON.stringify(object));\n    }\n    this.model = hashedModelKeys[hashedKeys];\n    const { labels } = color_convert_default[this.model];\n    const color = [];\n    for (i = 0; i < labels.length; i++) {\n      color.push(object[labels[i]]);\n    }\n    this.color = zeroArray(color);\n  }\n  if (limiters[this.model]) {\n    channels = color_convert_default[this.model].channels;\n    for (i = 0; i < channels; i++) {\n      const limit = limiters[this.model][i];\n      if (limit) {\n        this.color[i] = limit(this.color[i]);\n      }\n    }\n  }\n  this.valpha = Math.max(0, Math.min(1, this.valpha));\n  if (Object.freeze) {\n    Object.freeze(this);\n  }\n}\nColor.prototype = {\n  toString() {\n    return this.string();\n  },\n  toJSON() {\n    return this[this.model]();\n  },\n  string(places) {\n    let self = this.model in color_string_default.to ? this : this.rgb();\n    self = self.round(typeof places === \"number\" ? places : 1);\n    const arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n    return color_string_default.to[self.model](...arguments_);\n  },\n  percentString(places) {\n    const self = this.rgb().round(typeof places === \"number\" ? places : 1);\n    const arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n    return color_string_default.to.rgb.percent(...arguments_);\n  },\n  array() {\n    return this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n  },\n  object() {\n    const result = {};\n    const { channels } = color_convert_default[this.model];\n    const { labels } = color_convert_default[this.model];\n    for (let i = 0; i < channels; i++) {\n      result[labels[i]] = this.color[i];\n    }\n    if (this.valpha !== 1) {\n      result.alpha = this.valpha;\n    }\n    return result;\n  },\n  unitArray() {\n    const rgb = this.rgb().color;\n    rgb[0] /= 255;\n    rgb[1] /= 255;\n    rgb[2] /= 255;\n    if (this.valpha !== 1) {\n      rgb.push(this.valpha);\n    }\n    return rgb;\n  },\n  unitObject() {\n    const rgb = this.rgb().object();\n    rgb.r /= 255;\n    rgb.g /= 255;\n    rgb.b /= 255;\n    if (this.valpha !== 1) {\n      rgb.alpha = this.valpha;\n    }\n    return rgb;\n  },\n  round(places) {\n    places = Math.max(places || 0, 0);\n    return new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n  },\n  alpha(value) {\n    if (value !== void 0) {\n      return new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n    }\n    return this.valpha;\n  },\n  // Rgb\n  red: getset(\"rgb\", 0, maxfn(255)),\n  green: getset(\"rgb\", 1, maxfn(255)),\n  blue: getset(\"rgb\", 2, maxfn(255)),\n  hue: getset([\"hsl\", \"hsv\", \"hsl\", \"hwb\", \"hcg\"], 0, (value) => (value % 360 + 360) % 360),\n  saturationl: getset(\"hsl\", 1, maxfn(100)),\n  lightness: getset(\"hsl\", 2, maxfn(100)),\n  saturationv: getset(\"hsv\", 1, maxfn(100)),\n  value: getset(\"hsv\", 2, maxfn(100)),\n  chroma: getset(\"hcg\", 1, maxfn(100)),\n  gray: getset(\"hcg\", 2, maxfn(100)),\n  white: getset(\"hwb\", 1, maxfn(100)),\n  wblack: getset(\"hwb\", 2, maxfn(100)),\n  cyan: getset(\"cmyk\", 0, maxfn(100)),\n  magenta: getset(\"cmyk\", 1, maxfn(100)),\n  yellow: getset(\"cmyk\", 2, maxfn(100)),\n  black: getset(\"cmyk\", 3, maxfn(100)),\n  x: getset(\"xyz\", 0, maxfn(95.047)),\n  y: getset(\"xyz\", 1, maxfn(100)),\n  z: getset(\"xyz\", 2, maxfn(108.833)),\n  l: getset(\"lab\", 0, maxfn(100)),\n  a: getset(\"lab\", 1),\n  b: getset(\"lab\", 2),\n  keyword(value) {\n    if (value !== void 0) {\n      return new Color(value);\n    }\n    return color_convert_default[this.model].keyword(this.color);\n  },\n  hex(value) {\n    if (value !== void 0) {\n      return new Color(value);\n    }\n    return color_string_default.to.hex(...this.rgb().round().color);\n  },\n  hexa(value) {\n    if (value !== void 0) {\n      return new Color(value);\n    }\n    const rgbArray = this.rgb().round().color;\n    let alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n    if (alphaHex.length === 1) {\n      alphaHex = \"0\" + alphaHex;\n    }\n    return color_string_default.to.hex(...rgbArray) + alphaHex;\n  },\n  rgbNumber() {\n    const rgb = this.rgb().color;\n    return (rgb[0] & 255) << 16 | (rgb[1] & 255) << 8 | rgb[2] & 255;\n  },\n  luminosity() {\n    const rgb = this.rgb().color;\n    const lum = [];\n    for (const [i, element] of rgb.entries()) {\n      const chan = element / 255;\n      lum[i] = chan <= 0.04045 ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n    }\n    return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n  },\n  contrast(color2) {\n    const lum1 = this.luminosity();\n    const lum2 = color2.luminosity();\n    if (lum1 > lum2) {\n      return (lum1 + 0.05) / (lum2 + 0.05);\n    }\n    return (lum2 + 0.05) / (lum1 + 0.05);\n  },\n  level(color2) {\n    const contrastRatio = this.contrast(color2);\n    if (contrastRatio >= 7) {\n      return \"AAA\";\n    }\n    return contrastRatio >= 4.5 ? \"AA\" : \"\";\n  },\n  isDark() {\n    const rgb = this.rgb().color;\n    const yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 1e4;\n    return yiq < 128;\n  },\n  isLight() {\n    return !this.isDark();\n  },\n  negate() {\n    const rgb = this.rgb();\n    for (let i = 0; i < 3; i++) {\n      rgb.color[i] = 255 - rgb.color[i];\n    }\n    return rgb;\n  },\n  lighten(ratio) {\n    const hsl = this.hsl();\n    hsl.color[2] += hsl.color[2] * ratio;\n    return hsl;\n  },\n  darken(ratio) {\n    const hsl = this.hsl();\n    hsl.color[2] -= hsl.color[2] * ratio;\n    return hsl;\n  },\n  saturate(ratio) {\n    const hsl = this.hsl();\n    hsl.color[1] += hsl.color[1] * ratio;\n    return hsl;\n  },\n  desaturate(ratio) {\n    const hsl = this.hsl();\n    hsl.color[1] -= hsl.color[1] * ratio;\n    return hsl;\n  },\n  whiten(ratio) {\n    const hwb = this.hwb();\n    hwb.color[1] += hwb.color[1] * ratio;\n    return hwb;\n  },\n  blacken(ratio) {\n    const hwb = this.hwb();\n    hwb.color[2] += hwb.color[2] * ratio;\n    return hwb;\n  },\n  grayscale() {\n    const rgb = this.rgb().color;\n    const value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n    return Color.rgb(value, value, value);\n  },\n  fade(ratio) {\n    return this.alpha(this.valpha - this.valpha * ratio);\n  },\n  opaquer(ratio) {\n    return this.alpha(this.valpha + this.valpha * ratio);\n  },\n  rotate(degrees) {\n    const hsl = this.hsl();\n    let hue = hsl.color[0];\n    hue = (hue + degrees) % 360;\n    hue = hue < 0 ? 360 + hue : hue;\n    hsl.color[0] = hue;\n    return hsl;\n  },\n  mix(mixinColor, weight) {\n    if (!mixinColor || !mixinColor.rgb) {\n      throw new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n    }\n    const color1 = mixinColor.rgb();\n    const color2 = this.rgb();\n    const p = weight === void 0 ? 0.5 : weight;\n    const w = 2 * p - 1;\n    const a = color1.alpha() - color2.alpha();\n    const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2;\n    const w2 = 1 - w1;\n    return Color.rgb(\n      w1 * color1.red() + w2 * color2.red(),\n      w1 * color1.green() + w2 * color2.green(),\n      w1 * color1.blue() + w2 * color2.blue(),\n      color1.alpha() * p + color2.alpha() * (1 - p)\n    );\n  }\n};\nfor (const model of Object.keys(color_convert_default)) {\n  if (skippedModels.includes(model)) {\n    continue;\n  }\n  const { channels } = color_convert_default[model];\n  Color.prototype[model] = function(...arguments_) {\n    if (this.model === model) {\n      return new Color(this);\n    }\n    if (arguments_.length > 0) {\n      return new Color(arguments_, model);\n    }\n    return new Color([...assertArray(color_convert_default[this.model][model].raw(this.color)), this.valpha], model);\n  };\n  Color[model] = function(...arguments_) {\n    let color = arguments_[0];\n    if (typeof color === \"number\") {\n      color = zeroArray(arguments_, channels);\n    }\n    return new Color(color, model);\n  };\n}\nfunction roundTo(number, places) {\n  return Number(number.toFixed(places));\n}\nfunction roundToPlace(places) {\n  return function(number) {\n    return roundTo(number, places);\n  };\n}\nfunction getset(model, channel, modifier) {\n  model = Array.isArray(model) ? model : [model];\n  for (const m of model) {\n    (limiters[m] ||= [])[channel] = modifier;\n  }\n  model = model[0];\n  return function(value) {\n    let result;\n    if (value !== void 0) {\n      if (modifier) {\n        value = modifier(value);\n      }\n      result = this[model]();\n      result.color[channel] = value;\n      return result;\n    }\n    result = this[model]().color[channel];\n    if (modifier) {\n      result = modifier(result);\n    }\n    return result;\n  };\n}\nfunction maxfn(max) {\n  return function(v) {\n    return Math.max(0, Math.min(max, v));\n  };\n}\nfunction assertArray(value) {\n  return Array.isArray(value) ? value : [value];\n}\nfunction zeroArray(array, length) {\n  for (let i = 0; i < length; i++) {\n    if (typeof array[i] !== \"number\") {\n      array[i] = 0;\n    }\n  }\n  return array;\n}\nvar index_default = Color;\n","module.exports = require(\"./color.cjs\").default;\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\nconst color = require('@img/colour');\nconst is = require('./is');\n\n/**\n * Colourspaces.\n * @private\n */\nconst colourspace = {\n  multiband: 'multiband',\n  'b-w': 'b-w',\n  bw: 'b-w',\n  cmyk: 'cmyk',\n  srgb: 'srgb'\n};\n\n/**\n * Tint the image using the provided colour.\n * An alpha channel may be present and will be unchanged by the operation.\n *\n * @example\n * const output = await sharp(input)\n *   .tint({ r: 255, g: 240, b: 16 })\n *   .toBuffer();\n *\n * @param {string|Object} tint - Parsed by the [color](https://www.npmjs.org/package/color) module.\n * @returns {Sharp}\n * @throws {Error} Invalid parameter\n */\nfunction tint (tint) {\n  this._setBackgroundColourOption('tint', tint);\n  return this;\n}\n\n/**\n * Convert to 8-bit greyscale; 256 shades of grey.\n * This is a linear operation. If the input image is in a non-linear colour space such as sRGB, use `gamma()` with `greyscale()` for the best results.\n * By default the output image will be web-friendly sRGB and contain three (identical) colour channels.\n * This may be overridden by other sharp operations such as `toColourspace('b-w')`,\n * which will produce an output image containing one colour channel.\n * An alpha channel may be present, and will be unchanged by the operation.\n *\n * @example\n * const output = await sharp(input).greyscale().toBuffer();\n *\n * @param {Boolean} [greyscale=true]\n * @returns {Sharp}\n */\nfunction greyscale (greyscale) {\n  this.options.greyscale = is.bool(greyscale) ? greyscale : true;\n  return this;\n}\n\n/**\n * Alternative spelling of `greyscale`.\n * @param {Boolean} [grayscale=true]\n * @returns {Sharp}\n */\nfunction grayscale (grayscale) {\n  return this.greyscale(grayscale);\n}\n\n/**\n * Set the pipeline colourspace.\n *\n * The input image will be converted to the provided colourspace at the start of the pipeline.\n * All operations will use this colourspace before converting to the output colourspace,\n * as defined by {@link #tocolourspace toColourspace}.\n *\n * @since 0.29.0\n *\n * @example\n * // Run pipeline in 16 bits per channel RGB while converting final result to 8 bits per channel sRGB.\n * await sharp(input)\n *  .pipelineColourspace('rgb16')\n *  .toColourspace('srgb')\n *  .toFile('16bpc-pipeline-to-8bpc-output.png')\n *\n * @param {string} [colourspace] - pipeline colourspace e.g. `rgb16`, `scrgb`, `lab`, `grey16` [...](https://www.libvips.org/API/current/enum.Interpretation.html)\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction pipelineColourspace (colourspace) {\n  if (!is.string(colourspace)) {\n    throw is.invalidParameterError('colourspace', 'string', colourspace);\n  }\n  this.options.colourspacePipeline = colourspace;\n  return this;\n}\n\n/**\n * Alternative spelling of `pipelineColourspace`.\n * @param {string} [colorspace] - pipeline colorspace.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction pipelineColorspace (colorspace) {\n  return this.pipelineColourspace(colorspace);\n}\n\n/**\n * Set the output colourspace.\n * By default output image will be web-friendly sRGB, with additional channels interpreted as alpha channels.\n *\n * @example\n * // Output 16 bits per pixel RGB\n * await sharp(input)\n *  .toColourspace('rgb16')\n *  .toFile('16-bpp.png')\n *\n * @param {string} [colourspace] - output colourspace e.g. `srgb`, `rgb`, `cmyk`, `lab`, `b-w` [...](https://www.libvips.org/API/current/enum.Interpretation.html)\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction toColourspace (colourspace) {\n  if (!is.string(colourspace)) {\n    throw is.invalidParameterError('colourspace', 'string', colourspace);\n  }\n  this.options.colourspace = colourspace;\n  return this;\n}\n\n/**\n * Alternative spelling of `toColourspace`.\n * @param {string} [colorspace] - output colorspace.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction toColorspace (colorspace) {\n  return this.toColourspace(colorspace);\n}\n\n/**\n * Create a RGBA colour array from a given value.\n * @private\n * @param {string|Object} value\n * @throws {Error} Invalid value\n */\nfunction _getBackgroundColourOption (value) {\n  if (\n    is.object(value) ||\n    (is.string(value) && value.length >= 3 && value.length <= 200)\n  ) {\n    const colour = color(value);\n    return [\n      colour.red(),\n      colour.green(),\n      colour.blue(),\n      Math.round(colour.alpha() * 255)\n    ];\n  } else {\n    throw is.invalidParameterError('background', 'object or string', value);\n  }\n}\n\n/**\n * Update a colour attribute of the this.options Object.\n * @private\n * @param {string} key\n * @param {string|Object} value\n * @throws {Error} Invalid value\n */\nfunction _setBackgroundColourOption (key, value) {\n  if (is.defined(value)) {\n    this.options[key] = _getBackgroundColourOption(value);\n  }\n}\n\n/**\n * Decorate the Sharp prototype with colour-related functions.\n * @module Sharp\n * @private\n */\nmodule.exports = (Sharp) => {\n  Object.assign(Sharp.prototype, {\n    // Public\n    tint,\n    greyscale,\n    grayscale,\n    pipelineColourspace,\n    pipelineColorspace,\n    toColourspace,\n    toColorspace,\n    // Private\n    _getBackgroundColourOption,\n    _setBackgroundColourOption\n  });\n  // Class attributes\n  Sharp.colourspace = colourspace;\n  Sharp.colorspace = colourspace;\n};\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\nconst is = require('./is');\n\n/**\n * Boolean operations for bandbool.\n * @private\n */\nconst bool = {\n  and: 'and',\n  or: 'or',\n  eor: 'eor'\n};\n\n/**\n * Remove alpha channels, if any. This is a no-op if the image does not have an alpha channel.\n *\n * See also {@link /api-operation/#flatten flatten}.\n *\n * @example\n * sharp('rgba.png')\n *   .removeAlpha()\n *   .toFile('rgb.png', function(err, info) {\n *     // rgb.png is a 3 channel image without an alpha channel\n *   });\n *\n * @returns {Sharp}\n */\nfunction removeAlpha () {\n  this.options.removeAlpha = true;\n  return this;\n}\n\n/**\n * Ensure the output image has an alpha transparency channel.\n * If missing, the added alpha channel will have the specified\n * transparency level, defaulting to fully-opaque (1).\n * This is a no-op if the image already has an alpha channel.\n *\n * @since 0.21.2\n *\n * @example\n * // rgba.png will be a 4 channel image with a fully-opaque alpha channel\n * await sharp('rgb.jpg')\n *   .ensureAlpha()\n *   .toFile('rgba.png')\n *\n * @example\n * // rgba is a 4 channel image with a fully-transparent alpha channel\n * const rgba = await sharp(rgb)\n *   .ensureAlpha(0)\n *   .toBuffer();\n *\n * @param {number} [alpha=1] - alpha transparency level (0=fully-transparent, 1=fully-opaque)\n * @returns {Sharp}\n * @throws {Error} Invalid alpha transparency level\n */\nfunction ensureAlpha (alpha) {\n  if (is.defined(alpha)) {\n    if (is.number(alpha) && is.inRange(alpha, 0, 1)) {\n      this.options.ensureAlpha = alpha;\n    } else {\n      throw is.invalidParameterError('alpha', 'number between 0 and 1', alpha);\n    }\n  } else {\n    this.options.ensureAlpha = 1;\n  }\n  return this;\n}\n\n/**\n * Extract a single channel from a multi-channel image.\n *\n * The output colourspace will be either `b-w` (8-bit) or `grey16` (16-bit).\n *\n * @example\n * // green.jpg is a greyscale image containing the green channel of the input\n * await sharp(input)\n *   .extractChannel('green')\n *   .toFile('green.jpg');\n *\n * @example\n * // red1 is the red value of the first pixel, red2 the second pixel etc.\n * const [red1, red2, ...] = await sharp(input)\n *   .extractChannel(0)\n *   .raw()\n *   .toBuffer();\n *\n * @param {number|string} channel - zero-indexed channel/band number to extract, or `red`, `green`, `blue` or `alpha`.\n * @returns {Sharp}\n * @throws {Error} Invalid channel\n */\nfunction extractChannel (channel) {\n  const channelMap = { red: 0, green: 1, blue: 2, alpha: 3 };\n  if (Object.keys(channelMap).includes(channel)) {\n    channel = channelMap[channel];\n  }\n  if (is.integer(channel) && is.inRange(channel, 0, 4)) {\n    this.options.extractChannel = channel;\n  } else {\n    throw is.invalidParameterError('channel', 'integer or one of: red, green, blue, alpha', channel);\n  }\n  return this;\n}\n\n/**\n * Join one or more channels to the image.\n * The meaning of the added channels depends on the output colourspace, set with `toColourspace()`.\n * By default the output image will be web-friendly sRGB, with additional channels interpreted as alpha channels.\n * Channel ordering follows vips convention:\n * - sRGB: 0: Red, 1: Green, 2: Blue, 3: Alpha.\n * - CMYK: 0: Magenta, 1: Cyan, 2: Yellow, 3: Black, 4: Alpha.\n *\n * Buffers may be any of the image formats supported by sharp.\n * For raw pixel input, the `options` object should contain a `raw` attribute, which follows the format of the attribute of the same name in the `sharp()` constructor.\n *\n * @param {Array<string|Buffer>|string|Buffer} images - one or more images (file paths, Buffers).\n * @param {Object} options - image options, see `sharp()` constructor.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction joinChannel (images, options) {\n  if (Array.isArray(images)) {\n    images.forEach(function (image) {\n      this.options.joinChannelIn.push(this._createInputDescriptor(image, options));\n    }, this);\n  } else {\n    this.options.joinChannelIn.push(this._createInputDescriptor(images, options));\n  }\n  return this;\n}\n\n/**\n * Perform a bitwise boolean operation on all input image channels (bands) to produce a single channel output image.\n *\n * @example\n * sharp('3-channel-rgb-input.png')\n *   .bandbool(sharp.bool.and)\n *   .toFile('1-channel-output.png', function (err, info) {\n *     // The output will be a single channel image where each pixel `P = R & G & B`.\n *     // If `I(1,1) = [247, 170, 14] = [0b11110111, 0b10101010, 0b00001111]`\n *     // then `O(1,1) = 0b11110111 & 0b10101010 & 0b00001111 = 0b00000010 = 2`.\n *   });\n *\n * @param {string} boolOp - one of `and`, `or` or `eor` to perform that bitwise operation, like the C logic operators `&`, `|` and `^` respectively.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction bandbool (boolOp) {\n  if (is.string(boolOp) && is.inArray(boolOp, ['and', 'or', 'eor'])) {\n    this.options.bandBoolOp = boolOp;\n  } else {\n    throw is.invalidParameterError('boolOp', 'one of: and, or, eor', boolOp);\n  }\n  return this;\n}\n\n/**\n * Decorate the Sharp prototype with channel-related functions.\n * @module Sharp\n * @private\n */\nmodule.exports = (Sharp) => {\n  Object.assign(Sharp.prototype, {\n    // Public instance functions\n    removeAlpha,\n    ensureAlpha,\n    extractChannel,\n    joinChannel,\n    bandbool\n  });\n  // Class attributes\n  Sharp.bool = bool;\n};\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\nconst path = require('node:path');\nconst is = require('./is');\nconst sharp = require('./sharp');\n\nconst formats = new Map([\n  ['heic', 'heif'],\n  ['heif', 'heif'],\n  ['avif', 'avif'],\n  ['jpeg', 'jpeg'],\n  ['jpg', 'jpeg'],\n  ['jpe', 'jpeg'],\n  ['tile', 'tile'],\n  ['dz', 'tile'],\n  ['png', 'png'],\n  ['raw', 'raw'],\n  ['tiff', 'tiff'],\n  ['tif', 'tiff'],\n  ['webp', 'webp'],\n  ['gif', 'gif'],\n  ['jp2', 'jp2'],\n  ['jpx', 'jp2'],\n  ['j2k', 'jp2'],\n  ['j2c', 'jp2'],\n  ['jxl', 'jxl']\n]);\n\nconst jp2Regex = /\\.(jp[2x]|j2[kc])$/i;\n\nconst errJp2Save = () => new Error('JP2 output requires libvips with support for OpenJPEG');\n\nconst bitdepthFromColourCount = (colours) => 1 << 31 - Math.clz32(Math.ceil(Math.log2(colours)));\n\n/**\n * Write output image data to a file.\n *\n * If an explicit output format is not selected, it will be inferred from the extension,\n * with JPEG, PNG, WebP, AVIF, TIFF, GIF, DZI, and libvips' V format supported.\n * Note that raw pixel data is only supported for buffer output.\n *\n * By default all metadata will be removed, which includes EXIF-based orientation.\n * See {@link #withmetadata withMetadata} for control over this.\n *\n * The caller is responsible for ensuring directory structures and permissions exist.\n *\n * A `Promise` is returned when `callback` is not provided.\n *\n * @example\n * sharp(input)\n *   .toFile('output.png', (err, info) => { ... });\n *\n * @example\n * sharp(input)\n *   .toFile('output.png')\n *   .then(info => { ... })\n *   .catch(err => { ... });\n *\n * @param {string} fileOut - the path to write the image data to.\n * @param {Function} [callback] - called on completion with two arguments `(err, info)`.\n * `info` contains the output image `format`, `size` (bytes), `width`, `height`,\n * `channels` and `premultiplied` (indicating if premultiplication was used).\n * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`.\n * When using the attention crop strategy also contains `attentionX` and `attentionY`, the focal point of the cropped region.\n * Animated output will also contain `pageHeight` and `pages`.\n * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text.\n * @returns {Promise<Object>} - when no callback is provided\n * @throws {Error} Invalid parameters\n */\nfunction toFile (fileOut, callback) {\n  let err;\n  if (!is.string(fileOut)) {\n    err = new Error('Missing output file path');\n  } else if (is.string(this.options.input.file) && path.resolve(this.options.input.file) === path.resolve(fileOut)) {\n    err = new Error('Cannot use same file for input and output');\n  } else if (jp2Regex.test(path.extname(fileOut)) && !this.constructor.format.jp2k.output.file) {\n    err = errJp2Save();\n  }\n  if (err) {\n    if (is.fn(callback)) {\n      callback(err);\n    } else {\n      return Promise.reject(err);\n    }\n  } else {\n    this.options.fileOut = fileOut;\n    const stack = Error();\n    return this._pipeline(callback, stack);\n  }\n  return this;\n}\n\n/**\n * Write output to a Buffer.\n * JPEG, PNG, WebP, AVIF, TIFF, GIF and raw pixel data output are supported.\n *\n * Use {@link #toformat toFormat} or one of the format-specific functions such as {@link #jpeg jpeg}, {@link #png png} etc. to set the output format.\n *\n * If no explicit format is set, the output format will match the input image, except SVG input which becomes PNG output.\n *\n * By default all metadata will be removed, which includes EXIF-based orientation.\n * See {@link #withmetadata withMetadata} for control over this.\n *\n * `callback`, if present, gets three arguments `(err, data, info)` where:\n * - `err` is an error, if any.\n * - `data` is the output image data.\n * - `info` contains the output image `format`, `size` (bytes), `width`, `height`,\n * `channels` and `premultiplied` (indicating if premultiplication was used).\n * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`.\n * Animated output will also contain `pageHeight` and `pages`.\n * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text.\n *\n * A `Promise` is returned when `callback` is not provided.\n *\n * @example\n * sharp(input)\n *   .toBuffer((err, data, info) => { ... });\n *\n * @example\n * sharp(input)\n *   .toBuffer()\n *   .then(data => { ... })\n *   .catch(err => { ... });\n *\n * @example\n * sharp(input)\n *   .png()\n *   .toBuffer({ resolveWithObject: true })\n *   .then(({ data, info }) => { ... })\n *   .catch(err => { ... });\n *\n * @example\n * const { data, info } = await sharp('my-image.jpg')\n *   // output the raw pixels\n *   .raw()\n *   .toBuffer({ resolveWithObject: true });\n *\n * // create a more type safe way to work with the raw pixel data\n * // this will not copy the data, instead it will change `data`s underlying ArrayBuffer\n * // so `data` and `pixelArray` point to the same memory location\n * const pixelArray = new Uint8ClampedArray(data.buffer);\n *\n * // When you are done changing the pixelArray, sharp takes the `pixelArray` as an input\n * const { width, height, channels } = info;\n * await sharp(pixelArray, { raw: { width, height, channels } })\n *   .toFile('my-changed-image.jpg');\n *\n * @param {Object} [options]\n * @param {boolean} [options.resolveWithObject] Resolve the Promise with an Object containing `data` and `info` properties instead of resolving only with `data`.\n * @param {Function} [callback]\n * @returns {Promise<Buffer>} - when no callback is provided\n */\nfunction toBuffer (options, callback) {\n  if (is.object(options)) {\n    this._setBooleanOption('resolveWithObject', options.resolveWithObject);\n  } else if (this.options.resolveWithObject) {\n    this.options.resolveWithObject = false;\n  }\n  this.options.fileOut = '';\n  const stack = Error();\n  return this._pipeline(is.fn(options) ? options : callback, stack);\n}\n\n/**\n * Keep all EXIF metadata from the input image in the output image.\n *\n * EXIF metadata is unsupported for TIFF output.\n *\n * @since 0.33.0\n *\n * @example\n * const outputWithExif = await sharp(inputWithExif)\n *   .keepExif()\n *   .toBuffer();\n *\n * @returns {Sharp}\n */\nfunction keepExif () {\n  this.options.keepMetadata |= 0b00001;\n  return this;\n}\n\n/**\n * Set EXIF metadata in the output image, ignoring any EXIF in the input image.\n *\n * @since 0.33.0\n *\n * @example\n * const dataWithExif = await sharp(input)\n *   .withExif({\n *     IFD0: {\n *       Copyright: 'The National Gallery'\n *     },\n *     IFD3: {\n *       GPSLatitudeRef: 'N',\n *       GPSLatitude: '51/1 30/1 3230/100',\n *       GPSLongitudeRef: 'W',\n *       GPSLongitude: '0/1 7/1 4366/100'\n *     }\n *   })\n *   .toBuffer();\n *\n * @param {Object<string, Object<string, string>>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction withExif (exif) {\n  if (is.object(exif)) {\n    for (const [ifd, entries] of Object.entries(exif)) {\n      if (is.object(entries)) {\n        for (const [k, v] of Object.entries(entries)) {\n          if (is.string(v)) {\n            this.options.withExif[`exif-${ifd.toLowerCase()}-${k}`] = v;\n          } else {\n            throw is.invalidParameterError(`${ifd}.${k}`, 'string', v);\n          }\n        }\n      } else {\n        throw is.invalidParameterError(ifd, 'object', entries);\n      }\n    }\n  } else {\n    throw is.invalidParameterError('exif', 'object', exif);\n  }\n  this.options.withExifMerge = false;\n  return this.keepExif();\n}\n\n/**\n * Update EXIF metadata from the input image in the output image.\n *\n * @since 0.33.0\n *\n * @example\n * const dataWithMergedExif = await sharp(inputWithExif)\n *   .withExifMerge({\n *     IFD0: {\n *       Copyright: 'The National Gallery'\n *     }\n *   })\n *   .toBuffer();\n *\n * @param {Object<string, Object<string, string>>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction withExifMerge (exif) {\n  this.withExif(exif);\n  this.options.withExifMerge = true;\n  return this;\n}\n\n/**\n * Keep ICC profile from the input image in the output image.\n *\n * When input and output colour spaces differ, use with {@link /api-colour/#tocolourspace toColourspace} and optionally {@link /api-colour/#pipelinecolourspace pipelineColourspace}.\n *\n * @since 0.33.0\n *\n * @example\n * const outputWithIccProfile = await sharp(inputWithIccProfile)\n *   .keepIccProfile()\n *   .toBuffer();\n *\n * @example\n * const cmykOutputWithIccProfile = await sharp(cmykInputWithIccProfile)\n *   .pipelineColourspace('cmyk')\n *   .toColourspace('cmyk')\n *   .keepIccProfile()\n *   .toBuffer();\n *\n * @returns {Sharp}\n */\nfunction keepIccProfile () {\n  this.options.keepMetadata |= 0b01000;\n  return this;\n}\n\n/**\n * Transform using an ICC profile and attach to the output image.\n *\n * This can either be an absolute filesystem path or\n * built-in profile name (`srgb`, `p3`, `cmyk`).\n *\n * @since 0.33.0\n *\n * @example\n * const outputWithP3 = await sharp(input)\n *   .withIccProfile('p3')\n *   .toBuffer();\n *\n * @param {string} icc - Absolute filesystem path to output ICC profile or built-in profile name (srgb, p3, cmyk).\n * @param {Object} [options]\n * @param {number} [options.attach=true] Should the ICC profile be included in the output image metadata?\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction withIccProfile (icc, options) {\n  if (is.string(icc)) {\n    this.options.withIccProfile = icc;\n  } else {\n    throw is.invalidParameterError('icc', 'string', icc);\n  }\n  this.keepIccProfile();\n  if (is.object(options)) {\n    if (is.defined(options.attach)) {\n      if (is.bool(options.attach)) {\n        if (!options.attach) {\n          this.options.keepMetadata &= ~0b01000;\n        }\n      } else {\n        throw is.invalidParameterError('attach', 'boolean', options.attach);\n      }\n    }\n  }\n  return this;\n}\n\n/**\n * Keep XMP metadata from the input image in the output image.\n *\n * @since 0.34.3\n *\n * @example\n * const outputWithXmp = await sharp(inputWithXmp)\n *   .keepXmp()\n *   .toBuffer();\n *\n * @returns {Sharp}\n */\nfunction keepXmp () {\n  this.options.keepMetadata |= 0b00010;\n  return this;\n}\n\n/**\n * Set XMP metadata in the output image.\n *\n * Supported by PNG, JPEG, WebP, and TIFF output.\n *\n * @since 0.34.3\n *\n * @example\n * const xmpString = `\n *   <?xml version=\"1.0\"?>\n *   <x:xmpmeta xmlns:x=\"adobe:ns:meta/\">\n *     <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n *       <rdf:Description rdf:about=\"\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n *         <dc:creator><rdf:Seq><rdf:li>John Doe</rdf:li></rdf:Seq></dc:creator>\n *       </rdf:Description>\n *     </rdf:RDF>\n *   </x:xmpmeta>`;\n *\n * const data = await sharp(input)\n *   .withXmp(xmpString)\n *   .toBuffer();\n *\n * @param {string} xmp String containing XMP metadata to be embedded in the output image.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction withXmp (xmp) {\n  if (is.string(xmp) && xmp.length > 0) {\n    this.options.withXmp = xmp;\n    this.options.keepMetadata |= 0b00010;\n  } else {\n    throw is.invalidParameterError('xmp', 'non-empty string', xmp);\n  }\n  return this;\n}\n\n/**\n * Keep all metadata (EXIF, ICC, XMP, IPTC) from the input image in the output image.\n *\n * The default behaviour, when `keepMetadata` is not used, is to convert to the device-independent\n * sRGB colour space and strip all metadata, including the removal of any ICC profile.\n *\n * @since 0.33.0\n *\n * @example\n * const outputWithMetadata = await sharp(inputWithMetadata)\n *   .keepMetadata()\n *   .toBuffer();\n *\n * @returns {Sharp}\n */\nfunction keepMetadata () {\n  this.options.keepMetadata = 0b11111;\n  return this;\n}\n\n/**\n * Keep most metadata (EXIF, XMP, IPTC) from the input image in the output image.\n *\n * This will also convert to and add a web-friendly sRGB ICC profile if appropriate.\n *\n * Allows orientation and density to be set or updated.\n *\n * @example\n * const outputSrgbWithMetadata = await sharp(inputRgbWithMetadata)\n *   .withMetadata()\n *   .toBuffer();\n *\n * @example\n * // Set output metadata to 96 DPI\n * const data = await sharp(input)\n *   .withMetadata({ density: 96 })\n *   .toBuffer();\n *\n * @param {Object} [options]\n * @param {number} [options.orientation] Used to update the EXIF `Orientation` tag, integer between 1 and 8.\n * @param {number} [options.density] Number of pixels per inch (DPI).\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction withMetadata (options) {\n  this.keepMetadata();\n  this.withIccProfile('srgb');\n  if (is.object(options)) {\n    if (is.defined(options.orientation)) {\n      if (is.integer(options.orientation) && is.inRange(options.orientation, 1, 8)) {\n        this.options.withMetadataOrientation = options.orientation;\n      } else {\n        throw is.invalidParameterError('orientation', 'integer between 1 and 8', options.orientation);\n      }\n    }\n    if (is.defined(options.density)) {\n      if (is.number(options.density) && options.density > 0) {\n        this.options.withMetadataDensity = options.density;\n      } else {\n        throw is.invalidParameterError('density', 'positive number', options.density);\n      }\n    }\n    if (is.defined(options.icc)) {\n      this.withIccProfile(options.icc);\n    }\n    if (is.defined(options.exif)) {\n      this.withExifMerge(options.exif);\n    }\n  }\n  return this;\n}\n\n/**\n * Force output to a given format.\n *\n * @example\n * // Convert any input to PNG output\n * const data = await sharp(input)\n *   .toFormat('png')\n *   .toBuffer();\n *\n * @param {(string|Object)} format - as a string or an Object with an 'id' attribute\n * @param {Object} options - output options\n * @returns {Sharp}\n * @throws {Error} unsupported format or options\n */\nfunction toFormat (format, options) {\n  const actualFormat = formats.get((is.object(format) && is.string(format.id) ? format.id : format).toLowerCase());\n  if (!actualFormat) {\n    throw is.invalidParameterError('format', `one of: ${[...formats.keys()].join(', ')}`, format);\n  }\n  return this[actualFormat](options);\n}\n\n/**\n * Use these JPEG options for output image.\n *\n * @example\n * // Convert any input to very high quality JPEG output\n * const data = await sharp(input)\n *   .jpeg({\n *     quality: 100,\n *     chromaSubsampling: '4:4:4'\n *   })\n *   .toBuffer();\n *\n * @example\n * // Use mozjpeg to reduce output JPEG file size (slower)\n * const data = await sharp(input)\n *   .jpeg({ mozjpeg: true })\n *   .toBuffer();\n *\n * @param {Object} [options] - output options\n * @param {number} [options.quality=80] - quality, integer 1-100\n * @param {boolean} [options.progressive=false] - use progressive (interlace) scan\n * @param {string} [options.chromaSubsampling='4:2:0'] - set to '4:4:4' to prevent chroma subsampling otherwise defaults to '4:2:0' chroma subsampling\n * @param {boolean} [options.optimiseCoding=true] - optimise Huffman coding tables\n * @param {boolean} [options.optimizeCoding=true] - alternative spelling of optimiseCoding\n * @param {boolean} [options.mozjpeg=false] - use mozjpeg defaults, equivalent to `{ trellisQuantisation: true, overshootDeringing: true, optimiseScans: true, quantisationTable: 3 }`\n * @param {boolean} [options.trellisQuantisation=false] - apply trellis quantisation\n * @param {boolean} [options.overshootDeringing=false] - apply overshoot deringing\n * @param {boolean} [options.optimiseScans=false] - optimise progressive scans, forces progressive\n * @param {boolean} [options.optimizeScans=false] - alternative spelling of optimiseScans\n * @param {number} [options.quantisationTable=0] - quantization table to use, integer 0-8\n * @param {number} [options.quantizationTable=0] - alternative spelling of quantisationTable\n * @param {boolean} [options.force=true] - force JPEG output, otherwise attempt to use input format\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction jpeg (options) {\n  if (is.object(options)) {\n    if (is.defined(options.quality)) {\n      if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n        this.options.jpegQuality = options.quality;\n      } else {\n        throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n      }\n    }\n    if (is.defined(options.progressive)) {\n      this._setBooleanOption('jpegProgressive', options.progressive);\n    }\n    if (is.defined(options.chromaSubsampling)) {\n      if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {\n        this.options.jpegChromaSubsampling = options.chromaSubsampling;\n      } else {\n        throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);\n      }\n    }\n    const optimiseCoding = is.bool(options.optimizeCoding) ? options.optimizeCoding : options.optimiseCoding;\n    if (is.defined(optimiseCoding)) {\n      this._setBooleanOption('jpegOptimiseCoding', optimiseCoding);\n    }\n    if (is.defined(options.mozjpeg)) {\n      if (is.bool(options.mozjpeg)) {\n        if (options.mozjpeg) {\n          this.options.jpegTrellisQuantisation = true;\n          this.options.jpegOvershootDeringing = true;\n          this.options.jpegOptimiseScans = true;\n          this.options.jpegProgressive = true;\n          this.options.jpegQuantisationTable = 3;\n        }\n      } else {\n        throw is.invalidParameterError('mozjpeg', 'boolean', options.mozjpeg);\n      }\n    }\n    const trellisQuantisation = is.bool(options.trellisQuantization) ? options.trellisQuantization : options.trellisQuantisation;\n    if (is.defined(trellisQuantisation)) {\n      this._setBooleanOption('jpegTrellisQuantisation', trellisQuantisation);\n    }\n    if (is.defined(options.overshootDeringing)) {\n      this._setBooleanOption('jpegOvershootDeringing', options.overshootDeringing);\n    }\n    const optimiseScans = is.bool(options.optimizeScans) ? options.optimizeScans : options.optimiseScans;\n    if (is.defined(optimiseScans)) {\n      this._setBooleanOption('jpegOptimiseScans', optimiseScans);\n      if (optimiseScans) {\n        this.options.jpegProgressive = true;\n      }\n    }\n    const quantisationTable = is.number(options.quantizationTable) ? options.quantizationTable : options.quantisationTable;\n    if (is.defined(quantisationTable)) {\n      if (is.integer(quantisationTable) && is.inRange(quantisationTable, 0, 8)) {\n        this.options.jpegQuantisationTable = quantisationTable;\n      } else {\n        throw is.invalidParameterError('quantisationTable', 'integer between 0 and 8', quantisationTable);\n      }\n    }\n  }\n  return this._updateFormatOut('jpeg', options);\n}\n\n/**\n * Use these PNG options for output image.\n *\n * By default, PNG output is full colour at 8 bits per pixel.\n *\n * Indexed PNG input at 1, 2 or 4 bits per pixel is converted to 8 bits per pixel.\n * Set `palette` to `true` for slower, indexed PNG output.\n *\n * For 16 bits per pixel output, convert to `rgb16` via\n * {@link /api-colour/#tocolourspace toColourspace}.\n *\n * @example\n * // Convert any input to full colour PNG output\n * const data = await sharp(input)\n *   .png()\n *   .toBuffer();\n *\n * @example\n * // Convert any input to indexed PNG output (slower)\n * const data = await sharp(input)\n *   .png({ palette: true })\n *   .toBuffer();\n *\n * @example\n * // Output 16 bits per pixel RGB(A)\n * const data = await sharp(input)\n *  .toColourspace('rgb16')\n *  .png()\n *  .toBuffer();\n *\n * @param {Object} [options]\n * @param {boolean} [options.progressive=false] - use progressive (interlace) scan\n * @param {number} [options.compressionLevel=6] - zlib compression level, 0 (fastest, largest) to 9 (slowest, smallest)\n * @param {boolean} [options.adaptiveFiltering=false] - use adaptive row filtering\n * @param {boolean} [options.palette=false] - quantise to a palette-based image with alpha transparency support\n * @param {number} [options.quality=100] - use the lowest number of colours needed to achieve given quality, sets `palette` to `true`\n * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest), sets `palette` to `true`\n * @param {number} [options.colours=256] - maximum number of palette entries, sets `palette` to `true`\n * @param {number} [options.colors=256] - alternative spelling of `options.colours`, sets `palette` to `true`\n * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, sets `palette` to `true`\n * @param {boolean} [options.force=true] - force PNG output, otherwise attempt to use input format\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction png (options) {\n  if (is.object(options)) {\n    if (is.defined(options.progressive)) {\n      this._setBooleanOption('pngProgressive', options.progressive);\n    }\n    if (is.defined(options.compressionLevel)) {\n      if (is.integer(options.compressionLevel) && is.inRange(options.compressionLevel, 0, 9)) {\n        this.options.pngCompressionLevel = options.compressionLevel;\n      } else {\n        throw is.invalidParameterError('compressionLevel', 'integer between 0 and 9', options.compressionLevel);\n      }\n    }\n    if (is.defined(options.adaptiveFiltering)) {\n      this._setBooleanOption('pngAdaptiveFiltering', options.adaptiveFiltering);\n    }\n    const colours = options.colours || options.colors;\n    if (is.defined(colours)) {\n      if (is.integer(colours) && is.inRange(colours, 2, 256)) {\n        this.options.pngBitdepth = bitdepthFromColourCount(colours);\n      } else {\n        throw is.invalidParameterError('colours', 'integer between 2 and 256', colours);\n      }\n    }\n    if (is.defined(options.palette)) {\n      this._setBooleanOption('pngPalette', options.palette);\n    } else if ([options.quality, options.effort, options.colours, options.colors, options.dither].some(is.defined)) {\n      this._setBooleanOption('pngPalette', true);\n    }\n    if (this.options.pngPalette) {\n      if (is.defined(options.quality)) {\n        if (is.integer(options.quality) && is.inRange(options.quality, 0, 100)) {\n          this.options.pngQuality = options.quality;\n        } else {\n          throw is.invalidParameterError('quality', 'integer between 0 and 100', options.quality);\n        }\n      }\n      if (is.defined(options.effort)) {\n        if (is.integer(options.effort) && is.inRange(options.effort, 1, 10)) {\n          this.options.pngEffort = options.effort;\n        } else {\n          throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort);\n        }\n      }\n      if (is.defined(options.dither)) {\n        if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) {\n          this.options.pngDither = options.dither;\n        } else {\n          throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither);\n        }\n      }\n    }\n  }\n  return this._updateFormatOut('png', options);\n}\n\n/**\n * Use these WebP options for output image.\n *\n * @example\n * // Convert any input to lossless WebP output\n * const data = await sharp(input)\n *   .webp({ lossless: true })\n *   .toBuffer();\n *\n * @example\n * // Optimise the file size of an animated WebP\n * const outputWebp = await sharp(inputWebp, { animated: true })\n *   .webp({ effort: 6 })\n *   .toBuffer();\n *\n * @param {Object} [options] - output options\n * @param {number} [options.quality=80] - quality, integer 1-100\n * @param {number} [options.alphaQuality=100] - quality of alpha layer, integer 0-100\n * @param {boolean} [options.lossless=false] - use lossless compression mode\n * @param {boolean} [options.nearLossless=false] - use near_lossless compression mode\n * @param {boolean} [options.smartSubsample=false] - use high quality chroma subsampling\n * @param {boolean} [options.smartDeblock=false] - auto-adjust the deblocking filter, can improve low contrast edges (slow)\n * @param {string} [options.preset='default'] - named preset for preprocessing/filtering, one of: default, photo, picture, drawing, icon, text\n * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 6 (slowest)\n * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation\n * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)\n * @param {boolean} [options.minSize=false] - prevent use of animation key frames to minimise file size (slow)\n * @param {boolean} [options.mixed=false] - allow mixture of lossy and lossless animation frames (slow)\n * @param {boolean} [options.force=true] - force WebP output, otherwise attempt to use input format\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction webp (options) {\n  if (is.object(options)) {\n    if (is.defined(options.quality)) {\n      if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n        this.options.webpQuality = options.quality;\n      } else {\n        throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n      }\n    }\n    if (is.defined(options.alphaQuality)) {\n      if (is.integer(options.alphaQuality) && is.inRange(options.alphaQuality, 0, 100)) {\n        this.options.webpAlphaQuality = options.alphaQuality;\n      } else {\n        throw is.invalidParameterError('alphaQuality', 'integer between 0 and 100', options.alphaQuality);\n      }\n    }\n    if (is.defined(options.lossless)) {\n      this._setBooleanOption('webpLossless', options.lossless);\n    }\n    if (is.defined(options.nearLossless)) {\n      this._setBooleanOption('webpNearLossless', options.nearLossless);\n    }\n    if (is.defined(options.smartSubsample)) {\n      this._setBooleanOption('webpSmartSubsample', options.smartSubsample);\n    }\n    if (is.defined(options.smartDeblock)) {\n      this._setBooleanOption('webpSmartDeblock', options.smartDeblock);\n    }\n    if (is.defined(options.preset)) {\n      if (is.string(options.preset) && is.inArray(options.preset, ['default', 'photo', 'picture', 'drawing', 'icon', 'text'])) {\n        this.options.webpPreset = options.preset;\n      } else {\n        throw is.invalidParameterError('preset', 'one of: default, photo, picture, drawing, icon, text', options.preset);\n      }\n    }\n    if (is.defined(options.effort)) {\n      if (is.integer(options.effort) && is.inRange(options.effort, 0, 6)) {\n        this.options.webpEffort = options.effort;\n      } else {\n        throw is.invalidParameterError('effort', 'integer between 0 and 6', options.effort);\n      }\n    }\n    if (is.defined(options.minSize)) {\n      this._setBooleanOption('webpMinSize', options.minSize);\n    }\n    if (is.defined(options.mixed)) {\n      this._setBooleanOption('webpMixed', options.mixed);\n    }\n  }\n  trySetAnimationOptions(options, this.options);\n  return this._updateFormatOut('webp', options);\n}\n\n/**\n * Use these GIF options for the output image.\n *\n * The first entry in the palette is reserved for transparency.\n *\n * The palette of the input image will be re-used if possible.\n *\n * @since 0.30.0\n *\n * @example\n * // Convert PNG to GIF\n * await sharp(pngBuffer)\n *   .gif()\n *   .toBuffer();\n *\n * @example\n * // Convert animated WebP to animated GIF\n * await sharp('animated.webp', { animated: true })\n *   .toFile('animated.gif');\n *\n * @example\n * // Create a 128x128, cropped, non-dithered, animated thumbnail of an animated GIF\n * const out = await sharp('in.gif', { animated: true })\n *   .resize({ width: 128, height: 128 })\n *   .gif({ dither: 0 })\n *   .toBuffer();\n *\n * @example\n * // Lossy file size reduction of animated GIF\n * await sharp('in.gif', { animated: true })\n *   .gif({ interFrameMaxError: 8 })\n *   .toFile('optim.gif');\n *\n * @param {Object} [options] - output options\n * @param {boolean} [options.reuse=true] - re-use existing palette, otherwise generate new (slow)\n * @param {boolean} [options.progressive=false] - use progressive (interlace) scan\n * @param {number} [options.colours=256] - maximum number of palette entries, including transparency, between 2 and 256\n * @param {number} [options.colors=256] - alternative spelling of `options.colours`\n * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest)\n * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, between 0 (least) and 1 (most)\n * @param {number} [options.interFrameMaxError=0] - maximum inter-frame error for transparency, between 0 (lossless) and 32\n * @param {number} [options.interPaletteMaxError=3] - maximum inter-palette error for palette reuse, between 0 and 256\n * @param {boolean} [options.keepDuplicateFrames=false] - keep duplicate frames in the output instead of combining them\n * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation\n * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)\n * @param {boolean} [options.force=true] - force GIF output, otherwise attempt to use input format\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction gif (options) {\n  if (is.object(options)) {\n    if (is.defined(options.reuse)) {\n      this._setBooleanOption('gifReuse', options.reuse);\n    }\n    if (is.defined(options.progressive)) {\n      this._setBooleanOption('gifProgressive', options.progressive);\n    }\n    const colours = options.colours || options.colors;\n    if (is.defined(colours)) {\n      if (is.integer(colours) && is.inRange(colours, 2, 256)) {\n        this.options.gifBitdepth = bitdepthFromColourCount(colours);\n      } else {\n        throw is.invalidParameterError('colours', 'integer between 2 and 256', colours);\n      }\n    }\n    if (is.defined(options.effort)) {\n      if (is.number(options.effort) && is.inRange(options.effort, 1, 10)) {\n        this.options.gifEffort = options.effort;\n      } else {\n        throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort);\n      }\n    }\n    if (is.defined(options.dither)) {\n      if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) {\n        this.options.gifDither = options.dither;\n      } else {\n        throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither);\n      }\n    }\n    if (is.defined(options.interFrameMaxError)) {\n      if (is.number(options.interFrameMaxError) && is.inRange(options.interFrameMaxError, 0, 32)) {\n        this.options.gifInterFrameMaxError = options.interFrameMaxError;\n      } else {\n        throw is.invalidParameterError('interFrameMaxError', 'number between 0.0 and 32.0', options.interFrameMaxError);\n      }\n    }\n    if (is.defined(options.interPaletteMaxError)) {\n      if (is.number(options.interPaletteMaxError) && is.inRange(options.interPaletteMaxError, 0, 256)) {\n        this.options.gifInterPaletteMaxError = options.interPaletteMaxError;\n      } else {\n        throw is.invalidParameterError('interPaletteMaxError', 'number between 0.0 and 256.0', options.interPaletteMaxError);\n      }\n    }\n    if (is.defined(options.keepDuplicateFrames)) {\n      if (is.bool(options.keepDuplicateFrames)) {\n        this._setBooleanOption('gifKeepDuplicateFrames', options.keepDuplicateFrames);\n      } else {\n        throw is.invalidParameterError('keepDuplicateFrames', 'boolean', options.keepDuplicateFrames);\n      }\n    }\n  }\n  trySetAnimationOptions(options, this.options);\n  return this._updateFormatOut('gif', options);\n}\n\n/**\n * Use these JP2 options for output image.\n *\n * Requires libvips compiled with support for OpenJPEG.\n * The prebuilt binaries do not include this - see\n * {@link /install#custom-libvips installing a custom libvips}.\n *\n * @example\n * // Convert any input to lossless JP2 output\n * const data = await sharp(input)\n *   .jp2({ lossless: true })\n *   .toBuffer();\n *\n * @example\n * // Convert any input to very high quality JP2 output\n * const data = await sharp(input)\n *   .jp2({\n *     quality: 100,\n *     chromaSubsampling: '4:4:4'\n *   })\n *   .toBuffer();\n *\n * @since 0.29.1\n *\n * @param {Object} [options] - output options\n * @param {number} [options.quality=80] - quality, integer 1-100\n * @param {boolean} [options.lossless=false] - use lossless compression mode\n * @param {number} [options.tileWidth=512] - horizontal tile size\n * @param {number} [options.tileHeight=512] - vertical tile size\n * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction jp2 (options) {\n  /* node:coverage ignore next 41 */\n  if (!this.constructor.format.jp2k.output.buffer) {\n    throw errJp2Save();\n  }\n  if (is.object(options)) {\n    if (is.defined(options.quality)) {\n      if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n        this.options.jp2Quality = options.quality;\n      } else {\n        throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n      }\n    }\n    if (is.defined(options.lossless)) {\n      if (is.bool(options.lossless)) {\n        this.options.jp2Lossless = options.lossless;\n      } else {\n        throw is.invalidParameterError('lossless', 'boolean', options.lossless);\n      }\n    }\n    if (is.defined(options.tileWidth)) {\n      if (is.integer(options.tileWidth) && is.inRange(options.tileWidth, 1, 32768)) {\n        this.options.jp2TileWidth = options.tileWidth;\n      } else {\n        throw is.invalidParameterError('tileWidth', 'integer between 1 and 32768', options.tileWidth);\n      }\n    }\n    if (is.defined(options.tileHeight)) {\n      if (is.integer(options.tileHeight) && is.inRange(options.tileHeight, 1, 32768)) {\n        this.options.jp2TileHeight = options.tileHeight;\n      } else {\n        throw is.invalidParameterError('tileHeight', 'integer between 1 and 32768', options.tileHeight);\n      }\n    }\n    if (is.defined(options.chromaSubsampling)) {\n      if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {\n        this.options.jp2ChromaSubsampling = options.chromaSubsampling;\n      } else {\n        throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);\n      }\n    }\n  }\n  return this._updateFormatOut('jp2', options);\n}\n\n/**\n * Set animation options if available.\n * @private\n *\n * @param {Object} [source] - output options\n * @param {number} [source.loop=0] - number of animation iterations, use 0 for infinite animation\n * @param {number[]} [source.delay] - list of delays between animation frames (in milliseconds)\n * @param {Object} [target] - target object for valid options\n * @throws {Error} Invalid options\n */\nfunction trySetAnimationOptions (source, target) {\n  if (is.object(source) && is.defined(source.loop)) {\n    if (is.integer(source.loop) && is.inRange(source.loop, 0, 65535)) {\n      target.loop = source.loop;\n    } else {\n      throw is.invalidParameterError('loop', 'integer between 0 and 65535', source.loop);\n    }\n  }\n  if (is.object(source) && is.defined(source.delay)) {\n    // We allow singular values as well\n    if (is.integer(source.delay) && is.inRange(source.delay, 0, 65535)) {\n      target.delay = [source.delay];\n    } else if (\n      Array.isArray(source.delay) &&\n      source.delay.every(is.integer) &&\n      source.delay.every(v => is.inRange(v, 0, 65535))) {\n      target.delay = source.delay;\n    } else {\n      throw is.invalidParameterError('delay', 'integer or an array of integers between 0 and 65535', source.delay);\n    }\n  }\n}\n\n/**\n * Use these TIFF options for output image.\n *\n * The `density` can be set in pixels/inch via {@link #withmetadata withMetadata}\n * instead of providing `xres` and `yres` in pixels/mm.\n *\n * @example\n * // Convert SVG input to LZW-compressed, 1 bit per pixel TIFF output\n * sharp('input.svg')\n *   .tiff({\n *     compression: 'lzw',\n *     bitdepth: 1\n *   })\n *   .toFile('1-bpp-output.tiff')\n *   .then(info => { ... });\n *\n * @param {Object} [options] - output options\n * @param {number} [options.quality=80] - quality, integer 1-100\n * @param {boolean} [options.force=true] - force TIFF output, otherwise attempt to use input format\n * @param {string} [options.compression='jpeg'] - compression options: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k\n * @param {boolean} [options.bigtiff=false] - use BigTIFF variant (has no effect when compression is none)\n * @param {string} [options.predictor='horizontal'] - compression predictor options: none, horizontal, float\n * @param {boolean} [options.pyramid=false] - write an image pyramid\n * @param {boolean} [options.tile=false] - write a tiled tiff\n * @param {number} [options.tileWidth=256] - horizontal tile size\n * @param {number} [options.tileHeight=256] - vertical tile size\n * @param {number} [options.xres=1.0] - horizontal resolution in pixels/mm\n * @param {number} [options.yres=1.0] - vertical resolution in pixels/mm\n * @param {string} [options.resolutionUnit='inch'] - resolution unit options: inch, cm\n * @param {number} [options.bitdepth=8] - reduce bitdepth to 1, 2 or 4 bit\n * @param {boolean} [options.miniswhite=false] - write 1-bit images as miniswhite\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction tiff (options) {\n  if (is.object(options)) {\n    if (is.defined(options.quality)) {\n      if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n        this.options.tiffQuality = options.quality;\n      } else {\n        throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n      }\n    }\n    if (is.defined(options.bitdepth)) {\n      if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [1, 2, 4, 8])) {\n        this.options.tiffBitdepth = options.bitdepth;\n      } else {\n        throw is.invalidParameterError('bitdepth', '1, 2, 4 or 8', options.bitdepth);\n      }\n    }\n    // tiling\n    if (is.defined(options.tile)) {\n      this._setBooleanOption('tiffTile', options.tile);\n    }\n    if (is.defined(options.tileWidth)) {\n      if (is.integer(options.tileWidth) && options.tileWidth > 0) {\n        this.options.tiffTileWidth = options.tileWidth;\n      } else {\n        throw is.invalidParameterError('tileWidth', 'integer greater than zero', options.tileWidth);\n      }\n    }\n    if (is.defined(options.tileHeight)) {\n      if (is.integer(options.tileHeight) && options.tileHeight > 0) {\n        this.options.tiffTileHeight = options.tileHeight;\n      } else {\n        throw is.invalidParameterError('tileHeight', 'integer greater than zero', options.tileHeight);\n      }\n    }\n    // miniswhite\n    if (is.defined(options.miniswhite)) {\n      this._setBooleanOption('tiffMiniswhite', options.miniswhite);\n    }\n    // pyramid\n    if (is.defined(options.pyramid)) {\n      this._setBooleanOption('tiffPyramid', options.pyramid);\n    }\n    // resolution\n    if (is.defined(options.xres)) {\n      if (is.number(options.xres) && options.xres > 0) {\n        this.options.tiffXres = options.xres;\n      } else {\n        throw is.invalidParameterError('xres', 'number greater than zero', options.xres);\n      }\n    }\n    if (is.defined(options.yres)) {\n      if (is.number(options.yres) && options.yres > 0) {\n        this.options.tiffYres = options.yres;\n      } else {\n        throw is.invalidParameterError('yres', 'number greater than zero', options.yres);\n      }\n    }\n    // compression\n    if (is.defined(options.compression)) {\n      if (is.string(options.compression) && is.inArray(options.compression, ['none', 'jpeg', 'deflate', 'packbits', 'ccittfax4', 'lzw', 'webp', 'zstd', 'jp2k'])) {\n        this.options.tiffCompression = options.compression;\n      } else {\n        throw is.invalidParameterError('compression', 'one of: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k', options.compression);\n      }\n    }\n    // bigtiff\n    if (is.defined(options.bigtiff)) {\n      this._setBooleanOption('tiffBigtiff', options.bigtiff);\n    }\n    // predictor\n    if (is.defined(options.predictor)) {\n      if (is.string(options.predictor) && is.inArray(options.predictor, ['none', 'horizontal', 'float'])) {\n        this.options.tiffPredictor = options.predictor;\n      } else {\n        throw is.invalidParameterError('predictor', 'one of: none, horizontal, float', options.predictor);\n      }\n    }\n    // resolutionUnit\n    if (is.defined(options.resolutionUnit)) {\n      if (is.string(options.resolutionUnit) && is.inArray(options.resolutionUnit, ['inch', 'cm'])) {\n        this.options.tiffResolutionUnit = options.resolutionUnit;\n      } else {\n        throw is.invalidParameterError('resolutionUnit', 'one of: inch, cm', options.resolutionUnit);\n      }\n    }\n  }\n  return this._updateFormatOut('tiff', options);\n}\n\n/**\n * Use these AVIF options for output image.\n *\n * AVIF image sequences are not supported.\n * Prebuilt binaries support a bitdepth of 8 only.\n *\n * This feature is experimental on the Windows ARM64 platform\n * and requires a CPU with ARM64v8.4 or later.\n *\n * @example\n * const data = await sharp(input)\n *   .avif({ effort: 2 })\n *   .toBuffer();\n *\n * @example\n * const data = await sharp(input)\n *   .avif({ lossless: true })\n *   .toBuffer();\n *\n * @since 0.27.0\n *\n * @param {Object} [options] - output options\n * @param {number} [options.quality=50] - quality, integer 1-100\n * @param {boolean} [options.lossless=false] - use lossless compression\n * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest)\n * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling\n * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction avif (options) {\n  return this.heif({ ...options, compression: 'av1' });\n}\n\n/**\n * Use these HEIF options for output image.\n *\n * Support for patent-encumbered HEIC images using `hevc` compression requires the use of a\n * globally-installed libvips compiled with support for libheif, libde265 and x265.\n *\n * @example\n * const data = await sharp(input)\n *   .heif({ compression: 'hevc' })\n *   .toBuffer();\n *\n * @since 0.23.0\n *\n * @param {Object} options - output options\n * @param {string} options.compression - compression format: av1, hevc\n * @param {number} [options.quality=50] - quality, integer 1-100\n * @param {boolean} [options.lossless=false] - use lossless compression\n * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest)\n * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling\n * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction heif (options) {\n  if (is.object(options)) {\n    if (is.string(options.compression) && is.inArray(options.compression, ['av1', 'hevc'])) {\n      this.options.heifCompression = options.compression;\n    } else {\n      throw is.invalidParameterError('compression', 'one of: av1, hevc', options.compression);\n    }\n    if (is.defined(options.quality)) {\n      if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n        this.options.heifQuality = options.quality;\n      } else {\n        throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n      }\n    }\n    if (is.defined(options.lossless)) {\n      if (is.bool(options.lossless)) {\n        this.options.heifLossless = options.lossless;\n      } else {\n        throw is.invalidParameterError('lossless', 'boolean', options.lossless);\n      }\n    }\n    if (is.defined(options.effort)) {\n      if (is.integer(options.effort) && is.inRange(options.effort, 0, 9)) {\n        this.options.heifEffort = options.effort;\n      } else {\n        throw is.invalidParameterError('effort', 'integer between 0 and 9', options.effort);\n      }\n    }\n    if (is.defined(options.chromaSubsampling)) {\n      if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {\n        this.options.heifChromaSubsampling = options.chromaSubsampling;\n      } else {\n        throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);\n      }\n    }\n    if (is.defined(options.bitdepth)) {\n      if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [8, 10, 12])) {\n        if (options.bitdepth !== 8 && this.constructor.versions.heif) {\n          throw is.invalidParameterError('bitdepth when using prebuilt binaries', 8, options.bitdepth);\n        }\n        this.options.heifBitdepth = options.bitdepth;\n      } else {\n        throw is.invalidParameterError('bitdepth', '8, 10 or 12', options.bitdepth);\n      }\n    }\n  } else {\n    throw is.invalidParameterError('options', 'Object', options);\n  }\n  return this._updateFormatOut('heif', options);\n}\n\n/**\n * Use these JPEG-XL (JXL) options for output image.\n *\n * This feature is experimental, please do not use in production systems.\n *\n * Requires libvips compiled with support for libjxl.\n * The prebuilt binaries do not include this - see\n * {@link /install/#custom-libvips installing a custom libvips}.\n *\n * @since 0.31.3\n *\n * @param {Object} [options] - output options\n * @param {number} [options.distance=1.0] - maximum encoding error, between 0 (highest quality) and 15 (lowest quality)\n * @param {number} [options.quality] - calculate `distance` based on JPEG-like quality, between 1 and 100, overrides distance if specified\n * @param {number} [options.decodingTier=0] - target decode speed tier, between 0 (highest quality) and 4 (lowest quality)\n * @param {boolean} [options.lossless=false] - use lossless compression\n * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 9 (slowest)\n * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation\n * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction jxl (options) {\n  if (is.object(options)) {\n    if (is.defined(options.quality)) {\n      if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n        // https://github.com/libjxl/libjxl/blob/0aeea7f180bafd6893c1db8072dcb67d2aa5b03d/tools/cjxl_main.cc#L640-L644\n        this.options.jxlDistance = options.quality >= 30\n          ? 0.1 + (100 - options.quality) * 0.09\n          : 53 / 3000 * options.quality * options.quality - 23 / 20 * options.quality + 25;\n      } else {\n        throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n      }\n    } else if (is.defined(options.distance)) {\n      if (is.number(options.distance) && is.inRange(options.distance, 0, 15)) {\n        this.options.jxlDistance = options.distance;\n      } else {\n        throw is.invalidParameterError('distance', 'number between 0.0 and 15.0', options.distance);\n      }\n    }\n    if (is.defined(options.decodingTier)) {\n      if (is.integer(options.decodingTier) && is.inRange(options.decodingTier, 0, 4)) {\n        this.options.jxlDecodingTier = options.decodingTier;\n      } else {\n        throw is.invalidParameterError('decodingTier', 'integer between 0 and 4', options.decodingTier);\n      }\n    }\n    if (is.defined(options.lossless)) {\n      if (is.bool(options.lossless)) {\n        this.options.jxlLossless = options.lossless;\n      } else {\n        throw is.invalidParameterError('lossless', 'boolean', options.lossless);\n      }\n    }\n    if (is.defined(options.effort)) {\n      if (is.integer(options.effort) && is.inRange(options.effort, 1, 9)) {\n        this.options.jxlEffort = options.effort;\n      } else {\n        throw is.invalidParameterError('effort', 'integer between 1 and 9', options.effort);\n      }\n    }\n  }\n  trySetAnimationOptions(options, this.options);\n  return this._updateFormatOut('jxl', options);\n}\n\n/**\n * Force output to be raw, uncompressed pixel data.\n * Pixel ordering is left-to-right, top-to-bottom, without padding.\n * Channel ordering will be RGB or RGBA for non-greyscale colourspaces.\n *\n * @example\n * // Extract raw, unsigned 8-bit RGB pixel data from JPEG input\n * const { data, info } = await sharp('input.jpg')\n *   .raw()\n *   .toBuffer({ resolveWithObject: true });\n *\n * @example\n * // Extract alpha channel as raw, unsigned 16-bit pixel data from PNG input\n * const data = await sharp('input.png')\n *   .ensureAlpha()\n *   .extractChannel(3)\n *   .toColourspace('b-w')\n *   .raw({ depth: 'ushort' })\n *   .toBuffer();\n *\n * @param {Object} [options] - output options\n * @param {string} [options.depth='uchar'] - bit depth, one of: char, uchar (default), short, ushort, int, uint, float, complex, double, dpcomplex\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction raw (options) {\n  if (is.object(options)) {\n    if (is.defined(options.depth)) {\n      if (is.string(options.depth) && is.inArray(options.depth,\n        ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'float', 'complex', 'double', 'dpcomplex']\n      )) {\n        this.options.rawDepth = options.depth;\n      } else {\n        throw is.invalidParameterError('depth', 'one of: char, uchar, short, ushort, int, uint, float, complex, double, dpcomplex', options.depth);\n      }\n    }\n  }\n  return this._updateFormatOut('raw');\n}\n\n/**\n * Use tile-based deep zoom (image pyramid) output.\n *\n * Set the format and options for tile images via the `toFormat`, `jpeg`, `png` or `webp` functions.\n * Use a `.zip` or `.szi` file extension with `toFile` to write to a compressed archive file format.\n *\n * The container will be set to `zip` when the output is a Buffer or Stream, otherwise it will default to `fs`.\n *\n * @example\n *  sharp('input.tiff')\n *   .png()\n *   .tile({\n *     size: 512\n *   })\n *   .toFile('output.dz', function(err, info) {\n *     // output.dzi is the Deep Zoom XML definition\n *     // output_files contains 512x512 tiles grouped by zoom level\n *   });\n *\n * @example\n * const zipFileWithTiles = await sharp(input)\n *   .tile({ basename: \"tiles\" })\n *   .toBuffer();\n *\n * @example\n * const iiififier = sharp().tile({ layout: \"iiif\" });\n * readableStream\n *   .pipe(iiififier)\n *   .pipe(writeableStream);\n *\n * @param {Object} [options]\n * @param {number} [options.size=256] tile size in pixels, a value between 1 and 8192.\n * @param {number} [options.overlap=0] tile overlap in pixels, a value between 0 and 8192.\n * @param {number} [options.angle=0] tile angle of rotation, must be a multiple of 90.\n * @param {string|Object} [options.background={r: 255, g: 255, b: 255, alpha: 1}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to white without transparency.\n * @param {string} [options.depth] how deep to make the pyramid, possible values are `onepixel`, `onetile` or `one`, default based on layout.\n * @param {number} [options.skipBlanks=-1] Threshold to skip tile generation. Range is 0-255 for 8-bit images, 0-65535 for 16-bit images. Default is 5 for `google` layout, -1 (no skip) otherwise.\n * @param {string} [options.container='fs'] tile container, with value `fs` (filesystem) or `zip` (compressed file).\n * @param {string} [options.layout='dz'] filesystem layout, possible values are `dz`, `iiif`, `iiif3`, `zoomify` or `google`.\n * @param {boolean} [options.centre=false] centre image in tile.\n * @param {boolean} [options.center=false] alternative spelling of centre.\n * @param {string} [options.id='https://example.com/iiif'] when `layout` is `iiif`/`iiif3`, sets the `@id`/`id` attribute of `info.json`\n * @param {string} [options.basename] the name of the directory within the zip file when container is `zip`.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction tile (options) {\n  if (is.object(options)) {\n    // Size of square tiles, in pixels\n    if (is.defined(options.size)) {\n      if (is.integer(options.size) && is.inRange(options.size, 1, 8192)) {\n        this.options.tileSize = options.size;\n      } else {\n        throw is.invalidParameterError('size', 'integer between 1 and 8192', options.size);\n      }\n    }\n    // Overlap of tiles, in pixels\n    if (is.defined(options.overlap)) {\n      if (is.integer(options.overlap) && is.inRange(options.overlap, 0, 8192)) {\n        if (options.overlap > this.options.tileSize) {\n          throw is.invalidParameterError('overlap', `<= size (${this.options.tileSize})`, options.overlap);\n        }\n        this.options.tileOverlap = options.overlap;\n      } else {\n        throw is.invalidParameterError('overlap', 'integer between 0 and 8192', options.overlap);\n      }\n    }\n    // Container\n    if (is.defined(options.container)) {\n      if (is.string(options.container) && is.inArray(options.container, ['fs', 'zip'])) {\n        this.options.tileContainer = options.container;\n      } else {\n        throw is.invalidParameterError('container', 'one of: fs, zip', options.container);\n      }\n    }\n    // Layout\n    if (is.defined(options.layout)) {\n      if (is.string(options.layout) && is.inArray(options.layout, ['dz', 'google', 'iiif', 'iiif3', 'zoomify'])) {\n        this.options.tileLayout = options.layout;\n      } else {\n        throw is.invalidParameterError('layout', 'one of: dz, google, iiif, iiif3, zoomify', options.layout);\n      }\n    }\n    // Angle of rotation,\n    if (is.defined(options.angle)) {\n      if (is.integer(options.angle) && !(options.angle % 90)) {\n        this.options.tileAngle = options.angle;\n      } else {\n        throw is.invalidParameterError('angle', 'positive/negative multiple of 90', options.angle);\n      }\n    }\n    // Background colour\n    this._setBackgroundColourOption('tileBackground', options.background);\n    // Depth of tiles\n    if (is.defined(options.depth)) {\n      if (is.string(options.depth) && is.inArray(options.depth, ['onepixel', 'onetile', 'one'])) {\n        this.options.tileDepth = options.depth;\n      } else {\n        throw is.invalidParameterError('depth', 'one of: onepixel, onetile, one', options.depth);\n      }\n    }\n    // Threshold to skip blank tiles\n    if (is.defined(options.skipBlanks)) {\n      if (is.integer(options.skipBlanks) && is.inRange(options.skipBlanks, -1, 65535)) {\n        this.options.tileSkipBlanks = options.skipBlanks;\n      } else {\n        throw is.invalidParameterError('skipBlanks', 'integer between -1 and 255/65535', options.skipBlanks);\n      }\n    } else if (is.defined(options.layout) && options.layout === 'google') {\n      this.options.tileSkipBlanks = 5;\n    }\n    // Center image in tile\n    const centre = is.bool(options.center) ? options.center : options.centre;\n    if (is.defined(centre)) {\n      this._setBooleanOption('tileCentre', centre);\n    }\n    // @id attribute for IIIF layout\n    if (is.defined(options.id)) {\n      if (is.string(options.id)) {\n        this.options.tileId = options.id;\n      } else {\n        throw is.invalidParameterError('id', 'string', options.id);\n      }\n    }\n    // Basename for zip container\n    if (is.defined(options.basename)) {\n      if (is.string(options.basename)) {\n        this.options.tileBasename = options.basename;\n      } else {\n        throw is.invalidParameterError('basename', 'string', options.basename);\n      }\n    }\n  }\n  // Format\n  if (is.inArray(this.options.formatOut, ['jpeg', 'png', 'webp'])) {\n    this.options.tileFormat = this.options.formatOut;\n  } else if (this.options.formatOut !== 'input') {\n    throw is.invalidParameterError('format', 'one of: jpeg, png, webp', this.options.formatOut);\n  }\n  return this._updateFormatOut('dz');\n}\n\n/**\n * Set a timeout for processing, in seconds.\n * Use a value of zero to continue processing indefinitely, the default behaviour.\n *\n * The clock starts when libvips opens an input image for processing.\n * Time spent waiting for a libuv thread to become available is not included.\n *\n * @example\n * // Ensure processing takes no longer than 3 seconds\n * try {\n *   const data = await sharp(input)\n *     .blur(1000)\n *     .timeout({ seconds: 3 })\n *     .toBuffer();\n * } catch (err) {\n *   if (err.message.includes('timeout')) { ... }\n * }\n *\n * @since 0.29.2\n *\n * @param {Object} options\n * @param {number} options.seconds - Number of seconds after which processing will be stopped\n * @returns {Sharp}\n */\nfunction timeout (options) {\n  if (!is.plainObject(options)) {\n    throw is.invalidParameterError('options', 'object', options);\n  }\n  if (is.integer(options.seconds) && is.inRange(options.seconds, 0, 3600)) {\n    this.options.timeoutSeconds = options.seconds;\n  } else {\n    throw is.invalidParameterError('seconds', 'integer between 0 and 3600', options.seconds);\n  }\n  return this;\n}\n\n/**\n * Update the output format unless options.force is false,\n * in which case revert to input format.\n * @private\n * @param {string} formatOut\n * @param {Object} [options]\n * @param {boolean} [options.force=true] - force output format, otherwise attempt to use input format\n * @returns {Sharp}\n */\nfunction _updateFormatOut (formatOut, options) {\n  if (!(is.object(options) && options.force === false)) {\n    this.options.formatOut = formatOut;\n  }\n  return this;\n}\n\n/**\n * Update a boolean attribute of the this.options Object.\n * @private\n * @param {string} key\n * @param {boolean} val\n * @throws {Error} Invalid key\n */\nfunction _setBooleanOption (key, val) {\n  if (is.bool(val)) {\n    this.options[key] = val;\n  } else {\n    throw is.invalidParameterError(key, 'boolean', val);\n  }\n}\n\n/**\n * Called by a WriteableStream to notify us it is ready for data.\n * @private\n */\nfunction _read () {\n  if (!this.options.streamOut) {\n    this.options.streamOut = true;\n    const stack = Error();\n    this._pipeline(undefined, stack);\n  }\n}\n\n/**\n * Invoke the C++ image processing pipeline\n * Supports callback, stream and promise variants\n * @private\n */\nfunction _pipeline (callback, stack) {\n  if (typeof callback === 'function') {\n    // output=file/buffer\n    if (this._isStreamInput()) {\n      // output=file/buffer, input=stream\n      this.on('finish', () => {\n        this._flattenBufferIn();\n        sharp.pipeline(this.options, (err, data, info) => {\n          if (err) {\n            callback(is.nativeError(err, stack));\n          } else {\n            callback(null, data, info);\n          }\n        });\n      });\n    } else {\n      // output=file/buffer, input=file/buffer\n      sharp.pipeline(this.options, (err, data, info) => {\n        if (err) {\n          callback(is.nativeError(err, stack));\n        } else {\n          callback(null, data, info);\n        }\n      });\n    }\n    return this;\n  } else if (this.options.streamOut) {\n    // output=stream\n    if (this._isStreamInput()) {\n      // output=stream, input=stream\n      this.once('finish', () => {\n        this._flattenBufferIn();\n        sharp.pipeline(this.options, (err, data, info) => {\n          if (err) {\n            this.emit('error', is.nativeError(err, stack));\n          } else {\n            this.emit('info', info);\n            this.push(data);\n          }\n          this.push(null);\n          this.on('end', () => this.emit('close'));\n        });\n      });\n      if (this.streamInFinished) {\n        this.emit('finish');\n      }\n    } else {\n      // output=stream, input=file/buffer\n      sharp.pipeline(this.options, (err, data, info) => {\n        if (err) {\n          this.emit('error', is.nativeError(err, stack));\n        } else {\n          this.emit('info', info);\n          this.push(data);\n        }\n        this.push(null);\n        this.on('end', () => this.emit('close'));\n      });\n    }\n    return this;\n  } else {\n    // output=promise\n    if (this._isStreamInput()) {\n      // output=promise, input=stream\n      return new Promise((resolve, reject) => {\n        this.once('finish', () => {\n          this._flattenBufferIn();\n          sharp.pipeline(this.options, (err, data, info) => {\n            if (err) {\n              reject(is.nativeError(err, stack));\n            } else {\n              if (this.options.resolveWithObject) {\n                resolve({ data, info });\n              } else {\n                resolve(data);\n              }\n            }\n          });\n        });\n      });\n    } else {\n      // output=promise, input=file/buffer\n      return new Promise((resolve, reject) => {\n        sharp.pipeline(this.options, (err, data, info) => {\n          if (err) {\n            reject(is.nativeError(err, stack));\n          } else {\n            if (this.options.resolveWithObject) {\n              resolve({ data, info });\n            } else {\n              resolve(data);\n            }\n          }\n        });\n      });\n    }\n  }\n}\n\n/**\n * Decorate the Sharp prototype with output-related functions.\n * @module Sharp\n * @private\n */\nmodule.exports = (Sharp) => {\n  Object.assign(Sharp.prototype, {\n    // Public\n    toFile,\n    toBuffer,\n    keepExif,\n    withExif,\n    withExifMerge,\n    keepIccProfile,\n    withIccProfile,\n    keepXmp,\n    withXmp,\n    keepMetadata,\n    withMetadata,\n    toFormat,\n    jpeg,\n    jp2,\n    png,\n    webp,\n    tiff,\n    avif,\n    heif,\n    jxl,\n    gif,\n    raw,\n    tile,\n    timeout,\n    // Private\n    _updateFormatOut,\n    _setBooleanOption,\n    _read,\n    _pipeline\n  });\n};\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\nconst events = require('node:events');\nconst detectLibc = require('detect-libc');\n\nconst is = require('./is');\nconst { runtimePlatformArch } = require('./libvips');\nconst sharp = require('./sharp');\n\nconst runtimePlatform = runtimePlatformArch();\nconst libvipsVersion = sharp.libvipsVersion();\n\n/**\n * An Object containing nested boolean values representing the available input and output formats/methods.\n * @member\n * @example\n * console.log(sharp.format);\n * @returns {Object}\n */\nconst format = sharp.format();\nformat.heif.output.alias = ['avif', 'heic'];\nformat.jpeg.output.alias = ['jpe', 'jpg'];\nformat.tiff.output.alias = ['tif'];\nformat.jp2k.output.alias = ['j2c', 'j2k', 'jp2', 'jpx'];\n\n/**\n * An Object containing the available interpolators and their proper values\n * @readonly\n * @enum {string}\n */\nconst interpolators = {\n  /** [Nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation). Suitable for image enlargement only. */\n  nearest: 'nearest',\n  /** [Bilinear interpolation](http://en.wikipedia.org/wiki/Bilinear_interpolation). Faster than bicubic but with less smooth results. */\n  bilinear: 'bilinear',\n  /** [Bicubic interpolation](http://en.wikipedia.org/wiki/Bicubic_interpolation) (the default). */\n  bicubic: 'bicubic',\n  /** [LBB interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/lbb.cpp#L100). Prevents some \"[acutance](http://en.wikipedia.org/wiki/Acutance)\" but typically reduces performance by a factor of 2. */\n  locallyBoundedBicubic: 'lbb',\n  /** [Nohalo interpolation](http://eprints.soton.ac.uk/268086/). Prevents acutance but typically reduces performance by a factor of 3. */\n  nohalo: 'nohalo',\n  /** [VSQBS interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/vsqbs.cpp#L48). Prevents \"staircasing\" when enlarging. */\n  vertexSplitQuadraticBasisSpline: 'vsqbs'\n};\n\n/**\n * An Object containing the version numbers of sharp, libvips\n * and (when using prebuilt binaries) its dependencies.\n *\n * @member\n * @example\n * console.log(sharp.versions);\n */\nlet versions = {\n  vips: libvipsVersion.semver\n};\n/* node:coverage ignore next 15 */\nif (!libvipsVersion.isGlobal) {\n  if (!libvipsVersion.isWasm) {\n    try {\n      versions = require(`@img/sharp-${runtimePlatform}/versions`);\n    } catch (_) {\n      try {\n        versions = require(`@img/sharp-libvips-${runtimePlatform}/versions`);\n      } catch (_) {}\n    }\n  } else {\n    try {\n      versions = require('@img/sharp-wasm32/versions');\n    } catch (_) {}\n  }\n}\nversions.sharp = require('../package.json').version;\n\n/* node:coverage ignore next 5 */\nif (versions.heif && format.heif) {\n  // Prebuilt binaries provide AV1\n  format.heif.input.fileSuffix = ['.avif'];\n  format.heif.output.alias = ['avif'];\n}\n\n/**\n * Gets or, when options are provided, sets the limits of _libvips'_ operation cache.\n * Existing entries in the cache will be trimmed after any change in limits.\n * This method always returns cache statistics,\n * useful for determining how much working memory is required for a particular task.\n *\n * @example\n * const stats = sharp.cache();\n * @example\n * sharp.cache( { items: 200 } );\n * sharp.cache( { files: 0 } );\n * sharp.cache(false);\n *\n * @param {Object|boolean} [options=true] - Object with the following attributes, or boolean where true uses default cache settings and false removes all caching\n * @param {number} [options.memory=50] - is the maximum memory in MB to use for this cache\n * @param {number} [options.files=20] - is the maximum number of files to hold open\n * @param {number} [options.items=100] - is the maximum number of operations to cache\n * @returns {Object}\n */\nfunction cache (options) {\n  if (is.bool(options)) {\n    if (options) {\n      // Default cache settings of 50MB, 20 files, 100 items\n      return sharp.cache(50, 20, 100);\n    } else {\n      return sharp.cache(0, 0, 0);\n    }\n  } else if (is.object(options)) {\n    return sharp.cache(options.memory, options.files, options.items);\n  } else {\n    return sharp.cache();\n  }\n}\ncache(true);\n\n/**\n * Gets or, when a concurrency is provided, sets\n * the maximum number of threads _libvips_ should use to process _each image_.\n * These are from a thread pool managed by glib,\n * which helps avoid the overhead of creating new threads.\n *\n * This method always returns the current concurrency.\n *\n * The default value is the number of CPU cores,\n * except when using glibc-based Linux without jemalloc,\n * where the default is `1` to help reduce memory fragmentation.\n *\n * A value of `0` will reset this to the number of CPU cores.\n *\n * Some image format libraries spawn additional threads,\n * e.g. libaom manages its own 4 threads when encoding AVIF images,\n * and these are independent of the value set here.\n *\n * :::note\n * Further {@link /performance/ control over performance} is available.\n * :::\n *\n * @example\n * const threads = sharp.concurrency(); // 4\n * sharp.concurrency(2); // 2\n * sharp.concurrency(0); // 4\n *\n * @param {number} [concurrency]\n * @returns {number} concurrency\n */\nfunction concurrency (concurrency) {\n  return sharp.concurrency(is.integer(concurrency) ? concurrency : null);\n}\n/* node:coverage ignore next 7 */\nif (detectLibc.familySync() === detectLibc.GLIBC && !sharp._isUsingJemalloc()) {\n  // Reduce default concurrency to 1 when using glibc memory allocator\n  sharp.concurrency(1);\n} else if (detectLibc.familySync() === detectLibc.MUSL && sharp.concurrency() === 1024) {\n  // Reduce default concurrency when musl thread over-subscription detected\n  sharp.concurrency(require('node:os').availableParallelism());\n}\n\n/**\n * An EventEmitter that emits a `change` event when a task is either:\n * - queued, waiting for _libuv_ to provide a worker thread\n * - complete\n * @member\n * @example\n * sharp.queue.on('change', function(queueLength) {\n *   console.log('Queue contains ' + queueLength + ' task(s)');\n * });\n */\nconst queue = new events.EventEmitter();\n\n/**\n * Provides access to internal task counters.\n * - queue is the number of tasks this module has queued waiting for _libuv_ to provide a worker thread from its pool.\n * - process is the number of resize tasks currently being processed.\n *\n * @example\n * const counters = sharp.counters(); // { queue: 2, process: 4 }\n *\n * @returns {Object}\n */\nfunction counters () {\n  return sharp.counters();\n}\n\n/**\n * Get and set use of SIMD vector unit instructions.\n * Requires libvips to have been compiled with highway support.\n *\n * Improves the performance of `resize`, `blur` and `sharpen` operations\n * by taking advantage of the SIMD vector unit of the CPU, e.g. Intel SSE and ARM NEON.\n *\n * @example\n * const simd = sharp.simd();\n * // simd is `true` if the runtime use of highway is currently enabled\n * @example\n * const simd = sharp.simd(false);\n * // prevent libvips from using highway at runtime\n *\n * @param {boolean} [simd=true]\n * @returns {boolean}\n */\nfunction simd (simd) {\n  return sharp.simd(is.bool(simd) ? simd : null);\n}\n\n/**\n * Block libvips operations at runtime.\n *\n * This is in addition to the `VIPS_BLOCK_UNTRUSTED` environment variable,\n * which when set will block all \"untrusted\" operations.\n *\n * @since 0.32.4\n *\n * @example <caption>Block all TIFF input.</caption>\n * sharp.block({\n *   operation: ['VipsForeignLoadTiff']\n * });\n *\n * @param {Object} options\n * @param {Array<string>} options.operation - List of libvips low-level operation names to block.\n */\nfunction block (options) {\n  if (is.object(options)) {\n    if (Array.isArray(options.operation) && options.operation.every(is.string)) {\n      sharp.block(options.operation, true);\n    } else {\n      throw is.invalidParameterError('operation', 'Array<string>', options.operation);\n    }\n  } else {\n    throw is.invalidParameterError('options', 'object', options);\n  }\n}\n\n/**\n * Unblock libvips operations at runtime.\n *\n * This is useful for defining a list of allowed operations.\n *\n * @since 0.32.4\n *\n * @example <caption>Block all input except WebP from the filesystem.</caption>\n * sharp.block({\n *   operation: ['VipsForeignLoad']\n * });\n * sharp.unblock({\n *   operation: ['VipsForeignLoadWebpFile']\n * });\n *\n * @example <caption>Block all input except JPEG and PNG from a Buffer or Stream.</caption>\n * sharp.block({\n *   operation: ['VipsForeignLoad']\n * });\n * sharp.unblock({\n *   operation: ['VipsForeignLoadJpegBuffer', 'VipsForeignLoadPngBuffer']\n * });\n *\n * @param {Object} options\n * @param {Array<string>} options.operation - List of libvips low-level operation names to unblock.\n */\nfunction unblock (options) {\n  if (is.object(options)) {\n    if (Array.isArray(options.operation) && options.operation.every(is.string)) {\n      sharp.block(options.operation, false);\n    } else {\n      throw is.invalidParameterError('operation', 'Array<string>', options.operation);\n    }\n  } else {\n    throw is.invalidParameterError('options', 'object', options);\n  }\n}\n\n/**\n * Decorate the Sharp class with utility-related functions.\n * @module Sharp\n * @private\n */\nmodule.exports = (Sharp) => {\n  Sharp.cache = cache;\n  Sharp.concurrency = concurrency;\n  Sharp.counters = counters;\n  Sharp.simd = simd;\n  Sharp.format = format;\n  Sharp.interpolators = interpolators;\n  Sharp.versions = versions;\n  Sharp.queue = queue;\n  Sharp.block = block;\n  Sharp.unblock = unblock;\n};\n","/*!\n  Copyright 2013 Lovell Fuller and others.\n  SPDX-License-Identifier: Apache-2.0\n*/\n\nconst Sharp = require('./constructor');\nrequire('./input')(Sharp);\nrequire('./resize')(Sharp);\nrequire('./composite')(Sharp);\nrequire('./operation')(Sharp);\nrequire('./colour')(Sharp);\nrequire('./channel')(Sharp);\nrequire('./output')(Sharp);\nrequire('./utility')(Sharp);\n\nmodule.exports = Sharp;\n"]}