{"version":3,"file":"index-AwEw3-gc.chunk.mjs","sources":["../node_modules/typescript-event-target/dist/index.mjs","../node_modules/events/events.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.cjs","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/util-deprecate/browser.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/string_decoder/node_modules/safe-buffer/index.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/stream-browserify/index.js","../node_modules/sax/lib/sax.js","../node_modules/@file-type/xml/lib/index.js","../node_modules/is-svg/index.js","../node_modules/@nextcloud/files/dist/index.mjs"],"sourcesContent":["var e=class extends EventTarget{dispatchTypedEvent(s,t){return super.dispatchEvent(t)}};export{e as TypedEventTarget};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\nObject.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });\n\nvar buffer = {};\n\nvar base64Js = {};\n\nbase64Js.byteLength = byteLength;\nbase64Js.toByteArray = toByteArray;\nbase64Js.fromByteArray = fromByteArray;\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i];\n  revLookup[code.charCodeAt(i)] = i;\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens (b64) {\n  var len = b64.length;\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=');\n  if (validLen === -1) validLen = len;\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4);\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64);\n  var validLen = lens[0];\n  var placeHoldersLen = lens[1];\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp;\n  var lens = getLens(b64);\n  var validLen = lens[0];\n  var placeHoldersLen = lens[1];\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n  var curByte = 0;\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen;\n\n  var i;\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)];\n    arr[curByte++] = (tmp >> 16) & 0xFF;\n    arr[curByte++] = (tmp >> 8) & 0xFF;\n    arr[curByte++] = tmp & 0xFF;\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4);\n    arr[curByte++] = tmp & 0xFF;\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2);\n    arr[curByte++] = (tmp >> 8) & 0xFF;\n    arr[curByte++] = tmp & 0xFF;\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp;\n  var output = [];\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF);\n    output.push(tripletToBase64(tmp));\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp;\n  var len = uint8.length;\n  var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n  var parts = [];\n  var maxChunkLength = 16383; // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1];\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    );\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    );\n  }\n\n  return parts.join('')\n}\n\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n\nieee754.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m;\n  var eLen = (nBytes * 8) - mLen - 1;\n  var eMax = (1 << eLen) - 1;\n  var eBias = eMax >> 1;\n  var nBits = -7;\n  var i = isLE ? (nBytes - 1) : 0;\n  var d = isLE ? -1 : 1;\n  var s = buffer[offset + i];\n\n  i += d;\n\n  e = s & ((1 << (-nBits)) - 1);\n  s >>= (-nBits);\n  nBits += eLen;\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1);\n  e >>= (-nBits);\n  nBits += mLen;\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias;\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen);\n    e = e - eBias;\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n};\n\nieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c;\n  var eLen = (nBytes * 8) - mLen - 1;\n  var eMax = (1 << eLen) - 1;\n  var eBias = eMax >> 1;\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n  var i = isLE ? 0 : (nBytes - 1);\n  var d = isLE ? 1 : -1;\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n  value = Math.abs(value);\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0;\n    e = eMax;\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2);\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--;\n      c *= 2;\n    }\n    if (e + eBias >= 1) {\n      value += rt / c;\n    } else {\n      value += rt * Math.pow(2, 1 - eBias);\n    }\n    if (value * c >= 2) {\n      e++;\n      c /= 2;\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0;\n      e = eMax;\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen);\n      e = e + eBias;\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n      e = 0;\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m;\n  eLen += mLen;\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128;\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\n(function (exports) {\n\n\tconst base64 = base64Js;\n\tconst ieee754$1 = ieee754;\n\tconst customInspectSymbol =\n\t  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n\t    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n\t    : null;\n\n\texports.Buffer = Buffer;\n\texports.SlowBuffer = SlowBuffer;\n\texports.INSPECT_MAX_BYTES = 50;\n\n\tconst K_MAX_LENGTH = 0x7fffffff;\n\texports.kMaxLength = K_MAX_LENGTH;\n\tconst { Uint8Array: GlobalUint8Array, ArrayBuffer: GlobalArrayBuffer, SharedArrayBuffer: GlobalSharedArrayBuffer } = globalThis;\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t *   === true    Use Uint8Array implementation (fastest)\n\t *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n\t *               implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * We report that the browser does not support typed arrays if the are not subclassable\n\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t * for __proto__ and has a buggy typed array implementation.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t    typeof console.error === 'function') {\n\t  console.error(\n\t    'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t  );\n\t}\n\n\tfunction typedArraySupport () {\n\t  // Can typed array instances can be augmented?\n\t  try {\n\t    const arr = new GlobalUint8Array(1);\n\t    const proto = { foo: function () { return 42 } };\n\t    Object.setPrototypeOf(proto, GlobalUint8Array.prototype);\n\t    Object.setPrototypeOf(arr, proto);\n\t    return arr.foo() === 42\n\t  } catch (e) {\n\t    return false\n\t  }\n\t}\n\n\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t  enumerable: true,\n\t  get: function () {\n\t    if (!Buffer.isBuffer(this)) return undefined\n\t    return this.buffer\n\t  }\n\t});\n\n\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t  enumerable: true,\n\t  get: function () {\n\t    if (!Buffer.isBuffer(this)) return undefined\n\t    return this.byteOffset\n\t  }\n\t});\n\n\tfunction createBuffer (length) {\n\t  if (length > K_MAX_LENGTH) {\n\t    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t  }\n\t  // Return an augmented `Uint8Array` instance\n\t  const buf = new GlobalUint8Array(length);\n\t  Object.setPrototypeOf(buf, Buffer.prototype);\n\t  return buf\n\t}\n\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t  // Common case.\n\t  if (typeof arg === 'number') {\n\t    if (typeof encodingOrOffset === 'string') {\n\t      throw new TypeError(\n\t        'The \"string\" argument must be of type string. Received type number'\n\t      )\n\t    }\n\t    return allocUnsafe(arg)\n\t  }\n\t  return from(arg, encodingOrOffset, length)\n\t}\n\n\tBuffer.poolSize = 8192; // not used by this implementation\n\n\tfunction from (value, encodingOrOffset, length) {\n\t  if (typeof value === 'string') {\n\t    return fromString(value, encodingOrOffset)\n\t  }\n\n\t  if (GlobalArrayBuffer.isView(value)) {\n\t    return fromArrayView(value)\n\t  }\n\n\t  if (value == null) {\n\t    throw new TypeError(\n\t      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t      'or Array-like Object. Received type ' + (typeof value)\n\t    )\n\t  }\n\n\t  if (isInstance(value, GlobalArrayBuffer) ||\n\t      (value && isInstance(value.buffer, GlobalArrayBuffer))) {\n\t    return fromArrayBuffer(value, encodingOrOffset, length)\n\t  }\n\n\t  if (typeof GlobalSharedArrayBuffer !== 'undefined' &&\n\t      (isInstance(value, GlobalSharedArrayBuffer) ||\n\t      (value && isInstance(value.buffer, GlobalSharedArrayBuffer)))) {\n\t    return fromArrayBuffer(value, encodingOrOffset, length)\n\t  }\n\n\t  if (typeof value === 'number') {\n\t    throw new TypeError(\n\t      'The \"value\" argument must not be of type number. Received type number'\n\t    )\n\t  }\n\n\t  const valueOf = value.valueOf && value.valueOf();\n\t  if (valueOf != null && valueOf !== value) {\n\t    return Buffer.from(valueOf, encodingOrOffset, length)\n\t  }\n\n\t  const b = fromObject(value);\n\t  if (b) return b\n\n\t  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t      typeof value[Symbol.toPrimitive] === 'function') {\n\t    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n\t  }\n\n\t  throw new TypeError(\n\t    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t    'or Array-like Object. Received type ' + (typeof value)\n\t  )\n\t}\n\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t  return from(value, encodingOrOffset, length)\n\t};\n\n\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t// https://github.com/feross/buffer/pull/148\n\tObject.setPrototypeOf(Buffer.prototype, GlobalUint8Array.prototype);\n\tObject.setPrototypeOf(Buffer, GlobalUint8Array);\n\n\tfunction assertSize (size) {\n\t  if (typeof size !== 'number') {\n\t    throw new TypeError('\"size\" argument must be of type number')\n\t  } else if (size < 0) {\n\t    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t  }\n\t}\n\n\tfunction alloc (size, fill, encoding) {\n\t  assertSize(size);\n\t  if (size <= 0) {\n\t    return createBuffer(size)\n\t  }\n\t  if (fill !== undefined) {\n\t    // Only pay attention to encoding if it's a string. This\n\t    // prevents accidentally sending in a number that would\n\t    // be interpreted as a start offset.\n\t    return typeof encoding === 'string'\n\t      ? createBuffer(size).fill(fill, encoding)\n\t      : createBuffer(size).fill(fill)\n\t  }\n\t  return createBuffer(size)\n\t}\n\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t  return alloc(size, fill, encoding)\n\t};\n\n\tfunction allocUnsafe (size) {\n\t  assertSize(size);\n\t  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t}\n\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t  return allocUnsafe(size)\n\t};\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t  return allocUnsafe(size)\n\t};\n\n\tfunction fromString (string, encoding) {\n\t  if (typeof encoding !== 'string' || encoding === '') {\n\t    encoding = 'utf8';\n\t  }\n\n\t  if (!Buffer.isEncoding(encoding)) {\n\t    throw new TypeError('Unknown encoding: ' + encoding)\n\t  }\n\n\t  const length = byteLength(string, encoding) | 0;\n\t  let buf = createBuffer(length);\n\n\t  const actual = buf.write(string, encoding);\n\n\t  if (actual !== length) {\n\t    // Writing a hex string, for example, that contains invalid characters will\n\t    // cause everything after the first invalid character to be ignored. (e.g.\n\t    // 'abxxcd' will be treated as 'ab')\n\t    buf = buf.slice(0, actual);\n\t  }\n\n\t  return buf\n\t}\n\n\tfunction fromArrayLike (array) {\n\t  const length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t  const buf = createBuffer(length);\n\t  for (let i = 0; i < length; i += 1) {\n\t    buf[i] = array[i] & 255;\n\t  }\n\t  return buf\n\t}\n\n\tfunction fromArrayView (arrayView) {\n\t  if (isInstance(arrayView, GlobalUint8Array)) {\n\t    const copy = new GlobalUint8Array(arrayView);\n\t    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n\t  }\n\t  return fromArrayLike(arrayView)\n\t}\n\n\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t  if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t    throw new RangeError('\"offset\" is outside of buffer bounds')\n\t  }\n\n\t  if (array.byteLength < byteOffset + (length || 0)) {\n\t    throw new RangeError('\"length\" is outside of buffer bounds')\n\t  }\n\n\t  let buf;\n\t  if (byteOffset === undefined && length === undefined) {\n\t    buf = new GlobalUint8Array(array);\n\t  } else if (length === undefined) {\n\t    buf = new GlobalUint8Array(array, byteOffset);\n\t  } else {\n\t    buf = new GlobalUint8Array(array, byteOffset, length);\n\t  }\n\n\t  // Return an augmented `Uint8Array` instance\n\t  Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t  return buf\n\t}\n\n\tfunction fromObject (obj) {\n\t  if (Buffer.isBuffer(obj)) {\n\t    const len = checked(obj.length) | 0;\n\t    const buf = createBuffer(len);\n\n\t    if (buf.length === 0) {\n\t      return buf\n\t    }\n\n\t    obj.copy(buf, 0, 0, len);\n\t    return buf\n\t  }\n\n\t  if (obj.length !== undefined) {\n\t    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t      return createBuffer(0)\n\t    }\n\t    return fromArrayLike(obj)\n\t  }\n\n\t  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t    return fromArrayLike(obj.data)\n\t  }\n\t}\n\n\tfunction checked (length) {\n\t  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t  // length is NaN (which is otherwise coerced to zero.)\n\t  if (length >= K_MAX_LENGTH) {\n\t    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t  }\n\t  return length | 0\n\t}\n\n\tfunction SlowBuffer (length) {\n\t  if (+length != length) { // eslint-disable-line eqeqeq\n\t    length = 0;\n\t  }\n\t  return Buffer.alloc(+length)\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t  return b != null && b._isBuffer === true &&\n\t    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t};\n\n\tBuffer.compare = function compare (a, b) {\n\t  if (isInstance(a, GlobalUint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t  if (isInstance(b, GlobalUint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t    throw new TypeError(\n\t      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t    )\n\t  }\n\n\t  if (a === b) return 0\n\n\t  let x = a.length;\n\t  let y = b.length;\n\n\t  for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n\t    if (a[i] !== b[i]) {\n\t      x = a[i];\n\t      y = b[i];\n\t      break\n\t    }\n\t  }\n\n\t  if (x < y) return -1\n\t  if (y < x) return 1\n\t  return 0\n\t};\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t  switch (String(encoding).toLowerCase()) {\n\t    case 'hex':\n\t    case 'utf8':\n\t    case 'utf-8':\n\t    case 'ascii':\n\t    case 'latin1':\n\t    case 'binary':\n\t    case 'base64':\n\t    case 'ucs2':\n\t    case 'ucs-2':\n\t    case 'utf16le':\n\t    case 'utf-16le':\n\t      return true\n\t    default:\n\t      return false\n\t  }\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t  if (!Array.isArray(list)) {\n\t    throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t  }\n\n\t  if (list.length === 0) {\n\t    return Buffer.alloc(0)\n\t  }\n\n\t  let i;\n\t  if (length === undefined) {\n\t    length = 0;\n\t    for (i = 0; i < list.length; ++i) {\n\t      length += list[i].length;\n\t    }\n\t  }\n\n\t  const buffer = Buffer.allocUnsafe(length);\n\t  let pos = 0;\n\t  for (i = 0; i < list.length; ++i) {\n\t    let buf = list[i];\n\t    if (isInstance(buf, GlobalUint8Array)) {\n\t      if (pos + buf.length > buffer.length) {\n\t        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n\t        buf.copy(buffer, pos);\n\t      } else {\n\t        GlobalUint8Array.prototype.set.call(\n\t          buffer,\n\t          buf,\n\t          pos\n\t        );\n\t      }\n\t    } else if (!Buffer.isBuffer(buf)) {\n\t      throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t    } else {\n\t      buf.copy(buffer, pos);\n\t    }\n\t    pos += buf.length;\n\t  }\n\t  return buffer\n\t};\n\n\tfunction byteLength (string, encoding) {\n\t  if (Buffer.isBuffer(string)) {\n\t    return string.length\n\t  }\n\t  if (GlobalArrayBuffer.isView(string) || isInstance(string, GlobalArrayBuffer)) {\n\t    return string.byteLength\n\t  }\n\t  if (typeof string !== 'string') {\n\t    throw new TypeError(\n\t      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t      'Received type ' + typeof string\n\t    )\n\t  }\n\n\t  const len = string.length;\n\t  const mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t  if (!mustMatch && len === 0) return 0\n\n\t  // Use a for loop to avoid recursion\n\t  let loweredCase = false;\n\t  for (;;) {\n\t    switch (encoding) {\n\t      case 'ascii':\n\t      case 'latin1':\n\t      case 'binary':\n\t        return len\n\t      case 'utf8':\n\t      case 'utf-8':\n\t        return utf8ToBytes(string).length\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return len * 2\n\t      case 'hex':\n\t        return len >>> 1\n\t      case 'base64':\n\t        return base64ToBytes(string).length\n\t      default:\n\t        if (loweredCase) {\n\t          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t        }\n\t        encoding = ('' + encoding).toLowerCase();\n\t        loweredCase = true;\n\t    }\n\t  }\n\t}\n\tBuffer.byteLength = byteLength;\n\n\tfunction slowToString (encoding, start, end) {\n\t  let loweredCase = false;\n\n\t  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t  // property of a typed array.\n\n\t  // This behaves neither like String nor Uint8Array in that we set start/end\n\t  // to their upper/lower bounds if the value passed is out of range.\n\t  // undefined is handled specially as per ECMA-262 6th Edition,\n\t  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t  if (start === undefined || start < 0) {\n\t    start = 0;\n\t  }\n\t  // Return early if start > this.length. Done here to prevent potential uint32\n\t  // coercion fail below.\n\t  if (start > this.length) {\n\t    return ''\n\t  }\n\n\t  if (end === undefined || end > this.length) {\n\t    end = this.length;\n\t  }\n\n\t  if (end <= 0) {\n\t    return ''\n\t  }\n\n\t  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\t  end >>>= 0;\n\t  start >>>= 0;\n\n\t  if (end <= start) {\n\t    return ''\n\t  }\n\n\t  if (!encoding) encoding = 'utf8';\n\n\t  while (true) {\n\t    switch (encoding) {\n\t      case 'hex':\n\t        return hexSlice(this, start, end)\n\n\t      case 'utf8':\n\t      case 'utf-8':\n\t        return utf8Slice(this, start, end)\n\n\t      case 'ascii':\n\t        return asciiSlice(this, start, end)\n\n\t      case 'latin1':\n\t      case 'binary':\n\t        return latin1Slice(this, start, end)\n\n\t      case 'base64':\n\t        return base64Slice(this, start, end)\n\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return utf16leSlice(this, start, end)\n\n\t      default:\n\t        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t        encoding = (encoding + '').toLowerCase();\n\t        loweredCase = true;\n\t    }\n\t  }\n\t}\n\n\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t// reliably in a browserify context because there could be multiple different\n\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t// instances that were created from another copy of the `buffer` package.\n\t// See: https://github.com/feross/buffer/issues/154\n\tBuffer.prototype._isBuffer = true;\n\n\tfunction swap (b, n, m) {\n\t  const i = b[n];\n\t  b[n] = b[m];\n\t  b[m] = i;\n\t}\n\n\tBuffer.prototype.swap16 = function swap16 () {\n\t  const len = this.length;\n\t  if (len % 2 !== 0) {\n\t    throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t  }\n\t  for (let i = 0; i < len; i += 2) {\n\t    swap(this, i, i + 1);\n\t  }\n\t  return this\n\t};\n\n\tBuffer.prototype.swap32 = function swap32 () {\n\t  const len = this.length;\n\t  if (len % 4 !== 0) {\n\t    throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t  }\n\t  for (let i = 0; i < len; i += 4) {\n\t    swap(this, i, i + 3);\n\t    swap(this, i + 1, i + 2);\n\t  }\n\t  return this\n\t};\n\n\tBuffer.prototype.swap64 = function swap64 () {\n\t  const len = this.length;\n\t  if (len % 8 !== 0) {\n\t    throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t  }\n\t  for (let i = 0; i < len; i += 8) {\n\t    swap(this, i, i + 7);\n\t    swap(this, i + 1, i + 6);\n\t    swap(this, i + 2, i + 5);\n\t    swap(this, i + 3, i + 4);\n\t  }\n\t  return this\n\t};\n\n\tBuffer.prototype.toString = function toString () {\n\t  const length = this.length;\n\t  if (length === 0) return ''\n\t  if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t  return slowToString.apply(this, arguments)\n\t};\n\n\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\tBuffer.prototype.equals = function equals (b) {\n\t  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t  if (this === b) return true\n\t  return Buffer.compare(this, b) === 0\n\t};\n\n\tBuffer.prototype.inspect = function inspect () {\n\t  let str = '';\n\t  const max = exports.INSPECT_MAX_BYTES;\n\t  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t  if (this.length > max) str += ' ... ';\n\t  return '<Buffer ' + str + '>'\n\t};\n\tif (customInspectSymbol) {\n\t  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t}\n\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t  if (isInstance(target, GlobalUint8Array)) {\n\t    target = Buffer.from(target, target.offset, target.byteLength);\n\t  }\n\t  if (!Buffer.isBuffer(target)) {\n\t    throw new TypeError(\n\t      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t      'Received type ' + (typeof target)\n\t    )\n\t  }\n\n\t  if (start === undefined) {\n\t    start = 0;\n\t  }\n\t  if (end === undefined) {\n\t    end = target ? target.length : 0;\n\t  }\n\t  if (thisStart === undefined) {\n\t    thisStart = 0;\n\t  }\n\t  if (thisEnd === undefined) {\n\t    thisEnd = this.length;\n\t  }\n\n\t  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t    throw new RangeError('out of range index')\n\t  }\n\n\t  if (thisStart >= thisEnd && start >= end) {\n\t    return 0\n\t  }\n\t  if (thisStart >= thisEnd) {\n\t    return -1\n\t  }\n\t  if (start >= end) {\n\t    return 1\n\t  }\n\n\t  start >>>= 0;\n\t  end >>>= 0;\n\t  thisStart >>>= 0;\n\t  thisEnd >>>= 0;\n\n\t  if (this === target) return 0\n\n\t  let x = thisEnd - thisStart;\n\t  let y = end - start;\n\t  const len = Math.min(x, y);\n\n\t  const thisCopy = this.slice(thisStart, thisEnd);\n\t  const targetCopy = target.slice(start, end);\n\n\t  for (let i = 0; i < len; ++i) {\n\t    if (thisCopy[i] !== targetCopy[i]) {\n\t      x = thisCopy[i];\n\t      y = targetCopy[i];\n\t      break\n\t    }\n\t  }\n\n\t  if (x < y) return -1\n\t  if (y < x) return 1\n\t  return 0\n\t};\n\n\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t//\n\t// Arguments:\n\t// - buffer - a Buffer to search\n\t// - val - a string, Buffer, or number\n\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t// - encoding - an optional encoding, relevant is val is a string\n\t// - dir - true for indexOf, false for lastIndexOf\n\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t  // Empty buffer means no match\n\t  if (buffer.length === 0) return -1\n\n\t  // Normalize byteOffset\n\t  if (typeof byteOffset === 'string') {\n\t    encoding = byteOffset;\n\t    byteOffset = 0;\n\t  } else if (byteOffset > 0x7fffffff) {\n\t    byteOffset = 0x7fffffff;\n\t  } else if (byteOffset < -0x80000000) {\n\t    byteOffset = -0x80000000;\n\t  }\n\t  byteOffset = +byteOffset; // Coerce to Number.\n\t  if (numberIsNaN(byteOffset)) {\n\t    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t    byteOffset = dir ? 0 : (buffer.length - 1);\n\t  }\n\n\t  // Normalize byteOffset: negative offsets start from the end of the buffer\n\t  if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t  if (byteOffset >= buffer.length) {\n\t    if (dir) return -1\n\t    else byteOffset = buffer.length - 1;\n\t  } else if (byteOffset < 0) {\n\t    if (dir) byteOffset = 0;\n\t    else return -1\n\t  }\n\n\t  // Normalize val\n\t  if (typeof val === 'string') {\n\t    val = Buffer.from(val, encoding);\n\t  }\n\n\t  // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t  if (Buffer.isBuffer(val)) {\n\t    // Special case: looking for empty string/buffer always fails\n\t    if (val.length === 0) {\n\t      return -1\n\t    }\n\t    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t  } else if (typeof val === 'number') {\n\t    val = val & 0xFF; // Search for a byte value [0-255]\n\t    if (typeof GlobalUint8Array.prototype.indexOf === 'function') {\n\t      if (dir) {\n\t        return GlobalUint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t      } else {\n\t        return GlobalUint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t      }\n\t    }\n\t    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t  }\n\n\t  throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t  let indexSize = 1;\n\t  let arrLength = arr.length;\n\t  let valLength = val.length;\n\n\t  if (encoding !== undefined) {\n\t    encoding = String(encoding).toLowerCase();\n\t    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t        encoding === 'utf16le' || encoding === 'utf-16le') {\n\t      if (arr.length < 2 || val.length < 2) {\n\t        return -1\n\t      }\n\t      indexSize = 2;\n\t      arrLength /= 2;\n\t      valLength /= 2;\n\t      byteOffset /= 2;\n\t    }\n\t  }\n\n\t  function read (buf, i) {\n\t    if (indexSize === 1) {\n\t      return buf[i]\n\t    } else {\n\t      return buf.readUInt16BE(i * indexSize)\n\t    }\n\t  }\n\n\t  let i;\n\t  if (dir) {\n\t    let foundIndex = -1;\n\t    for (i = byteOffset; i < arrLength; i++) {\n\t      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t        if (foundIndex === -1) foundIndex = i;\n\t        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t      } else {\n\t        if (foundIndex !== -1) i -= i - foundIndex;\n\t        foundIndex = -1;\n\t      }\n\t    }\n\t  } else {\n\t    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t    for (i = byteOffset; i >= 0; i--) {\n\t      let found = true;\n\t      for (let j = 0; j < valLength; j++) {\n\t        if (read(arr, i + j) !== read(val, j)) {\n\t          found = false;\n\t          break\n\t        }\n\t      }\n\t      if (found) return i\n\t    }\n\t  }\n\n\t  return -1\n\t}\n\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t  return this.indexOf(val, byteOffset, encoding) !== -1\n\t};\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t};\n\n\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t};\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t  offset = Number(offset) || 0;\n\t  const remaining = buf.length - offset;\n\t  if (!length) {\n\t    length = remaining;\n\t  } else {\n\t    length = Number(length);\n\t    if (length > remaining) {\n\t      length = remaining;\n\t    }\n\t  }\n\n\t  const strLen = string.length;\n\n\t  if (length > strLen / 2) {\n\t    length = strLen / 2;\n\t  }\n\t  let i;\n\t  for (i = 0; i < length; ++i) {\n\t    const parsed = parseInt(string.substr(i * 2, 2), 16);\n\t    if (numberIsNaN(parsed)) return i\n\t    buf[offset + i] = parsed;\n\t  }\n\t  return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t  return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t  return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t  // Buffer#write(string)\n\t  if (offset === undefined) {\n\t    encoding = 'utf8';\n\t    length = this.length;\n\t    offset = 0;\n\t  // Buffer#write(string, encoding)\n\t  } else if (length === undefined && typeof offset === 'string') {\n\t    encoding = offset;\n\t    length = this.length;\n\t    offset = 0;\n\t  // Buffer#write(string, offset[, length][, encoding])\n\t  } else if (isFinite(offset)) {\n\t    offset = offset >>> 0;\n\t    if (isFinite(length)) {\n\t      length = length >>> 0;\n\t      if (encoding === undefined) encoding = 'utf8';\n\t    } else {\n\t      encoding = length;\n\t      length = undefined;\n\t    }\n\t  } else {\n\t    throw new Error(\n\t      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t    )\n\t  }\n\n\t  const remaining = this.length - offset;\n\t  if (length === undefined || length > remaining) length = remaining;\n\n\t  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t    throw new RangeError('Attempt to write outside buffer bounds')\n\t  }\n\n\t  if (!encoding) encoding = 'utf8';\n\n\t  let loweredCase = false;\n\t  for (;;) {\n\t    switch (encoding) {\n\t      case 'hex':\n\t        return hexWrite(this, string, offset, length)\n\n\t      case 'utf8':\n\t      case 'utf-8':\n\t        return utf8Write(this, string, offset, length)\n\n\t      case 'ascii':\n\t      case 'latin1':\n\t      case 'binary':\n\t        return asciiWrite(this, string, offset, length)\n\n\t      case 'base64':\n\t        // Warning: maxLength not taken into account in base64Write\n\t        return base64Write(this, string, offset, length)\n\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return ucs2Write(this, string, offset, length)\n\n\t      default:\n\t        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t        encoding = ('' + encoding).toLowerCase();\n\t        loweredCase = true;\n\t    }\n\t  }\n\t};\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t  return {\n\t    type: 'Buffer',\n\t    data: Array.prototype.slice.call(this._arr || this, 0)\n\t  }\n\t};\n\n\tfunction base64Slice (buf, start, end) {\n\t  if (start === 0 && end === buf.length) {\n\t    return base64.fromByteArray(buf)\n\t  } else {\n\t    return base64.fromByteArray(buf.slice(start, end))\n\t  }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t  end = Math.min(buf.length, end);\n\t  const res = [];\n\n\t  let i = start;\n\t  while (i < end) {\n\t    const firstByte = buf[i];\n\t    let codePoint = null;\n\t    let bytesPerSequence = (firstByte > 0xEF)\n\t      ? 4\n\t      : (firstByte > 0xDF)\n\t          ? 3\n\t          : (firstByte > 0xBF)\n\t              ? 2\n\t              : 1;\n\n\t    if (i + bytesPerSequence <= end) {\n\t      let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t      switch (bytesPerSequence) {\n\t        case 1:\n\t          if (firstByte < 0x80) {\n\t            codePoint = firstByte;\n\t          }\n\t          break\n\t        case 2:\n\t          secondByte = buf[i + 1];\n\t          if ((secondByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t            if (tempCodePoint > 0x7F) {\n\t              codePoint = tempCodePoint;\n\t            }\n\t          }\n\t          break\n\t        case 3:\n\t          secondByte = buf[i + 1];\n\t          thirdByte = buf[i + 2];\n\t          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t              codePoint = tempCodePoint;\n\t            }\n\t          }\n\t          break\n\t        case 4:\n\t          secondByte = buf[i + 1];\n\t          thirdByte = buf[i + 2];\n\t          fourthByte = buf[i + 3];\n\t          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t              codePoint = tempCodePoint;\n\t            }\n\t          }\n\t      }\n\t    }\n\n\t    if (codePoint === null) {\n\t      // we did not generate a valid codePoint so insert a\n\t      // replacement char (U+FFFD) and advance only 1 byte\n\t      codePoint = 0xFFFD;\n\t      bytesPerSequence = 1;\n\t    } else if (codePoint > 0xFFFF) {\n\t      // encode to utf16 (surrogate pair dance)\n\t      codePoint -= 0x10000;\n\t      res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t      codePoint = 0xDC00 | codePoint & 0x3FF;\n\t    }\n\n\t    res.push(codePoint);\n\t    i += bytesPerSequence;\n\t  }\n\n\t  return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tconst MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t  const len = codePoints.length;\n\t  if (len <= MAX_ARGUMENTS_LENGTH) {\n\t    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t  }\n\n\t  // Decode in chunks to avoid \"call stack size exceeded\".\n\t  let res = '';\n\t  let i = 0;\n\t  while (i < len) {\n\t    res += String.fromCharCode.apply(\n\t      String,\n\t      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t    );\n\t  }\n\t  return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t  let ret = '';\n\t  end = Math.min(buf.length, end);\n\n\t  for (let i = start; i < end; ++i) {\n\t    ret += String.fromCharCode(buf[i] & 0x7F);\n\t  }\n\t  return ret\n\t}\n\n\tfunction latin1Slice (buf, start, end) {\n\t  let ret = '';\n\t  end = Math.min(buf.length, end);\n\n\t  for (let i = start; i < end; ++i) {\n\t    ret += String.fromCharCode(buf[i]);\n\t  }\n\t  return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t  const len = buf.length;\n\n\t  if (!start || start < 0) start = 0;\n\t  if (!end || end < 0 || end > len) end = len;\n\n\t  let out = '';\n\t  for (let i = start; i < end; ++i) {\n\t    out += hexSliceLookupTable[buf[i]];\n\t  }\n\t  return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t  const bytes = buf.slice(start, end);\n\t  let res = '';\n\t  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\t  for (let i = 0; i < bytes.length - 1; i += 2) {\n\t    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t  }\n\t  return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t  const len = this.length;\n\t  start = ~~start;\n\t  end = end === undefined ? len : ~~end;\n\n\t  if (start < 0) {\n\t    start += len;\n\t    if (start < 0) start = 0;\n\t  } else if (start > len) {\n\t    start = len;\n\t  }\n\n\t  if (end < 0) {\n\t    end += len;\n\t    if (end < 0) end = 0;\n\t  } else if (end > len) {\n\t    end = len;\n\t  }\n\n\t  if (end < start) end = start;\n\n\t  const newBuf = this.subarray(start, end);\n\t  // Return an augmented `Uint8Array` instance\n\t  Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t  return newBuf\n\t};\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUintLE =\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t  let val = this[offset];\n\t  let mul = 1;\n\t  let i = 0;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    val += this[offset + i] * mul;\n\t  }\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readUintBE =\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) {\n\t    checkOffset(offset, byteLength, this.length);\n\t  }\n\n\t  let val = this[offset + --byteLength];\n\t  let mul = 1;\n\t  while (byteLength > 0 && (mul *= 0x100)) {\n\t    val += this[offset + --byteLength] * mul;\n\t  }\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readUint8 =\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 1, this.length);\n\t  return this[offset]\n\t};\n\n\tBuffer.prototype.readUint16LE =\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  return this[offset] | (this[offset + 1] << 8)\n\t};\n\n\tBuffer.prototype.readUint16BE =\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  return (this[offset] << 8) | this[offset + 1]\n\t};\n\n\tBuffer.prototype.readUint32LE =\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return ((this[offset]) |\n\t      (this[offset + 1] << 8) |\n\t      (this[offset + 2] << 16)) +\n\t      (this[offset + 3] * 0x1000000)\n\t};\n\n\tBuffer.prototype.readUint32BE =\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return (this[offset] * 0x1000000) +\n\t    ((this[offset + 1] << 16) |\n\t    (this[offset + 2] << 8) |\n\t    this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const lo = first +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 24;\n\n\t  const hi = this[++offset] +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset] * 2 ** 16 +\n\t    last * 2 ** 24;\n\n\t  return BigInt(lo) + (BigInt(hi) << BigInt(32))\n\t});\n\n\tBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const hi = first * 2 ** 24 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset];\n\n\t  const lo = this[++offset] * 2 ** 24 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    last;\n\n\t  return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n\t});\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t  let val = this[offset];\n\t  let mul = 1;\n\t  let i = 0;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    val += this[offset + i] * mul;\n\t  }\n\t  mul *= 0x80;\n\n\t  if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t  let i = byteLength;\n\t  let mul = 1;\n\t  let val = this[offset + --i];\n\t  while (i > 0 && (mul *= 0x100)) {\n\t    val += this[offset + --i] * mul;\n\t  }\n\t  mul *= 0x80;\n\n\t  if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 1, this.length);\n\t  if (!(this[offset] & 0x80)) return (this[offset])\n\t  return ((0xff - this[offset] + 1) * -1)\n\t};\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  const val = this[offset] | (this[offset + 1] << 8);\n\t  return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  const val = this[offset + 1] | (this[offset] << 8);\n\t  return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return (this[offset]) |\n\t    (this[offset + 1] << 8) |\n\t    (this[offset + 2] << 16) |\n\t    (this[offset + 3] << 24)\n\t};\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return (this[offset] << 24) |\n\t    (this[offset + 1] << 16) |\n\t    (this[offset + 2] << 8) |\n\t    (this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const val = this[offset + 4] +\n\t    this[offset + 5] * 2 ** 8 +\n\t    this[offset + 6] * 2 ** 16 +\n\t    (last << 24); // Overflow\n\n\t  return (BigInt(val) << BigInt(32)) +\n\t    BigInt(first +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 24)\n\t});\n\n\tBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const val = (first << 24) + // Overflow\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset];\n\n\t  return (BigInt(val) << BigInt(32)) +\n\t    BigInt(this[++offset] * 2 ** 24 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    last)\n\t});\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\t  return ieee754$1.read(this, offset, true, 23, 4)\n\t};\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\t  return ieee754$1.read(this, offset, false, 23, 4)\n\t};\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 8, this.length);\n\t  return ieee754$1.read(this, offset, true, 52, 8)\n\t};\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 8, this.length);\n\t  return ieee754$1.read(this, offset, false, 52, 8)\n\t};\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\n\tBuffer.prototype.writeUintLE =\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) {\n\t    const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t    checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t  }\n\n\t  let mul = 1;\n\t  let i = 0;\n\t  this[offset] = value & 0xFF;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    this[offset + i] = (value / mul) & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUintBE =\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) {\n\t    const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t    checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t  }\n\n\t  let i = byteLength - 1;\n\t  let mul = 1;\n\t  this[offset + i] = value & 0xFF;\n\t  while (--i >= 0 && (mul *= 0x100)) {\n\t    this[offset + i] = (value / mul) & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUint8 =\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t  this[offset] = (value & 0xff);\n\t  return offset + 1\n\t};\n\n\tBuffer.prototype.writeUint16LE =\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t  this[offset] = (value & 0xff);\n\t  this[offset + 1] = (value >>> 8);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint16BE =\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t  this[offset] = (value >>> 8);\n\t  this[offset + 1] = (value & 0xff);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint32LE =\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t  this[offset + 3] = (value >>> 24);\n\t  this[offset + 2] = (value >>> 16);\n\t  this[offset + 1] = (value >>> 8);\n\t  this[offset] = (value & 0xff);\n\t  return offset + 4\n\t};\n\n\tBuffer.prototype.writeUint32BE =\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t  this[offset] = (value >>> 24);\n\t  this[offset + 1] = (value >>> 16);\n\t  this[offset + 2] = (value >>> 8);\n\t  this[offset + 3] = (value & 0xff);\n\t  return offset + 4\n\t};\n\n\tfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n\t  checkIntBI(value, min, max, buf, offset, 7);\n\n\t  let lo = Number(value & BigInt(0xffffffff));\n\t  buf[offset++] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset++] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset++] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset++] = lo;\n\t  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t  buf[offset++] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset++] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset++] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset++] = hi;\n\t  return offset\n\t}\n\n\tfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n\t  checkIntBI(value, min, max, buf, offset, 7);\n\n\t  let lo = Number(value & BigInt(0xffffffff));\n\t  buf[offset + 7] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset + 6] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset + 5] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset + 4] = lo;\n\t  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t  buf[offset + 3] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset + 2] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset + 1] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset] = hi;\n\t  return offset + 8\n\t}\n\n\tBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n\t  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n\t  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t    checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t  }\n\n\t  let i = 0;\n\t  let mul = 1;\n\t  let sub = 0;\n\t  this[offset] = value & 0xFF;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t      sub = 1;\n\t    }\n\t    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t    checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t  }\n\n\t  let i = byteLength - 1;\n\t  let mul = 1;\n\t  let sub = 0;\n\t  this[offset + i] = value & 0xFF;\n\t  while (--i >= 0 && (mul *= 0x100)) {\n\t    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t      sub = 1;\n\t    }\n\t    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n\t  if (value < 0) value = 0xff + value + 1;\n\t  this[offset] = (value & 0xff);\n\t  return offset + 1\n\t};\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t  this[offset] = (value & 0xff);\n\t  this[offset + 1] = (value >>> 8);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t  this[offset] = (value >>> 8);\n\t  this[offset + 1] = (value & 0xff);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t  this[offset] = (value & 0xff);\n\t  this[offset + 1] = (value >>> 8);\n\t  this[offset + 2] = (value >>> 16);\n\t  this[offset + 3] = (value >>> 24);\n\t  return offset + 4\n\t};\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t  if (value < 0) value = 0xffffffff + value + 1;\n\t  this[offset] = (value >>> 24);\n\t  this[offset + 1] = (value >>> 16);\n\t  this[offset + 2] = (value >>> 8);\n\t  this[offset + 3] = (value & 0xff);\n\t  return offset + 4\n\t};\n\n\tBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n\t  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n\t  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t  if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    checkIEEE754(buf, value, offset, 4);\n\t  }\n\t  ieee754$1.write(buf, value, offset, littleEndian, 23, 4);\n\t  return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t  return writeFloat(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t  return writeFloat(this, value, offset, false, noAssert)\n\t};\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    checkIEEE754(buf, value, offset, 8);\n\t  }\n\t  ieee754$1.write(buf, value, offset, littleEndian, 52, 8);\n\t  return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t  return writeDouble(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t  return writeDouble(this, value, offset, false, noAssert)\n\t};\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t  if (!start) start = 0;\n\t  if (!end && end !== 0) end = this.length;\n\t  if (targetStart >= target.length) targetStart = target.length;\n\t  if (!targetStart) targetStart = 0;\n\t  if (end > 0 && end < start) end = start;\n\n\t  // Copy 0 bytes; we're done\n\t  if (end === start) return 0\n\t  if (target.length === 0 || this.length === 0) return 0\n\n\t  // Fatal error conditions\n\t  if (targetStart < 0) {\n\t    throw new RangeError('targetStart out of bounds')\n\t  }\n\t  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t  // Are we oob?\n\t  if (end > this.length) end = this.length;\n\t  if (target.length - targetStart < end - start) {\n\t    end = target.length - targetStart + start;\n\t  }\n\n\t  const len = end - start;\n\n\t  if (this === target && typeof GlobalUint8Array.prototype.copyWithin === 'function') {\n\t    // Use built-in when available, missing from IE11\n\t    this.copyWithin(targetStart, start, end);\n\t  } else {\n\t    GlobalUint8Array.prototype.set.call(\n\t      target,\n\t      this.subarray(start, end),\n\t      targetStart\n\t    );\n\t  }\n\n\t  return len\n\t};\n\n\t// Usage:\n\t//    buffer.fill(number[, offset[, end]])\n\t//    buffer.fill(buffer[, offset[, end]])\n\t//    buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t  // Handle string cases:\n\t  if (typeof val === 'string') {\n\t    if (typeof start === 'string') {\n\t      encoding = start;\n\t      start = 0;\n\t      end = this.length;\n\t    } else if (typeof end === 'string') {\n\t      encoding = end;\n\t      end = this.length;\n\t    }\n\t    if (encoding !== undefined && typeof encoding !== 'string') {\n\t      throw new TypeError('encoding must be a string')\n\t    }\n\t    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t      throw new TypeError('Unknown encoding: ' + encoding)\n\t    }\n\t    if (val.length === 1) {\n\t      const code = val.charCodeAt(0);\n\t      if ((encoding === 'utf8' && code < 128) ||\n\t          encoding === 'latin1') {\n\t        // Fast path: If `val` fits into a single byte, use that numeric value.\n\t        val = code;\n\t      }\n\t    }\n\t  } else if (typeof val === 'number') {\n\t    val = val & 255;\n\t  } else if (typeof val === 'boolean') {\n\t    val = Number(val);\n\t  }\n\n\t  // Invalid ranges are not set to a default, so can range check early.\n\t  if (start < 0 || this.length < start || this.length < end) {\n\t    throw new RangeError('Out of range index')\n\t  }\n\n\t  if (end <= start) {\n\t    return this\n\t  }\n\n\t  start = start >>> 0;\n\t  end = end === undefined ? this.length : end >>> 0;\n\n\t  if (!val) val = 0;\n\n\t  let i;\n\t  if (typeof val === 'number') {\n\t    for (i = start; i < end; ++i) {\n\t      this[i] = val;\n\t    }\n\t  } else {\n\t    const bytes = Buffer.isBuffer(val)\n\t      ? val\n\t      : Buffer.from(val, encoding);\n\t    const len = bytes.length;\n\t    if (len === 0) {\n\t      throw new TypeError('The value \"' + val +\n\t        '\" is invalid for argument \"value\"')\n\t    }\n\t    for (i = 0; i < end - start; ++i) {\n\t      this[i + start] = bytes[i % len];\n\t    }\n\t  }\n\n\t  return this\n\t};\n\n\t// CUSTOM ERRORS\n\t// =============\n\n\t// Simplified versions from Node, changed for Buffer-only usage\n\tconst errors = {};\n\tfunction E (sym, getMessage, Base) {\n\t  errors[sym] = class NodeError extends Base {\n\t    constructor () {\n\t      super();\n\n\t      Object.defineProperty(this, 'message', {\n\t        value: getMessage.apply(this, arguments),\n\t        writable: true,\n\t        configurable: true\n\t      });\n\n\t      // Add the error code to the name to include it in the stack trace.\n\t      this.name = `${this.name} [${sym}]`;\n\t      // Access the stack to generate the error message including the error code\n\t      // from the name.\n\t      this.stack; // eslint-disable-line no-unused-expressions\n\t      // Reset the name to the actual name.\n\t      delete this.name;\n\t    }\n\n\t    get code () {\n\t      return sym\n\t    }\n\n\t    set code (value) {\n\t      Object.defineProperty(this, 'code', {\n\t        configurable: true,\n\t        enumerable: true,\n\t        value,\n\t        writable: true\n\t      });\n\t    }\n\n\t    toString () {\n\t      return `${this.name} [${sym}]: ${this.message}`\n\t    }\n\t  };\n\t}\n\n\tE('ERR_BUFFER_OUT_OF_BOUNDS',\n\t  function (name) {\n\t    if (name) {\n\t      return `${name} is outside of buffer bounds`\n\t    }\n\n\t    return 'Attempt to access memory outside buffer bounds'\n\t  }, RangeError);\n\tE('ERR_INVALID_ARG_TYPE',\n\t  function (name, actual) {\n\t    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n\t  }, TypeError);\n\tE('ERR_OUT_OF_RANGE',\n\t  function (str, range, input) {\n\t    let msg = `The value of \"${str}\" is out of range.`;\n\t    let received = input;\n\t    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n\t      received = addNumericalSeparator(String(input));\n\t    } else if (typeof input === 'bigint') {\n\t      received = String(input);\n\t      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n\t        received = addNumericalSeparator(received);\n\t      }\n\t      received += 'n';\n\t    }\n\t    msg += ` It must be ${range}. Received ${received}`;\n\t    return msg\n\t  }, RangeError);\n\n\tfunction addNumericalSeparator (val) {\n\t  let res = '';\n\t  let i = val.length;\n\t  const start = val[0] === '-' ? 1 : 0;\n\t  for (; i >= start + 4; i -= 3) {\n\t    res = `_${val.slice(i - 3, i)}${res}`;\n\t  }\n\t  return `${val.slice(0, i)}${res}`\n\t}\n\n\t// CHECK FUNCTIONS\n\t// ===============\n\n\tfunction checkBounds (buf, offset, byteLength) {\n\t  validateNumber(offset, 'offset');\n\t  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n\t    boundsError(offset, buf.length - (byteLength + 1));\n\t  }\n\t}\n\n\tfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n\t  if (value > max || value < min) {\n\t    const n = typeof min === 'bigint' ? 'n' : '';\n\t    let range;\n\t    if (byteLength > 3) {\n\t      if (min === 0 || min === BigInt(0)) {\n\t        range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n\t      } else {\n\t        range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n\t                `${(byteLength + 1) * 8 - 1}${n}`;\n\t      }\n\t    } else {\n\t      range = `>= ${min}${n} and <= ${max}${n}`;\n\t    }\n\t    throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n\t  }\n\t  checkBounds(buf, offset, byteLength);\n\t}\n\n\tfunction validateNumber (value, name) {\n\t  if (typeof value !== 'number') {\n\t    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n\t  }\n\t}\n\n\tfunction boundsError (value, length, type) {\n\t  if (Math.floor(value) !== value) {\n\t    validateNumber(value, type);\n\t    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n\t  }\n\n\t  if (length < 0) {\n\t    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n\t  }\n\n\t  throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n\t                                    `>= ${type ? 1 : 0} and <= ${length}`,\n\t                                    value)\n\t}\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\tfunction base64clean (str) {\n\t  // Node takes equal signs as end of the Base64 encoding\n\t  str = str.split('=')[0];\n\t  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t  str = str.trim().replace(INVALID_BASE64_RE, '');\n\t  // Node converts strings with length < 2 to ''\n\t  if (str.length < 2) return ''\n\t  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t  while (str.length % 4 !== 0) {\n\t    str = str + '=';\n\t  }\n\t  return str\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t  units = units || Infinity;\n\t  let codePoint;\n\t  const length = string.length;\n\t  let leadSurrogate = null;\n\t  const bytes = [];\n\n\t  for (let i = 0; i < length; ++i) {\n\t    codePoint = string.charCodeAt(i);\n\n\t    // is surrogate component\n\t    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t      // last char was a lead\n\t      if (!leadSurrogate) {\n\t        // no lead yet\n\t        if (codePoint > 0xDBFF) {\n\t          // unexpected trail\n\t          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t          continue\n\t        } else if (i + 1 === length) {\n\t          // unpaired lead\n\t          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t          continue\n\t        }\n\n\t        // valid lead\n\t        leadSurrogate = codePoint;\n\n\t        continue\n\t      }\n\n\t      // 2 leads in a row\n\t      if (codePoint < 0xDC00) {\n\t        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t        leadSurrogate = codePoint;\n\t        continue\n\t      }\n\n\t      // valid surrogate pair\n\t      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t    } else if (leadSurrogate) {\n\t      // valid bmp char, but last char was a lead\n\t      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t    }\n\n\t    leadSurrogate = null;\n\n\t    // encode utf8\n\t    if (codePoint < 0x80) {\n\t      if ((units -= 1) < 0) break\n\t      bytes.push(codePoint);\n\t    } else if (codePoint < 0x800) {\n\t      if ((units -= 2) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0x6 | 0xC0,\n\t        codePoint & 0x3F | 0x80\n\t      );\n\t    } else if (codePoint < 0x10000) {\n\t      if ((units -= 3) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0xC | 0xE0,\n\t        codePoint >> 0x6 & 0x3F | 0x80,\n\t        codePoint & 0x3F | 0x80\n\t      );\n\t    } else if (codePoint < 0x110000) {\n\t      if ((units -= 4) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0x12 | 0xF0,\n\t        codePoint >> 0xC & 0x3F | 0x80,\n\t        codePoint >> 0x6 & 0x3F | 0x80,\n\t        codePoint & 0x3F | 0x80\n\t      );\n\t    } else {\n\t      throw new Error('Invalid code point')\n\t    }\n\t  }\n\n\t  return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t  const byteArray = [];\n\t  for (let i = 0; i < str.length; ++i) {\n\t    // Node's code seems to be doing this and not & 0x7F..\n\t    byteArray.push(str.charCodeAt(i) & 0xFF);\n\t  }\n\t  return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t  let c, hi, lo;\n\t  const byteArray = [];\n\t  for (let i = 0; i < str.length; ++i) {\n\t    if ((units -= 2) < 0) break\n\n\t    c = str.charCodeAt(i);\n\t    hi = c >> 8;\n\t    lo = c % 256;\n\t    byteArray.push(lo);\n\t    byteArray.push(hi);\n\t  }\n\n\t  return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t  return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t  let i;\n\t  for (i = 0; i < length; ++i) {\n\t    if ((i + offset >= dst.length) || (i >= src.length)) break\n\t    dst[i + offset] = src[i];\n\t  }\n\t  return i\n\t}\n\n\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t// the `instanceof` check but they should be treated as of that type.\n\t// See: https://github.com/feross/buffer/issues/166\n\tfunction isInstance (obj, type) {\n\t  return obj instanceof type ||\n\t    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t      obj.constructor.name === type.name)\n\t}\n\tfunction numberIsNaN (obj) {\n\t  // For IE11 support\n\t  return obj !== obj // eslint-disable-line no-self-compare\n\t}\n\n\t// Create lookup table for `toString('hex')`\n\t// See: https://github.com/feross/buffer/issues/219\n\tconst hexSliceLookupTable = (function () {\n\t  const alphabet = '0123456789abcdef';\n\t  const table = new Array(256);\n\t  for (let i = 0; i < 16; ++i) {\n\t    const i16 = i * 16;\n\t    for (let j = 0; j < 16; ++j) {\n\t      table[i16 + j] = alphabet[i] + alphabet[j];\n\t    }\n\t  }\n\t  return table\n\t})();\n\n\t// Return not function with Error if BigInt not supported\n\tfunction defineBigIntMethod (fn) {\n\t  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n\t}\n\n\tfunction BufferBigIntNotDefined () {\n\t  throw new Error('BigInt not supported')\n\t} \n} (buffer));\n\nconst Buffer = buffer.Buffer;\n\nexports.Blob = buffer.Blob;\nexports.BlobOptions = buffer.BlobOptions;\nexports.Buffer = buffer.Buffer;\nexports.File = buffer.File;\nexports.FileOptions = buffer.FileOptions;\nexports.INSPECT_MAX_BYTES = buffer.INSPECT_MAX_BYTES;\nexports.SlowBuffer = buffer.SlowBuffer;\nexports.TranscodeEncoding = buffer.TranscodeEncoding;\nexports.atob = buffer.atob;\nexports.btoa = buffer.btoa;\nexports.constants = buffer.constants;\nexports.default = Buffer;\nexports.isAscii = buffer.isAscii;\nexports.isUtf8 = buffer.isUtf8;\nexports.kMaxLength = buffer.kMaxLength;\nexports.kStringMaxLength = buffer.kStringMaxLength;\nexports.resolveObjectURL = buffer.resolveObjectURL;\nexports.transcode = buffer.transcode;\n//# sourceMappingURL=index.cjs.map\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n",";(function (sax) { // wrapper for non-node envs\n  sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n  sax.SAXParser = SAXParser\n  sax.SAXStream = SAXStream\n  sax.createStream = createStream\n\n  // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n  // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n  // since that's the earliest that a buffer overrun could occur.  This way, checks are\n  // as rare as required, but as often as necessary to ensure never crossing this bound.\n  // Furthermore, buffers are only tested at most once per write(), so passing a very\n  // large string into write() might have undesirable effects, but this is manageable by\n  // the caller, so it is assumed to be safe.  Thus, a call to write() may, in the extreme\n  // edge case, result in creating at most one complete copy of the string passed in.\n  // Set to Infinity to have unlimited buffers.\n  sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n  var buffers = [\n    'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n    'procInstName', 'procInstBody', 'entity', 'attribName',\n    'attribValue', 'cdata', 'script'\n  ]\n\n  sax.EVENTS = [\n    'text',\n    'processinginstruction',\n    'sgmldeclaration',\n    'doctype',\n    'comment',\n    'opentagstart',\n    'attribute',\n    'opentag',\n    'closetag',\n    'opencdata',\n    'cdata',\n    'closecdata',\n    'error',\n    'end',\n    'ready',\n    'script',\n    'opennamespace',\n    'closenamespace'\n  ]\n\n  function SAXParser (strict, opt) {\n    if (!(this instanceof SAXParser)) {\n      return new SAXParser(strict, opt)\n    }\n\n    var parser = this\n    clearBuffers(parser)\n    parser.q = parser.c = ''\n    parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n    parser.opt = opt || {}\n    parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n    parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n    parser.tags = []\n    parser.closed = parser.closedRoot = parser.sawRoot = false\n    parser.tag = parser.error = null\n    parser.strict = !!strict\n    parser.noscript = !!(strict || parser.opt.noscript)\n    parser.state = S.BEGIN\n    parser.strictEntities = parser.opt.strictEntities\n    parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n    parser.attribList = []\n\n    // namespaces form a prototype chain.\n    // it always points at the current tag,\n    // which protos to its parent tag.\n    if (parser.opt.xmlns) {\n      parser.ns = Object.create(rootNS)\n    }\n\n    // disallow unquoted attribute values if not otherwise configured\n    // and strict mode is true\n    if (parser.opt.unquotedAttributeValues === undefined) {\n      parser.opt.unquotedAttributeValues = !strict;\n    }\n\n    // mostly just for error reporting\n    parser.trackPosition = parser.opt.position !== false\n    if (parser.trackPosition) {\n      parser.position = parser.line = parser.column = 0\n    }\n    emit(parser, 'onready')\n  }\n\n  if (!Object.create) {\n    Object.create = function (o) {\n      function F () {}\n      F.prototype = o\n      var newf = new F()\n      return newf\n    }\n  }\n\n  if (!Object.keys) {\n    Object.keys = function (o) {\n      var a = []\n      for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n      return a\n    }\n  }\n\n  function checkBufferLength (parser) {\n    var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n    var maxActual = 0\n    for (var i = 0, l = buffers.length; i < l; i++) {\n      var len = parser[buffers[i]].length\n      if (len > maxAllowed) {\n        // Text/cdata nodes can get big, and since they're buffered,\n        // we can get here under normal conditions.\n        // Avoid issues by emitting the text node now,\n        // so at least it won't get any bigger.\n        switch (buffers[i]) {\n          case 'textNode':\n            closeText(parser)\n            break\n\n          case 'cdata':\n            emitNode(parser, 'oncdata', parser.cdata)\n            parser.cdata = ''\n            break\n\n          case 'script':\n            emitNode(parser, 'onscript', parser.script)\n            parser.script = ''\n            break\n\n          default:\n            error(parser, 'Max buffer length exceeded: ' + buffers[i])\n        }\n      }\n      maxActual = Math.max(maxActual, len)\n    }\n    // schedule the next check for the earliest possible buffer overrun.\n    var m = sax.MAX_BUFFER_LENGTH - maxActual\n    parser.bufferCheckPosition = m + parser.position\n  }\n\n  function clearBuffers (parser) {\n    for (var i = 0, l = buffers.length; i < l; i++) {\n      parser[buffers[i]] = ''\n    }\n  }\n\n  function flushBuffers (parser) {\n    closeText(parser)\n    if (parser.cdata !== '') {\n      emitNode(parser, 'oncdata', parser.cdata)\n      parser.cdata = ''\n    }\n    if (parser.script !== '') {\n      emitNode(parser, 'onscript', parser.script)\n      parser.script = ''\n    }\n  }\n\n  SAXParser.prototype = {\n    end: function () { end(this) },\n    write: write,\n    resume: function () { this.error = null; return this },\n    close: function () { return this.write(null) },\n    flush: function () { flushBuffers(this) }\n  }\n\n  var Stream\n  try {\n    Stream = require('stream').Stream\n  } catch (ex) {\n    Stream = function () {}\n  }\n  if (!Stream) Stream = function () {}\n\n  var streamWraps = sax.EVENTS.filter(function (ev) {\n    return ev !== 'error' && ev !== 'end'\n  })\n\n  function createStream (strict, opt) {\n    return new SAXStream(strict, opt)\n  }\n\n  function SAXStream (strict, opt) {\n    if (!(this instanceof SAXStream)) {\n      return new SAXStream(strict, opt)\n    }\n\n    Stream.apply(this)\n\n    this._parser = new SAXParser(strict, opt)\n    this.writable = true\n    this.readable = true\n\n    var me = this\n\n    this._parser.onend = function () {\n      me.emit('end')\n    }\n\n    this._parser.onerror = function (er) {\n      me.emit('error', er)\n\n      // if didn't throw, then means error was handled.\n      // go ahead and clear error, so we can write again.\n      me._parser.error = null\n    }\n\n    this._decoder = null\n\n    streamWraps.forEach(function (ev) {\n      Object.defineProperty(me, 'on' + ev, {\n        get: function () {\n          return me._parser['on' + ev]\n        },\n        set: function (h) {\n          if (!h) {\n            me.removeAllListeners(ev)\n            me._parser['on' + ev] = h\n            return h\n          }\n          me.on(ev, h)\n        },\n        enumerable: true,\n        configurable: false\n      })\n    })\n  }\n\n  SAXStream.prototype = Object.create(Stream.prototype, {\n    constructor: {\n      value: SAXStream\n    }\n  })\n\n  SAXStream.prototype.write = function (data) {\n    if (typeof Buffer === 'function' &&\n      typeof Buffer.isBuffer === 'function' &&\n      Buffer.isBuffer(data)) {\n      if (!this._decoder) {\n        var SD = require('string_decoder').StringDecoder\n        this._decoder = new SD('utf8')\n      }\n      data = this._decoder.write(data)\n    }\n\n    this._parser.write(data.toString())\n    this.emit('data', data)\n    return true\n  }\n\n  SAXStream.prototype.end = function (chunk) {\n    if (chunk && chunk.length) {\n      this.write(chunk)\n    }\n    this._parser.end()\n    return true\n  }\n\n  SAXStream.prototype.on = function (ev, handler) {\n    var me = this\n    if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n      me._parser['on' + ev] = function () {\n        var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n        args.splice(0, 0, ev)\n        me.emit.apply(me, args)\n      }\n    }\n\n    return Stream.prototype.on.call(me, ev, handler)\n  }\n\n  // this really needs to be replaced with character classes.\n  // XML allows all manner of ridiculous numbers and digits.\n  var CDATA = '[CDATA['\n  var DOCTYPE = 'DOCTYPE'\n  var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n  var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n  var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n  // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n  // This implementation works on strings, a single character at a time\n  // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n  // without a significant breaking change to either this  parser, or the\n  // JavaScript language.  Implementation of an emoji-capable xml parser\n  // is left as an exercise for the reader.\n  var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n  var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n  var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n  var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n  function isWhitespace (c) {\n    return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n  }\n\n  function isQuote (c) {\n    return c === '\"' || c === '\\''\n  }\n\n  function isAttribEnd (c) {\n    return c === '>' || isWhitespace(c)\n  }\n\n  function isMatch (regex, c) {\n    return regex.test(c)\n  }\n\n  function notMatch (regex, c) {\n    return !isMatch(regex, c)\n  }\n\n  var S = 0\n  sax.STATE = {\n    BEGIN: S++, // leading byte order mark or whitespace\n    BEGIN_WHITESPACE: S++, // leading whitespace\n    TEXT: S++, // general stuff\n    TEXT_ENTITY: S++, // &amp and such.\n    OPEN_WAKA: S++, // <\n    SGML_DECL: S++, // <!BLARG\n    SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n    DOCTYPE: S++, // <!DOCTYPE\n    DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n    DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n    DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n    COMMENT_STARTING: S++, // <!-\n    COMMENT: S++, // <!--\n    COMMENT_ENDING: S++, // <!-- blah -\n    COMMENT_ENDED: S++, // <!-- blah --\n    CDATA: S++, // <![CDATA[ something\n    CDATA_ENDING: S++, // ]\n    CDATA_ENDING_2: S++, // ]]\n    PROC_INST: S++, // <?hi\n    PROC_INST_BODY: S++, // <?hi there\n    PROC_INST_ENDING: S++, // <?hi \"there\" ?\n    OPEN_TAG: S++, // <strong\n    OPEN_TAG_SLASH: S++, // <strong /\n    ATTRIB: S++, // <a\n    ATTRIB_NAME: S++, // <a foo\n    ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n    ATTRIB_VALUE: S++, // <a foo=\n    ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n    ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n    ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n    ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\"&quot;\"\n    ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=&quot\n    CLOSE_TAG: S++, // </a\n    CLOSE_TAG_SAW_WHITE: S++, // </a   >\n    SCRIPT: S++, // <script> ...\n    SCRIPT_ENDING: S++ // <script> ... <\n  }\n\n  sax.XML_ENTITIES = {\n    'amp': '&',\n    'gt': '>',\n    'lt': '<',\n    'quot': '\"',\n    'apos': \"'\"\n  }\n\n  sax.ENTITIES = {\n    'amp': '&',\n    'gt': '>',\n    'lt': '<',\n    'quot': '\"',\n    'apos': \"'\",\n    'AElig': 198,\n    'Aacute': 193,\n    'Acirc': 194,\n    'Agrave': 192,\n    'Aring': 197,\n    'Atilde': 195,\n    'Auml': 196,\n    'Ccedil': 199,\n    'ETH': 208,\n    'Eacute': 201,\n    'Ecirc': 202,\n    'Egrave': 200,\n    'Euml': 203,\n    'Iacute': 205,\n    'Icirc': 206,\n    'Igrave': 204,\n    'Iuml': 207,\n    'Ntilde': 209,\n    'Oacute': 211,\n    'Ocirc': 212,\n    'Ograve': 210,\n    'Oslash': 216,\n    'Otilde': 213,\n    'Ouml': 214,\n    'THORN': 222,\n    'Uacute': 218,\n    'Ucirc': 219,\n    'Ugrave': 217,\n    'Uuml': 220,\n    'Yacute': 221,\n    'aacute': 225,\n    'acirc': 226,\n    'aelig': 230,\n    'agrave': 224,\n    'aring': 229,\n    'atilde': 227,\n    'auml': 228,\n    'ccedil': 231,\n    'eacute': 233,\n    'ecirc': 234,\n    'egrave': 232,\n    'eth': 240,\n    'euml': 235,\n    'iacute': 237,\n    'icirc': 238,\n    'igrave': 236,\n    'iuml': 239,\n    'ntilde': 241,\n    'oacute': 243,\n    'ocirc': 244,\n    'ograve': 242,\n    'oslash': 248,\n    'otilde': 245,\n    'ouml': 246,\n    'szlig': 223,\n    'thorn': 254,\n    'uacute': 250,\n    'ucirc': 251,\n    'ugrave': 249,\n    'uuml': 252,\n    'yacute': 253,\n    'yuml': 255,\n    'copy': 169,\n    'reg': 174,\n    'nbsp': 160,\n    'iexcl': 161,\n    'cent': 162,\n    'pound': 163,\n    'curren': 164,\n    'yen': 165,\n    'brvbar': 166,\n    'sect': 167,\n    'uml': 168,\n    'ordf': 170,\n    'laquo': 171,\n    'not': 172,\n    'shy': 173,\n    'macr': 175,\n    'deg': 176,\n    'plusmn': 177,\n    'sup1': 185,\n    'sup2': 178,\n    'sup3': 179,\n    'acute': 180,\n    'micro': 181,\n    'para': 182,\n    'middot': 183,\n    'cedil': 184,\n    'ordm': 186,\n    'raquo': 187,\n    'frac14': 188,\n    'frac12': 189,\n    'frac34': 190,\n    'iquest': 191,\n    'times': 215,\n    'divide': 247,\n    'OElig': 338,\n    'oelig': 339,\n    'Scaron': 352,\n    'scaron': 353,\n    'Yuml': 376,\n    'fnof': 402,\n    'circ': 710,\n    'tilde': 732,\n    'Alpha': 913,\n    'Beta': 914,\n    'Gamma': 915,\n    'Delta': 916,\n    'Epsilon': 917,\n    'Zeta': 918,\n    'Eta': 919,\n    'Theta': 920,\n    'Iota': 921,\n    'Kappa': 922,\n    'Lambda': 923,\n    'Mu': 924,\n    'Nu': 925,\n    'Xi': 926,\n    'Omicron': 927,\n    'Pi': 928,\n    'Rho': 929,\n    'Sigma': 931,\n    'Tau': 932,\n    'Upsilon': 933,\n    'Phi': 934,\n    'Chi': 935,\n    'Psi': 936,\n    'Omega': 937,\n    'alpha': 945,\n    'beta': 946,\n    'gamma': 947,\n    'delta': 948,\n    'epsilon': 949,\n    'zeta': 950,\n    'eta': 951,\n    'theta': 952,\n    'iota': 953,\n    'kappa': 954,\n    'lambda': 955,\n    'mu': 956,\n    'nu': 957,\n    'xi': 958,\n    'omicron': 959,\n    'pi': 960,\n    'rho': 961,\n    'sigmaf': 962,\n    'sigma': 963,\n    'tau': 964,\n    'upsilon': 965,\n    'phi': 966,\n    'chi': 967,\n    'psi': 968,\n    'omega': 969,\n    'thetasym': 977,\n    'upsih': 978,\n    'piv': 982,\n    'ensp': 8194,\n    'emsp': 8195,\n    'thinsp': 8201,\n    'zwnj': 8204,\n    'zwj': 8205,\n    'lrm': 8206,\n    'rlm': 8207,\n    'ndash': 8211,\n    'mdash': 8212,\n    'lsquo': 8216,\n    'rsquo': 8217,\n    'sbquo': 8218,\n    'ldquo': 8220,\n    'rdquo': 8221,\n    'bdquo': 8222,\n    'dagger': 8224,\n    'Dagger': 8225,\n    'bull': 8226,\n    'hellip': 8230,\n    'permil': 8240,\n    'prime': 8242,\n    'Prime': 8243,\n    'lsaquo': 8249,\n    'rsaquo': 8250,\n    'oline': 8254,\n    'frasl': 8260,\n    'euro': 8364,\n    'image': 8465,\n    'weierp': 8472,\n    'real': 8476,\n    'trade': 8482,\n    'alefsym': 8501,\n    'larr': 8592,\n    'uarr': 8593,\n    'rarr': 8594,\n    'darr': 8595,\n    'harr': 8596,\n    'crarr': 8629,\n    'lArr': 8656,\n    'uArr': 8657,\n    'rArr': 8658,\n    'dArr': 8659,\n    'hArr': 8660,\n    'forall': 8704,\n    'part': 8706,\n    'exist': 8707,\n    'empty': 8709,\n    'nabla': 8711,\n    'isin': 8712,\n    'notin': 8713,\n    'ni': 8715,\n    'prod': 8719,\n    'sum': 8721,\n    'minus': 8722,\n    'lowast': 8727,\n    'radic': 8730,\n    'prop': 8733,\n    'infin': 8734,\n    'ang': 8736,\n    'and': 8743,\n    'or': 8744,\n    'cap': 8745,\n    'cup': 8746,\n    'int': 8747,\n    'there4': 8756,\n    'sim': 8764,\n    'cong': 8773,\n    'asymp': 8776,\n    'ne': 8800,\n    'equiv': 8801,\n    'le': 8804,\n    'ge': 8805,\n    'sub': 8834,\n    'sup': 8835,\n    'nsub': 8836,\n    'sube': 8838,\n    'supe': 8839,\n    'oplus': 8853,\n    'otimes': 8855,\n    'perp': 8869,\n    'sdot': 8901,\n    'lceil': 8968,\n    'rceil': 8969,\n    'lfloor': 8970,\n    'rfloor': 8971,\n    'lang': 9001,\n    'rang': 9002,\n    'loz': 9674,\n    'spades': 9824,\n    'clubs': 9827,\n    'hearts': 9829,\n    'diams': 9830\n  }\n\n  Object.keys(sax.ENTITIES).forEach(function (key) {\n    var e = sax.ENTITIES[key]\n    var s = typeof e === 'number' ? String.fromCharCode(e) : e\n    sax.ENTITIES[key] = s\n  })\n\n  for (var s in sax.STATE) {\n    sax.STATE[sax.STATE[s]] = s\n  }\n\n  // shorthand\n  S = sax.STATE\n\n  function emit (parser, event, data) {\n    parser[event] && parser[event](data)\n  }\n\n  function emitNode (parser, nodeType, data) {\n    if (parser.textNode) closeText(parser)\n    emit(parser, nodeType, data)\n  }\n\n  function closeText (parser) {\n    parser.textNode = textopts(parser.opt, parser.textNode)\n    if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n    parser.textNode = ''\n  }\n\n  function textopts (opt, text) {\n    if (opt.trim) text = text.trim()\n    if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n    return text\n  }\n\n  function error (parser, er) {\n    closeText(parser)\n    if (parser.trackPosition) {\n      er += '\\nLine: ' + parser.line +\n        '\\nColumn: ' + parser.column +\n        '\\nChar: ' + parser.c\n    }\n    er = new Error(er)\n    parser.error = er\n    emit(parser, 'onerror', er)\n    return parser\n  }\n\n  function end (parser) {\n    if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')\n    if ((parser.state !== S.BEGIN) &&\n      (parser.state !== S.BEGIN_WHITESPACE) &&\n      (parser.state !== S.TEXT)) {\n      error(parser, 'Unexpected end')\n    }\n    closeText(parser)\n    parser.c = ''\n    parser.closed = true\n    emit(parser, 'onend')\n    SAXParser.call(parser, parser.strict, parser.opt)\n    return parser\n  }\n\n  function strictFail (parser, message) {\n    if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n      throw new Error('bad call to strictFail')\n    }\n    if (parser.strict) {\n      error(parser, message)\n    }\n  }\n\n  function newTag (parser) {\n    if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n    var parent = parser.tags[parser.tags.length - 1] || parser\n    var tag = parser.tag = { name: parser.tagName, attributes: {} }\n\n    // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n    if (parser.opt.xmlns) {\n      tag.ns = parent.ns\n    }\n    parser.attribList.length = 0\n    emitNode(parser, 'onopentagstart', tag)\n  }\n\n  function qname (name, attribute) {\n    var i = name.indexOf(':')\n    var qualName = i < 0 ? [ '', name ] : name.split(':')\n    var prefix = qualName[0]\n    var local = qualName[1]\n\n    // <x \"xmlns\"=\"http://foo\">\n    if (attribute && name === 'xmlns') {\n      prefix = 'xmlns'\n      local = ''\n    }\n\n    return { prefix: prefix, local: local }\n  }\n\n  function attrib (parser) {\n    if (!parser.strict) {\n      parser.attribName = parser.attribName[parser.looseCase]()\n    }\n\n    if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n      parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n      parser.attribName = parser.attribValue = ''\n      return\n    }\n\n    if (parser.opt.xmlns) {\n      var qn = qname(parser.attribName, true)\n      var prefix = qn.prefix\n      var local = qn.local\n\n      if (prefix === 'xmlns') {\n        // namespace binding attribute. push the binding into scope\n        if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n          strictFail(parser,\n            'xml: prefix must be bound to ' + XML_NAMESPACE + '\\n' +\n            'Actual: ' + parser.attribValue)\n        } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {\n          strictFail(parser,\n            'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\\n' +\n            'Actual: ' + parser.attribValue)\n        } else {\n          var tag = parser.tag\n          var parent = parser.tags[parser.tags.length - 1] || parser\n          if (tag.ns === parent.ns) {\n            tag.ns = Object.create(parent.ns)\n          }\n          tag.ns[local] = parser.attribValue\n        }\n      }\n\n      // defer onattribute events until all attributes have been seen\n      // so any new bindings can take effect. preserve attribute order\n      // so deferred events can be emitted in document order\n      parser.attribList.push([parser.attribName, parser.attribValue])\n    } else {\n      // in non-xmlns mode, we can emit the event right away\n      parser.tag.attributes[parser.attribName] = parser.attribValue\n      emitNode(parser, 'onattribute', {\n        name: parser.attribName,\n        value: parser.attribValue\n      })\n    }\n\n    parser.attribName = parser.attribValue = ''\n  }\n\n  function openTag (parser, selfClosing) {\n    if (parser.opt.xmlns) {\n      // emit namespace binding events\n      var tag = parser.tag\n\n      // add namespace info to tag\n      var qn = qname(parser.tagName)\n      tag.prefix = qn.prefix\n      tag.local = qn.local\n      tag.uri = tag.ns[qn.prefix] || ''\n\n      if (tag.prefix && !tag.uri) {\n        strictFail(parser, 'Unbound namespace prefix: ' +\n          JSON.stringify(parser.tagName))\n        tag.uri = qn.prefix\n      }\n\n      var parent = parser.tags[parser.tags.length - 1] || parser\n      if (tag.ns && parent.ns !== tag.ns) {\n        Object.keys(tag.ns).forEach(function (p) {\n          emitNode(parser, 'onopennamespace', {\n            prefix: p,\n            uri: tag.ns[p]\n          })\n        })\n      }\n\n      // handle deferred onattribute events\n      // Note: do not apply default ns to attributes:\n      //   http://www.w3.org/TR/REC-xml-names/#defaulting\n      for (var i = 0, l = parser.attribList.length; i < l; i++) {\n        var nv = parser.attribList[i]\n        var name = nv[0]\n        var value = nv[1]\n        var qualName = qname(name, true)\n        var prefix = qualName.prefix\n        var local = qualName.local\n        var uri = prefix === '' ? '' : (tag.ns[prefix] || '')\n        var a = {\n          name: name,\n          value: value,\n          prefix: prefix,\n          local: local,\n          uri: uri\n        }\n\n        // if there's any attributes with an undefined namespace,\n        // then fail on them now.\n        if (prefix && prefix !== 'xmlns' && !uri) {\n          strictFail(parser, 'Unbound namespace prefix: ' +\n            JSON.stringify(prefix))\n          a.uri = prefix\n        }\n        parser.tag.attributes[name] = a\n        emitNode(parser, 'onattribute', a)\n      }\n      parser.attribList.length = 0\n    }\n\n    parser.tag.isSelfClosing = !!selfClosing\n\n    // process the tag\n    parser.sawRoot = true\n    parser.tags.push(parser.tag)\n    emitNode(parser, 'onopentag', parser.tag)\n    if (!selfClosing) {\n      // special case for <script> in non-strict mode.\n      if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n        parser.state = S.SCRIPT\n      } else {\n        parser.state = S.TEXT\n      }\n      parser.tag = null\n      parser.tagName = ''\n    }\n    parser.attribName = parser.attribValue = ''\n    parser.attribList.length = 0\n  }\n\n  function closeTag (parser) {\n    if (!parser.tagName) {\n      strictFail(parser, 'Weird empty close tag.')\n      parser.textNode += '</>'\n      parser.state = S.TEXT\n      return\n    }\n\n    if (parser.script) {\n      if (parser.tagName !== 'script') {\n        parser.script += '</' + parser.tagName + '>'\n        parser.tagName = ''\n        parser.state = S.SCRIPT\n        return\n      }\n      emitNode(parser, 'onscript', parser.script)\n      parser.script = ''\n    }\n\n    // first make sure that the closing tag actually exists.\n    // <a><b></c></b></a> will close everything, otherwise.\n    var t = parser.tags.length\n    var tagName = parser.tagName\n    if (!parser.strict) {\n      tagName = tagName[parser.looseCase]()\n    }\n    var closeTo = tagName\n    while (t--) {\n      var close = parser.tags[t]\n      if (close.name !== closeTo) {\n        // fail the first time in strict mode\n        strictFail(parser, 'Unexpected close tag')\n      } else {\n        break\n      }\n    }\n\n    // didn't find it.  we already failed for strict, so just abort.\n    if (t < 0) {\n      strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n      parser.textNode += '</' + parser.tagName + '>'\n      parser.state = S.TEXT\n      return\n    }\n    parser.tagName = tagName\n    var s = parser.tags.length\n    while (s-- > t) {\n      var tag = parser.tag = parser.tags.pop()\n      parser.tagName = parser.tag.name\n      emitNode(parser, 'onclosetag', parser.tagName)\n\n      var x = {}\n      for (var i in tag.ns) {\n        x[i] = tag.ns[i]\n      }\n\n      var parent = parser.tags[parser.tags.length - 1] || parser\n      if (parser.opt.xmlns && tag.ns !== parent.ns) {\n        // remove namespace bindings introduced by tag\n        Object.keys(tag.ns).forEach(function (p) {\n          var n = tag.ns[p]\n          emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n        })\n      }\n    }\n    if (t === 0) parser.closedRoot = true\n    parser.tagName = parser.attribValue = parser.attribName = ''\n    parser.attribList.length = 0\n    parser.state = S.TEXT\n  }\n\n  function parseEntity (parser) {\n    var entity = parser.entity\n    var entityLC = entity.toLowerCase()\n    var num\n    var numStr = ''\n\n    if (parser.ENTITIES[entity]) {\n      return parser.ENTITIES[entity]\n    }\n    if (parser.ENTITIES[entityLC]) {\n      return parser.ENTITIES[entityLC]\n    }\n    entity = entityLC\n    if (entity.charAt(0) === '#') {\n      if (entity.charAt(1) === 'x') {\n        entity = entity.slice(2)\n        num = parseInt(entity, 16)\n        numStr = num.toString(16)\n      } else {\n        entity = entity.slice(1)\n        num = parseInt(entity, 10)\n        numStr = num.toString(10)\n      }\n    }\n    entity = entity.replace(/^0+/, '')\n    if (isNaN(num) || numStr.toLowerCase() !== entity) {\n      strictFail(parser, 'Invalid character entity')\n      return '&' + parser.entity + ';'\n    }\n\n    return String.fromCodePoint(num)\n  }\n\n  function beginWhiteSpace (parser, c) {\n    if (c === '<') {\n      parser.state = S.OPEN_WAKA\n      parser.startTagPosition = parser.position\n    } else if (!isWhitespace(c)) {\n      // have to process this as a text node.\n      // weird, but happens.\n      strictFail(parser, 'Non-whitespace before first tag.')\n      parser.textNode = c\n      parser.state = S.TEXT\n    }\n  }\n\n  function charAt (chunk, i) {\n    var result = ''\n    if (i < chunk.length) {\n      result = chunk.charAt(i)\n    }\n    return result\n  }\n\n  function write (chunk) {\n    var parser = this\n    if (this.error) {\n      throw this.error\n    }\n    if (parser.closed) {\n      return error(parser,\n        'Cannot write after close. Assign an onready handler.')\n    }\n    if (chunk === null) {\n      return end(parser)\n    }\n    if (typeof chunk === 'object') {\n      chunk = chunk.toString()\n    }\n    var i = 0\n    var c = ''\n    while (true) {\n      c = charAt(chunk, i++)\n      parser.c = c\n\n      if (!c) {\n        break\n      }\n\n      if (parser.trackPosition) {\n        parser.position++\n        if (c === '\\n') {\n          parser.line++\n          parser.column = 0\n        } else {\n          parser.column++\n        }\n      }\n\n      switch (parser.state) {\n        case S.BEGIN:\n          parser.state = S.BEGIN_WHITESPACE\n          if (c === '\\uFEFF') {\n            continue\n          }\n          beginWhiteSpace(parser, c)\n          continue\n\n        case S.BEGIN_WHITESPACE:\n          beginWhiteSpace(parser, c)\n          continue\n\n        case S.TEXT:\n          if (parser.sawRoot && !parser.closedRoot) {\n            var starti = i - 1\n            while (c && c !== '<' && c !== '&') {\n              c = charAt(chunk, i++)\n              if (c && parser.trackPosition) {\n                parser.position++\n                if (c === '\\n') {\n                  parser.line++\n                  parser.column = 0\n                } else {\n                  parser.column++\n                }\n              }\n            }\n            parser.textNode += chunk.substring(starti, i - 1)\n          }\n          if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n            parser.state = S.OPEN_WAKA\n            parser.startTagPosition = parser.position\n          } else {\n            if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {\n              strictFail(parser, 'Text data outside of root node.')\n            }\n            if (c === '&') {\n              parser.state = S.TEXT_ENTITY\n            } else {\n              parser.textNode += c\n            }\n          }\n          continue\n\n        case S.SCRIPT:\n          // only non-strict\n          if (c === '<') {\n            parser.state = S.SCRIPT_ENDING\n          } else {\n            parser.script += c\n          }\n          continue\n\n        case S.SCRIPT_ENDING:\n          if (c === '/') {\n            parser.state = S.CLOSE_TAG\n          } else {\n            parser.script += '<' + c\n            parser.state = S.SCRIPT\n          }\n          continue\n\n        case S.OPEN_WAKA:\n          // either a /, ?, !, or text is coming next.\n          if (c === '!') {\n            parser.state = S.SGML_DECL\n            parser.sgmlDecl = ''\n          } else if (isWhitespace(c)) {\n            // wait for it...\n          } else if (isMatch(nameStart, c)) {\n            parser.state = S.OPEN_TAG\n            parser.tagName = c\n          } else if (c === '/') {\n            parser.state = S.CLOSE_TAG\n            parser.tagName = ''\n          } else if (c === '?') {\n            parser.state = S.PROC_INST\n            parser.procInstName = parser.procInstBody = ''\n          } else {\n            strictFail(parser, 'Unencoded <')\n            // if there was some whitespace, then add that in.\n            if (parser.startTagPosition + 1 < parser.position) {\n              var pad = parser.position - parser.startTagPosition\n              c = new Array(pad).join(' ') + c\n            }\n            parser.textNode += '<' + c\n            parser.state = S.TEXT\n          }\n          continue\n\n        case S.SGML_DECL:\n          if (parser.sgmlDecl + c === '--') {\n            parser.state = S.COMMENT\n            parser.comment = ''\n            parser.sgmlDecl = ''\n            continue;\n          }\n\n          if (parser.doctype && parser.doctype !== true && parser.sgmlDecl) {\n            parser.state = S.DOCTYPE_DTD\n            parser.doctype += '<!' + parser.sgmlDecl + c\n            parser.sgmlDecl = ''\n          } else if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n            emitNode(parser, 'onopencdata')\n            parser.state = S.CDATA\n            parser.sgmlDecl = ''\n            parser.cdata = ''\n          } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n            parser.state = S.DOCTYPE\n            if (parser.doctype || parser.sawRoot) {\n              strictFail(parser,\n                'Inappropriately located doctype declaration')\n            }\n            parser.doctype = ''\n            parser.sgmlDecl = ''\n          } else if (c === '>') {\n            emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n            parser.sgmlDecl = ''\n            parser.state = S.TEXT\n          } else if (isQuote(c)) {\n            parser.state = S.SGML_DECL_QUOTED\n            parser.sgmlDecl += c\n          } else {\n            parser.sgmlDecl += c\n          }\n          continue\n\n        case S.SGML_DECL_QUOTED:\n          if (c === parser.q) {\n            parser.state = S.SGML_DECL\n            parser.q = ''\n          }\n          parser.sgmlDecl += c\n          continue\n\n        case S.DOCTYPE:\n          if (c === '>') {\n            parser.state = S.TEXT\n            emitNode(parser, 'ondoctype', parser.doctype)\n            parser.doctype = true // just remember that we saw it.\n          } else {\n            parser.doctype += c\n            if (c === '[') {\n              parser.state = S.DOCTYPE_DTD\n            } else if (isQuote(c)) {\n              parser.state = S.DOCTYPE_QUOTED\n              parser.q = c\n            }\n          }\n          continue\n\n        case S.DOCTYPE_QUOTED:\n          parser.doctype += c\n          if (c === parser.q) {\n            parser.q = ''\n            parser.state = S.DOCTYPE\n          }\n          continue\n\n        case S.DOCTYPE_DTD:\n          if (c === ']') {\n            parser.doctype += c\n            parser.state = S.DOCTYPE\n          } else if (c === '<') {\n            parser.state = S.OPEN_WAKA\n            parser.startTagPosition = parser.position\n          } else if (isQuote(c)) {\n            parser.doctype += c\n            parser.state = S.DOCTYPE_DTD_QUOTED\n            parser.q = c\n          } else {\n            parser.doctype += c\n          }\n          continue\n\n        case S.DOCTYPE_DTD_QUOTED:\n          parser.doctype += c\n          if (c === parser.q) {\n            parser.state = S.DOCTYPE_DTD\n            parser.q = ''\n          }\n          continue\n\n        case S.COMMENT:\n          if (c === '-') {\n            parser.state = S.COMMENT_ENDING\n          } else {\n            parser.comment += c\n          }\n          continue\n\n        case S.COMMENT_ENDING:\n          if (c === '-') {\n            parser.state = S.COMMENT_ENDED\n            parser.comment = textopts(parser.opt, parser.comment)\n            if (parser.comment) {\n              emitNode(parser, 'oncomment', parser.comment)\n            }\n            parser.comment = ''\n          } else {\n            parser.comment += '-' + c\n            parser.state = S.COMMENT\n          }\n          continue\n\n        case S.COMMENT_ENDED:\n          if (c !== '>') {\n            strictFail(parser, 'Malformed comment')\n            // allow <!-- blah -- bloo --> in non-strict mode,\n            // which is a comment of \" blah -- bloo \"\n            parser.comment += '--' + c\n            parser.state = S.COMMENT\n          } else if (parser.doctype && parser.doctype !== true) {\n            parser.state = S.DOCTYPE_DTD\n          } else {\n            parser.state = S.TEXT\n          }\n          continue\n\n        case S.CDATA:\n          if (c === ']') {\n            parser.state = S.CDATA_ENDING\n          } else {\n            parser.cdata += c\n          }\n          continue\n\n        case S.CDATA_ENDING:\n          if (c === ']') {\n            parser.state = S.CDATA_ENDING_2\n          } else {\n            parser.cdata += ']' + c\n            parser.state = S.CDATA\n          }\n          continue\n\n        case S.CDATA_ENDING_2:\n          if (c === '>') {\n            if (parser.cdata) {\n              emitNode(parser, 'oncdata', parser.cdata)\n            }\n            emitNode(parser, 'onclosecdata')\n            parser.cdata = ''\n            parser.state = S.TEXT\n          } else if (c === ']') {\n            parser.cdata += ']'\n          } else {\n            parser.cdata += ']]' + c\n            parser.state = S.CDATA\n          }\n          continue\n\n        case S.PROC_INST:\n          if (c === '?') {\n            parser.state = S.PROC_INST_ENDING\n          } else if (isWhitespace(c)) {\n            parser.state = S.PROC_INST_BODY\n          } else {\n            parser.procInstName += c\n          }\n          continue\n\n        case S.PROC_INST_BODY:\n          if (!parser.procInstBody && isWhitespace(c)) {\n            continue\n          } else if (c === '?') {\n            parser.state = S.PROC_INST_ENDING\n          } else {\n            parser.procInstBody += c\n          }\n          continue\n\n        case S.PROC_INST_ENDING:\n          if (c === '>') {\n            emitNode(parser, 'onprocessinginstruction', {\n              name: parser.procInstName,\n              body: parser.procInstBody\n            })\n            parser.procInstName = parser.procInstBody = ''\n            parser.state = S.TEXT\n          } else {\n            parser.procInstBody += '?' + c\n            parser.state = S.PROC_INST_BODY\n          }\n          continue\n\n        case S.OPEN_TAG:\n          if (isMatch(nameBody, c)) {\n            parser.tagName += c\n          } else {\n            newTag(parser)\n            if (c === '>') {\n              openTag(parser)\n            } else if (c === '/') {\n              parser.state = S.OPEN_TAG_SLASH\n            } else {\n              if (!isWhitespace(c)) {\n                strictFail(parser, 'Invalid character in tag name')\n              }\n              parser.state = S.ATTRIB\n            }\n          }\n          continue\n\n        case S.OPEN_TAG_SLASH:\n          if (c === '>') {\n            openTag(parser, true)\n            closeTag(parser)\n          } else {\n            strictFail(parser, 'Forward-slash in opening tag not followed by >')\n            parser.state = S.ATTRIB\n          }\n          continue\n\n        case S.ATTRIB:\n          // haven't read the attribute name yet.\n          if (isWhitespace(c)) {\n            continue\n          } else if (c === '>') {\n            openTag(parser)\n          } else if (c === '/') {\n            parser.state = S.OPEN_TAG_SLASH\n          } else if (isMatch(nameStart, c)) {\n            parser.attribName = c\n            parser.attribValue = ''\n            parser.state = S.ATTRIB_NAME\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_NAME:\n          if (c === '=') {\n            parser.state = S.ATTRIB_VALUE\n          } else if (c === '>') {\n            strictFail(parser, 'Attribute without value')\n            parser.attribValue = parser.attribName\n            attrib(parser)\n            openTag(parser)\n          } else if (isWhitespace(c)) {\n            parser.state = S.ATTRIB_NAME_SAW_WHITE\n          } else if (isMatch(nameBody, c)) {\n            parser.attribName += c\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_NAME_SAW_WHITE:\n          if (c === '=') {\n            parser.state = S.ATTRIB_VALUE\n          } else if (isWhitespace(c)) {\n            continue\n          } else {\n            strictFail(parser, 'Attribute without value')\n            parser.tag.attributes[parser.attribName] = ''\n            parser.attribValue = ''\n            emitNode(parser, 'onattribute', {\n              name: parser.attribName,\n              value: ''\n            })\n            parser.attribName = ''\n            if (c === '>') {\n              openTag(parser)\n            } else if (isMatch(nameStart, c)) {\n              parser.attribName = c\n              parser.state = S.ATTRIB_NAME\n            } else {\n              strictFail(parser, 'Invalid attribute name')\n              parser.state = S.ATTRIB\n            }\n          }\n          continue\n\n        case S.ATTRIB_VALUE:\n          if (isWhitespace(c)) {\n            continue\n          } else if (isQuote(c)) {\n            parser.q = c\n            parser.state = S.ATTRIB_VALUE_QUOTED\n          } else {\n            if (!parser.opt.unquotedAttributeValues) {\n              error(parser, 'Unquoted attribute value')\n            }\n            parser.state = S.ATTRIB_VALUE_UNQUOTED\n            parser.attribValue = c\n          }\n          continue\n\n        case S.ATTRIB_VALUE_QUOTED:\n          if (c !== parser.q) {\n            if (c === '&') {\n              parser.state = S.ATTRIB_VALUE_ENTITY_Q\n            } else {\n              parser.attribValue += c\n            }\n            continue\n          }\n          attrib(parser)\n          parser.q = ''\n          parser.state = S.ATTRIB_VALUE_CLOSED\n          continue\n\n        case S.ATTRIB_VALUE_CLOSED:\n          if (isWhitespace(c)) {\n            parser.state = S.ATTRIB\n          } else if (c === '>') {\n            openTag(parser)\n          } else if (c === '/') {\n            parser.state = S.OPEN_TAG_SLASH\n          } else if (isMatch(nameStart, c)) {\n            strictFail(parser, 'No whitespace between attributes')\n            parser.attribName = c\n            parser.attribValue = ''\n            parser.state = S.ATTRIB_NAME\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_VALUE_UNQUOTED:\n          if (!isAttribEnd(c)) {\n            if (c === '&') {\n              parser.state = S.ATTRIB_VALUE_ENTITY_U\n            } else {\n              parser.attribValue += c\n            }\n            continue\n          }\n          attrib(parser)\n          if (c === '>') {\n            openTag(parser)\n          } else {\n            parser.state = S.ATTRIB\n          }\n          continue\n\n        case S.CLOSE_TAG:\n          if (!parser.tagName) {\n            if (isWhitespace(c)) {\n              continue\n            } else if (notMatch(nameStart, c)) {\n              if (parser.script) {\n                parser.script += '</' + c\n                parser.state = S.SCRIPT\n              } else {\n                strictFail(parser, 'Invalid tagname in closing tag.')\n              }\n            } else {\n              parser.tagName = c\n            }\n          } else if (c === '>') {\n            closeTag(parser)\n          } else if (isMatch(nameBody, c)) {\n            parser.tagName += c\n          } else if (parser.script) {\n            parser.script += '</' + parser.tagName\n            parser.tagName = ''\n            parser.state = S.SCRIPT\n          } else {\n            if (!isWhitespace(c)) {\n              strictFail(parser, 'Invalid tagname in closing tag')\n            }\n            parser.state = S.CLOSE_TAG_SAW_WHITE\n          }\n          continue\n\n        case S.CLOSE_TAG_SAW_WHITE:\n          if (isWhitespace(c)) {\n            continue\n          }\n          if (c === '>') {\n            closeTag(parser)\n          } else {\n            strictFail(parser, 'Invalid characters in closing tag')\n          }\n          continue\n\n        case S.TEXT_ENTITY:\n        case S.ATTRIB_VALUE_ENTITY_Q:\n        case S.ATTRIB_VALUE_ENTITY_U:\n          var returnState\n          var buffer\n          switch (parser.state) {\n            case S.TEXT_ENTITY:\n              returnState = S.TEXT\n              buffer = 'textNode'\n              break\n\n            case S.ATTRIB_VALUE_ENTITY_Q:\n              returnState = S.ATTRIB_VALUE_QUOTED\n              buffer = 'attribValue'\n              break\n\n            case S.ATTRIB_VALUE_ENTITY_U:\n              returnState = S.ATTRIB_VALUE_UNQUOTED\n              buffer = 'attribValue'\n              break\n          }\n\n          if (c === ';') {\n            var parsedEntity = parseEntity(parser)\n            if (parser.opt.unparsedEntities && !Object.values(sax.XML_ENTITIES).includes(parsedEntity)) {\n              parser.entity = ''\n              parser.state = returnState\n              parser.write(parsedEntity)\n            } else {\n              parser[buffer] += parsedEntity\n              parser.entity = ''\n              parser.state = returnState\n            }\n          } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {\n            parser.entity += c\n          } else {\n            strictFail(parser, 'Invalid character in entity name')\n            parser[buffer] += '&' + parser.entity + c\n            parser.entity = ''\n            parser.state = returnState\n          }\n\n          continue\n\n        default: /* istanbul ignore next */ {\n          throw new Error(parser, 'Unknown state: ' + parser.state)\n        }\n      }\n    } // while\n\n    if (parser.position >= parser.bufferCheckPosition) {\n      checkBufferLength(parser)\n    }\n    return parser\n  }\n\n  /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n  /* istanbul ignore next */\n  if (!String.fromCodePoint) {\n    (function () {\n      var stringFromCharCode = String.fromCharCode\n      var floor = Math.floor\n      var fromCodePoint = function () {\n        var MAX_SIZE = 0x4000\n        var codeUnits = []\n        var highSurrogate\n        var lowSurrogate\n        var index = -1\n        var length = arguments.length\n        if (!length) {\n          return ''\n        }\n        var result = ''\n        while (++index < length) {\n          var codePoint = Number(arguments[index])\n          if (\n            !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n            codePoint < 0 || // not a valid Unicode code point\n            codePoint > 0x10FFFF || // not a valid Unicode code point\n            floor(codePoint) !== codePoint // not an integer\n          ) {\n            throw RangeError('Invalid code point: ' + codePoint)\n          }\n          if (codePoint <= 0xFFFF) { // BMP code point\n            codeUnits.push(codePoint)\n          } else { // Astral code point; split in surrogate halves\n            // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n            codePoint -= 0x10000\n            highSurrogate = (codePoint >> 10) + 0xD800\n            lowSurrogate = (codePoint % 0x400) + 0xDC00\n            codeUnits.push(highSurrogate, lowSurrogate)\n          }\n          if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n            result += stringFromCharCode.apply(null, codeUnits)\n            codeUnits.length = 0\n          }\n        }\n        return result\n      }\n      /* istanbul ignore next */\n      if (Object.defineProperty) {\n        Object.defineProperty(String, 'fromCodePoint', {\n          value: fromCodePoint,\n          configurable: true,\n          writable: true\n        })\n      } else {\n        String.fromCodePoint = fromCodePoint\n      }\n    }())\n  }\n})(typeof exports === 'undefined' ? this.sax = {} : exports)\n","import sax from 'sax';\nfunction startsWith(array, prefix) {\n    if (prefix.length > array.length) {\n        return false;\n    }\n    for (let i = 0; i < prefix.length; i++) {\n        if (array[i] !== prefix[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction hasXmlTag(xmlString) {\n    return /^<\\s*\\w+(?=\\s+[^<>]*=|>)/.test(xmlString);\n}\nfunction hasArrayXmlTag(array, encoding) {\n    const textDecoder = new TextDecoder(encoding);\n    return hasXmlTag(textDecoder.decode(array));\n}\nexport function isXml(array) {\n    if (startsWith(array, [60, 63, 120, 109, 108, 32])) {\n        return { xml: true, encoding: 'utf-8', offset: 0 };\n    }\n    if (startsWith(array, [0xEF, 0xBB, 0xBF])) { // UTF-8 BOM\n        const encoding = 'utf-8';\n        if (startsWith(array.subarray(3), [60, 63, 120, 109, 108, 32]) || hasArrayXmlTag(array, encoding)) {\n            return { xml: true, encoding, offset: 3 };\n        }\n    }\n    if (startsWith(array, [0xFE, 0xFF])) {\n        const encoding = 'utf-16be';\n        if (startsWith(array.subarray(2), [0, 60, 0, 63, 0, 120, 0, 109, 0, 108, 0, 32]) || hasArrayXmlTag(array, encoding)) {\n            return { xml: true, encoding, offset: 2 };\n        }\n    }\n    if (startsWith(array, [0xFF, 0xFE])) {\n        const encoding = 'utf-16le';\n        if (startsWith(array.subarray(2), [60, 0, 63, 0, 120, 0, 109, 0, 108, 0, 32, 0]) || hasArrayXmlTag(array, encoding)) {\n            return { xml: true, encoding, offset: 2 };\n        }\n        return { xml: true, encoding: 'utf-16le', offset: 2 };\n    }\n    if (startsWith(array, [0, 60, 0, 63, 0, 120, 0, 109, 0, 108, 0, 32])) {\n        return { xml: true, encoding: 'utf-16be', offset: 0 };\n    }\n    if (startsWith(array, [60, 0, 63, 0, 120, 0, 109, 0, 108, 0, 32, 0])) {\n        return { xml: true, encoding: 'utf-16le', offset: 0 };\n    }\n    if (hasArrayXmlTag(array, 'utf-8')) {\n        return { xml: true, encoding: 'utf-8', offset: 0 };\n    }\n    return { xml: false };\n}\n/**\n * Maps the root element namespace to corresponding file-type\n */\nconst namespaceMapping = {\n    'http://www.w3.org/2000/svg': {\n        ext: 'svg',\n        mime: 'image/svg+xml'\n    },\n    'http://www.w3.org/1999/xhtml': {\n        ext: 'xhtml',\n        mime: 'application/xhtml+xml'\n    },\n    'http://www.opengis.net/kml/2.2': {\n        ext: 'kml',\n        mime: 'application/vnd.google-earth.kml+xml'\n    },\n    'http://www.opengis.net/gml': {\n        ext: 'gml',\n        mime: 'application/gml+xml'\n    }\n};\n/**\n * Maps the root element name to corresponding file-type.\n * Used for Non-namespaced XML\n * @type {{rss: {ext: string, mime: string}}}\n */\nconst rootNameMapping = {\n    rss: {\n        ext: 'rss',\n        mime: 'application/rss+xml'\n    },\n    'score-partwise': {\n        ext: 'musicxml',\n        mime: 'application/vnd.recordare.musicxml+xml'\n    },\n    svg: {\n        ext: 'svg',\n        mime: 'image/svg+xml'\n    }\n};\nexport class XmlTextDetector {\n    constructor(options) {\n        this.options = options ?? {};\n        this.firstTag = true;\n        this.onEnd = false;\n        this.parser = sax.parser(true, { xmlns: true });\n        this.nesting = 0;\n        this.parser.onerror = e => {\n            if (e.message.startsWith('Invalid character entity')) { // Allow entity reference\n                return;\n            }\n            this.fileType = undefined;\n            this.onEnd = true;\n        };\n        this.parser.onopentag = node => {\n            ++this.nesting;\n            if (!this.firstTag || this.onEnd) {\n                return;\n            }\n            this.firstTag = false;\n            if (node.uri) {\n                // Resolve file-type boot root element namespace\n                this.fileType = namespaceMapping[node.uri];\n            }\n            else if (node.name) {\n                // Fall back on element name if there is no namespace\n                this.fileType = rootNameMapping[node.name.toLowerCase()];\n            }\n            if (this.fileType && !this.options.fullScan) {\n                this.onEnd = true;\n            }\n        };\n        this.parser.onclosetag = () => {\n            --this.nesting;\n        };\n    }\n    write(text) {\n        this.parser.write(text);\n    }\n    close() {\n        this.parser.close();\n        this.onEnd = true;\n    }\n    isValid() {\n        return this.nesting === 0;\n    }\n}\nexport const detectXml = {\n    id: 'xml',\n    detect: async (tokenizer) => {\n        const buffer = new Uint8Array(512);\n        // Increase sample size from 12 to 256.\n        await tokenizer.peekBuffer(buffer, { length: 128, mayBeLess: true });\n        const xmlDetection = isXml(buffer);\n        if (xmlDetection.xml) {\n            await tokenizer.ignore(xmlDetection.offset);\n            const xmlTextDetector = new XmlTextDetector();\n            const textDecoder = new TextDecoder(xmlDetection.encoding);\n            do {\n                const len = await tokenizer.readBuffer(buffer, { mayBeLess: true });\n                const portion = buffer.subarray(0, len);\n                const text = textDecoder.decode(portion);\n                xmlTextDetector.write(text);\n                if (len < buffer.length) {\n                    xmlTextDetector.close();\n                }\n            } while (!xmlTextDetector.onEnd);\n            return xmlTextDetector.fileType ?? {\n                ext: 'xml',\n                mime: 'application/xml'\n            };\n        }\n    }\n};\n","import {XmlTextDetector} from '@file-type/xml';\n\nexport default function isSvg(string, {validate = true} = {}) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\tstring = string.trim();\n\n\tif (string.length === 0) {\n\t\treturn false;\n\t}\n\n\tconst xmlTextDetector = new XmlTextDetector({fullScan: validate});\n\n\tif (validate) {\n\t\txmlTextDetector.write(string);\n\n\t\tif (!xmlTextDetector.isValid()) {\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tconst chunkSize = 128;\n\n\t\tlet offset = 0;\n\t\twhile (string.length > offset && !xmlTextDetector.onEnd) {\n\t\t\txmlTextDetector.write(string.slice(offset, Math.min(offset + chunkSize, string.length)));\n\t\t\toffset += chunkSize;\n\t\t}\n\t}\n\n\treturn xmlTextDetector.fileType?.ext === 'svg';\n}\n","import { s as scopedGlobals, l as logger, F as FileType } from \"./chunks/folder-29HuacU_.mjs\";\nimport { a, b, N, c, P } from \"./chunks/folder-29HuacU_.mjs\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport isSvg from \"is-svg\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"@nextcloud/paths\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nclass FilesRegistry extends TypedEventTarget {\n}\nfunction getRegistry() {\n  scopedGlobals.registry ??= new FilesRegistry();\n  return scopedGlobals.registry;\n}\nfunction getFilesRegistry() {\n  return getRegistry();\n}\nconst DefaultType = Object.freeze({\n  DEFAULT: \"default\",\n  HIDDEN: \"hidden\"\n});\nfunction registerFileAction(action) {\n  validateAction$1(action);\n  scopedGlobals.fileActions ??= /* @__PURE__ */ new Map();\n  if (scopedGlobals.fileActions.has(action.id)) {\n    logger.error(`FileAction ${action.id} already registered`, { action });\n    return;\n  }\n  scopedGlobals.fileActions.set(action.id, action);\n  getRegistry().dispatchTypedEvent(\"register:action\", new CustomEvent(\"register:action\", { detail: action }));\n}\nfunction getFileActions() {\n  if (scopedGlobals.fileActions) {\n    return [...scopedGlobals.fileActions.values()];\n  }\n  return [];\n}\nfunction validateAction$1(action) {\n  if (!action.id || typeof action.id !== \"string\") {\n    throw new Error(\"Invalid id\");\n  }\n  if (!action.displayName || typeof action.displayName !== \"function\") {\n    throw new Error(\"Invalid displayName function\");\n  }\n  if (\"title\" in action && typeof action.title !== \"function\") {\n    throw new Error(\"Invalid title function\");\n  }\n  if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n    throw new Error(\"Invalid iconSvgInline function\");\n  }\n  if (!action.exec || typeof action.exec !== \"function\") {\n    throw new Error(\"Invalid exec function\");\n  }\n  if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n    throw new Error(\"Invalid enabled function\");\n  }\n  if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n    throw new Error(\"Invalid execBatch function\");\n  }\n  if (\"order\" in action && typeof action.order !== \"number\") {\n    throw new Error(\"Invalid order\");\n  }\n  if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n    throw new Error(\"Invalid destructive flag\");\n  }\n  if (\"parent\" in action && typeof action.parent !== \"string\") {\n    throw new Error(\"Invalid parent\");\n  }\n  if (action.default && !Object.values(DefaultType).includes(action.default)) {\n    throw new Error(\"Invalid default\");\n  }\n  if (\"inline\" in action && typeof action.inline !== \"function\") {\n    throw new Error(\"Invalid inline function\");\n  }\n  if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n    throw new Error(\"Invalid renderInline function\");\n  }\n  if (\"hotkey\" in action && action.hotkey !== void 0) {\n    if (typeof action.hotkey !== \"object\") {\n      throw new Error(\"Invalid hotkey configuration\");\n    }\n    if (typeof action.hotkey.key !== \"string\" || !action.hotkey.key) {\n      throw new Error(\"Missing or invalid hotkey key\");\n    }\n    if (typeof action.hotkey.description !== \"string\" || !action.hotkey.description) {\n      throw new Error(\"Missing or invalid hotkey description\");\n    }\n  }\n}\nfunction registerFileListAction(action) {\n  validateAction(action);\n  scopedGlobals.fileListActions ??= /* @__PURE__ */ new Map();\n  if (scopedGlobals.fileListActions.has(action.id)) {\n    logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n    return;\n  }\n  scopedGlobals.fileListActions.set(action.id, action);\n  getRegistry().dispatchTypedEvent(\"register:listAction\", new CustomEvent(\"register:listAction\", { detail: action }));\n}\nfunction getFileListActions() {\n  if (scopedGlobals.fileListActions) {\n    return [...scopedGlobals.fileListActions.values()];\n  }\n  return [];\n}\nfunction validateAction(action) {\n  if (!action.id || typeof action.id !== \"string\") {\n    throw new Error(\"Invalid id\");\n  }\n  if (!action.displayName || typeof action.displayName !== \"function\") {\n    throw new Error(\"Invalid displayName function\");\n  }\n  if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n    throw new Error(\"Invalid iconSvgInline function\");\n  }\n  if (\"order\" in action && typeof action.order !== \"number\") {\n    throw new Error(\"Invalid order\");\n  }\n  if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n    throw new Error(\"Invalid enabled function\");\n  }\n  if (!action.exec || typeof action.exec !== \"function\") {\n    throw new Error(\"Invalid exec function\");\n  }\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction registerFileListFilter(filter) {\n  scopedGlobals.fileListFilters ??= /* @__PURE__ */ new Map();\n  if (scopedGlobals.fileListFilters.has(filter.id)) {\n    throw new Error(`File list filter \"${filter.id}\" already registered`);\n  }\n  scopedGlobals.fileListFilters.set(filter.id, filter);\n  getRegistry().dispatchTypedEvent(\"register:listFilter\", new CustomEvent(\"register:listFilter\", { detail: filter }));\n}\nfunction unregisterFileListFilter(filterId) {\n  if (scopedGlobals.fileListFilters && scopedGlobals.fileListFilters.has(filterId)) {\n    scopedGlobals.fileListFilters.delete(filterId);\n    getRegistry().dispatchTypedEvent(\"unregister:listFilter\", new CustomEvent(\"unregister:listFilter\", { detail: filterId }));\n  }\n}\nfunction getFileListFilters() {\n  if (scopedGlobals.fileListFilters) {\n    return [...scopedGlobals.fileListFilters.values()];\n  }\n  return [];\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n  id;\n  order;\n  constructor(id, order = 100) {\n    super();\n    this.id = id;\n    this.order = order;\n  }\n  filter(nodes) {\n    throw new Error(\"Not implemented\");\n  }\n  updateChips(chips) {\n    this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n  }\n  filterUpdated() {\n    this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n  }\n}\nfunction registerFileListHeader(header) {\n  validateHeader(header);\n  scopedGlobals.fileListHeaders ??= /* @__PURE__ */ new Map();\n  if (scopedGlobals.fileListHeaders.has(header.id)) {\n    logger.error(`Header ${header.id} already registered`, { header });\n    return;\n  }\n  scopedGlobals.fileListHeaders.set(header.id, header);\n  getRegistry().dispatchTypedEvent(\"register:listHeader\", new CustomEvent(\"register:listHeader\", { detail: header }));\n}\nfunction getFileListHeaders() {\n  if (!scopedGlobals.fileListHeaders) {\n    return [];\n  }\n  return [...scopedGlobals.fileListHeaders.values()];\n}\nfunction validateHeader(header) {\n  if (!header.id || !header.render || !header.updated) {\n    throw new Error(\"Invalid header: id, render and updated are required\");\n  }\n  if (typeof header.id !== \"string\") {\n    throw new Error(\"Invalid id property\");\n  }\n  if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n    throw new Error(\"Invalid enabled property\");\n  }\n  if (header.render && typeof header.render !== \"function\") {\n    throw new Error(\"Invalid render property\");\n  }\n  if (header.updated && typeof header.updated !== \"function\") {\n    throw new Error(\"Invalid updated property\");\n  }\n}\nfunction checkOptionalProperty(obj, property, type) {\n  if (typeof obj[property] !== \"undefined\") {\n    if (type === \"array\") {\n      if (!Array.isArray(obj[property])) {\n        throw new Error(`View ${property} must be an array`);\n      }\n    } else if (typeof obj[property] !== type) {\n      throw new Error(`View ${property} must be a ${type}`);\n    } else if (type === \"object\" && (obj[property] === null || Array.isArray(obj[property]))) {\n      throw new Error(`View ${property} must be an object`);\n    }\n  }\n}\nclass Column {\n  _column;\n  constructor(column) {\n    validateColumn(column);\n    this._column = column;\n  }\n  get id() {\n    return this._column.id;\n  }\n  get title() {\n    return this._column.title;\n  }\n  get render() {\n    return this._column.render;\n  }\n  get sort() {\n    return this._column.sort;\n  }\n  get summary() {\n    return this._column.summary;\n  }\n}\nfunction validateColumn(column) {\n  if (typeof column !== \"object\" || column === null) {\n    throw new Error(\"View column must be an object\");\n  }\n  if (!column.id || typeof column.id !== \"string\") {\n    throw new Error(\"A column id is required\");\n  }\n  if (!column.title || typeof column.title !== \"string\") {\n    throw new Error(\"A column title is required\");\n  }\n  if (!column.render || typeof column.render !== \"function\") {\n    throw new Error(\"A render function is required\");\n  }\n  checkOptionalProperty(column, \"sort\", \"function\");\n  checkOptionalProperty(column, \"summary\", \"function\");\n}\nclass View {\n  _view;\n  constructor(view) {\n    validateView(view);\n    this._view = view;\n  }\n  get id() {\n    return this._view.id;\n  }\n  get name() {\n    return this._view.name;\n  }\n  get caption() {\n    return this._view.caption;\n  }\n  get emptyTitle() {\n    return this._view.emptyTitle;\n  }\n  get emptyCaption() {\n    return this._view.emptyCaption;\n  }\n  get getContents() {\n    return this._view.getContents;\n  }\n  get hidden() {\n    return this._view.hidden;\n  }\n  get icon() {\n    return this._view.icon;\n  }\n  set icon(icon) {\n    this._view.icon = icon;\n  }\n  get order() {\n    return this._view.order;\n  }\n  set order(order) {\n    this._view.order = order;\n  }\n  get params() {\n    return this._view.params;\n  }\n  set params(params) {\n    this._view.params = params;\n  }\n  get columns() {\n    return this._view.columns;\n  }\n  get emptyView() {\n    return this._view.emptyView;\n  }\n  get parent() {\n    return this._view.parent;\n  }\n  get sticky() {\n    return this._view.sticky;\n  }\n  get expanded() {\n    return this._view.expanded;\n  }\n  set expanded(expanded) {\n    this._view.expanded = expanded;\n  }\n  get defaultSortKey() {\n    return this._view.defaultSortKey;\n  }\n  get loadChildViews() {\n    return this._view.loadChildViews;\n  }\n}\nfunction validateView(view) {\n  if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n    throw new Error(\"View icon is required and must be a valid svg string\");\n  }\n  if (!view.id || typeof view.id !== \"string\") {\n    throw new Error(\"View id is required and must be a string\");\n  }\n  if (!view.getContents || typeof view.getContents !== \"function\") {\n    throw new Error(\"View getContents is required and must be a function\");\n  }\n  if (!view.name || typeof view.name !== \"string\") {\n    throw new Error(\"View name is required and must be a string\");\n  }\n  checkOptionalProperty(view, \"caption\", \"string\");\n  checkOptionalProperty(view, \"columns\", \"array\");\n  checkOptionalProperty(view, \"defaultSortKey\", \"string\");\n  checkOptionalProperty(view, \"emptyCaption\", \"string\");\n  checkOptionalProperty(view, \"emptyTitle\", \"string\");\n  checkOptionalProperty(view, \"emptyView\", \"function\");\n  checkOptionalProperty(view, \"expanded\", \"boolean\");\n  checkOptionalProperty(view, \"hidden\", \"boolean\");\n  checkOptionalProperty(view, \"loadChildViews\", \"function\");\n  checkOptionalProperty(view, \"order\", \"number\");\n  checkOptionalProperty(view, \"params\", \"object\");\n  checkOptionalProperty(view, \"parent\", \"string\");\n  checkOptionalProperty(view, \"sticky\", \"boolean\");\n  if (view.columns) {\n    view.columns.forEach(validateColumn);\n    const columnIds = view.columns.reduce((set, column) => set.add(column.id), /* @__PURE__ */ new Set());\n    if (columnIds.size !== view.columns.length) {\n      throw new Error(\"View columns must have unique ids\");\n    }\n  }\n}\nclass Navigation extends TypedEventTarget {\n  _views = [];\n  _currentView = null;\n  /**\n   * Register a new view on the navigation\n   *\n   * @param views The views to register\n   * @throws {Error} if a view with the same id is already registered\n   * @throws {Error} if the registered view is invalid\n   */\n  register(...views) {\n    for (const view of views) {\n      if (this._views.find((search) => search.id === view.id)) {\n        throw new Error(`IView id ${view.id} is already registered`);\n      }\n      validateView(view);\n    }\n    this._views.push(...views);\n    this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n  }\n  /**\n   * Remove a registered view\n   *\n   * @param id The id of the view to remove\n   */\n  remove(id) {\n    const index = this._views.findIndex((view) => view.id === id);\n    if (index !== -1) {\n      this._views.splice(index, 1);\n      this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n    }\n  }\n  /**\n   * Set the currently active view\n   *\n   * @param id - The id of the view to set as active\n   * @throws {Error} If no view with the given id was registered\n   * @fires UpdateActiveViewEvent\n   */\n  setActive(id) {\n    if (id === null) {\n      this._currentView = null;\n    } else {\n      const view = this._views.find(({ id: viewId }) => viewId === id);\n      if (!view) {\n        throw new Error(`No view with ${id} registered`);\n      }\n      this._currentView = view;\n    }\n    const event = new CustomEvent(\"updateActive\", { detail: this._currentView });\n    this.dispatchTypedEvent(\"updateActive\", event);\n  }\n  /**\n   * The currently active files view\n   */\n  get active() {\n    return this._currentView;\n  }\n  /**\n   * All registered views\n   */\n  get views() {\n    return this._views;\n  }\n}\nfunction getNavigation() {\n  scopedGlobals.navigation ??= new Navigation();\n  return scopedGlobals.navigation;\n}\nconst NewMenuEntryCategory = Object.freeze({\n  /**\n   * For actions where the user is intended to upload from their device\n   */\n  UploadFromDevice: 0,\n  /**\n   * For actions that create new nodes on the server without uploading\n   */\n  CreateNew: 1,\n  /**\n   * For everything not matching the other categories\n   */\n  Other: 2\n});\nclass NewMenu {\n  _entries = [];\n  registerEntry(entry) {\n    this.validateEntry(entry);\n    entry.category = entry.category ?? NewMenuEntryCategory.CreateNew;\n    this._entries.push(entry);\n  }\n  unregisterEntry(entry) {\n    const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n    if (entryIndex === -1) {\n      logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n      return;\n    }\n    this._entries.splice(entryIndex, 1);\n  }\n  /**\n   * Get the list of registered entries\n   *\n   * @param context - The creation context. Usually the current folder\n   */\n  getEntries(context) {\n    if (context) {\n      return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n    }\n    return this._entries;\n  }\n  getEntryIndex(id) {\n    return this._entries.findIndex((entry) => entry.id === id);\n  }\n  validateEntry(entry) {\n    if (!entry.id || !entry.displayName || !entry.iconSvgInline || !entry.handler) {\n      throw new Error(\"Invalid entry\");\n    }\n    if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n      throw new Error(\"Invalid id or displayName property\");\n    }\n    if (entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n      throw new Error(\"Invalid icon provided\");\n    }\n    if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n      throw new Error(\"Invalid enabled property\");\n    }\n    if (typeof entry.handler !== \"function\") {\n      throw new Error(\"Invalid handler property\");\n    }\n    if (\"order\" in entry && typeof entry.order !== \"number\") {\n      throw new Error(\"Invalid order property\");\n    }\n    if (this.getEntryIndex(entry.id) !== -1) {\n      throw new Error(\"Duplicate entry\");\n    }\n  }\n}\nfunction getNewFileMenu() {\n  scopedGlobals.newFileMenu ??= new NewMenu();\n  return scopedGlobals.newFileMenu;\n}\nfunction addNewFileMenuEntry(entry) {\n  const newFileMenu = getNewFileMenu();\n  return newFileMenu.registerEntry(entry);\n}\nfunction removeNewFileMenuEntry(entry) {\n  const newFileMenu = getNewFileMenu();\n  return newFileMenu.unregisterEntry(entry);\n}\nfunction getNewFileMenuEntries(context) {\n  const newFileMenu = getNewFileMenu();\n  return newFileMenu.getEntries(context).sort((a2, b2) => {\n    if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n      return a2.order - b2.order;\n    }\n    return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n  });\n}\nfunction registerSidebarAction(action) {\n  validateSidebarAction(action);\n  scopedGlobals.filesSidebarActions ??= /* @__PURE__ */ new Map();\n  if (scopedGlobals.filesSidebarActions.has(action.id)) {\n    logger.warn(`Sidebar action with id \"${action.id}\" already registered. Skipping.`);\n    return;\n  }\n  scopedGlobals.filesSidebarActions.set(action.id, action);\n  logger.debug(`New sidebar action with id \"${action.id}\" registered.`);\n}\nfunction getSidebarActions() {\n  if (scopedGlobals.filesSidebarActions) {\n    return [...scopedGlobals.filesSidebarActions.values()];\n  }\n  return [];\n}\nfunction validateSidebarAction(action) {\n  if (typeof action !== \"object\") {\n    throw new Error(\"Sidebar action is not an object\");\n  }\n  if (!action.id || typeof action.id !== \"string\" || action.id !== CSS.escape(action.id)) {\n    throw new Error(\"Sidebar actions need to have an id conforming to the HTML id attribute specifications\");\n  }\n  if (!action.displayName || typeof action.displayName !== \"function\") {\n    throw new Error(\"Sidebar actions need to have a displayName function\");\n  }\n  if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n    throw new Error(\"Sidebar actions need to have a iconSvgInline function\");\n  }\n  if (!action.enabled || typeof action.enabled !== \"function\") {\n    throw new Error(\"Sidebar actions need to have an enabled function\");\n  }\n  if (!action.onClick || typeof action.onClick !== \"function\") {\n    throw new Error(\"Sidebar actions need to have an onClick function\");\n  }\n}\nfunction registerSidebarTab(tab) {\n  validateSidebarTab(tab);\n  scopedGlobals.filesSidebarTabs ??= /* @__PURE__ */ new Map();\n  if (scopedGlobals.filesSidebarTabs.has(tab.id)) {\n    logger.warn(`Sidebar tab with id \"${tab.id}\" already registered. Skipping.`);\n    return;\n  }\n  scopedGlobals.filesSidebarTabs.set(tab.id, tab);\n  logger.debug(`New sidebar tab with id \"${tab.id}\" registered.`);\n}\nfunction getSidebarTabs() {\n  if (scopedGlobals.filesSidebarTabs) {\n    return [...scopedGlobals.filesSidebarTabs.values()];\n  }\n  return [];\n}\nfunction validateSidebarTab(tab) {\n  if (typeof tab !== \"object\") {\n    throw new Error(\"Sidebar tab is not an object\");\n  }\n  if (!tab.id || typeof tab.id !== \"string\" || tab.id !== CSS.escape(tab.id)) {\n    throw new Error(\"Sidebar tabs need to have an id conforming to the HTML id attribute specifications\");\n  }\n  if (!tab.tagName || typeof tab.tagName !== \"string\") {\n    throw new Error(\"Sidebar tabs need to have the tagName name set\");\n  }\n  if (!tab.tagName.match(/^[a-z][a-z0-9-_]+$/)) {\n    throw new Error('Sidebar tab \"tagName\" is invalid');\n  }\n  if (!tab.displayName || typeof tab.displayName !== \"string\") {\n    throw new Error(\"Sidebar tabs need to have a name set\");\n  }\n  if (typeof tab.iconSvgInline !== \"string\" || !isSvg(tab.iconSvgInline)) {\n    throw new Error(\"Sidebar tabs need to have an valid SVG icon\");\n  }\n  if (typeof tab.order !== \"number\") {\n    throw new Error(\"Sidebar tabs need to have a numeric order set\");\n  }\n  if (tab.enabled && typeof tab.enabled !== \"function\") {\n    throw new Error('Sidebar tab \"enabled\" is not a function');\n  }\n  if (tab.onInit && typeof tab.onInit !== \"function\") {\n    throw new Error('Sidebar tab \"onInit\" is not a function');\n  }\n}\nclass SidebarProxy {\n  get #impl() {\n    return window.OCA?.Files?._sidebar?.();\n  }\n  get available() {\n    return !!this.#impl;\n  }\n  get isOpen() {\n    return this.#impl?.isOpen ?? false;\n  }\n  get activeTab() {\n    return this.#impl?.activeTab;\n  }\n  get node() {\n    return this.#impl?.node;\n  }\n  open(node, tab) {\n    this.#impl?.open(node, tab);\n  }\n  close() {\n    this.#impl?.close();\n  }\n  setActiveTab(tabId) {\n    this.#impl?.setActiveTab(tabId);\n  }\n  registerTab(tab) {\n    registerSidebarTab(tab);\n  }\n  getTabs(context) {\n    return this.#impl?.getTabs(context) ?? [];\n  }\n  getActions(context) {\n    return this.#impl?.getActions(context) ?? [];\n  }\n  registerAction(action) {\n    registerSidebarAction(action);\n  }\n}\nfunction getSidebar() {\n  return new SidebarProxy();\n}\nconst InvalidFilenameErrorReason = Object.freeze({\n  ReservedName: \"reserved name\",\n  Character: \"character\",\n  Extension: \"extension\"\n});\nclass InvalidFilenameError extends Error {\n  constructor(options) {\n    super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n  }\n  /**\n   * The filename that was validated\n   */\n  get filename() {\n    return this.cause.filename;\n  }\n  /**\n   * Reason why the validation failed\n   */\n  get reason() {\n    return this.cause.reason;\n  }\n  /**\n   * Part of the filename that caused this error\n   */\n  get segment() {\n    return this.cause.segment;\n  }\n}\nfunction validateFilename(filename) {\n  const capabilities = getCapabilities().files;\n  const forbiddenCharacters = capabilities.forbidden_filename_characters ?? [\"/\", \"\\\\\"];\n  for (const character of forbiddenCharacters) {\n    if (filename.includes(character)) {\n      throw new InvalidFilenameError({ segment: character, reason: InvalidFilenameErrorReason.Character, filename });\n    }\n  }\n  filename = filename.toLocaleLowerCase();\n  const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n  if (forbiddenFilenames.includes(filename)) {\n    throw new InvalidFilenameError({ filename, segment: filename, reason: InvalidFilenameErrorReason.ReservedName });\n  }\n  const endOfBasename = filename.indexOf(\".\", 1);\n  const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n  const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n  if (forbiddenFilenameBasenames.includes(basename2)) {\n    throw new InvalidFilenameError({ filename, segment: basename2, reason: InvalidFilenameErrorReason.ReservedName });\n  }\n  const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [];\n  for (const extension of forbiddenFilenameExtensions) {\n    if (filename.length > extension.length && filename.endsWith(extension)) {\n      throw new InvalidFilenameError({ segment: extension, reason: InvalidFilenameErrorReason.Extension, filename });\n    }\n  }\n}\nfunction isFilenameValid(filename) {\n  try {\n    validateFilename(filename);\n    return true;\n  } catch (error) {\n    if (error instanceof InvalidFilenameError) {\n      return false;\n    }\n    throw error;\n  }\n}\nfunction getUniqueName(name, otherNames, options) {\n  const opts = {\n    suffix: (n) => `(${n})`,\n    ignoreFileExtension: false,\n    ...options\n  };\n  let newName = name;\n  let i = 1;\n  while (otherNames.includes(newName)) {\n    const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n    const base = basename(name, ext);\n    newName = `${base} ${opts.suffix(i++)}${ext}`;\n  }\n  return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n  binaryPrefixes = binaryPrefixes && !base1000;\n  if (typeof size === \"string\") {\n    size = Number(size);\n  }\n  let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n  order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n  const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n  let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n  if (skipSmallSizes === true && order === 0) {\n    return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n  }\n  if (order < 2) {\n    relativeSize = parseFloat(relativeSize).toFixed(0);\n  } else {\n    relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n  }\n  return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n  try {\n    value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n  } catch {\n    return null;\n  }\n  const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n  if (match === null || match[1] === \".\" || match[1] === \"\") {\n    return null;\n  }\n  const bytesArray = {\n    \"\": 0,\n    k: 1,\n    m: 2,\n    g: 3,\n    t: 4,\n    p: 5,\n    e: 6\n  };\n  const decimalString = `${match[1]}`;\n  const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n  return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n  if (value instanceof Date) {\n    return value.toISOString();\n  }\n  return String(value);\n}\nfunction orderBy(collection, identifiers, orders) {\n  identifiers = identifiers ?? [(value) => value];\n  orders = orders ?? [];\n  const sorting = identifiers.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n  const collator = Intl.Collator(\n    [getLanguage(), getCanonicalLocale()],\n    {\n      // handle 10 as ten and not as one-zero\n      numeric: true,\n      usage: \"sort\"\n    }\n  );\n  return [...collection].sort((a2, b2) => {\n    for (const [index, identifier] of identifiers.entries()) {\n      const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n      if (value !== 0) {\n        return value * sorting[index];\n      }\n    }\n    return 0;\n  });\n}\nconst FilesSortingMode = Object.freeze({\n  Name: \"basename\",\n  Modified: \"mtime\",\n  Size: \"size\"\n});\nfunction sortNodes(nodes, options = {}) {\n  const sortingOptions = {\n    // Default to sort by name\n    sortingMode: FilesSortingMode.Name,\n    // Default to sort ascending\n    sortingOrder: \"asc\",\n    ...options\n  };\n  function basename2(node) {\n    const name = node.displayname || node.attributes?.displayname || node.basename || \"\";\n    if (node.type === FileType.Folder) {\n      return name;\n    }\n    return name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n  }\n  const identifiers = [\n    // 1: Sort favorites first if enabled\n    ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n    // 2: Sort folders first if sorting by name\n    ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n    // 3: Use sorting mode if NOT basename (to be able to use display name too)\n    ...sortingOptions.sortingMode !== FilesSortingMode.Name ? [(v) => v[sortingOptions.sortingMode] ?? v.attributes[sortingOptions.sortingMode]] : [],\n    // 4: Use display name if available, fallback to name\n    (v) => basename2(v),\n    // 5: Finally, use basename if all previous sorting methods failed\n    (v) => v.basename\n  ];\n  const orders = [\n    // (for 1): always sort favorites before normal files\n    ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n    // (for 2): always sort folders before files\n    ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n    // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n    ...sortingOptions.sortingMode === FilesSortingMode.Modified ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n    // (also for 3 so make sure not to conflict with 2 and 3)\n    ...sortingOptions.sortingMode !== FilesSortingMode.Modified && sortingOptions.sortingMode !== FilesSortingMode.Name ? [sortingOptions.sortingOrder] : [],\n    // for 4: use configured sorting direction\n    sortingOptions.sortingOrder,\n    // for 5: use configured sorting direction\n    sortingOptions.sortingOrder\n  ];\n  return orderBy(nodes, identifiers, orders);\n}\nexport {\n  Column,\n  DefaultType,\n  a as File,\n  FileListFilter,\n  FileType,\n  FilesSortingMode,\n  b as Folder,\n  InvalidFilenameError,\n  InvalidFilenameErrorReason,\n  Navigation,\n  NewMenuEntryCategory,\n  N as Node,\n  c as NodeStatus,\n  P as Permission,\n  View,\n  addNewFileMenuEntry,\n  formatFileSize,\n  getFileActions,\n  getFileListActions,\n  getFileListFilters,\n  getFileListHeaders,\n  getFilesRegistry,\n  getNavigation,\n  getNewFileMenu,\n  getNewFileMenuEntries,\n  getSidebar,\n  getSidebarActions,\n  getSidebarTabs,\n  getUniqueName,\n  isFilenameValid,\n  orderBy,\n  parseFileSize,\n  registerFileAction,\n  registerFileListAction,\n  registerFileListFilter,\n  registerFileListHeader,\n  registerSidebarAction,\n  registerSidebarTab,\n  removeNewFileMenuEntry,\n  sortNodes,\n  unregisterFileListFilter,\n  validateColumn,\n  validateFilename,\n  validateView\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["e","s","t","R","ReflectApply","target","receiver","args","ReflectOwnKeys","ProcessEmitWarning","warning","NumberIsNaN","value","EventEmitter","eventsModule","once","defaultMaxListeners","checkListener","listener","arg","n","_getMaxListeners","that","type","i","doError","events","er","err","handler","len","listeners","arrayClone","_addListener","prepend","m","existing","w","onceWrapper","_onceWrap","state","wrapped","list","position","originalListener","spliceOne","keys","key","_listeners","unwrap","evlistener","unwrapListeners","emitter","listenerCount","arr","copy","index","ret","name","resolve","reject","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","flags","wrapListener","streamBrowser","require$$0","exports","buffer","base64Js","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","ieee754","offset","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","c","rt","base64","ieee754$1","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","GlobalUint8Array","GlobalArrayBuffer","GlobalSharedArrayBuffer","typedArraySupport","proto","createBuffer","length","buf","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","actual","fromArrayLike","array","arrayView","byteOffset","obj","numberIsNaN","a","x","y","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","str","max","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","ownKeys","object","enumerableOnly","symbols","_objectSpread","source","_defineProperty","_toPropertyKey","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_toPrimitive","hint","prim","_require","_require2","require$$1","inspect","custom","copyBuffer","buffer_list","BufferList","v","entry","p","hasStrings","nb","_","options","destroy","cb","_this","readableDestroyed","writableDestroyed","process","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","self","undestroy","errorOrDestroy","stream","rState","wState","destroy_1","_inheritsLoose","subClass","superClass","codes","createErrorType","message","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","thing","startsWith","search","endsWith","this_len","includes","determiner","errorsBrowser","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","isDuplex","duplexKey","getHighWaterMark","hwm","browser","deprecate","config","warned","deprecated","global","_stream_writable","Writable","CorkedRequest","onCorkedFinish","Duplex","WritableState","internalUtil","Stream","require$$2","OurUint8Array","_uint8ArrayToBuffer","chunk","_isUint8Array","destroyImpl","require$$3","require$$4","_require$codes","require$$5","ERR_INVALID_ARG_TYPE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","require$$6","nop","require$$7","noDecode","onwrite","current","realHasInstance","writeAfterEnd","validChunk","isBuf","writeOrBuffer","clearBuffer","decodeChunk","newChunk","doWrite","writev","onwriteError","sync","finishMaybe","onwriteStateUpdate","finished","needFinish","afterWrite","onwriteDrain","l","holder","count","allBuffers","endWritable","callFinal","prefinish","need","corkReq","objectKeys","_stream_duplex","Readable","method","onend","onEndNT","copyProps","module","SafeBuffer","isEncoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","string_decoder","StringDecoder","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","r","utf8End","utf8Text","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","total","ERR_STREAM_PREMATURE_CLOSE","callback","called","_len","_key","noop","isRequest","eos","opts","readable","writable","onlegacyfinish","onfinish","writableEnded","readableEnded","onerror","onclose","onrequest","endOfStream","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","done","readAndResolve","iter","data","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","error","promise","_this2","createReadableStreamAsyncIterator","_Object$create","iterator","async_iterator","fromBrowser","_stream_readable","ReadableState","EElistenerCount","debugUtil","debug","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","require$$8","kProxyEvents","prependListener","event","require$$9","require$$10","skipChunkCheck","readableAddChunk","addToFront","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","decoder","content","MAX_HWM","computeNewHighWaterMark","howMuchToRead","nOrig","endReadable","doRead","fromList","emitReadable_","flow","maybeReadMore_","dest","pipeOpts","doEnd","endFn","unpipe","onunpipe","unpipeInfo","cleanup","ondrain","pipeOnDrain","cleanedUp","ondata","indexOf","dests","ev","nReadingNextTick","updateReadableListening","resume","resume_","paused","require$$11","endReadableNT","iterable","require$$12","xs","_stream_transform","Transform","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","rs","err2","_stream_passthrough","PassThrough","ERR_MISSING_ARGS","destroyer","reading","writing","closed","destroyed","call","pipe","to","popCallback","streams","pipeline","destroys","pipeline_1","streamBrowserify","EE","inherits","didOnEnd","sax","strict","opt","SAXParser","SAXStream","createStream","buffers","parser","clearBuffers","S","rootNS","emit","o","F","newf","checkBufferLength","maxAllowed","maxActual","closeText","emitNode","flushBuffers","write","streamWraps","me","h","SD","CDATA","DOCTYPE","XML_NAMESPACE","XMLNS_NAMESPACE","nameStart","nameBody","entityStart","entityBody","isWhitespace","isQuote","isAttribEnd","isMatch","regex","notMatch","nodeType","textopts","text","strictFail","newTag","parent","tag","qname","attribute","qualName","prefix","local","attrib","qn","openTag","selfClosing","nv","uri","closeTag","tagName","closeTo","close","parseEntity","entity","entityLC","numStr","beginWhiteSpace","charAt","result","starti","pad","returnState","parsedEntity","stringFromCharCode","floor","fromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","namespaceMapping","rootNameMapping","XmlTextDetector","node","isSvg","validate","xmlTextDetector","FilesRegistry","TypedEventTarget","getRegistry","scopedGlobals","DefaultType","registerFileAction","action","validateAction$1","logger","registerFileListAction","validateAction","checkOptionalProperty","property","Column","column","validateColumn","View","view","validateView","icon","order","params","expanded","set","Navigation","views","id","viewId","getNavigation","registerSidebarAction","validateSidebarAction","registerSidebarTab","tab","validateSidebarTab","SidebarProxy","#impl","tabId","context","getSidebar","InvalidFilenameErrorReason","InvalidFilenameError","validateFilename","filename","capabilities","getCapabilities","forbiddenCharacters","character","endOfBasename","basename2","forbiddenFilenameExtensions","extension","humanList","humanListBinary","formatFileSize","skipSmallSizes","binaryPrefixes","base1000","readableFormat","relativeSize","getCanonicalLocale","stringify","orderBy","collection","identifiers","orders","sorting","collator","getLanguage","a2","b2","identifier","FilesSortingMode","sortNodes","nodes","sortingOptions","FileType"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]}