| Server IP : 85.214.143.32 / Your IP : 216.73.216.142 Web Server : nginx/1.24.0 System : Linux datensicherung.webdress.site 6.8.0-139-generic #139-Ubuntu SMP PREEMPT_DYNAMIC Sat Aug 1 03:52:05 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/nextcloud/dist/ |
Upload File : |
{"version":3,"file":"index-yD-5b5y_.chunk.mjs","sources":["../node_modules/typescript-event-target/dist/index.mjs","../node_modules/events/events.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.cjs","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/errors-browser.js","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/util-deprecate/browser.js","../node_modules/readable-stream/lib/_stream_writable.js","../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/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../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++, // & 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=\""\"\n ATTRIB_VALUE_ENTITY_U: S++, // <foo bar="\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]}