{"version":3,"file":"cite.mjs","sources":["../../src/citation-js/core/Cite/log.js","../../src/citation-js/core/Cite/validate.js","../../src/citation-js/core/Cite/options.js","../../src/citation-js/core/plugins/input/dataType.js","../../src/citation-js/core/plugins/input/graph.js","../../src/citation-js/core/logger.js","../../src/citation-js/core/plugins/input/type.js","../../src/citation-js/core/plugins/input/parser.js","../../src/citation-js/core/plugins/input/csl.js","../../src/citation-js/core/util/csl.js","../../src/citation-js/core/util/deepCopy.js","../../node_modules/webidl-conversions/lib/index.js","../../node_modules/whatwg-url/lib/utils.js","../../node_modules/tr46/index.js","../../node_modules/whatwg-url/lib/url-state-machine.js","../../node_modules/whatwg-url/lib/URL-impl.js","../../node_modules/whatwg-url/lib/URL.js","../../node_modules/whatwg-url/lib/public-api.js","../../node_modules/node-fetch/lib/index.mjs","../../node_modules/sync-fetch/shared.js","../../node_modules/sync-fetch/index.js","../../node_modules/fetch-ponyfill/node_modules/node-fetch/lib/index.mjs","../../node_modules/fetch-ponyfill/fetch-node.js","../../src/citation-js/core/util/fetchFile.js","../../src/citation-js/core/util/fetchId.js","../../src/citation-js/core/util/register.js","../../src/citation-js/core/util/grammar.js","../../src/citation-js/core/util/translator.js","../../src/citation-js/core/plugins/input/chain.js","../../src/citation-js/core/plugins/input/data.js","../../src/citation-js/core/plugins/input/register.js","../../src/citation-js/core/plugins/input/index.js","../../src/citation-js/core/Cite/set.js","../../src/citation-js/core/plugin-common/output/label.js","../../src/citation-js/core/Cite/sort.js","../../src/citation-js/core/plugins/output.js","../../src/citation-js/core/Cite/get.js","../../src/citation-js/core/Cite/async.js","../../src/citation-js/core/Cite/index.js","../../src/citation-js/core/plugins/dict.js","../../src/citation-js/core/plugins/config.js","../../src/citation-js/core/plugins/index.js","../../src/citation-js/core/plugin-common/input/empty.js","../../src/citation-js/core/plugin-common/input/json.js","../../src/citation-js/core/plugin-common/input/jquery.js","../../src/citation-js/core/plugin-common/input/html.js","../../src/citation-js/core/plugin-common/input/index.js","../../src/citation-js/core/plugin-common/output/json.js","../../src/citation-js/core/plugin-common/output/index.js","../../src/citation-js/core/plugin-common/index.js","../../src/citation-js/plugin-bibjson/json.js","../../src/citation-js/plugin-bibjson/index.js","../../node_modules/moo/moo.js","../../src/citation-js/plugin-bibtex/mapping/biblatexTypes.js","../../src/citation-js/plugin-bibtex/mapping/bibtexTypes.js","../../src/citation-js/plugin-bibtex/input/required.js","../../src/citation-js/plugin-bibtex/input/fieldTypes.js","../../src/citation-js/plugin-bibtex/input/unicode.js","../../src/citation-js/plugin-bibtex/input/constants.js","../../src/citation-js/plugin-bibtex/config.js","../../src/citation-js/plugin-bibtex/input/file.js","../../src/citation-js/plugin-bibtex/input/bibtxt.js","../../src/citation-js/plugin-bibtex/mapping/shared.js","../../src/citation-js/plugin-bibtex/mapping/biblatex.js","../../src/citation-js/plugin-bibtex/mapping/bibtex.js","../../src/citation-js/plugin-bibtex/mapping/crossref.js","../../src/citation-js/plugin-bibtex/mapping/index.js","../../src/citation-js/plugin-bibtex/input/name.js","../../src/citation-js/plugin-bibtex/input/value.js","../../src/citation-js/plugin-bibtex/input/entries.js","../../src/citation-js/plugin-bibtex/input/index.js","../../src/citation-js/plugin-bibtex/output/value.js","../../src/citation-js/plugin-bibtex/output/entries.js","../../src/citation-js/plugin-bibtex/output/bibtex.js","../../src/citation-js/plugin-bibtex/output/bibtxt.js","../../src/citation-js/plugin-bibtex/output/index.js","../../src/citation-js/plugin-bibtex/index.js","../../src/citation-js/plugin-csl/locales.js","../../src/citation-js/plugin-csl/styles.js","../../src/citation-js/plugin-csl/engines.js","../../src/citation-js/plugin-csl/attr.js","../../src/citation-js/plugin-csl/bibliography.js","../../src/citation-js/plugin-csl/citation.js","../../src/citation-js/plugin-csl/index.js","../../src/citation-js/plugin-yaml/index.js","../../src/citation-js/plugin-cff/index.js","../../src/cite.js"],"sourcesContent":["function currentVersion() {\n return this.log.length\n}\nfunction retrieveVersion(versnum = 1) {\n if (versnum <= 0 || versnum > this.currentVersion()) {\n return null\n } else {\n const [data, options] = this.log[versnum - 1]\n const image = new this.constructor(JSON.parse(data), JSON.parse(options))\n image.log = this.log.slice(0, versnum)\n return image\n }\n}\nfunction undo(number = 1) {\n return this.retrieveVersion(this.currentVersion() - number)\n}\nfunction retrieveLastVersion() {\n return this.retrieveVersion(this.currentVersion())\n}\nfunction save() {\n this.log.push([JSON.stringify(this.data), JSON.stringify(this._options)])\n return this\n}\nexport { currentVersion, retrieveVersion, retrieveLastVersion, undo, save }\n","const formats = ['real', 'string']\nconst types = ['json', 'html', 'string', 'rtf']\nconst styles = ['csl', 'bibtex', 'bibtxt', 'citation-*', 'ris', 'ndjson']\nconst wrapperTypes = ['string', 'function']\nexport function validateOutputOptions(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Options not an object!')\n }\n const { format, type, style, lang, append, prepend } = options\n if (format && !formats.includes(format)) {\n throw new TypeError(`Option format (\"${format}\") should be one of: ${formats}`)\n } else if (type && !types.includes(type)) {\n throw new TypeError(`Option type (\"${type}\") should be one of: ${types}`)\n } else if (style && !styles.includes(style) && !/^citation/.test(style)) {\n throw new TypeError(`Option style (\"${style}\") should be one of: ${styles}`)\n } else if (lang && typeof lang !== 'string') {\n throw new TypeError(`Option lang should be a string, but is a ${typeof lang}`)\n } else if (prepend && !wrapperTypes.includes(typeof prepend)) {\n throw new TypeError(\n `Option prepend should be a string or a function, but is a ${typeof prepend}`\n )\n } else if (append && !wrapperTypes.includes(typeof append)) {\n throw new TypeError(`Option append should be a string or a function, but is a ${typeof append}`)\n }\n if (/^citation/.test(style) && type === 'json') {\n throw new Error(`Combination type/style of json/citation-* is not valid: ${type}/${style}`)\n }\n return true\n}\nexport function validateOptions(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Options should be an object')\n }\n if (options.output) {\n validateOutputOptions(options.output)\n } else if (options.maxChainLength && typeof options.maxChainLength !== 'number') {\n throw new TypeError('Option maxChainLength should be a number')\n } else if (options.forceType && typeof options.forceType !== 'string') {\n throw new TypeError('Option forceType should be a string')\n } else if (options.generateGraph != null && typeof options.generateGraph !== 'boolean') {\n throw new TypeError('Option generateGraph should be a boolean')\n } else if (options.strict != null && typeof options.strict !== 'boolean') {\n throw new TypeError('Option strict should be a boolean')\n } else if (options.target != null && typeof options.target !== 'string') {\n throw new TypeError('Option target should be a boolean')\n }\n return true\n}\n","import { validateOutputOptions as validate } from './validate.js'\nconst defaultOptions = {\n format: 'real',\n type: 'json',\n style: 'csl',\n lang: 'en-US',\n}\nfunction options(options, log) {\n validate(options)\n if (log) {\n this.save()\n }\n Object.assign(this._options, options)\n return this\n}\nexport { options, defaultOptions }\n","export function typeOf(thing) {\n switch (thing) {\n case undefined:\n return 'Undefined'\n case null:\n return 'Null'\n default:\n return thing.constructor.name\n }\n}\nexport function dataTypeOf(thing) {\n switch (typeof thing) {\n case 'string':\n return 'String'\n case 'object':\n if (Array.isArray(thing)) {\n return 'Array'\n } else if (typeOf(thing) === 'Object') {\n return 'SimpleObject'\n } else if (typeOf(thing) !== 'Null') {\n return 'ComplexObject'\n }\n default:\n return 'Primitive'\n }\n}\n","export function applyGraph(entry, graph) {\n if (entry._graph) {\n const index = graph.findIndex(({ type }) => type === '@else/list+object')\n if (index !== -1) {\n graph.splice(index + 1, 0, ...entry._graph.slice(0, -1))\n }\n }\n entry._graph = graph\n return entry\n}\nexport function removeGraph(entry) {\n delete entry._graph\n return entry\n}\n","const logger = {\n _output(level, scope, msg) {\n this._log.push(scope, msg)\n if (this._levels.indexOf(level) < this._levels.indexOf(this.level)) {\n return\n }\n this._console.log(scope, ...msg)\n },\n _console: null,\n _log: [],\n _levels: ['http', 'debug', 'unmapped', 'info', 'warn', 'error', 'silent'],\n level: 'silent',\n}\nfor (const level of logger._levels) {\n logger[level] = (scope, ...msg) => logger._output(level, scope, msg)\n}\nif (typeof console.Console === 'function') {\n logger._console = new console.Console(process.stderr)\n} else {\n logger._console = console\n}\nexport default logger\n","import logger from '../../logger.js'\nimport { dataTypeOf } from './dataType.js'\nconst types = {}\nconst dataTypes = {}\nconst unregExts = {}\nfunction parseNativeTypes(input, dataType) {\n switch (dataType) {\n case 'Array':\n if (input.length === 0 || input.every((entry) => type(entry) === '@csl/object')) {\n return '@csl/list+object'\n } else {\n return '@else/list+object'\n }\n case 'SimpleObject':\n case 'ComplexObject':\n return '@csl/object'\n default:\n return '@invalid'\n }\n}\nfunction matchType(typeList = [], data) {\n for (const type of typeList) {\n if (types[type].predicate(data)) {\n return matchType(types[type].extensions, data) || type\n }\n }\n}\nexport function type(input) {\n const dataType = dataTypeOf(input)\n if (dataType === 'Array' && input.length === 0) {\n return parseNativeTypes(input, dataType)\n }\n const match = matchType(dataTypes[dataType], input)\n return match || parseNativeTypes(input, dataType)\n}\nexport function addTypeParser(format, { dataType, predicate, extends: extend }) {\n let extensions = []\n if (format in unregExts) {\n extensions = unregExts[format]\n delete unregExts[format]\n logger.debug(\n '[core]',\n `Subclasses \"${extensions}\" finally registered to parent type \"${format}\"`\n )\n }\n const object = {\n predicate,\n extensions,\n }\n types[format] = object\n if (extend) {\n const parentTypeParser = types[extend]\n if (parentTypeParser) {\n parentTypeParser.extensions.push(format)\n } else {\n if (!unregExts[extend]) {\n unregExts[extend] = []\n }\n unregExts[extend].push(format)\n logger.debug('[core]', `Subclass \"${format}\" is waiting on parent type \"${extend}\"`)\n }\n } else {\n const typeList = dataTypes[dataType] || (dataTypes[dataType] = [])\n typeList.push(format)\n }\n}\nexport function hasTypeParser(type) {\n return Object.prototype.hasOwnProperty.call(types, type)\n}\nexport function removeTypeParser(type) {\n delete types[type]\n const typeLists = [\n ...Object.keys(dataTypes).map((key) => dataTypes[key]),\n ...Object.keys(types)\n .map((type) => types[type].extensions)\n .filter((list) => list.length > 0),\n ]\n typeLists.forEach((typeList) => {\n const index = typeList.indexOf(type)\n if (index > -1) {\n typeList.splice(index, 1)\n }\n })\n}\nexport function listTypeParser() {\n return Object.keys(types)\n}\nexport function treeTypeParser() {\n const attachNode = (name) => ({\n name,\n children: types[name].extensions.map(attachNode),\n })\n return {\n name: 'Type tree',\n children: Object.keys(dataTypes).map((name) => ({\n name,\n children: dataTypes[name].map(attachNode),\n })),\n }\n}\nexport const typeMatcher = /^(?:@(.+?))(?:\\/(?:(.+?)\\+)?(?:(.+)))?$/\n","// @ts-nocheck\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { type, typeMatcher } from './type.js'\nclass TypeParser {\n constructor(data) {\n _defineProperty(this, 'validDataTypes', [\n 'String',\n 'Array',\n 'SimpleObject',\n 'ComplexObject',\n 'Primitive',\n ])\n this.data = data\n }\n validateDataType() {\n const dataType = this.data.dataType\n if (dataType && !this.validDataTypes.includes(dataType)) {\n throw new RangeError(`dataType was ${dataType}; expected one of ${this.validDataTypes}`)\n }\n }\n validateParseType() {\n const predicate = this.data.predicate\n if (predicate && !(predicate instanceof RegExp || typeof predicate === 'function')) {\n throw new TypeError(`predicate was ${typeof predicate}; expected RegExp or function`)\n }\n }\n validateTokenList() {\n const tokenList = this.data.tokenList\n if (tokenList && typeof tokenList !== 'object') {\n throw new TypeError(`tokenList was ${typeof tokenList}; expected object or RegExp`)\n }\n }\n validatePropertyConstraint() {\n const propertyConstraint = this.data.propertyConstraint\n if (propertyConstraint && typeof propertyConstraint !== 'object') {\n throw new TypeError(\n `propertyConstraint was ${typeof propertyConstraint}; expected array or object`\n )\n }\n }\n validateElementConstraint() {\n const elementConstraint = this.data.elementConstraint\n if (elementConstraint && typeof elementConstraint !== 'string') {\n throw new TypeError(`elementConstraint was ${typeof elementConstraint}; expected string`)\n }\n }\n validateExtends() {\n const extend = this.data.extends\n if (extend && typeof extend !== 'string') {\n throw new TypeError(`extends was ${typeof extend}; expected string`)\n }\n }\n validate() {\n if (this.data === null || typeof this.data !== 'object') {\n throw new TypeError(`typeParser was ${typeof this.data}; expected object`)\n }\n this.validateDataType()\n this.validateParseType()\n this.validateTokenList()\n this.validatePropertyConstraint()\n this.validateElementConstraint()\n this.validateExtends()\n }\n parseTokenList() {\n let tokenList = this.data.tokenList\n if (!tokenList) {\n return []\n } else if (tokenList instanceof RegExp) {\n tokenList = {\n token: tokenList,\n }\n }\n const { token, split = /\\s+/, trim = true, every = true } = tokenList\n const trimInput = (input) => (trim ? input.trim() : input)\n const testTokens = every ? 'every' : 'some'\n const predicate = (input) =>\n trimInput(input)\n .split(split)\n [testTokens]((part) => token.test(part))\n return [predicate]\n }\n parsePropertyConstraint() {\n const constraints = [].concat(this.data.propertyConstraint || [])\n return constraints.map(({ props, match, value }) => {\n props = [].concat(props)\n switch (match) {\n case 'any':\n case 'some':\n return (input) => props.some((prop) => prop in input && (!value || value(input[prop])))\n case 'none':\n return (input) => !props.some((prop) => prop in input && (!value || value(input[prop])))\n case 'every':\n default:\n return (input) => props.every((prop) => prop in input && (!value || value(input[prop])))\n }\n })\n }\n parseElementConstraint() {\n const constraint = this.data.elementConstraint\n return !constraint ? [] : [(input) => input.every((entry) => type(entry) === constraint)]\n }\n parsePredicate() {\n if (this.data.predicate instanceof RegExp) {\n return [this.data.predicate.test.bind(this.data.predicate)]\n } else if (this.data.predicate) {\n return [this.data.predicate]\n } else {\n return []\n }\n }\n getCombinedPredicate() {\n const predicates = [\n ...this.parsePredicate(),\n ...this.parseTokenList(),\n ...this.parsePropertyConstraint(),\n ...this.parseElementConstraint(),\n ]\n if (predicates.length === 0) {\n return () => true\n } else if (predicates.length === 1) {\n return predicates[0]\n } else {\n return (input) => predicates.every((predicate) => predicate(input))\n }\n }\n getDataType() {\n if (this.data.dataType) {\n return this.data.dataType\n } else if (this.data.predicate instanceof RegExp) {\n return 'String'\n } else if (this.data.tokenList) {\n return 'String'\n } else if (this.data.elementConstraint) {\n return 'Array'\n } else {\n return 'Primitive'\n }\n }\n get dataType() {\n return this.getDataType()\n }\n get predicate() {\n return this.getCombinedPredicate()\n }\n get extends() {\n return this.data.extends\n }\n}\nclass DataParser {\n constructor(parser, { async } = {}) {\n this.parser = parser\n this.async = async\n }\n validate() {\n const parser = this.parser\n if (typeof parser !== 'function') {\n throw new TypeError(`parser was ${typeof parser}; expected function`)\n }\n }\n}\nclass FormatParser {\n constructor(format, parsers = {}) {\n this.format = format\n if (parsers.parseType) {\n this.typeParser = new TypeParser(parsers.parseType)\n }\n if (parsers.parse) {\n this.dataParser = new DataParser(parsers.parse, {\n async: false,\n })\n }\n if (parsers.parseAsync) {\n this.asyncDataParser = new DataParser(parsers.parseAsync, {\n async: true,\n })\n }\n }\n validateFormat() {\n const format = this.format\n if (!typeMatcher.test(format)) {\n throw new TypeError(`format name was \"${format}\"; didn't match expected pattern`)\n }\n }\n validate() {\n this.validateFormat()\n if (this.typeParser) {\n this.typeParser.validate()\n }\n if (this.dataParser) {\n this.dataParser.validate()\n }\n if (this.asyncDataParser) {\n this.asyncDataParser.validate()\n }\n }\n}\nexport { TypeParser, DataParser, FormatParser }\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { parse as parseName } from '@citation-js/name'\nconst NAME = 1\nconst NAME_LIST = 2\nconst DATE = 3\nconst TYPE = 4\nconst entryTypes = {\n article: true,\n 'article-journal': true,\n 'article-magazine': true,\n 'article-newspaper': true,\n bill: true,\n book: true,\n broadcast: true,\n chapter: true,\n classic: true,\n collection: true,\n dataset: true,\n document: true,\n entry: true,\n 'entry-dictionary': true,\n 'entry-encyclopedia': true,\n event: true,\n figure: true,\n graphic: true,\n hearing: true,\n interview: true,\n legal_case: true,\n legislation: true,\n manuscript: true,\n map: true,\n motion_picture: true,\n musical_score: true,\n pamphlet: true,\n 'paper-conference': true,\n patent: true,\n performance: true,\n periodical: true,\n personal_communication: true,\n post: true,\n 'post-weblog': true,\n regulation: true,\n report: true,\n review: true,\n 'review-book': true,\n software: true,\n song: true,\n speech: true,\n standard: true,\n thesis: true,\n treaty: true,\n webpage: true,\n 'journal-article': 'article-journal',\n 'book-chapter': 'chapter',\n 'posted-content': 'manuscript',\n 'proceedings-article': 'paper-conference',\n dissertation: 'thesis',\n}\nconst fieldTypes = {\n author: NAME_LIST,\n chair: NAME_LIST,\n 'collection-editor': NAME_LIST,\n compiler: NAME_LIST,\n composer: NAME_LIST,\n 'container-author': NAME_LIST,\n contributor: NAME_LIST,\n curator: NAME_LIST,\n director: NAME_LIST,\n editor: NAME_LIST,\n 'editorial-director': NAME_LIST,\n 'executive-producer': NAME_LIST,\n guest: NAME_LIST,\n host: NAME_LIST,\n interviewer: NAME_LIST,\n illustrator: NAME_LIST,\n narrator: NAME_LIST,\n organizer: NAME_LIST,\n 'original-author': NAME_LIST,\n performer: NAME_LIST,\n producer: NAME_LIST,\n 'reviewed-author': NAME_LIST,\n recipient: NAME_LIST,\n 'script-writer': NAME_LIST,\n 'series-creator': NAME_LIST,\n translator: NAME_LIST,\n accessed: DATE,\n 'available-date': DATE,\n container: DATE,\n 'event-date': DATE,\n issued: DATE,\n 'original-date': DATE,\n submitted: DATE,\n type: TYPE,\n categories: 'object',\n custom: 'object',\n id: ['string', 'number'],\n language: 'string',\n journalAbbreviation: 'string',\n shortTitle: 'string',\n abstract: 'string',\n annote: 'string',\n archive: 'string',\n archive_collection: 'string',\n archive_location: 'string',\n 'archive-place': 'string',\n authority: 'string',\n 'call-number': 'string',\n 'chapter-number': 'string',\n 'citation-number': 'string',\n 'citation-key': 'string',\n 'citation-label': 'string',\n 'collection-number': 'string',\n 'collection-title': 'string',\n 'container-title': 'string',\n 'container-title-short': 'string',\n dimensions: 'string',\n division: 'string',\n DOI: 'string',\n edition: ['string', 'number'],\n event: 'string',\n 'event-title': 'string',\n 'event-place': 'string',\n 'first-reference-note-number': 'string',\n genre: 'string',\n ISBN: 'string',\n ISSN: 'string',\n issue: ['string', 'number'],\n jurisdiction: 'string',\n keyword: 'string',\n locator: 'string',\n medium: 'string',\n note: 'string',\n number: ['string', 'number'],\n 'number-of-pages': 'string',\n 'number-of-volumes': ['string', 'number'],\n 'original-publisher': 'string',\n 'original-publisher-place': 'string',\n 'original-title': 'string',\n page: 'string',\n 'page-first': 'string',\n 'part-number': ['string', 'number'],\n 'part-title': 'string',\n PMCID: 'string',\n PMID: 'string',\n printing: 'string',\n publisher: 'string',\n 'publisher-place': 'string',\n references: 'string',\n 'reviewed-title': 'string',\n 'reviewed-genre': 'string',\n scale: 'string',\n section: 'string',\n source: 'string',\n status: 'string',\n supplement: ['string', 'number'],\n title: 'string',\n 'title-short': 'string',\n URL: 'string',\n version: 'string',\n volume: ['string', 'number'],\n 'volume-title': 'string',\n 'volume-title-short': 'string',\n 'year-suffix': 'string',\n}\nfunction correctName(name, bestGuessConversions) {\n if (typeof name === 'object' && name !== null && (name.literal || name.given || name.family)) {\n if (name.ORCID || name.orcid || name._ORCID) {\n name = _objectSpread(\n {\n _orcid: name.ORCID || name.orcid || name._ORCID,\n },\n name\n )\n delete name.ORCID\n delete name.orcid\n delete name._ORCID\n }\n return name\n } else if (!bestGuessConversions) {\n return undefined\n } else if (typeof name === 'string') {\n return parseName(name)\n }\n}\nfunction correctNameList(nameList, bestGuessConversions) {\n if (nameList instanceof Array) {\n const names = nameList.map((name) => correctName(name, bestGuessConversions)).filter(Boolean)\n return names.length ? names : undefined\n }\n}\nfunction correctDateParts(dateParts, bestGuessConversions) {\n if (dateParts.every((part) => typeof part === 'number')) {\n return dateParts\n } else if (!bestGuessConversions || dateParts.some((part) => isNaN(parseInt(part)))) {\n return undefined\n } else {\n return dateParts.map((part) => parseInt(part))\n }\n}\nfunction correctDate(date, bestGuessConversions) {\n const dp = 'date-parts'\n if (typeof date !== 'object' || date === null) {\n return undefined\n } else if (date[dp] instanceof Array && date[dp].every((part) => part instanceof Array)) {\n const range = date[dp]\n .map((dateParts) => correctDateParts(dateParts, bestGuessConversions))\n .filter(Boolean)\n return range.length\n ? _objectSpread(\n _objectSpread({}, date),\n {},\n {\n 'date-parts': range,\n }\n )\n : undefined\n } else if (date instanceof Array && date.every((part) => part[dp] instanceof Array)) {\n const range = date\n .map((dateParts) => correctDateParts(dateParts[dp], bestGuessConversions))\n .filter(Boolean)\n return range.length\n ? {\n 'date-parts': range,\n }\n : undefined\n } else if (date[dp] instanceof Array) {\n const dateParts = correctDateParts(date[dp], bestGuessConversions)\n return (\n dateParts && {\n 'date-parts': [dateParts],\n }\n )\n } else if ('literal' in date || 'raw' in date) {\n return date\n }\n}\nfunction correctType(type, bestGuessConversions) {\n type = correctField('language', type, bestGuessConversions)\n if (entryTypes[type] === true) {\n return type\n }\n if (bestGuessConversions) {\n if (type in entryTypes) {\n return entryTypes[type]\n } else if (type.toLowerCase() !== type) {\n return correctType(type.toLowerCase(), bestGuessConversions)\n }\n }\n return undefined\n}\nfunction correctField(fieldName, value, bestGuessConversions) {\n const fieldType = [].concat(fieldTypes[fieldName])\n switch (fieldTypes[fieldName]) {\n case NAME:\n return correctName(value, bestGuessConversions)\n case NAME_LIST:\n return correctNameList(value, bestGuessConversions)\n case DATE:\n return correctDate(value, bestGuessConversions)\n case TYPE:\n return correctType(value, bestGuessConversions)\n }\n if (bestGuessConversions) {\n if (\n typeof value === 'string' &&\n fieldType.includes('number') &&\n !fieldType.includes('string') &&\n !isNaN(+value)\n ) {\n return parseFloat(value)\n } else if (\n typeof value === 'number' &&\n fieldType.includes('string') &&\n !fieldType.includes('number')\n ) {\n return value.toString()\n } else if (Array.isArray(value) && value.length) {\n return correctField(fieldName, value[0], bestGuessConversions)\n }\n }\n if (fieldType.includes(typeof value)) {\n return value\n }\n}\nfunction parseCsl(data, bestGuessConversions = true) {\n return data.map(function (entry) {\n const clean = {}\n for (const field in entry) {\n const correction = correctField(field, entry[field], bestGuessConversions)\n if (correction !== undefined) {\n clean[field] = correction\n }\n }\n return clean\n })\n}\nexport { parseCsl as clean }\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nexport function upgradeCsl(item) {\n if (Array.isArray(item)) {\n return item.map(upgradeCsl)\n }\n item = _objectSpread({}, item)\n if ('event' in item) {\n item['event-title'] = item.event\n delete item.event\n }\n if (item.type === 'book' && 'version' in item) {\n item.type = 'software'\n }\n return item\n}\nexport function downgradeCsl(item) {\n if (Array.isArray(item)) {\n return item.map(downgradeCsl)\n }\n item = _objectSpread({}, item)\n if ('event-title' in item) {\n item.event = item['event-title']\n delete item['event-title']\n }\n if (item.type === 'software') {\n item.type = 'book'\n }\n return item\n}\n","export function deepCopy(value, seen = new Set()) {\n if (\n typeof value !== 'object' ||\n value === null ||\n (value.constructor !== Object && value.constructor !== Array)\n ) {\n return value\n }\n if (seen.has(value)) {\n throw new TypeError('Recursively copying circular structure')\n }\n seen.add(value)\n let copy\n if (value.constructor === Array) {\n copy = value.map((value) => deepCopy(value, seen))\n } else {\n const object = {}\n for (const key in value) {\n object[key] = deepCopy(value[key], seen)\n }\n copy = object\n }\n seen.delete(value)\n return copy\n}\nexport default deepCopy\n","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError, AbortError };\n","const Stream = require('stream')\n\nfunction serializeHeaders (headers) {\n return headers.raw()\n}\n\nfunction deserializeHeaders (fetch, old = {}) {\n const headers = new fetch.Headers()\n for (const name in old) {\n for (const value of old[name]) {\n headers.append(name, value)\n }\n }\n return headers\n}\n\nfunction serializeRequest (request) {\n return [\n request.url,\n {\n method: request.method,\n headers: request.headers,\n body: request.body,\n mode: request.mode,\n credentials: request.credentials,\n cache: request.cache,\n redirect: request.redirect,\n referrer: request.referrer,\n referrerPolicy: request.referrerPolicy,\n integrity: request.integrity,\n keepalive: request.keepalive,\n // signal: request.signal,\n\n // node-fetch props\n follow: request.follow,\n timeout: request.timeout,\n compress: request.compress,\n size: request.size\n // agent: request.agent\n }\n ]\n}\n\nfunction deserializeRequest (fetch, resource, init) {\n return new fetch.Request(resource, {\n ...init,\n body: init.body ? Buffer.from(init.body, 'base64') : undefined,\n headers: deserializeHeaders(fetch, init.headers)\n })\n}\n\nfunction serializeResponse (response) {\n return {\n url: response.url,\n headers: response.headers.raw(),\n status: response.status,\n statusText: response.statusText,\n counter: response.redirected ? 1 : 0 // could be more than one, but no way of telling\n }\n}\n\nfunction deserializeResponse (fetch, body, init, bodyError) {\n const buffer = Buffer.from(body, 'base64')\n\n return new fetch.Response(\n body ? createStream(buffer) : createStream(null),\n {\n ...init,\n headers: deserializeHeaders(fetch, init.headers)\n },\n {\n buffer,\n bodyError\n }\n )\n}\n\nconst errors = {\n TypeError\n}\n\nfunction serializeError ({ constructor, message, type, code }) {\n return [\n constructor.name,\n [message, type, { code }]\n ]\n}\n\nfunction deserializeError (fetch, name, init) {\n if (name in errors) {\n return new errors[name](...init)\n } else {\n return new fetch.FetchError(...init)\n }\n}\n\nfunction parseBodyType (body) {\n if (body == null) {\n return 'Null'\n } else if (body.constructor.name === 'URLSearchParams') {\n return 'URLSearchParams'\n } else if (Buffer.isBuffer(body)) {\n return 'Buffer'\n } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n return 'ArrayBuffer'\n } else if (ArrayBuffer.isView(body)) {\n return 'ArrayBufferView'\n } else if (body instanceof Stream) {\n return 'Stream'\n } else {\n return 'String'\n }\n}\n\nfunction parseBody (body, type = parseBodyType(body)) {\n switch (type) {\n case 'Null': return null\n case 'URLSearchParams': return Buffer.from(body.toString())\n case 'Buffer': return body\n case 'ArrayBuffer': return Buffer.from(body)\n case 'ArrayBufferView': return Buffer.from(body.buffer, body.byteOffset, body.byteLength)\n case 'String': return Buffer.from(String(body))\n default: throw new TypeError(`sync-fetch does not support bodies of type: ${type}`)\n }\n}\n\nfunction createStream (buffer) {\n return new Stream.Transform({\n read () {\n this.push(buffer)\n this.push(null)\n }\n })\n}\n\nmodule.exports = {\n serializeHeaders,\n deserializeHeaders,\n serializeRequest,\n deserializeRequest,\n serializeResponse,\n deserializeResponse,\n serializeError,\n deserializeError,\n\n parseBodyType,\n parseBody,\n createStream\n}\n","const exec = require('child_process').execFileSync\nconst path = require('path')\nconst { URL } = require('url')\nconst _fetch = require('node-fetch')\nconst shared = require('./shared')\n\nfunction fetch (resource, init) {\n const request = []\n\n if (resource instanceof fetch.Request) {\n request.push(...shared.serializeRequest(resource))\n } else if (resource instanceof URL) {\n request.push(resource.href, {})\n } else {\n request.push(resource, {})\n }\n\n Object.assign(request[1], init)\n\n request[1].headers = new _fetch.Headers(request[1].headers)\n\n if (request[1].body) {\n const contentType = extractContentType(request)\n if (contentType && !request[1].headers.get('content-type')) { request[1].headers.append('content-type', contentType) }\n request[1].body = shared.parseBody(init.body).toString('base64')\n }\n\n request[1].headers = shared.serializeHeaders(request[1].headers)\n\n // TODO credentials\n\n const response = JSON.parse(sendMessage(request))\n if ('headers' in response[1]) {\n return shared.deserializeResponse(fetch, ...response)\n } else {\n throw shared.deserializeError(fetch, ...response)\n }\n}\n\nfunction sendMessage (message) {\n return exec(process.execPath, [path.join(__dirname, 'worker.js')], {\n windowsHide: true,\n maxBuffer: Infinity,\n input: JSON.stringify(message),\n shell: false\n }).toString()\n}\n\nfunction extractContentType (input) {\n const request = new _fetch.Request(...input)\n return request.headers.get('content-type') || undefined\n}\n\nconst _body = Symbol('bodyBuffer')\nconst _bodyError = Symbol('bodyError')\n\nclass SyncRequest extends _fetch.Request {\n constructor (resource, init = {}) {\n const buffer = shared.parseBody(init.body)\n\n super(resource, init)\n defineBuffer(this, buffer)\n }\n\n clone () {\n checkBody(this)\n return new SyncRequest(...shared.serializeRequest(this))\n }\n}\n\nclass SyncResponse extends _fetch.Response {\n constructor (body, init, options = {}) {\n const {\n buffer = shared.parseBody(body),\n bodyError\n } = options\n\n super(body, init)\n defineBuffer(this, buffer)\n if (bodyError) defineBodyError(this, bodyError)\n }\n\n clone () {\n checkBody(this)\n const buffer = Buffer.from(this[_body])\n return new SyncResponse(\n shared.createStream(buffer),\n shared.serializeResponse(this),\n {\n buffer,\n bodyError: this[_bodyError]\n }\n )\n }\n}\n\nclass Body {\n static mixin (proto) {\n for (const name of Object.getOwnPropertyNames(Body.prototype)) {\n if (name === 'constructor') { continue }\n const desc = Object.getOwnPropertyDescriptor(Body.prototype, name)\n Object.defineProperty(proto, name, {\n ...desc,\n enumerable: true\n })\n }\n }\n\n arrayBuffer () {\n checkBody(this)\n const buf = consumeBody(this)\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n }\n\n text () {\n checkBody(this)\n return consumeBody(this).toString()\n }\n\n json () {\n checkBody(this)\n try {\n return JSON.parse(consumeBody(this).toString())\n } catch (err) {\n throw new fetch.FetchError(`invalid json response body at ${this.url} reason: ${err.message}`, 'invalid-json')\n }\n }\n\n buffer () {\n checkBody(this)\n return Buffer.from(consumeBody(this))\n }\n\n textConverted () {\n throw new fetch.FetchError('textConverted not implemented')\n }\n}\n\nfunction _super (self, method) {\n return Object.getPrototypeOf(Object.getPrototypeOf(self))[method].bind(self)\n}\n\nfunction checkBody (body) {\n if (body[_bodyError]) {\n throw body[_bodyError]\n }\n if (body.bodyUsed) {\n throw new TypeError(`body used already for: ${body.url}`)\n }\n}\n\nfunction consumeBody (body) {\n _super(body, 'buffer')().catch(error => console.error(error))\n return body[_body] || Buffer.alloc(0)\n}\n\nfunction defineBuffer (body, buffer) {\n Object.defineProperty(body, _body, {\n value: buffer,\n enumerable: false\n })\n}\n\nfunction defineBodyError (body, error) {\n Object.defineProperty(body, _bodyError, {\n value: shared.deserializeError(fetch, ...error),\n enumerable: false\n })\n}\n\nBody.mixin(SyncRequest.prototype)\nBody.mixin(SyncResponse.prototype)\nObject.defineProperties(SyncRequest.prototype, { clone: { enumerable: true } })\nObject.defineProperties(SyncResponse.prototype, { clone: { enumerable: true } })\n\nfetch.Headers = _fetch.Headers\nfetch.FetchError = _fetch.FetchError\nfetch.Request = SyncRequest\nfetch.Response = SyncResponse\nmodule.exports = fetch\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n","'use strict';\n\nvar fetch = require('node-fetch');\n\nfunction wrapFetchForNode(fetch) {\n // Support schemaless URIs on the server for parity with the browser.\n // https://github.com/matthew-andrews/isomorphic-fetch/pull/10\n return function (u, options) {\n if (typeof u === 'string' && u.slice(0, 2) === '//') {\n return fetch('https:' + u, options);\n }\n\n return fetch(u, options);\n };\n}\n\nmodule.exports = function (context) {\n // Support webpack module import weirdness.\n var fetchFn = fetch.default ? fetch.default : fetch;\n\n // This modifies the global `node-fetch` object, which isn't great, since\n // different callers to `fetch-ponyfill` which pass a different Promise\n // implementation would each expect to have their implementation used. But,\n // given the way `node-fetch` is implemented, this is the only way to make\n // it work at all.\n if (context && context.Promise) {\n fetchFn.Promise = context.Promise;\n }\n\n return {\n fetch: wrapFetchForNode(fetchFn),\n Headers: fetch.Headers,\n Request: fetch.Request,\n Response: fetch.Response\n };\n};\n","// @ts-nocheck\nimport syncFetch from 'sync-fetch'\nimport fetchPolyfill from 'fetch-ponyfill'\nimport logger from '../logger.js'\nconst isBrowser = typeof location !== 'undefined' && typeof navigator !== 'undefined'\nconst { fetch: asyncFetch, Headers: asyncHeaders } =\n typeof fetch === 'function' && isBrowser\n ? {\n fetch,\n Headers,\n }\n : fetchPolyfill()\n\nlet userAgent = `Citation.js/0.7`\nif (\n typeof process !== 'undefined' &&\n process &&\n process.release &&\n process.release.name === 'node' &&\n process.version\n) {\n userAgent += ` Node.js/${process.version}`\n}\n\nfunction normaliseHeaders(headers) {\n const result = {}\n const entries =\n headers instanceof asyncHeaders || headers instanceof syncFetch.Headers\n ? Array.from(headers)\n : Object.entries(headers)\n for (const [name, header] of entries) {\n result[name.toLowerCase()] = header.toString()\n }\n return result\n}\nfunction parseOpts(opts = {}) {\n const reqOpts = {\n headers: {\n accept: '*/*',\n },\n method: 'GET',\n checkContentType: opts.checkContentType,\n }\n if (userAgent && !isBrowser) {\n reqOpts.headers['user-agent'] = userAgent\n }\n if (opts.body) {\n reqOpts.method = 'POST'\n const isJson = typeof opts.body !== 'string'\n reqOpts.body = isJson ? JSON.stringify(opts.body) : opts.body\n reqOpts.headers['content-type'] = isJson ? 'application/json' : 'text/plain'\n }\n if (opts.headers) {\n Object.assign(reqOpts.headers, normaliseHeaders(opts.headers))\n }\n return reqOpts\n}\nfunction sameType(request, response) {\n if (!request.accept || request.accept === '*/*' || !response['content-type']) {\n return true\n }\n const [a, b] = response['content-type'].split(';')[0].trim().split('/')\n return request.accept\n .split(',')\n .map((type) => type.split(';')[0].trim().split('/'))\n .some(([c, d]) => (c === a || c === '*') && (d === b || d === '*'))\n}\nfunction checkResponse(response, opts) {\n const { status, headers } = response\n let error\n if (status >= 400) {\n error = new Error(`Server responded with status code ${status}`)\n } else if (opts.checkContentType === true && !sameType(opts.headers, normaliseHeaders(headers))) {\n error = new Error(`Server responded with content-type ${headers.get('content-type')}`)\n }\n if (error) {\n error.status = status\n error.headers = headers\n error.body = response.body\n throw error\n }\n return response\n}\nexport function fetchFile(url, opts) {\n const reqOpts = parseOpts(opts)\n logger.http('[core]', reqOpts.method, url, reqOpts)\n const response = checkResponse(syncFetch(url, reqOpts), reqOpts)\n return response.text()\n}\nexport async function fetchFileAsync(url, opts) {\n const reqOpts = parseOpts(opts)\n logger.http('[core]', reqOpts.method, url, reqOpts)\n return asyncFetch(url, reqOpts)\n .then((response) => checkResponse(response, reqOpts))\n .then((response) => response.text())\n}\nexport function setUserAgent(newUserAgent) {\n userAgent = newUserAgent\n}\nexport default fetchFile\n","function fetchId(list, prefix) {\n let id\n while (id === undefined || list.includes(id)) {\n id = `${prefix}${Math.random().toString().slice(2)}`\n }\n return id\n}\nexport default fetchId\n","class Register {\n constructor(data = {}) {\n this.data = data\n }\n set(key, value) {\n this.data[key] = value\n return this\n }\n add(...args) {\n return this.set(...args)\n }\n delete(key) {\n delete this.data[key]\n return this\n }\n remove(...args) {\n return this.delete(...args)\n }\n get(key) {\n return this.data[key]\n }\n has(key) {\n return Object.prototype.hasOwnProperty.call(this.data, key)\n }\n list() {\n return Object.keys(this.data)\n }\n}\nexport default Register\n","import { deepCopy } from './deepCopy.js'\nclass Grammar {\n constructor(rules, state) {\n this.rules = rules\n this.defaultState = state\n this.mainRule = Object.keys(rules)[0]\n this.log = []\n }\n parse(iterator, mainRule) {\n this.lexer = iterator\n this.token = this.lexer.next()\n this.state = deepCopy(this.defaultState)\n this.log = []\n return this.consumeRule(mainRule || this.mainRule)\n }\n matchEndOfFile() {\n return !this.token\n }\n matchToken(type) {\n return this.token && type === this.token.type\n }\n consumeToken(type, optional) {\n const token = this.token\n if (!type || (token && token.type === type)) {\n this.token = this.lexer.next()\n return token\n } else if (optional) {\n return undefined\n } else {\n const got = token ? `\"${token.type}\"` : 'EOF'\n const error = new SyntaxError(this.lexer.formatError(token, `expected \"${type}\", got ${got}`))\n error.message += ` (${this.log.join('->')})`\n throw error\n }\n }\n consumeRule(rule) {\n this.log.push(rule)\n const result = this.rules[rule].call(this)\n this.log.pop()\n return result\n }\n}\nexport { Grammar }\n","// @ts-nocheck\nfunction createConditionEval(condition) {\n return function conditionEval(input) {\n if (typeof condition === 'boolean') {\n return condition\n }\n return Object.keys(condition).every((prop) => {\n const value = condition[prop]\n if (value === true) {\n return prop in input\n } else if (value === false) {\n return !(prop in input)\n } else if (typeof value === 'function') {\n return value(input[prop])\n } else if (Array.isArray(value)) {\n return value.includes(input[prop])\n } else {\n return input[prop] === value\n }\n })\n }\n}\nfunction parsePropStatement(prop, toSource) {\n let inputProp\n let outputProp\n let convert\n let condition\n if (typeof prop === 'string') {\n inputProp = outputProp = prop\n } else if (prop) {\n inputProp = toSource ? prop.target : prop.source\n outputProp = toSource ? prop.source : prop.target\n if (prop.convert) {\n convert = toSource ? prop.convert.toSource : prop.convert.toTarget\n }\n if (prop.when) {\n condition = toSource ? prop.when.target : prop.when.source\n if (condition != null) {\n condition = createConditionEval(condition)\n }\n }\n } else {\n return null\n }\n inputProp = [].concat(inputProp).filter(Boolean)\n outputProp = [].concat(outputProp).filter(Boolean)\n return {\n inputProp,\n outputProp,\n convert,\n condition,\n }\n}\nfunction createConverter(props, toSource) {\n toSource = toSource === Translator.CONVERT_TO_SOURCE\n props = props.map((prop) => parsePropStatement(prop, toSource)).filter(Boolean)\n return function converter(input) {\n const output = {}\n for (const { inputProp, outputProp, convert, condition } of props) {\n if (outputProp.length === 0) {\n continue\n } else if (condition && !condition(input)) {\n continue\n } else if (inputProp.length !== 0 && inputProp.every((prop) => !(prop in input))) {\n continue\n }\n let outputData = inputProp.map((prop) => input[prop])\n if (convert) {\n try {\n const converted = convert.apply(input, outputData)\n outputData = outputProp.length === 1 ? [converted] : converted\n } catch (cause) {\n throw new Error(`Failed to convert ${inputProp} to ${outputProp}`, {\n cause,\n })\n }\n }\n outputProp.forEach((prop, index) => {\n const value = outputData[index]\n if (value !== undefined) {\n output[prop] = value\n }\n })\n }\n return output\n }\n}\nclass Translator {\n constructor(props) {\n this.convertToSource = createConverter(props, Translator.CONVERT_TO_SOURCE)\n this.convertToTarget = createConverter(props, Translator.CONVERT_TO_TARGET)\n }\n}\nTranslator.CONVERT_TO_SOURCE = Symbol('convert to source')\nTranslator.CONVERT_TO_TARGET = Symbol('convert to target')\nexport { Translator }\n","// @ts-nocheck\nimport { deepCopy, upgradeCsl } from '../../util/index.js'\nimport logger from '../../logger.js'\nimport { get as getTypeInfo } from './register.js'\nimport { type as parseType } from './type.js'\nimport { data as parseData, dataAsync as parseDataAsync } from './data.js'\nimport { applyGraph, removeGraph } from './graph.js'\nfunction prepareParseGraph(graph) {\n return graph\n .reduce((array, next) => {\n const last = array[array.length - 1]\n if (last && last.type === next.type) {\n last.count = last.count + 1 || 2\n } else {\n array.push(next)\n }\n return array\n }, [])\n .map((element) => (element.count > 1 ? element.count + 'x ' : '') + element.type)\n .join(' -> ')\n}\nclass ChainParser {\n constructor(input, options = {}) {\n this.options = Object.assign(\n {\n generateGraph: true,\n forceType: parseType(input),\n maxChainLength: 10,\n strict: true,\n target: '@csl/list+object',\n },\n options\n )\n this.type = this.options.forceType\n this.data = typeof input === 'object' ? deepCopy(input) : input\n this.graph = [\n {\n type: this.type,\n data: input,\n },\n ]\n this.iteration = 0\n }\n iterate() {\n if (this.iteration !== 0) {\n const typeInfo = getTypeInfo(this.type)\n if (typeInfo && typeInfo.outputs) {\n this.type = typeInfo.outputs\n } else {\n this.type = parseType(this.data)\n }\n this.graph.push({\n type: this.type,\n })\n }\n if (this.error || this.type === this.options.target) {\n return false\n } else if (this.iteration >= this.options.maxChainLength) {\n this.error = new RangeError(\n `Max. number of parsing iterations reached (${prepareParseGraph(this.graph)})`\n )\n return false\n } else {\n this.iteration++\n return true\n }\n }\n end() {\n if (this.error) {\n logger.error('[core]', this.error.message)\n if (this.options.strict !== false) {\n throw this.error\n } else {\n return []\n }\n } else if (this.options.target === '@csl/list+object') {\n return upgradeCsl(this.data).map(\n this.options.generateGraph ? (entry) => applyGraph(entry, this.graph) : removeGraph\n )\n } else {\n return this.data\n }\n }\n}\nexport const chain = (...args) => {\n const chain = new ChainParser(...args)\n while (chain.iterate()) {\n try {\n chain.data = parseData(chain.data, chain.type)\n } catch (e) {\n chain.error = e\n }\n }\n return chain.end()\n}\nexport const chainLink = (input) => {\n const type = parseType(input)\n const output = type.match(/array|object/) ? deepCopy(input) : input\n return parseData(output, type)\n}\nexport const chainAsync = async (...args) => {\n const chain = new ChainParser(...args)\n while (chain.iterate()) {\n chain.data = await parseDataAsync(chain.data, chain.type).catch((e) => {\n chain.error = e\n })\n }\n return chain.end()\n}\nexport const chainLinkAsync = async (input) => {\n const type = parseType(input)\n const output = type.match(/array|object/) ? deepCopy(input) : input\n return parseDataAsync(output, type)\n}\n","import { chain, chainAsync } from './chain.js'\nconst parsers = {}\nconst asyncParsers = {}\nconst nativeParsers = {\n '@csl/object': (input) => [input],\n '@csl/list+object': (input) => input,\n '@else/list+object': (input) => input.map(chain).flat(),\n '@invalid': () => {\n throw new Error('This format is not supported or recognized')\n },\n}\nconst nativeAsyncParsers = {\n '@else/list+object': async (input) => (await Promise.all(input.map(chainAsync))).flat(),\n}\nexport function data(input, type) {\n if (typeof parsers[type] === 'function') {\n return parsers[type](input)\n } else if (typeof nativeParsers[type] === 'function') {\n return nativeParsers[type](input)\n } else {\n throw new TypeError(`No synchronous parser found for ${type}`)\n }\n}\nexport async function dataAsync(input, type) {\n if (typeof asyncParsers[type] === 'function') {\n return asyncParsers[type](input)\n } else if (typeof nativeAsyncParsers[type] === 'function') {\n return nativeAsyncParsers[type](input)\n } else if (hasDataParser(type, false)) {\n return data(input, type)\n } else {\n throw new TypeError(`No parser found for ${type}`)\n }\n}\nexport function addDataParser(format, { parser, async }) {\n if (async) {\n asyncParsers[format] = parser\n } else {\n parsers[format] = parser\n }\n}\nexport function hasDataParser(type, async) {\n return async\n ? asyncParsers[type] || nativeAsyncParsers[type]\n : parsers[type] || nativeParsers[type]\n}\nexport function removeDataParser(type, async) {\n delete (async ? asyncParsers : parsers)[type]\n}\nexport function listDataParser(async) {\n return Object.keys(async ? asyncParsers : parsers)\n}\n","import { FormatParser } from './parser.js'\nimport { addTypeParser, removeTypeParser } from './type.js'\nimport { addDataParser, removeDataParser } from './data.js'\nconst formats = {}\nexport function add(format, parsers) {\n const formatParser = new FormatParser(format, parsers)\n formatParser.validate()\n const index = formats[format] || (formats[format] = {})\n if (formatParser.typeParser) {\n addTypeParser(format, formatParser.typeParser)\n index.type = true\n }\n if (formatParser.dataParser) {\n addDataParser(format, formatParser.dataParser)\n index.data = true\n }\n if (formatParser.asyncDataParser) {\n addDataParser(format, formatParser.asyncDataParser)\n index.asyncData = true\n }\n if (parsers.outputs) {\n index.outputs = parsers.outputs\n }\n}\nexport function get(format) {\n return formats[format]\n}\nexport function remove(format) {\n const index = formats[format]\n if (!index) {\n return\n }\n if (index.type) {\n removeTypeParser(format)\n }\n if (index.data) {\n removeDataParser(format)\n }\n if (index.asyncData) {\n removeDataParser(format, true)\n }\n delete formats[format]\n}\nexport function has(format) {\n return format in formats\n}\nexport function list() {\n return Object.keys(formats)\n}\n","import * as dataType from './dataType.js'\nimport * as graph from './graph.js'\nimport * as parser from './parser.js'\nimport * as csl from './csl.js'\nexport const util = Object.assign({}, dataType, graph, parser, csl)\nexport * from './register'\nexport * from './chain'\nexport * from './type'\nexport * from './data'\n","// @ts-nocheck\nimport { chain as parseInput, chainAsync as parseInputAsync } from '../plugins/input/index.js'\nimport fetchId from '../util/fetchId.js'\nfunction add(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data.push(...parseInput(data, options))\n this.data\n .filter((entry) => !Object.prototype.hasOwnProperty.call(entry, 'id'))\n .forEach((entry) => {\n entry.id = fetchId(this.getIds(), 'temp_id_')\n })\n return this\n}\nasync function addAsync(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data.push(...(await parseInputAsync(data, options)))\n this.data\n .filter((entry) => !Object.prototype.hasOwnProperty.call(entry, 'id'))\n .forEach((entry) => {\n entry.id = fetchId(this.getIds(), 'temp_id_')\n })\n return this\n}\nfunction set(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data = []\n return typeof options !== 'boolean' ? this.add(data, options) : this.add(data)\n}\nasync function setAsync(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data = []\n return typeof options !== 'boolean' ? this.addAsync(data, options) : this.addAsync(data)\n}\nfunction reset(log) {\n if (log) {\n this.save()\n }\n this.data = []\n this._options = {}\n return this\n}\nexport { add, addAsync, set, setAsync, reset }\n","function getLabel(entry) {\n if ('citation-label' in entry) {\n return entry['citation-label']\n }\n let res = ''\n if (entry.author) {\n res += entry.author[0].family || entry.author[0].literal\n }\n if (entry.issued && entry.issued['date-parts'] && entry.issued['date-parts'][0]) {\n res += entry.issued['date-parts'][0][0]\n }\n if (entry['year-suffix']) {\n res += entry['year-suffix']\n } else if (entry.title) {\n res += entry.title.replace(/<\\/?.*?>/g, '').match(/^(?:(?:the|a|an)\\s+)?(\\S+)/i)[1]\n }\n return res\n}\nexport { getLabel }\nexport default {\n label(data) {\n return data.reduce((object, entry) => {\n object[entry.id] = getLabel(entry)\n return object\n }, {})\n },\n}\n","import { getLabel } from '../plugin-common/output/label.js'\nimport { format as getName } from '@citation-js/name'\nfunction getComparisonValue(obj, prop, label = prop === 'label') {\n let value = label ? getLabel(obj) : obj[prop]\n switch (prop) {\n case 'author':\n case 'editor':\n return value.map((name) => name.literal || name.family || getName(name))\n case 'accessed':\n case 'issued':\n return value['date-parts'][0]\n case 'page':\n return value.split('-').map((num) => parseInt(num))\n case 'edition':\n case 'issue':\n case 'volume':\n value = parseInt(value)\n return !isNaN(value) ? value : -Infinity\n default:\n return value || -Infinity\n }\n}\nfunction compareProp(entryA, entryB, prop, flip = /^!/.test(prop)) {\n prop = prop.replace(/^!/, '')\n const a = getComparisonValue(entryA, prop)\n const b = getComparisonValue(entryB, prop)\n return (flip ? -1 : 1) * (a > b ? 1 : a < b ? -1 : 0)\n}\nfunction getSortCallback(...props) {\n return (a, b) => {\n const keys = props.slice()\n let output = 0\n while (!output && keys.length) {\n output = compareProp(a, b, keys.shift())\n }\n return output\n }\n}\nfunction sort(method = [], log) {\n if (log) {\n this.save()\n }\n this.data.sort(typeof method === 'function' ? method : getSortCallback(...method, 'label'))\n return this\n}\nexport { sort }\n","import Register from '../util/register.js'\nfunction validate(name, formatter) {\n if (typeof name !== 'string') {\n throw new TypeError(`Invalid output format name, expected string, got ${typeof name}`)\n } else if (typeof formatter !== 'function') {\n throw new TypeError(`Invalid formatter, expected function, got ${typeof formatter}`)\n }\n}\nexport const register = new Register()\nexport function add(name, formatter) {\n validate(name, formatter)\n register.set(name, formatter)\n}\nexport function remove(name) {\n register.remove(name)\n}\nexport function has(name) {\n return register.has(name)\n}\nexport function list() {\n return register.list()\n}\nexport function format(name, data, ...options) {\n if (!register.has(name)) {\n throw new Error(`Output format \"${name}\" unavailable`)\n }\n return register.get(name)(data, ...options)\n}\n","import { validateOutputOptions as validate } from './validate.js'\nimport { format as formatData } from '../plugins/output.js'\nimport { clean as parseCsl } from '../plugins/input/csl.js'\nexport function getIds() {\n return this.data.map((entry) => entry.id)\n}\nexport function format(format, ...options) {\n return formatData(format, parseCsl(this.data), ...options)\n}\nexport function get(options = {}) {\n validate(options)\n const parsedOptions = Object.assign({}, this.defaultOptions, this._options.output, options)\n const { type, style } = parsedOptions\n const [styleType, styleFormat] = style.split('-')\n const newStyle =\n styleType === 'citation' ? 'bibliography' : styleType === 'csl' ? 'data' : styleType\n const newType = type === 'string' ? 'text' : type === 'json' ? 'object' : type\n let formatOptions\n switch (newStyle) {\n case 'bibliography': {\n const { lang, append, prepend } = parsedOptions\n formatOptions = {\n template: styleFormat,\n lang,\n format: newType,\n append,\n prepend,\n }\n break\n }\n case 'data':\n case 'bibtex':\n case 'bibtxt':\n case 'ndjson':\n case 'ris':\n formatOptions = {\n type: newType,\n }\n break\n default:\n throw new Error(`Invalid style \"${newStyle}\"`)\n }\n const result = this.format(newStyle, Object.assign(formatOptions, options._newOptions))\n const { format } = parsedOptions\n if (\n format === 'real' &&\n newType === 'html' &&\n typeof document !== 'undefined' &&\n typeof document.createElement === 'function'\n ) {\n const tmp = document.createElement('div')\n tmp.innerHTML = result\n return tmp.firstChild\n } else if (format === 'string' && typeof result === 'object') {\n return JSON.stringify(result)\n } else {\n return result\n }\n}\n","function async(data, options, callback) {\n if (typeof options === 'function' && !callback) {\n callback = options\n options = undefined\n }\n const promise = new this().setAsync(data, options)\n if (typeof callback === 'function') {\n promise.then(callback)\n return undefined\n } else {\n return promise\n }\n}\nexport default async\n","// @ts-nocheck\nimport * as log from './log.js'\nimport * as options from './options.js'\nimport * as set from './set.js'\nimport * as sort from './sort.js'\nimport * as get from './get.js'\nimport * as staticMethods from './static.js'\nfunction Cite(data, options = {}) {\n if (!(this instanceof Cite)) {\n return new Cite(data, options)\n }\n this._options = options\n this.log = []\n this.data = []\n this.set(data, options)\n this.options(options)\n return this\n}\nObject.assign(Cite.prototype, log, options, set, sort, get)\nCite.prototype[Symbol.iterator] = function* () {\n yield* this.data\n}\nObject.assign(Cite, staticMethods)\nexport default Cite\n","import Register from '../util/register.js'\nfunction validate(name, dict) {\n if (typeof name !== 'string') {\n throw new TypeError(`Invalid dict name, expected string, got ${typeof name}`)\n } else if (typeof dict !== 'object') {\n throw new TypeError(`Invalid dict, expected object, got ${typeof dict}`)\n }\n for (const entryName in dict) {\n const entry = dict[entryName]\n if (!Array.isArray(entry) || entry.some((part) => typeof part !== 'string')) {\n throw new TypeError(`Invalid dict entry \"${entryName}\", expected array of strings`)\n }\n }\n}\nexport const register = new Register({\n html: {\n bibliographyContainer: ['
', '
'],\n entry: ['
', '
'],\n list: ['
    ', '
'],\n listItem: ['
  • ', '
  • '],\n },\n text: {\n bibliographyContainer: ['', '\\n'],\n entry: ['', '\\n'],\n list: ['\\n', ''],\n listItem: ['\\t', '\\n'],\n },\n})\nexport function add(name, dict) {\n validate(name, dict)\n register.set(name, dict)\n}\nexport function remove(name) {\n register.remove(name)\n}\nexport function has(name) {\n return register.has(name)\n}\nexport function list() {\n return register.list()\n}\nexport function get(name) {\n if (!register.has(name)) {\n throw new Error(`Dict \"${name}\" unavailable`)\n }\n return register.get(name)\n}\nexport const htmlDict = {\n wr_start: '
    ',\n wr_end: '
    ',\n en_start: '
    ',\n en_end: '
    ',\n ul_start: '
      ',\n ul_end: '
    ',\n li_start: '
  • ',\n li_end: '
  • ',\n}\nexport const textDict = {\n wr_start: '',\n wr_end: '\\n',\n en_start: '',\n en_end: '\\n',\n ul_start: '\\n',\n ul_end: '',\n li_start: '\\t',\n li_end: '\\n',\n}\n","const configs = {}\nexport function add(ref, config) {\n configs[ref] = config\n}\nexport function get(ref) {\n return configs[ref]\n}\nexport function has(ref) {\n return Object.prototype.hasOwnProperty.call(configs, ref)\n}\nexport function remove(ref) {\n delete configs[ref]\n}\nexport function list() {\n return Object.keys(configs)\n}\n","// @ts-nocheck\nimport * as input from './input/index.js'\nimport * as output from './output.js'\nimport * as dict from './dict.js'\nimport * as config from './config.js'\nconst registers = {\n input,\n output,\n dict,\n config,\n}\nconst indices = {}\nexport function add(ref, plugins = {}) {\n const mainIndex = (indices[ref] = {})\n for (const type in plugins) {\n if (type === 'config') {\n mainIndex.config = {\n [ref]: plugins.config,\n }\n registers.config.add(ref, plugins.config)\n continue\n }\n const typeIndex = (mainIndex[type] = {})\n const typePlugins = plugins[type]\n for (const name in typePlugins) {\n const typePlugin = typePlugins[name]\n typeIndex[name] = true\n registers[type].add(name, typePlugin)\n }\n }\n}\nexport function remove(ref) {\n const mainIndex = indices[ref]\n for (const type in mainIndex) {\n const typeIndex = mainIndex[type]\n for (const name in typeIndex) {\n registers[type].remove(name)\n }\n }\n delete indices[ref]\n}\nexport function has(ref) {\n return ref in indices\n}\nexport function list() {\n return Object.keys(indices)\n}\nexport { input, output, dict, config }\n","export function parse() {\n return []\n}\n","import logger from '../../logger.js'\nconst substituters = [\n [/((?:\\[|:|,)\\s*)'((?:\\\\'|[^'])*?[^\\\\])?'(?=\\s*(?:\\]|}|,))/g, '$1\"$2\"'],\n [\n /((?:(?:\"|]|}|\\/[gmiuys]|\\.|(?:\\d|\\.|-)*\\d)\\s*,|{)\\s*)(?:\"([^\":\\n]+?)\"|'([^\":\\n]+?)'|([^\":\\n]+?))(\\s*):/g,\n '$1\"$2$3$4\"$5:',\n ],\n]\nfunction parseJSON(str) {\n if (typeof str !== 'string') {\n return JSON.parse(str)\n }\n try {\n return JSON.parse(str)\n } catch (e) {\n logger.debug('[plugin-common]', 'Invalid JSON, switching to experimental parser')\n substituters.forEach(([regex, subst]) => {\n str = str.replace(regex, subst)\n })\n return JSON.parse(str)\n }\n}\nexport { parseJSON as parse, parseJSON as default }\n","export function parse(input) {\n return input.val() || input.text() || input.html()\n}\n","export function parse(input) {\n return input.value || input.textContent\n}\n","// @ts-nocheck\nimport * as empty from './empty.js'\nimport * as json from './json.js'\nimport * as jquery from './jquery.js'\nimport * as html from './html.js'\nexport const ref = '@else'\nexport const parsers = {\n empty,\n json,\n jquery,\n html,\n}\nexport const formats = {\n '@empty/text': {\n parse: empty.parse,\n parseType: {\n dataType: 'String',\n predicate: (input) => input === '',\n },\n },\n '@empty/whitespace+text': {\n parse: empty.parse,\n parseType: {\n dataType: 'String',\n predicate: /^\\s+$/,\n },\n },\n '@empty': {\n parse: empty.parse,\n parseType: {\n dataType: 'Primitive',\n predicate: (input) => input == null,\n },\n },\n '@else/json': {\n parse: json.parse,\n parseType: {\n dataType: 'String',\n predicate: /^\\s*(\\{[\\S\\s]*\\}|\\[[\\S\\s]*\\])\\s*$/,\n },\n },\n '@else/url': {\n parseType: {\n dataType: 'String',\n predicate: /^https?:\\/\\/(([\\w-]+\\.)*[\\w-]+)(:\\d+)?(\\/[^?/]*)*(\\?[^#]*)?(#.*)?$/i,\n },\n },\n '@else/jquery': {\n parse: jquery.parse,\n parseType: {\n dataType: 'ComplexObject',\n predicate(input) {\n return typeof jQuery !== 'undefined' && input instanceof jQuery\n },\n },\n },\n '@else/html': {\n parse: html.parse,\n parseType: {\n dataType: 'ComplexObject',\n predicate(input) {\n return typeof HTMLElement !== 'undefined' && input instanceof HTMLElement\n },\n },\n },\n}\n","// @ts-nocheck\nimport * as plugins from '../../plugins/index.js'\nimport * as util from '../../util/index.js'\nimport logger from '../../logger.js'\nfunction appendCommas(string, index, array) {\n return string + (index < array.length - 1 ? ',' : '')\n}\nfunction getJsonObject(src, dict) {\n const isArray = Array.isArray(src)\n let entries\n if (isArray) {\n entries = src.map((entry) => getJsonValue(entry, dict))\n } else {\n entries = Object.keys(src)\n .filter((prop) => JSON.stringify(src[prop]))\n .map((prop) => `\"${prop}\": ${getJsonValue(src[prop], dict)}`)\n }\n entries = entries.map(appendCommas).map((entry) => dict.listItem.join(entry))\n entries = dict.list.join(entries.join(''))\n return isArray ? `[${entries}]` : `{${entries}}`\n}\nfunction getJsonValue(src, dict) {\n if (typeof src === 'object' && src !== null) {\n if (src.length === 0) {\n return '[]'\n } else if (Object.keys(src).length === 0) {\n return '{}'\n } else {\n return getJsonObject(src, dict)\n }\n } else {\n return JSON.stringify(src)\n }\n}\nfunction getJson(src, dict) {\n let entries = src.map((entry) => getJsonObject(entry, dict))\n entries = entries.map(appendCommas).map((entry) => dict.entry.join(entry))\n entries = entries.join('')\n return dict.bibliographyContainer.join(`[${entries}]`)\n}\nexport function getJsonWrapper(src) {\n return getJson(src, plugins.dict.get('html'))\n}\nexport default {\n data(data, { type, format = type || 'text', version = '1.0.2' } = {}) {\n if (version < '1.0.2') {\n data = util.downgradeCsl(data)\n }\n if (format === 'object') {\n return util.deepCopy(data)\n } else if (format === 'text') {\n return JSON.stringify(data, null, 2)\n } else {\n logger.warn(\n '[core]',\n 'This feature (JSON output with special formatting) is unstable. See https://github.com/larsgw/citation.js/issues/144'\n )\n return getJson(data, plugins.dict.get(format))\n }\n },\n ndjson(data, { version = '1.0.2' } = {}) {\n if (version < '1.0.2') {\n data = util.downgradeCsl(data)\n }\n return data.map((entry) => JSON.stringify(entry)).join('\\n')\n },\n}\n","import json from './json.js'\nimport label from './label.js'\nexport default Object.assign({}, json, label)\n","import * as plugins from '../plugins'\nimport { ref, formats as input } from './input/'\nimport output from './output/'\nplugins.add(ref, {\n input,\n output,\n})\n","// @ts-nocheck\nimport { parse as parseDate } from '@citation-js/date'\nimport { parse as parseName } from '@citation-js/name'\nfunction nameProps(person) {\n const { firstname, lastname, firstName: given = firstname, lastName: family = lastname } = person\n if (given && family) {\n return {\n given,\n family,\n }\n } else if (person.name) {\n return parseName(person.name)\n }\n}\nconst identifiers = ['PMID', 'PMCID', 'DOI', 'ISBN']\nconst journalIdentifiers = ['ISSN']\nfunction idProps(input, identifiers) {\n const output = {}\n for (const prop in input) {\n const upperCaseProp = prop.toUpperCase()\n if (identifiers.includes(upperCaseProp)) {\n output[upperCaseProp] = input[prop]\n }\n }\n if (input.identifier) {\n for (let { id, type = '' } of input.identifier) {\n type = type.toUpperCase()\n if (identifiers.includes(type)) {\n output[type] = id\n }\n }\n }\n return output\n}\nconst typeMap = {\n article: 'article',\n book: 'book',\n booklet: 'book',\n proceedings: 'book',\n mastersthesis: 'thesis',\n inbook: 'chapter',\n incollection: 'chapter',\n conference: 'paper-conference',\n inproceedings: 'paper-conference',\n manual: 'report',\n misc: 'document',\n online: 'website',\n patent: 'patent',\n phdthesis: 'thesis',\n techreport: 'report',\n unpublished: 'manuscript',\n}\nfunction quickscrapeSpecificProps() {\n return {\n type: 'article-journal',\n }\n}\nfunction generalProps(input) {\n const output = {\n type: typeMap[input.type] || 'document',\n title: input.title,\n }\n if (input.author) {\n output.author = input.author.map(nameProps).filter(Boolean)\n }\n if (input.editor) {\n output.editor = input.editor.map(nameProps).filter(Boolean)\n }\n if (input.reviewer) {\n if (input.author) {\n output['reviewed-author'] = output.author\n }\n output.author = input.reviewer.map(nameProps).filter(Boolean)\n }\n if (Array.isArray(input.keywords)) {\n output.keyword = input.keywords.join()\n } else if (input.keywords) {\n output.keyword = input.keywords\n }\n if (input.publisher) {\n output.publisher = input.publisher.name || input.publisher\n }\n if (input.date && input.date.published) {\n output.issued = parseDate(input.date.published)\n } else if (input.year) {\n output.issued = {\n 'date-parts': [[+input.year]],\n }\n }\n if (input.date && input.date.submitted) {\n output.submitted = parseDate(input.date.submitted)\n }\n if (input.journal) {\n const journal = input.journal\n if (journal.name) {\n output['container-title'] = journal.name\n }\n if (journal.volume) {\n output.volume = journal.volume\n }\n if (journal.issue) {\n output.issue = journal.issue\n }\n Object.assign(output, idProps(journal, journalIdentifiers))\n if (journal.firstpage) {\n output['page-first'] = journal.firstpage\n }\n if (journal.pages) {\n output.page = journal.pages.replace('--', '-')\n } else if (journal.firstpage && journal.lastpage) {\n output.page = journal.firstpage + '-' + journal.lastpage\n }\n }\n if (input.link && typeof input.link[0] === 'object') {\n output.URL = input.link[0].url\n }\n Object.assign(output, idProps(input, identifiers))\n if (input.cid) {\n output.id = input.cid\n } else if (output.DOI) {\n output.id = output.DOI\n }\n return output\n}\nconst parseContentMine = function (data) {\n return Object.assign(generalProps(data), quickscrapeSpecificProps(data))\n}\nconst parseBibJson = function (data) {\n return generalProps(data)\n}\nexport { parseContentMine as quickscrapeRecord, parseBibJson as record }\n","import * as json from './json.js'\nimport { plugins } from '../core/index.js'\nconst scraperLinks = ['fulltext_html', 'fulltext_xml', 'fulltext_pdf']\nconst authorNameFields = ['name', 'lastname', 'lastName', 'firstname', 'firstName']\nconst ref = '@bibjson'\nconst parsers = {\n json,\n}\nconst formats = {\n '@bibjson/quickscrape+record+object': {\n parse: json.quickscrapeRecord,\n parseType: {\n propertyConstraint: {\n props: 'link',\n value(links) {\n return scraperLinks.some((link) => links.find(({ type }) => type === link))\n },\n },\n extends: '@bibjson/record+object',\n },\n },\n '@bibjson/record+object': {\n parse: json.record,\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: [\n {\n props: 'title',\n },\n {\n props: ['author', 'editor'],\n match: 'some',\n value(authors) {\n return (\n Array.isArray(authors) &&\n authors[0] &&\n authorNameFields.some((field) => field in authors[0])\n )\n },\n },\n ],\n },\n },\n '@bibjson/collection+object': {\n parse(collection) {\n return collection.records\n },\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: [\n {\n props: 'metadata',\n value(metadata) {\n return 'collection' in metadata\n },\n },\n {\n props: 'records',\n value(records) {\n return Array.isArray(records)\n },\n },\n ],\n },\n },\n}\nplugins.add(ref, {\n input: formats,\n})\nexport { ref, parsers, formats }\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory) /* global define */\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory()\n } else {\n root.moo = factory()\n }\n}(this, function() {\n 'use strict';\n\n var hasOwnProperty = Object.prototype.hasOwnProperty\n var toString = Object.prototype.toString\n var hasSticky = typeof new RegExp().sticky === 'boolean'\n\n /***************************************************************************/\n\n function isRegExp(o) { return o && toString.call(o) === '[object RegExp]' }\n function isObject(o) { return o && typeof o === 'object' && !isRegExp(o) && !Array.isArray(o) }\n\n function reEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n }\n function reGroups(s) {\n var re = new RegExp('|' + s)\n return re.exec('').length - 1\n }\n function reCapture(s) {\n return '(' + s + ')'\n }\n function reUnion(regexps) {\n if (!regexps.length) return '(?!)'\n var source = regexps.map(function(s) {\n return \"(?:\" + s + \")\"\n }).join('|')\n return \"(?:\" + source + \")\"\n }\n\n function regexpOrLiteral(obj) {\n if (typeof obj === 'string') {\n return '(?:' + reEscape(obj) + ')'\n\n } else if (isRegExp(obj)) {\n // TODO: consider /u support\n if (obj.ignoreCase) throw new Error('RegExp /i flag not allowed')\n if (obj.global) throw new Error('RegExp /g flag is implied')\n if (obj.sticky) throw new Error('RegExp /y flag is implied')\n if (obj.multiline) throw new Error('RegExp /m flag is implied')\n return obj.source\n\n } else {\n throw new Error('Not a pattern: ' + obj)\n }\n }\n\n function pad(s, length) {\n if (s.length > length) {\n return s\n }\n return Array(length - s.length + 1).join(\" \") + s\n }\n\n function lastNLines(string, numLines) {\n var position = string.length\n var lineBreaks = 0;\n while (true) {\n var idx = string.lastIndexOf(\"\\n\", position - 1)\n if (idx === -1) {\n break;\n } else {\n lineBreaks++\n }\n position = idx\n if (lineBreaks === numLines) {\n break;\n }\n if (position === 0) {\n break;\n }\n }\n var startPosition = \n lineBreaks < numLines ?\n 0 : \n position + 1\n return string.substring(startPosition).split(\"\\n\")\n }\n\n function objectToRules(object) {\n var keys = Object.getOwnPropertyNames(object)\n var result = []\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var thing = object[key]\n var rules = [].concat(thing)\n if (key === 'include') {\n for (var j = 0; j < rules.length; j++) {\n result.push({include: rules[j]})\n }\n continue\n }\n var match = []\n rules.forEach(function(rule) {\n if (isObject(rule)) {\n if (match.length) result.push(ruleOptions(key, match))\n result.push(ruleOptions(key, rule))\n match = []\n } else {\n match.push(rule)\n }\n })\n if (match.length) result.push(ruleOptions(key, match))\n }\n return result\n }\n\n function arrayToRules(array) {\n var result = []\n for (var i = 0; i < array.length; i++) {\n var obj = array[i]\n if (obj.include) {\n var include = [].concat(obj.include)\n for (var j = 0; j < include.length; j++) {\n result.push({include: include[j]})\n }\n continue\n }\n if (!obj.type) {\n throw new Error('Rule has no type: ' + JSON.stringify(obj))\n }\n result.push(ruleOptions(obj.type, obj))\n }\n return result\n }\n\n function ruleOptions(type, obj) {\n if (!isObject(obj)) {\n obj = { match: obj }\n }\n if (obj.include) {\n throw new Error('Matching rules cannot also include states')\n }\n\n // nb. error and fallback imply lineBreaks\n var options = {\n defaultType: type,\n lineBreaks: !!obj.error || !!obj.fallback,\n pop: false,\n next: null,\n push: null,\n error: false,\n fallback: false,\n value: null,\n type: null,\n shouldThrow: false,\n }\n\n // Avoid Object.assign(), so we support IE9+\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n options[key] = obj[key]\n }\n }\n\n // type transform cannot be a string\n if (typeof options.type === 'string' && type !== options.type) {\n throw new Error(\"Type transform cannot be a string (type '\" + options.type + \"' for token '\" + type + \"')\")\n }\n\n // convert to array\n var match = options.match\n options.match = Array.isArray(match) ? match : match ? [match] : []\n options.match.sort(function(a, b) {\n return isRegExp(a) && isRegExp(b) ? 0\n : isRegExp(b) ? -1 : isRegExp(a) ? +1 : b.length - a.length\n })\n return options\n }\n\n function toRules(spec) {\n return Array.isArray(spec) ? arrayToRules(spec) : objectToRules(spec)\n }\n\n var defaultErrorRule = ruleOptions('error', {lineBreaks: true, shouldThrow: true})\n function compileRules(rules, hasStates) {\n var errorRule = null\n var fast = Object.create(null)\n var fastAllowed = true\n var unicodeFlag = null\n var groups = []\n var parts = []\n\n // If there is a fallback rule, then disable fast matching\n for (var i = 0; i < rules.length; i++) {\n if (rules[i].fallback) {\n fastAllowed = false\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var options = rules[i]\n\n if (options.include) {\n // all valid inclusions are removed by states() preprocessor\n throw new Error('Inheritance is not allowed in stateless lexers')\n }\n\n if (options.error || options.fallback) {\n // errorRule can only be set once\n if (errorRule) {\n if (!options.fallback === !errorRule.fallback) {\n throw new Error(\"Multiple \" + (options.fallback ? \"fallback\" : \"error\") + \" rules not allowed (for token '\" + options.defaultType + \"')\")\n } else {\n throw new Error(\"fallback and error are mutually exclusive (for token '\" + options.defaultType + \"')\")\n }\n }\n errorRule = options\n }\n\n var match = options.match.slice()\n if (fastAllowed) {\n while (match.length && typeof match[0] === 'string' && match[0].length === 1) {\n var word = match.shift()\n fast[word.charCodeAt(0)] = options\n }\n }\n\n // Warn about inappropriate state-switching options\n if (options.pop || options.push || options.next) {\n if (!hasStates) {\n throw new Error(\"State-switching options are not allowed in stateless lexers (for token '\" + options.defaultType + \"')\")\n }\n if (options.fallback) {\n throw new Error(\"State-switching options are not allowed on fallback tokens (for token '\" + options.defaultType + \"')\")\n }\n }\n\n // Only rules with a .match are included in the RegExp\n if (match.length === 0) {\n continue\n }\n fastAllowed = false\n\n groups.push(options)\n\n // Check unicode flag is used everywhere or nowhere\n for (var j = 0; j < match.length; j++) {\n var obj = match[j]\n if (!isRegExp(obj)) {\n continue\n }\n\n if (unicodeFlag === null) {\n unicodeFlag = obj.unicode\n } else if (unicodeFlag !== obj.unicode && options.fallback === false) {\n throw new Error('If one rule is /u then all must be')\n }\n }\n\n // convert to RegExp\n var pat = reUnion(match.map(regexpOrLiteral))\n\n // validate\n var regexp = new RegExp(pat)\n if (regexp.test(\"\")) {\n throw new Error(\"RegExp matches empty string: \" + regexp)\n }\n var groupCount = reGroups(pat)\n if (groupCount > 0) {\n throw new Error(\"RegExp has capture groups: \" + regexp + \"\\nUse (?: … ) instead\")\n }\n\n // try and detect rules matching newlines\n if (!options.lineBreaks && regexp.test('\\n')) {\n throw new Error('Rule should declare lineBreaks: ' + regexp)\n }\n\n // store regex\n parts.push(reCapture(pat))\n }\n\n\n // If there's no fallback rule, use the sticky flag so we only look for\n // matches at the current index.\n //\n // If we don't support the sticky flag, then fake it using an irrefutable\n // match (i.e. an empty pattern).\n var fallbackRule = errorRule && errorRule.fallback\n var flags = hasSticky && !fallbackRule ? 'ym' : 'gm'\n var suffix = hasSticky || fallbackRule ? '' : '|'\n\n if (unicodeFlag === true) flags += \"u\"\n var combined = new RegExp(reUnion(parts) + suffix, flags)\n return {regexp: combined, groups: groups, fast: fast, error: errorRule || defaultErrorRule}\n }\n\n function compile(rules) {\n var result = compileRules(toRules(rules))\n return new Lexer({start: result}, 'start')\n }\n\n function checkStateGroup(g, name, map) {\n var state = g && (g.push || g.next)\n if (state && !map[state]) {\n throw new Error(\"Missing state '\" + state + \"' (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n if (g && g.pop && +g.pop !== 1) {\n throw new Error(\"pop must be 1 (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n }\n function compileStates(states, start) {\n var all = states.$all ? toRules(states.$all) : []\n delete states.$all\n\n var keys = Object.getOwnPropertyNames(states)\n if (!start) start = keys[0]\n\n var ruleMap = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n ruleMap[key] = toRules(states[key]).concat(all)\n }\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var rules = ruleMap[key]\n var included = Object.create(null)\n for (var j = 0; j < rules.length; j++) {\n var rule = rules[j]\n if (!rule.include) continue\n var splice = [j, 1]\n if (rule.include !== key && !included[rule.include]) {\n included[rule.include] = true\n var newRules = ruleMap[rule.include]\n if (!newRules) {\n throw new Error(\"Cannot include nonexistent state '\" + rule.include + \"' (in state '\" + key + \"')\")\n }\n for (var k = 0; k < newRules.length; k++) {\n var newRule = newRules[k]\n if (rules.indexOf(newRule) !== -1) continue\n splice.push(newRule)\n }\n }\n rules.splice.apply(rules, splice)\n j--\n }\n }\n\n var map = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n map[key] = compileRules(ruleMap[key], true)\n }\n\n for (var i = 0; i < keys.length; i++) {\n var name = keys[i]\n var state = map[name]\n var groups = state.groups\n for (var j = 0; j < groups.length; j++) {\n checkStateGroup(groups[j], name, map)\n }\n var fastKeys = Object.getOwnPropertyNames(state.fast)\n for (var j = 0; j < fastKeys.length; j++) {\n checkStateGroup(state.fast[fastKeys[j]], name, map)\n }\n }\n\n return new Lexer(map, start)\n }\n\n function keywordTransform(map) {\n\n // Use a JavaScript Map to map keywords to their corresponding token type\n // unless Map is unsupported, then fall back to using an Object:\n var isMap = typeof Map !== 'undefined'\n var reverseMap = isMap ? new Map : Object.create(null)\n\n var types = Object.getOwnPropertyNames(map)\n for (var i = 0; i < types.length; i++) {\n var tokenType = types[i]\n var item = map[tokenType]\n var keywordList = Array.isArray(item) ? item : [item]\n keywordList.forEach(function(keyword) {\n if (typeof keyword !== 'string') {\n throw new Error(\"keyword must be string (in keyword '\" + tokenType + \"')\")\n }\n if (isMap) {\n reverseMap.set(keyword, tokenType)\n } else {\n reverseMap[keyword] = tokenType\n }\n })\n }\n return function(k) {\n return isMap ? reverseMap.get(k) : reverseMap[k]\n }\n }\n\n /***************************************************************************/\n\n var Lexer = function(states, state) {\n this.startState = state\n this.states = states\n this.buffer = ''\n this.stack = []\n this.reset()\n }\n\n Lexer.prototype.reset = function(data, info) {\n this.buffer = data || ''\n this.index = 0\n this.line = info ? info.line : 1\n this.col = info ? info.col : 1\n this.queuedToken = info ? info.queuedToken : null\n this.queuedText = info ? info.queuedText: \"\";\n this.queuedThrow = info ? info.queuedThrow : null\n this.setState(info ? info.state : this.startState)\n this.stack = info && info.stack ? info.stack.slice() : []\n return this\n }\n\n Lexer.prototype.save = function() {\n return {\n line: this.line,\n col: this.col,\n state: this.state,\n stack: this.stack.slice(),\n queuedToken: this.queuedToken,\n queuedText: this.queuedText,\n queuedThrow: this.queuedThrow,\n }\n }\n\n Lexer.prototype.setState = function(state) {\n if (!state || this.state === state) return\n this.state = state\n var info = this.states[state]\n this.groups = info.groups\n this.error = info.error\n this.re = info.regexp\n this.fast = info.fast\n }\n\n Lexer.prototype.popState = function() {\n this.setState(this.stack.pop())\n }\n\n Lexer.prototype.pushState = function(state) {\n this.stack.push(this.state)\n this.setState(state)\n }\n\n var eat = hasSticky ? function(re, buffer) { // assume re is /y\n return re.exec(buffer)\n } : function(re, buffer) { // assume re is /g\n var match = re.exec(buffer)\n // will always match, since we used the |(?:) trick\n if (match[0].length === 0) {\n return null\n }\n return match\n }\n\n Lexer.prototype._getGroup = function(match) {\n var groupCount = this.groups.length\n for (var i = 0; i < groupCount; i++) {\n if (match[i + 1] !== undefined) {\n return this.groups[i]\n }\n }\n throw new Error('Cannot find token type for matched text')\n }\n\n function tokenToString() {\n return this.value\n }\n\n Lexer.prototype.next = function() {\n var index = this.index\n\n // If a fallback token matched, we don't need to re-run the RegExp\n if (this.queuedGroup) {\n var token = this._token(this.queuedGroup, this.queuedText, index)\n this.queuedGroup = null\n this.queuedText = \"\"\n return token\n }\n\n var buffer = this.buffer\n if (index === buffer.length) {\n return // EOF\n }\n\n // Fast matching for single characters\n var group = this.fast[buffer.charCodeAt(index)]\n if (group) {\n return this._token(group, buffer.charAt(index), index)\n }\n\n // Execute RegExp\n var re = this.re\n re.lastIndex = index\n var match = eat(re, buffer)\n\n // Error tokens match the remaining buffer\n var error = this.error\n if (match == null) {\n return this._token(error, buffer.slice(index, buffer.length), index)\n }\n\n var group = this._getGroup(match)\n var text = match[0]\n\n if (error.fallback && match.index !== index) {\n this.queuedGroup = group\n this.queuedText = text\n\n // Fallback tokens contain the unmatched portion of the buffer\n return this._token(error, buffer.slice(index, match.index), index)\n }\n\n return this._token(group, text, index)\n }\n\n Lexer.prototype._token = function(group, text, offset) {\n // count line breaks\n var lineBreaks = 0\n if (group.lineBreaks) {\n var matchNL = /\\n/g\n var nl = 1\n if (text === '\\n') {\n lineBreaks = 1\n } else {\n while (matchNL.exec(text)) { lineBreaks++; nl = matchNL.lastIndex }\n }\n }\n\n var token = {\n type: (typeof group.type === 'function' && group.type(text)) || group.defaultType,\n value: typeof group.value === 'function' ? group.value(text) : text,\n text: text,\n toString: tokenToString,\n offset: offset,\n lineBreaks: lineBreaks,\n line: this.line,\n col: this.col,\n }\n // nb. adding more props to token object will make V8 sad!\n\n var size = text.length\n this.index += size\n this.line += lineBreaks\n if (lineBreaks !== 0) {\n this.col = size - nl + 1\n } else {\n this.col += size\n }\n\n // throw, if no rule with {error: true}\n if (group.shouldThrow) {\n var err = new Error(this.formatError(token, \"invalid syntax\"))\n throw err;\n }\n\n if (group.pop) this.popState()\n else if (group.push) this.pushState(group.push)\n else if (group.next) this.setState(group.next)\n\n return token\n }\n\n if (typeof Symbol !== 'undefined' && Symbol.iterator) {\n var LexerIterator = function(lexer) {\n this.lexer = lexer\n }\n\n LexerIterator.prototype.next = function() {\n var token = this.lexer.next()\n return {value: token, done: !token}\n }\n\n LexerIterator.prototype[Symbol.iterator] = function() {\n return this\n }\n\n Lexer.prototype[Symbol.iterator] = function() {\n return new LexerIterator(this)\n }\n }\n\n Lexer.prototype.formatError = function(token, message) {\n if (token == null) {\n // An undefined token indicates EOF\n var text = this.buffer.slice(this.index)\n var token = {\n text: text,\n offset: this.index,\n lineBreaks: text.indexOf('\\n') === -1 ? 0 : 1,\n line: this.line,\n col: this.col,\n }\n }\n \n var numLinesAround = 2\n var firstDisplayedLine = Math.max(token.line - numLinesAround, 1)\n var lastDisplayedLine = token.line + numLinesAround\n var lastLineDigits = String(lastDisplayedLine).length\n var displayedLines = lastNLines(\n this.buffer, \n (this.line - token.line) + numLinesAround + 1\n )\n .slice(0, 5)\n var errorLines = []\n errorLines.push(message + \" at line \" + token.line + \" col \" + token.col + \":\")\n errorLines.push(\"\")\n for (var i = 0; i < displayedLines.length; i++) {\n var line = displayedLines[i]\n var lineNo = firstDisplayedLine + i\n errorLines.push(pad(String(lineNo), lastLineDigits) + \" \" + line);\n if (lineNo === token.line) {\n errorLines.push(pad(\"\", lastLineDigits + token.col + 1) + \"^\")\n }\n }\n return errorLines.join(\"\\n\")\n }\n\n Lexer.prototype.clone = function() {\n return new Lexer(this.states, this.state)\n }\n\n Lexer.prototype.has = function(tokenType) {\n return true\n }\n\n\n return {\n compile: compile,\n states: compileStates,\n error: Object.freeze({error: true}),\n fallback: Object.freeze({fallback: true}),\n keywords: keywordTransform,\n }\n\n}));\n","const biblatexTypes = {\n source: {\n article: 'article-journal',\n book: 'book',\n mvbook: 'book',\n inbook: 'chapter',\n bookinbook: 'book',\n booklet: 'book',\n collection: 'book',\n mvcollection: 'book',\n incollection: 'chapter',\n dataset: 'dataset',\n manual: 'report',\n misc: 'document',\n online: 'webpage',\n patent: 'patent',\n periodical: 'periodical',\n proceedings: 'book',\n mvproceedings: 'book',\n inproceedings: 'paper-conference',\n reference: 'book',\n mvreference: 'book',\n inreference: 'entry',\n report: 'report',\n software: 'software',\n thesis: 'thesis',\n unpublished: 'manuscript',\n artwork: 'graphic',\n audio: 'song',\n image: 'figure',\n jurisdiction: 'legal_case',\n legislation: 'legislation',\n legal: 'treaty',\n letter: 'personal_communication',\n movie: 'motion_picture',\n music: 'musical_score',\n performance: 'performance',\n review: 'review',\n standard: 'standard',\n video: 'motion_picture',\n conference: 'paper-conference',\n electronic: 'webpage',\n mastersthesis: 'thesis',\n phdthesis: 'thesis',\n techreport: 'report',\n www: 'webpage',\n },\n target: {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'article',\n 'article-newspaper': 'article',\n bill: 'legislation',\n book: 'book',\n broadcast: 'audio',\n chapter: 'inbook',\n classic: 'unpublished',\n collection: 'misc',\n dataset: 'dataset',\n document: 'misc',\n entry: 'inreference',\n 'entry-dictionary': 'inreference',\n 'entry-encyclopedia': 'inreference',\n event: 'misc',\n figure: 'artwork',\n graphic: 'artwork',\n hearing: 'legal',\n interview: 'audio',\n legal_case: 'jurisdiction',\n legislation: 'legislation',\n manuscript: 'unpublished',\n motion_picture: 'movie',\n musical_score: 'music',\n 'paper-conference': 'inproceedings',\n patent: 'patent',\n performance: 'performance',\n periodical: 'periodical',\n personal_communication: 'letter',\n post: 'online',\n 'post-weblog': 'online',\n regulation: 'legal',\n report: 'report',\n review: 'review',\n 'review-book': 'review',\n software: 'software',\n song: 'music',\n speech: 'audio',\n standard: 'standard',\n thesis: 'thesis',\n treaty: 'legal',\n webpage: 'online',\n },\n}\n\nexport default biblatexTypes\n","const bibtexTypes = {\n source: {\n article: 'article-journal',\n book: 'book',\n booklet: 'book',\n conference: 'paper-conference',\n inbook: 'chapter',\n incollection: 'chapter',\n inproceedings: 'paper-conference',\n manual: 'report',\n mastersthesis: 'thesis',\n misc: 'document',\n phdthesis: 'thesis',\n proceedings: 'book',\n techreport: 'report',\n unpublished: 'manuscript',\n },\n target: {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'article',\n 'article-newspaper': 'article',\n book: 'book',\n chapter: 'inbook',\n manuscript: 'unpublished',\n 'paper-conference': 'inproceedings',\n report: 'techreport',\n review: 'article',\n 'review-book': 'article',\n },\n}\n\nexport default bibtexTypes\n","const required = {\n biblatex: {\n article: ['author', 'title', 'journaltitle', ['year', 'date']],\n book: ['author', 'title', ['year', 'date']],\n mvbook: ['author', 'title', ['year', 'date']],\n inbook: ['author', 'title', 'booktitle', ['year', 'date']],\n booklet: [['author', 'editor'], 'title', ['year', 'date']],\n collection: ['editor', 'title', ['year', 'date']],\n mvcollection: ['editor', 'title', ['year', 'date']],\n incollection: ['author', 'title', 'booktitle', ['year', 'date']],\n dataset: [['author', 'editor'], 'title', ['year', 'date']],\n online: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n patent: ['author', 'title', 'number', ['year', 'date']],\n periodical: ['editor', 'title', ['year', 'date']],\n proceedings: ['title', ['year', 'date']],\n mvproceedings: ['title', ['year', 'date']],\n inproceedings: ['author', 'title', 'booktitle', ['year', 'date']],\n report: ['author', 'title', 'type', 'institution', ['year', 'date']],\n thesis: ['author', 'title', 'type', 'institution', ['year', 'date']],\n unpublished: ['author', 'title', ['year', 'date']],\n conference: ['author', 'title', 'booktitle', ['year', 'date']],\n electronic: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n mastersthesis: ['author', 'title', 'institution', ['year', 'date']],\n phdthesis: ['author', 'title', 'institution', ['year', 'date']],\n techreport: ['author', 'title', 'institution', ['year', 'date']],\n www: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n },\n bibtex: {\n article: ['author', 'title', 'journal', 'year'],\n book: [['author', 'editor'], 'title', 'publisher', 'year'],\n booklet: ['title'],\n inbook: [['author', 'editor'], 'title', ['chapter', 'pages'], 'publisher', 'year'],\n incollection: ['author', 'title', 'booktitle', 'publisher', 'year'],\n inproceedings: ['author', 'title', 'booktitle', 'year'],\n mastersthesis: ['author', 'title', 'school', 'year'],\n phdthesis: ['author', 'title', 'school', 'year'],\n proceedings: ['title', 'year'],\n techreport: ['author', 'title', 'institution', 'year'],\n unpublished: ['author', 'title', 'note'],\n },\n}\n\nexport default required\n","const fieldTypes = {\n abstract: ['field', 'literal'],\n addendum: ['field', 'literal'],\n afterword: ['list', 'name'],\n annotation: ['field', 'literal'],\n annotator: ['list', 'name'],\n author: ['list', 'name'],\n authortype: ['field', 'key'],\n bookauthor: ['list', 'name'],\n bookpagination: ['field', 'key'],\n booksubtitle: ['field', 'literal'],\n booktitle: ['field', 'title'],\n booktitleaddon: ['field', 'literal'],\n chapter: ['field', 'literal'],\n commentator: ['list', 'name'],\n date: ['field', 'date'],\n doi: ['field', 'verbatim'],\n edition: ['field', 'literal'],\n editor: ['list', 'name'],\n editora: ['list', 'name'],\n editorb: ['list', 'name'],\n editorc: ['list', 'name'],\n editortype: ['field', 'key'],\n editoratype: ['field', 'key'],\n editorbtype: ['field', 'key'],\n editorctype: ['field', 'key'],\n eid: ['field', 'literal'],\n entrysubtype: ['field', 'literal'],\n eprint: ['field', 'verbatim'],\n eprintclass: ['field', 'literal'],\n eprinttype: ['field', 'literal'],\n eventdate: ['field', 'date'],\n eventtitle: ['field', 'title'],\n eventtitleaddon: ['field', 'literal'],\n file: ['field', 'verbatim'],\n foreword: ['list', 'name'],\n holder: ['list', 'name'],\n howpublished: ['field', 'literal'],\n indextitle: ['field', 'literal'],\n institution: ['list', 'literal'],\n introduction: ['list', 'name'],\n isan: ['field', 'literal'],\n isbn: ['field', 'literal'],\n ismn: ['field', 'literal'],\n isrn: ['field', 'literal'],\n issn: ['field', 'literal'],\n issue: ['field', 'literal'],\n issuesubtitle: ['field', 'literal'],\n issuetitle: ['field', 'literal'],\n iswc: ['field', 'literal'],\n journalsubtitle: ['field', 'literal'],\n journaltitle: ['field', 'literal'],\n label: ['field', 'literal'],\n language: ['list', 'key'],\n library: ['field', 'literal'],\n location: ['list', 'literal'],\n mainsubtitle: ['field', 'literal'],\n maintitle: ['field', 'title'],\n maintitleaddon: ['field', 'literal'],\n month: ['field', 'literal'],\n nameaddon: ['field', 'literal'],\n note: ['field', 'literal'],\n number: ['field', 'literal'],\n organization: ['list', 'literal'],\n origdate: ['field', 'date'],\n origlanguage: ['list', 'key'],\n origlocation: ['list', 'literal'],\n origpublisher: ['list', 'literal'],\n origtitle: ['field', 'title'],\n pages: ['field', 'range'],\n pagetotal: ['field', 'literal'],\n pagination: ['field', 'key'],\n part: ['field', 'literal'],\n publisher: ['list', 'literal'],\n pubstate: ['field', 'key'],\n reprinttitle: ['field', 'literal'],\n series: ['field', 'title'],\n shortauthor: ['list', 'name'],\n shorteditor: ['list', 'name'],\n shorthand: ['field', 'literal'],\n shorthandintro: ['field', 'literal'],\n shortjournal: ['field', 'literal'],\n shortseries: ['field', 'literal'],\n shorttitle: ['field', 'title'],\n subtitle: ['field', 'literal'],\n title: ['field', 'title'],\n titleaddon: ['field', 'literal'],\n translator: ['list', 'name'],\n type: ['field', 'title'],\n url: ['field', 'uri'],\n urldate: ['field', 'date'],\n venue: ['field', 'literal'],\n version: ['field', 'literal'],\n volume: ['field', 'integer'],\n volumes: ['field', 'integer'],\n year: ['field', 'literal'],\n crossref: ['field', 'entry key'],\n entryset: ['separated', 'literal'],\n execute: ['field', 'code'],\n gender: ['field', 'gender'],\n langid: ['field', 'identifier'],\n langidopts: ['field', 'literal'],\n ids: ['separated', 'entry key'],\n indexsorttitle: ['field', 'literal'],\n keywords: ['separated', 'literal'],\n options: ['separated', 'options'],\n presort: ['field', 'string'],\n related: ['separated', 'literal'],\n relatedoptions: ['separated', 'literal'],\n relatedtype: ['field', 'identifier'],\n relatedstring: ['field', 'literal'],\n sortkey: ['field', 'literal'],\n sortname: ['list', 'name'],\n sortshorthand: ['field', 'literal'],\n sorttitle: ['field', 'literal'],\n sortyear: ['field', 'integer'],\n xdata: ['separated', 'entry key'],\n xref: ['field', 'entry key'],\n namea: ['list', 'name'],\n nameb: ['list', 'name'],\n namec: ['list', 'name'],\n nameatype: ['field', 'key'],\n namebtype: ['field', 'key'],\n namectype: ['field', 'key'],\n lista: ['list', 'literal'],\n listb: ['list', 'literal'],\n listc: ['list', 'literal'],\n listd: ['list', 'literal'],\n liste: ['list', 'literal'],\n listf: ['list', 'literal'],\n usera: ['field', 'literal'],\n userb: ['field', 'literal'],\n userc: ['field', 'literal'],\n userd: ['field', 'literal'],\n usere: ['field', 'literal'],\n userf: ['field', 'literal'],\n verba: ['field', 'literal'],\n verbb: ['field', 'literal'],\n verbc: ['field', 'literal'],\n address: ['list', 'literal'],\n annote: ['field', 'literal'],\n archiveprefix: ['field', 'literal'],\n journal: ['field', 'literal'],\n key: ['field', 'literal'],\n pdf: ['field', 'verbatim'],\n primaryclass: ['field', 'literal'],\n school: ['list', 'literal'],\n numpages: ['field', 'integer'],\n pmid: ['field', 'literal'],\n pmcid: ['field', 'literal'],\n}\n\nexport default fieldTypes\n","const unicode = {\n diacritics: {\n '`': '̀',\n \"'\": '́',\n '^': '̂',\n '~': '̃',\n '=': '̄',\n u: '̆',\n '.': '̇',\n '\"': '̈',\n r: '̊',\n H: '̋',\n v: '̌',\n b: '̲',\n d: '̣',\n c: '̧',\n k: '̨',\n t: '͡',\n textcommabelow: '̦',\n },\n commands: {\n textquotesingle: \"'\",\n textasciigrave: '`',\n textquotedbl: '\"',\n textdollar: '$',\n textless: '<',\n textgreater: '>',\n textbackslash: '\\\\',\n textasciicircum: '^',\n textunderscore: '_',\n textbraceleft: '{',\n textbar: '|',\n textbraceright: '}',\n textasciitilde: '~',\n textexclamdown: '¡',\n textcent: '¢',\n textsterling: '£',\n textcurrency: '¤',\n textyen: '¥',\n textbrokenbar: '¦',\n textsection: '§',\n textasciidieresis: '¨',\n textcopyright: '©',\n textordfeminine: 'ª',\n guillemetleft: '«',\n guillemotleft: '«',\n textlnot: '¬',\n textregistered: '®',\n textasciimacron: '¯',\n textdegree: '°',\n textpm: '±',\n texttwosuperior: '²',\n textthreesuperior: '³',\n textasciiacute: '´',\n textmu: 'µ',\n textparagraph: '¶',\n textperiodcentered: '·',\n textonesuperior: '¹',\n textordmasculine: 'º',\n guillemetright: '»',\n guillemotright: '»',\n textonequarter: '¼',\n textonehalf: '½',\n textthreequarters: '¾',\n textquestiondown: '¿',\n AE: 'Æ',\n DH: 'Ð',\n texttimes: '×',\n O: 'Ø',\n TH: 'Þ',\n ss: 'ß',\n ae: 'æ',\n dh: 'ð',\n textdiv: '÷',\n o: 'ø',\n th: 'þ',\n DJ: 'Đ',\n dj: 'đ',\n i: 'ı',\n IJ: 'IJ',\n ij: 'ij',\n L: 'Ł',\n l: 'ł',\n NG: 'Ŋ',\n ng: 'ŋ',\n OE: 'Œ',\n oe: 'œ',\n textflorin: 'ƒ',\n j: 'ȷ',\n textasciicaron: 'ˇ',\n textasciibreve: '˘',\n textacutedbl: '˝',\n textgravedbl: '˵',\n texttildelow: '˷',\n textbaht: '฿',\n SS: 'ẞ',\n textcompwordmark: '‌',\n textendash: '–',\n textemdash: '—',\n textbardbl: '‖',\n textquoteleft: '‘',\n textquoteright: '’',\n quotesinglbase: '‚',\n textquotedblleft: '“',\n textquotedblright: '”',\n quotedblbase: '„',\n textdagger: '†',\n textdaggerdbl: '‡',\n textbullet: '•',\n textellipsis: '…',\n textperthousand: '‰',\n textpertenthousand: '‱',\n guilsinglleft: '‹',\n guilsinglright: '›',\n textreferencemark: '※',\n textinterrobang: '‽',\n textfractionsolidus: '⁄',\n textlquill: '⁅',\n textrquill: '⁆',\n textdiscount: '⁒',\n textcolonmonetary: '₡',\n textlira: '₤',\n textnaira: '₦',\n textwon: '₩',\n textdong: '₫',\n texteuro: '€',\n textpeso: '₱',\n textcelsius: '℃',\n textnumero: '№',\n textcircledP: '℗',\n textrecipe: '℞',\n textservicemark: '℠',\n texttrademark: '™',\n textohm: 'Ω',\n textmho: '℧',\n textestimated: '℮',\n textleftarrow: '←',\n textuparrow: '↑',\n textrightarrow: '→',\n textdownarrow: '↓',\n textminus: '−',\n Hwithstroke: 'Ħ',\n hwithstroke: 'ħ',\n textasteriskcentered: '∗',\n textsurd: '√',\n textlangle: '〈',\n textrangle: '〉',\n textblank: '␢',\n textvisiblespace: '␣',\n textopenbullet: '◦',\n textbigcircle: '◯',\n textmusicalnote: '♪',\n textmarried: '⚭',\n textdivorced: '⚮',\n textinterrobangdown: '⸘',\n textcommabelow: null,\n copyright: '©',\n },\n mathCommands: {\n Gamma: 'Γ',\n Delta: 'Δ',\n Theta: 'Θ',\n Lambda: 'Λ',\n Xi: 'Ξ',\n Pi: 'Π',\n Sigma: 'Σ',\n Phi: 'Φ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n varepsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n pi: 'π',\n rho: 'ρ',\n varsigma: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n varphi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n vartheta: 'ϑ',\n Upsilon: 'ϒ',\n phi: 'ϕ',\n varpi: 'ϖ',\n varrho: 'ϱ',\n epsilon: 'ϵ',\n },\n}\n\nexport default unicode\n","// import _required from './required.json' assert { type: \"json\" };\n// import _fieldTypes from './fieldTypes.json' assert { type: \"json\" };\n// import unicode from './unicode.json' assert { type: \"json\" };\nimport _required from './required.js'\nimport _fieldTypes from './fieldTypes.js'\nimport unicode from './unicode.js'\nexport const required = _required\nexport const fieldTypes = _fieldTypes\nexport const diacritics = unicode.diacritics\nexport const commands = unicode.commands\nexport const mathCommands = unicode.mathCommands\nexport const defaultStrings = {\n jan: '01',\n feb: '02',\n mar: '03',\n apr: '04',\n may: '05',\n jun: '06',\n jul: '07',\n aug: '08',\n sep: '09',\n oct: '10',\n nov: '11',\n dec: '12',\n acmcs: 'ACM Computing Surveys',\n acta: 'Acta Informatica',\n cacm: 'Communications of the ACM',\n ibmjrd: 'IBM Journal of Research and Development',\n ibmsj: 'IBM Systems Journal',\n ieeese: 'IEEE Transactions on Software Engineering',\n ieeetc: 'IEEE Transactions on Computers',\n ieeetcad: 'IEEE Transactions on Computer-Aided Design of Integrated Circuits',\n ipl: 'Information Processing Letters',\n jacm: 'Journal of the ACM',\n jcss: 'Journal of Computer and System Sciences',\n scp: 'Science of Computer Programming',\n sicomp: 'SIAM Journal on Computing',\n tocs: 'ACM Transactions on Computer Systems',\n tods: 'ACM Transactions on Database Systems',\n tog: 'ACM Transactions on Graphics',\n toms: 'ACM Transactions on Mathematical Software',\n toois: 'ACM Transactions on Office Information Systems',\n toplas: 'ACM Transactions on Programming Languages and Systems',\n tcs: 'Theoretical Computer Science',\n}\nexport const formattingEnvs = {\n it: 'italics',\n itshape: 'italics',\n sl: 'italics',\n slshape: 'italics',\n em: 'italics',\n bf: 'bold',\n bfseries: 'bold',\n sc: 'smallcaps',\n scshape: 'smallcaps',\n rm: undefined,\n sf: undefined,\n tt: undefined,\n}\nexport const formattingCommands = {\n textit: 'italics',\n textsl: 'italics',\n emph: 'italics',\n mkbibitalic: 'italics',\n mkbibemph: 'italics',\n textbf: 'bold',\n strong: 'bold',\n mkbibbold: 'bold',\n textsc: 'smallcaps',\n textsuperscript: 'superscript',\n textsubscript: 'subscript',\n enquote: 'quotes',\n mkbibquote: 'quotes',\n textmd: undefined,\n textrm: undefined,\n textsf: undefined,\n texttt: undefined,\n textup: undefined,\n}\nexport const formatting = {\n italics: ['', ''],\n bold: ['', ''],\n superscript: ['', ''],\n subscript: ['', ''],\n smallcaps: ['', ''],\n nocase: ['', ''],\n quotes: ['\\u201C', '\\u201D'],\n}\nexport const argumentCommands = {\n ElsevierGlyph(glyph) {\n return String.fromCharCode(parseInt(glyph, 16))\n },\n href(url, text) {\n return url\n },\n url(url) {\n return url\n },\n}\nexport const ligaturePattern = /---?|''|``|~/g\nexport const ligatures = {\n '--': '\\u2013',\n '---': '\\u2014',\n '``': '\\u201C',\n \"''\": '\\u201D',\n '~': '\\u00A0',\n}\nexport const mathScriptFormatting = {\n '^': 'superscript',\n sp: 'superscript',\n _: 'subscript',\n sb: 'subscript',\n mathrm: undefined,\n}\nexport const mathScripts = {\n '^': {\n 0: '\\u2070',\n 1: '\\u00B9',\n 2: '\\u00B2',\n 3: '\\u00B3',\n 4: '\\u2074',\n 5: '\\u2075',\n 6: '\\u2076',\n 7: '\\u2077',\n 8: '\\u2078',\n 9: '\\u2079',\n '+': '\\u207A',\n '-': '\\u207B',\n '=': '\\u207C',\n '(': '\\u207D',\n ')': '\\u207E',\n i: '\\u2071',\n n: '\\u207F',\n },\n _: {\n 0: '\\u2080',\n 1: '\\u2081',\n 2: '\\u2082',\n 3: '\\u2083',\n 4: '\\u2084',\n 5: '\\u2085',\n 6: '\\u2086',\n 7: '\\u2087',\n 8: '\\u2088',\n 9: '\\u2089',\n '+': '\\u208A',\n '-': '\\u208B',\n '=': '\\u208C',\n '(': '\\u208D',\n ')': '\\u208E',\n a: '\\u2090',\n e: '\\u2091',\n o: '\\u2092',\n x: '\\u2093',\n '\\u0259': '\\u2094',\n h: '\\u2095',\n k: '\\u2096',\n l: '\\u2097',\n m: '\\u2098',\n n: '\\u2099',\n s: '\\u209A',\n p: '\\u209B',\n t: '\\u209C',\n },\n}\nexport const sentenceCaseLanguages = [\n 'american',\n 'british',\n 'canadian',\n 'english',\n 'australian',\n 'newzealand',\n 'usenglish',\n 'ukenglish',\n 'en',\n 'eng',\n 'en-au',\n 'en-bz',\n 'en-ca',\n 'en-cb',\n 'en-gb',\n 'en-ie',\n 'en-jm',\n 'en-nz',\n 'en-ph',\n 'en-tt',\n 'en-us',\n 'en-za',\n 'en-zw',\n 'anglais',\n]\n","import biblatex from './mapping/biblatexTypes.js'\nimport bibtex from './mapping/bibtexTypes.js'\nimport * as constants from './input/constants.js'\nexport default {\n constants,\n types: {\n biblatex,\n bibtex,\n },\n parse: {\n biblatex: true,\n strict: false,\n sentenceCase: 'never',\n },\n format: {\n useIdAsLabel: false,\n checkLabel: true,\n asciiOnly: true,\n },\n biber: {\n annotationMarker: '+an',\n namedAnnotationMarker: ':',\n },\n}\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { util, logger } from '../../core/index.js'\nimport moo from 'moo'\nimport config from '../config.js'\nimport { defaultStrings } from './constants.js'\nconst identifier = /[a-zA-Z_][a-zA-Z0-9_:+-]*/\nconst whitespace = {\n comment: /%.*/,\n whitespace: {\n match: /\\s+/,\n lineBreaks: true,\n },\n}\nconst lexer = moo.states({\n main: {\n junk: {\n match: /@[cC][oO][mM][mM][eE][nN][tT].+|[^@]+/,\n lineBreaks: true,\n },\n at: {\n match: '@',\n push: 'entry',\n },\n },\n entry: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n otherEntryType: {\n match: /[sS][tT][rR][iI][nN][gG]|[pP][rR][eE][aA][mM][bB][lL][eE]/,\n next: 'otherEntryContents',\n },\n dataEntryType: {\n match: identifier,\n next: 'dataEntryContents',\n },\n }\n ),\n otherEntryContents: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n lbrace: {\n match: /[{(]/,\n next: 'fields',\n },\n }\n ),\n dataEntryContents: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n lbrace: {\n match: /[{(]/,\n next: 'dataEntryContents',\n },\n label: /[^,\\s]+/,\n comma: {\n match: ',',\n next: 'fields',\n },\n }\n ),\n fields: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n identifier,\n number: /-?\\d+/,\n hash: '#',\n equals: '=',\n comma: ',',\n quote: {\n match: '\"',\n push: 'quotedLiteral',\n },\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n rbrace: {\n match: /[})]/,\n pop: true,\n },\n }\n ),\n quotedLiteral: {\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n quote: {\n match: '\"',\n pop: true,\n },\n text: {\n match: /(?:\\\\[\\\\{]|[^{\"])+/,\n lineBreaks: true,\n },\n },\n bracedLiteral: {\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n rbrace: {\n match: '}',\n pop: true,\n },\n text: {\n match: /(?:\\\\[\\\\{}]|[^{}])+/,\n lineBreaks: true,\n },\n },\n})\nconst delimiters = {\n '(': ')',\n '{': '}',\n}\nexport const bibtexGrammar = new util.Grammar(\n {\n Main() {\n const entries = []\n while (true) {\n while (this.matchToken('junk')) {\n this.consumeToken('junk')\n }\n if (this.matchEndOfFile()) {\n break\n }\n entries.push(this.consumeRule('Entry'))\n }\n return entries.filter(Boolean)\n },\n _() {\n let oldToken\n while (oldToken !== this.token) {\n oldToken = this.token\n this.consumeToken('whitespace', true)\n this.consumeToken('comment', true)\n }\n },\n Entry() {\n this.consumeToken('at')\n this.consumeRule('_')\n const type = (\n this.matchToken('otherEntryType')\n ? this.consumeToken('otherEntryType')\n : this.consumeToken('dataEntryType')\n ).value.toLowerCase()\n this.consumeRule('_')\n const openBrace = this.consumeToken('lbrace').value\n this.consumeRule('_')\n let result\n if (type === 'string') {\n const [key, value] = this.consumeRule('Field')\n this.state.strings[key] = value\n } else if (type === 'preamble') {\n this.consumeRule('Expression')\n } else {\n const label = this.consumeToken('label').value\n this.consumeRule('_')\n this.consumeToken('comma')\n this.consumeRule('_')\n const entryBody = this.consumeRule('EntryBody')\n result = _objectSpread(\n {\n type,\n label,\n },\n entryBody\n )\n }\n this.consumeRule('_')\n const closeBrace = this.consumeToken('rbrace').value\n if (closeBrace !== delimiters[openBrace]) {\n logger.warn(\n '[plugin-bibtex]',\n `entry started with \"${openBrace}\", but ends with \"${closeBrace}\"`\n )\n }\n return result\n },\n EntryBody() {\n const output = {\n properties: {},\n }\n while (this.matchToken('identifier')) {\n const [field, value] = this.consumeRule('Field')\n let annotationField\n let annotationName = 'default'\n if (field.endsWith(config.biber.annotationMarker)) {\n annotationField = field.slice(0, -config.biber.annotationMarker.length)\n } else if (\n field.includes(config.biber.annotationMarker + config.biber.namedAnnotationMarker)\n ) {\n ;[annotationField, annotationName] = field.split(\n config.biber.annotationMarker + config.biber.namedAnnotationMarker\n )\n }\n if (annotationField) {\n if (!output.annotations) {\n output.annotations = {}\n }\n if (!output.annotations[annotationField]) {\n output.annotations[annotationField] = {}\n }\n output.annotations[annotationField][annotationName] = value\n } else {\n output.properties[field] = value\n }\n this.consumeRule('_')\n if (this.consumeToken('comma', true)) {\n this.consumeRule('_')\n } else {\n break\n }\n }\n return output\n },\n Field() {\n const field = this.consumeToken('identifier').value.toLowerCase()\n this.consumeRule('_')\n this.consumeToken('equals')\n this.consumeRule('_')\n const value = this.consumeRule('Expression')\n return [field, value]\n },\n Expression() {\n let output = this.consumeRule('ExpressionPart')\n this.consumeRule('_')\n while (this.matchToken('hash')) {\n this.consumeToken('hash')\n this.consumeRule('_')\n output += this.consumeRule('ExpressionPart').toString()\n this.consumeRule('_')\n }\n return output\n },\n ExpressionPart() {\n if (this.matchToken('identifier')) {\n return this.state.strings[this.consumeToken('identifier').value.toLowerCase()] || ''\n } else if (this.matchToken('number')) {\n return parseInt(this.consumeToken('number'))\n } else if (this.matchToken('quote')) {\n return this.consumeRule('QuoteString')\n } else {\n return this.consumeRule('BracketString')\n }\n },\n QuoteString() {\n let output = ''\n this.consumeToken('quote')\n while (!this.matchToken('quote')) {\n output += this.consumeRule('Text')\n }\n this.consumeToken('quote')\n return output\n },\n BracketString() {\n let output = ''\n this.consumeToken('lbrace')\n while (!this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n this.consumeToken('rbrace')\n return output\n },\n Text() {\n if (this.matchToken('lbrace')) {\n return `{${this.consumeRule('BracketString')}}`\n } else {\n return this.consumeToken('text').value\n }\n },\n },\n {\n strings: defaultStrings,\n }\n)\nexport function parse(text) {\n return bibtexGrammar.parse(lexer.reset(text))\n}\n","const bibTxtRegex = {\n splitEntries: /\\n\\s*(?=\\[)/g,\n parseEntry: /^\\[(.+?)\\]\\s*(?:\\n([\\s\\S]+))?$/,\n splitPairs: /((?=.)\\s)*\\n\\s*/g,\n splitPair: /:(.*)/,\n}\nconst parseBibTxtEntry = (entry) => {\n const [, label, pairs] = entry.match(bibTxtRegex.parseEntry) || []\n if (!label || !pairs) {\n return {}\n } else {\n const out = {\n type: 'book',\n label,\n properties: {},\n }\n pairs\n .trim()\n .split(bibTxtRegex.splitPairs)\n .filter((v) => v)\n .forEach((pair) => {\n let [key, value] = pair.split(bibTxtRegex.splitPair)\n if (value) {\n key = key.trim()\n value = value.trim()\n if (key === 'type') {\n out.type = value\n } else {\n out.properties[key] = value\n }\n }\n })\n return out\n }\n}\nconst parseBibTxt = (src) => src.trim().split(bibTxtRegex.splitEntries).map(parseBibTxtEntry)\nexport { parseBibTxt as parse, parseBibTxt as text, parseBibTxtEntry as textEntry }\n","// @ts-nocheck\nimport { util } from '../../core/index.js'\nimport config from '../config.js'\nconst stopWords = new Set(['the', 'a', 'an'])\nconst unsafeChars = /(?:<\\/?.*?>|[\\u0020-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F])+/g\nconst unicode = /[^\\u0020-\\u007F]+/g\nfunction isLabelSafe(text) {\n return !config.format.checkLabel || !text.match(unsafeChars)\n}\nfunction formatLabelFromId(id) {\n if (id === null) {\n return 'null'\n } else if (id === undefined) {\n return 'undefined'\n } else if (config.format.checkLabel) {\n return id.toString().replace(unsafeChars, '')\n } else {\n return id.toString()\n }\n}\nfunction firstWord(text) {\n if (!text) {\n return ''\n } else {\n return text\n .normalize('NFKD')\n .replace(unicode, '')\n .split(unsafeChars)\n .find((word) => word.length && !stopWords.has(word.toLowerCase()))\n }\n}\nconst name = new util.Translator([\n {\n source: 'given',\n target: 'given',\n },\n {\n source: 'family',\n target: 'family',\n },\n {\n source: 'suffix',\n target: 'suffix',\n },\n {\n source: 'prefix',\n target: 'non-dropping-particle',\n },\n {\n source: 'family',\n target: 'literal',\n when: {\n source: false,\n target: {\n family: false,\n given: false,\n },\n },\n },\n])\nconst months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']\nexport const TYPE = 'BibTeX type'\nexport const LABEL = 'BibTeX label'\nexport const MONTHS = {\n jan: 1,\n feb: 2,\n mar: 3,\n apr: 4,\n may: 5,\n jun: 6,\n jul: 7,\n aug: 8,\n sep: 9,\n oct: 10,\n nov: 11,\n dec: 12,\n january: 1,\n february: 2,\n march: 3,\n april: 4,\n may: 5,\n june: 6,\n july: 7,\n august: 8,\n september: 9,\n october: 10,\n november: 11,\n december: 12,\n}\nexport const TYPE_KEYS = {\n bathesis: \"Bachelor's thesis\",\n mathesis: \"Master's thesis\",\n phdthesis: 'PhD thesis',\n candthesis: 'Candidate thesis',\n techreport: 'technical report',\n resreport: 'research report',\n software: 'computer software',\n datacd: 'data cd',\n audiocd: 'audio cd',\n patent: 'patent',\n patentde: 'German patent',\n patenteu: 'European patent',\n patentfr: 'French patent',\n patentuk: 'British patent',\n patentus: 'U.S. patent',\n patreq: 'patent request',\n patreqde: 'German patent request',\n patreqeu: 'European patent request',\n patreqfr: 'French patent request',\n patrequk: 'British patent request',\n patrequs: 'U.S. patent request',\n}\nexport const STANDARD_NUMBERS_PATTERN =\n /(^(?:ISAN )?(?:[0-9a-f]{4}-){4}[0-9a-z](?:-(?:[0-9a-f]{4}-){2}[0-9a-z])?$)|(^(?:979-?0-?|M-?)(?:\\d{9}|(?=[\\d-]{11}$)\\d+-\\d+-\\d)$)|(^ISRN .{1,36}$)|(^(?:ISWC )?T-?\\d{9}-?\\d$)/i\nexport function parseDate(date) {\n const parts = date\n .split('T')[0]\n .replace(/[?~%]$/, '')\n .split('-')\n const year = +parts[0].replace(/^Y(?=-?\\d{4}\\d+)/, '').replace(/X/g, '0')\n const month = +parts[1]\n const day = +parts[2]\n if (!month || month > 20) {\n return [year]\n } else if (!day) {\n return [year, month]\n } else {\n return [year, month, day]\n }\n}\nexport function parseMonth(value) {\n if (value == null) {\n return []\n }\n if (+value) {\n return [parseInt(value, 10)]\n }\n value = value.trim().toLowerCase()\n if (value in MONTHS) {\n return [MONTHS[value]]\n }\n const parts = value.split(/\\s+/)\n let month\n let day\n if (parts[0] in MONTHS) {\n month = MONTHS[parts[0]]\n day = parseInt(parts[1])\n } else if (parts[1] in MONTHS) {\n month = MONTHS[parts[1]]\n day = parseInt(parts[0])\n }\n return day ? [month, day] : month ? [month] : []\n}\nexport function formatLabel(author, issued, suffix, title) {\n let label = ''\n if (author && author[0]) {\n label += firstWord(author[0].family || author[0].literal)\n }\n if (issued && issued['date-parts'] && issued['date-parts'][0]) {\n label += issued['date-parts'][0][0]\n }\n if (suffix) {\n label += suffix\n } else if (title) {\n label += firstWord(title)\n }\n return label\n}\nexport const Converters = {\n PICK: {\n toTarget(...args) {\n return args.find(Boolean)\n },\n toSource(value) {\n return [value]\n },\n },\n DATE: {\n toTarget(date) {\n const parts = date\n .split('/')\n .map((part) => (part && part !== '..' ? parseDate(part) : undefined))\n return isNaN(parts[0][0])\n ? {\n literal: date,\n }\n : {\n 'date-parts': parts,\n }\n },\n toSource(date) {\n if ('date-parts' in date) {\n return date['date-parts']\n .map((datePart) =>\n datePart.map((datePart) => datePart.toString().padStart(2, '0')).join('-')\n )\n .join('/')\n }\n },\n },\n YEAR_MONTH: {\n toTarget(year, month, day) {\n if (isNaN(+year)) {\n return {\n literal: year,\n }\n } else if (!isNaN(+day) && !isNaN(+month)) {\n return {\n 'date-parts': [[+year, +month, +day]],\n }\n } else {\n return {\n 'date-parts': [[+year, ...parseMonth(month)]],\n }\n }\n },\n toSource(date) {\n if ('date-parts' in date) {\n const [year, month, day] = date['date-parts'][0]\n return [year.toString(), month ? (day ? `${months[month - 1]} ${day}` : month) : undefined]\n } else {\n return []\n }\n },\n },\n EPRINT: {\n toTarget(id, type) {\n if (type === 'pubmed') {\n return id\n }\n },\n toSource(id) {\n return [id, 'pubmed']\n },\n },\n EVENT_TITLE: {\n toTarget(title, addon) {\n if (addon) {\n title += ' (' + addon + ')'\n }\n return title\n },\n toSource(title) {\n return title.match(/^(.+)(?: \\((.+)\\))?$/).slice(1, 3)\n },\n },\n HOW_PUBLISHED: {\n toTarget(howPublished) {\n if (howPublished.startsWith('http')) {\n return howPublished\n }\n },\n },\n KEYWORDS: {\n toTarget(list) {\n return list.join(',')\n },\n toSource(list) {\n return list.split(',')\n },\n },\n LABEL: {\n toTarget(label) {\n return [label, label]\n },\n toSource(id, label, author, issued, suffix, title) {\n if (label && isLabelSafe(label)) {\n return label\n } else if (config.format.useIdAsLabel) {\n return formatLabelFromId(id)\n } else {\n return formatLabel(author, issued, suffix, title) || formatLabelFromId(id)\n }\n },\n },\n NAMES: {\n toTarget(list) {\n return list.map(name.convertToTarget)\n },\n toSource(list) {\n return list.map(name.convertToSource)\n },\n },\n NAMES_ORCID: {\n toTarget(list, orcid) {\n return list.map((inputName, i) => {\n var _orcid$item\n const outputName = name.convertToTarget(inputName)\n if (\n typeof (orcid === null ||\n orcid === void 0 ||\n (_orcid$item = orcid.item) === null ||\n _orcid$item === void 0\n ? void 0\n : _orcid$item[i]) === 'string'\n ) {\n outputName._orcid = orcid.item[i]\n }\n return outputName\n })\n },\n toSource(list) {\n const names = []\n const orcid = []\n for (let i = 0; i < list.length; i++) {\n names.push(name.convertToSource(list[i]))\n if (list[i]._orcid) {\n orcid[i] = list[i]._orcid\n }\n }\n return [\n names,\n orcid.length\n ? {\n item: orcid,\n }\n : undefined,\n ]\n },\n },\n PAGES: {\n toTarget(pages) {\n return pages.replace(/[–—]/, '-')\n },\n toSource(pages) {\n return pages.replace('-', '--')\n },\n },\n STANDARD_NUMBERS: {\n toTarget(...args) {\n return args.find(Boolean)\n },\n toSource(number) {\n const match = number.toString().match(STANDARD_NUMBERS_PATTERN)\n return match ? match.slice(1, 5) : []\n },\n },\n STATUS: {\n toSource(state) {\n if (/^(inpreparation|submitted|forthcoming|inpress|prepublished)$/i.test(state)) {\n return state\n }\n },\n },\n TITLE: {\n toTarget(title, subtitle, addon) {\n if (subtitle) {\n title += ': ' + subtitle\n }\n return title\n },\n toSource(title) {\n return [title]\n },\n },\n}\n","import { util } from '../../core/index.js'\nimport { format as formatDate } from '@citation-js/date'\nimport types from './biblatexTypes.js'\nimport { TYPE, LABEL, TYPE_KEYS, Converters } from './shared.js'\nconst nonSpec = [\n {\n source: 'note',\n target: 'accessed',\n when: {\n source: false,\n target: {\n note: false,\n addendum: false,\n },\n },\n convert: {\n toSource(accessed) {\n return `[Online; accessed ${formatDate(accessed)}]`\n },\n },\n },\n {\n source: 'numpages',\n target: 'number-of-pages',\n when: {\n source: {\n pagetotal: false,\n },\n target: false,\n },\n },\n {\n source: 'pmid',\n target: 'PMID',\n when: {\n source: {\n eprinttype(type) {\n return type !== 'pmid'\n },\n archiveprefix(type) {\n return type !== 'pmid'\n },\n },\n target: false,\n },\n },\n {\n source: 'pmcid',\n target: 'PMCID',\n when: {\n target: false,\n },\n },\n {\n source: 's2id',\n target: 'custom',\n convert: {\n toTarget(S2ID) {\n return {\n S2ID,\n }\n },\n toSource({ S2ID }) {\n return S2ID\n },\n },\n },\n]\nconst aliases = [\n {\n source: 'annote',\n target: 'annote',\n when: {\n source: {\n annotation: false,\n },\n target: false,\n },\n },\n {\n source: 'address',\n target: 'publisher-place',\n convert: Converters.PICK,\n when: {\n source: {\n location: false,\n },\n target: false,\n },\n },\n {\n source: ['eprint', 'archiveprefix'],\n target: 'PMID',\n convert: Converters.EPRINT,\n when: {\n source: {\n eprinttype: false,\n },\n target: false,\n },\n },\n {\n source: 'journal',\n target: 'container-title',\n when: {\n source: {\n maintitle: false,\n booktitle: false,\n journaltitle: false,\n },\n target: false,\n },\n },\n {\n source: 'school',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n institution: false,\n organization: false,\n publisher: false,\n },\n target: false,\n },\n },\n]\nexport default new util.Translator([\n ...aliases,\n ...nonSpec,\n {\n source: 'abstract',\n target: 'abstract',\n },\n {\n source: 'urldate',\n target: 'accessed',\n convert: Converters.DATE,\n },\n {\n source: 'annotation',\n target: 'annote',\n },\n {\n source: ['author', 'author+an:orcid'],\n target: 'author',\n convert: Converters.NAMES_ORCID,\n },\n {\n source: 'library',\n target: 'call-number',\n },\n {\n source: 'chapter',\n target: 'chapter-number',\n },\n {\n source: 'bookauthor',\n target: 'container-author',\n convert: Converters.NAMES,\n },\n {\n source: ['maintitle', 'mainsubtitle', 'maintitleaddon'],\n target: 'container-title',\n when: {\n source: true,\n target: {\n 'number-of-volumes': true,\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: ['booktitle', 'booksubtitle', 'booktitleaddon'],\n target: 'container-title',\n when: {\n source: {\n maintitle: false,\n },\n target: {\n 'number-of-volumes': false,\n type(type) {\n return !type || !type.startsWith('article')\n },\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: ['journaltitle', 'journalsubtitle', 'journaltitleaddon'],\n target: 'container-title',\n when: {\n source: {\n [TYPE]: 'article',\n },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: 'shortjournal',\n target: 'container-title-short',\n when: {\n source: {\n [TYPE]: 'article',\n },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n },\n {\n source: 'shortjournal',\n target: 'journalAbbreviation',\n when: {\n source: false,\n target: {\n 'container-title-short': false,\n },\n },\n },\n {\n source: 'number',\n target: 'collection-number',\n when: {\n source: {\n [TYPE]: [\n 'book',\n 'mvbook',\n 'inbook',\n 'bookinbook',\n 'suppbook',\n 'collection',\n 'mvcollection',\n 'incollection',\n 'suppcollection',\n 'manual',\n 'suppperiodical',\n 'proceedings',\n 'mvproceedings',\n 'refererence',\n ],\n },\n target: {\n type: [\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'dataset',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'figure',\n 'graphic',\n 'interview',\n 'legislation',\n 'legal_case',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'post',\n 'post-weblog',\n 'personal_communication',\n 'review',\n 'review-book',\n 'song',\n 'speech',\n 'thesis',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'series',\n target: 'collection-title',\n },\n {\n source: 'shortseries',\n target: 'collection-title-short',\n },\n {\n source: 'doi',\n target: 'DOI',\n },\n {\n source: 'edition',\n target: 'edition',\n },\n {\n source: 'editor',\n target: 'editor',\n convert: Converters.NAMES,\n },\n {\n source: [TYPE, 'entrysubtype', 'type'],\n target: ['type', 'genre'],\n convert: {\n toTarget(type, subtype, typeKey) {\n if (!typeKey) {\n if (type === 'mastersthesis') {\n typeKey = 'mathesis'\n }\n if (type === 'phdthesis') {\n typeKey = 'phdthesis'\n }\n if (type === 'techreport') {\n typeKey = 'techreport'\n }\n }\n return [types.source[type] || 'document', typeKey || subtype]\n },\n toSource(type, genre) {\n const sourceType = types.target[type] || 'misc'\n return genre in TYPE_KEYS ? [sourceType, undefined, genre] : [sourceType, genre]\n },\n },\n },\n {\n source: TYPE,\n when: {\n target: {\n type: false,\n },\n },\n convert: {\n toSource() {\n return 'misc'\n },\n },\n },\n {\n source: 'eventdate',\n target: 'event-date',\n convert: Converters.DATE,\n },\n {\n source: 'venue',\n target: 'event-place',\n },\n {\n source: ['eventtitle', 'eventtitleaddon'],\n target: 'event-title',\n convert: Converters.EVENT_TITLE,\n },\n {\n source: ['eventtitle', 'eventtitleaddon'],\n target: 'event',\n convert: Converters.EVENT_TITLE,\n when: {\n source: false,\n target: {\n 'event-title': false,\n },\n },\n },\n {\n source: LABEL,\n target: ['id', 'citation-key', 'author', 'issued', 'year-suffix', 'title'],\n convert: Converters.LABEL,\n },\n {\n source: 'isbn',\n target: 'ISBN',\n },\n {\n source: 'issn',\n target: 'ISSN',\n },\n {\n source: 'issue',\n target: 'issue',\n when: {\n source: {\n number: false,\n [TYPE]: ['article', 'periodical'],\n },\n target: {\n issue(issue) {\n return typeof issue === 'string' && !issue.match(/\\d+/)\n },\n type: ['article', 'article-journal', 'article-newspaper', 'article-magazine', 'periodical'],\n },\n },\n },\n {\n source: 'number',\n target: 'issue',\n when: {\n source: {\n [TYPE]: ['article', 'periodical', 'inproceedings'],\n },\n target: {\n issue(issue) {\n return issue && (typeof issue === 'number' || issue.match(/\\d+/))\n },\n type: [\n 'article',\n 'article-journal',\n 'article-newspaper',\n 'article-magazine',\n 'paper-conference',\n 'periodical',\n ],\n },\n },\n },\n {\n source: 'date',\n target: 'issued',\n convert: Converters.DATE,\n },\n {\n source: ['year', 'month', 'day'],\n target: 'issued',\n convert: Converters.YEAR_MONTH,\n when: {\n source: {\n date: false,\n },\n target: false,\n },\n },\n {\n source: 'location',\n target: 'jurisdiction',\n when: {\n source: {\n type: 'patent',\n },\n target: {\n type: 'patent',\n },\n },\n },\n {\n source: 'keywords',\n target: 'keyword',\n convert: Converters.KEYWORDS,\n },\n {\n source: 'language',\n target: 'language',\n convert: Converters.PICK,\n },\n {\n source: 'langid',\n target: 'language',\n when: {\n source: {\n language: false,\n },\n target: false,\n },\n },\n {\n source: 'note',\n target: 'note',\n },\n {\n source: 'addendum',\n target: 'note',\n when: {\n source: {\n note: false,\n },\n target: false,\n },\n },\n {\n source: 'eid',\n target: 'number',\n when: {\n target: {\n type: ['article-journal'],\n },\n },\n },\n {\n source: ['isan', 'ismn', 'isrn', 'iswc'],\n target: 'number',\n convert: Converters.STANDARD_NUMBERS,\n when: {\n source: {\n [TYPE](type) {\n return type !== 'patent'\n },\n },\n target: {\n type(type) {\n return type !== 'patent'\n },\n },\n },\n },\n {\n source: 'number',\n target: 'number',\n when: {\n source: {\n [TYPE]: ['patent', 'report', 'techreport', 'legislation'],\n },\n target: {\n type: ['patent', 'report', 'legislation'],\n },\n },\n },\n {\n source: 'origdate',\n target: 'original-date',\n convert: Converters.DATE,\n },\n {\n source: 'origlocation',\n target: 'original-publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'origpublisher',\n target: 'original-publisher',\n convert: Converters.PICK,\n },\n {\n source: 'origtitle',\n target: 'original-title',\n },\n {\n source: 'pages',\n target: 'page',\n when: {\n source: {\n bookpagination: [undefined, 'page'],\n },\n },\n convert: Converters.PAGES,\n },\n {\n source: 'pagetotal',\n target: 'number-of-pages',\n },\n {\n source: 'part',\n target: 'part-number',\n },\n {\n source: ['eprint', 'eprinttype'],\n target: 'PMID',\n convert: Converters.EPRINT,\n },\n {\n source: 'location',\n target: 'publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'publisher',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: true,\n target: {\n type: [\n 'article',\n 'article-journal',\n 'article-magazine',\n 'article-newspaper',\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'classic',\n 'collection',\n 'dataset',\n 'document',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'event',\n 'figure',\n 'graphic',\n 'hearing',\n 'interview',\n 'legal_case',\n 'legislation',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'paper-conference',\n 'patent',\n 'performance',\n 'periodical',\n 'personal_communication',\n 'post',\n 'post-weblog',\n 'regulation',\n 'review',\n 'review-book',\n 'software',\n 'song',\n 'speech',\n 'standard',\n 'treaty',\n ],\n },\n },\n },\n {\n source: 'organization',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n },\n target: {\n type: 'webpage',\n },\n },\n },\n {\n source: 'institution',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n organization: false,\n },\n target: {\n type: ['report', 'thesis'],\n },\n },\n },\n {\n source: 'howpublished',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n howpublished(howPublished) {\n return howPublished && !howPublished.startsWith('http')\n },\n publisher: false,\n organization: false,\n institution: false,\n },\n target: {\n type: 'manuscript',\n },\n },\n },\n {\n source: ['pages', 'bookpagination'],\n target: 'section',\n when: {\n source: {\n bookpagination: 'section',\n },\n target: {\n page: false,\n },\n },\n convert: {\n toTarget(section) {\n return section\n },\n toSource(section) {\n return [section, 'section']\n },\n },\n },\n {\n source: 'pubstate',\n target: 'status',\n convert: Converters.STATUS,\n },\n {\n source: 'shorttitle',\n target: 'title-short',\n },\n {\n source: 'shorttitle',\n target: 'shortTitle',\n when: {\n source: false,\n target: {\n 'title-short': false,\n },\n },\n },\n {\n source: ['title', 'subtitle', 'titleaddon'],\n target: 'title',\n convert: Converters.TITLE,\n },\n {\n source: 'translator',\n target: 'translator',\n convert: Converters.NAMES,\n },\n {\n source: 'url',\n target: 'URL',\n },\n {\n source: 'howpublished',\n target: 'URL',\n convert: Converters.HOW_PUBLISHED,\n when: {\n source: {\n url: false,\n },\n target: false,\n },\n },\n {\n source: 'version',\n target: 'version',\n },\n {\n source: 'volume',\n target: 'volume',\n },\n {\n source: 'volumes',\n target: 'number-of-volumes',\n },\n {\n source: ['issuetitle', 'issuesubtitle', 'issuetitleaddon'],\n target: 'volume-title',\n convert: Converters.TITLE,\n },\n])\n","import { util } from '../../core/index.js'\nimport { format as formatDate } from '@citation-js/date'\nimport types from './bibtexTypes.js'\nimport { TYPE, LABEL, Converters } from './shared.js'\nexport default new util.Translator([\n {\n source: 'note',\n target: 'accessed',\n when: {\n source: false,\n target: {\n note: false,\n },\n },\n convert: {\n toSource(accessed) {\n return `[Online; accessed ${formatDate(accessed)}]`\n },\n },\n },\n {\n source: 'annote',\n target: 'annote',\n },\n {\n source: 'address',\n target: 'publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'author',\n target: 'author',\n convert: Converters.NAMES,\n },\n {\n source: 'chapter',\n target: 'chapter-number',\n },\n {\n source: 'number',\n target: 'collection-number',\n when: {\n source: {\n [TYPE]: [\n 'book',\n 'mvbook',\n 'inbook',\n 'collection',\n 'mvcollection',\n 'incollection',\n 'suppcollection',\n 'manual',\n 'suppperiodical',\n 'proceedings',\n 'mvproceedings',\n 'refererence',\n ],\n },\n target: {\n type: [\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'dataset',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'figure',\n 'graphic',\n 'interview',\n 'legislation',\n 'legal_case',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'post',\n 'post-weblog',\n 'personal_communication',\n 'review',\n 'review-book',\n 'song',\n 'speech',\n 'thesis',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'series',\n target: 'collection-title',\n },\n {\n source: 'booktitle',\n target: 'container-title',\n when: {\n target: {\n type: ['chapter', 'paper-conference'],\n },\n },\n },\n {\n source: 'journal',\n target: 'container-title',\n when: {\n source: {\n [TYPE]: 'article',\n },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n },\n {\n source: 'doi',\n target: 'DOI',\n },\n {\n source: 'edition',\n target: 'edition',\n },\n {\n source: 'editor',\n target: 'editor',\n convert: Converters.NAMES,\n },\n {\n source: LABEL,\n target: ['id', 'citation-key', 'author', 'issued', 'year-suffix', 'title'],\n convert: Converters.LABEL,\n },\n {\n source: 'isbn',\n target: 'ISBN',\n },\n {\n source: 'issn',\n target: 'ISSN',\n },\n {\n source: 'number',\n target: 'issue',\n when: {\n source: {\n [TYPE]: ['article', 'periodical', 'inproceedings'],\n },\n target: {\n issue(issue) {\n return typeof issue === 'number' || (typeof issue === 'string' && issue.match(/\\d+/))\n },\n type: [\n 'article',\n 'article-journal',\n 'article-newspaper',\n 'article-magazine',\n 'paper-conference',\n 'periodical',\n ],\n },\n },\n },\n {\n source: ['year', 'month', 'day'],\n target: 'issued',\n convert: Converters.YEAR_MONTH,\n },\n {\n source: 'note',\n target: 'note',\n },\n {\n source: 'number',\n target: 'number',\n when: {\n source: {\n [TYPE]: ['patent', 'report', 'techreport'],\n },\n target: {\n type: ['patent', 'report'],\n },\n },\n },\n {\n source: 'eid',\n target: 'number',\n when: {\n source: {\n number: false,\n },\n target: {\n type: ['article-journal'],\n },\n },\n },\n {\n source: 'pages',\n target: 'page',\n convert: Converters.PAGES,\n },\n {\n source: 'publisher',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n target: {\n type: [\n 'article',\n 'article-journal',\n 'article-magazine',\n 'article-newspaper',\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'classic',\n 'collection',\n 'dataset',\n 'document',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'event',\n 'figure',\n 'graphic',\n 'hearing',\n 'interview',\n 'legal_case',\n 'legislation',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'patent',\n 'performance',\n 'periodical',\n 'personal_communication',\n 'post',\n 'post-weblog',\n 'regulation',\n 'review',\n 'review-book',\n 'software',\n 'song',\n 'speech',\n 'standard',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'organization',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n },\n target: {\n type: 'paper-conference',\n },\n },\n },\n {\n source: 'institution',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n organization: false,\n },\n target: {\n type: 'report',\n },\n },\n },\n {\n source: 'school',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n institution: false,\n organization: false,\n publisher: false,\n },\n target: {\n type: 'thesis',\n },\n },\n },\n {\n source: 'howpublished',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n howpublished(howPublished) {\n return howPublished && !howPublished.startsWith('http')\n },\n publisher: false,\n organization: false,\n institution: false,\n school: false,\n },\n target: {\n type: 'manuscript',\n },\n },\n },\n {\n source: 'title',\n target: 'title',\n },\n {\n source: [TYPE, 'type'],\n target: ['type', 'genre'],\n convert: {\n toTarget(sourceType, subType) {\n const type = types.source[sourceType] || 'document'\n if (subType) {\n return [type, subType]\n } else if (sourceType === 'mastersthesis') {\n return [type, \"Master's thesis\"]\n } else if (sourceType === 'phdthesis') {\n return [type, 'PhD thesis']\n } else {\n return [type]\n }\n },\n toSource(targetType, genre) {\n const type = types.target[targetType] || 'misc'\n if (/^(master'?s|diploma) thesis$/i.test(genre)) {\n return ['mastersthesis']\n } else if (/^(phd|doctoral) thesis$/i.test(genre)) {\n return ['phdthesis']\n } else {\n return [type, genre]\n }\n },\n },\n },\n {\n source: TYPE,\n when: {\n target: {\n type: false,\n },\n },\n convert: {\n toSource() {\n return 'misc'\n },\n },\n },\n {\n source: 'url',\n target: 'URL',\n },\n {\n source: 'howpublished',\n target: 'URL',\n convert: Converters.HOW_PUBLISHED,\n when: {\n target: {\n publisher: false,\n },\n },\n },\n {\n source: 'volume',\n target: 'volume',\n },\n])\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nconst BOOK = new Set(['book', 'inbook', 'bookinbook', 'suppbook'])\nconst BOOK_PART = new Set(['inbook', 'bookinbook', 'suppbook'])\nconst COLLECTION = new Set([\n 'collection',\n 'reference',\n 'incollection',\n 'inreference',\n 'suppcollection',\n])\nconst COLLECTION_PART = new Set(['incollection', 'inreference', 'suppcollection'])\nconst PROCEEDINGS = new Set(['proceedings', 'inproceedings'])\nconst PROCEEDINGS_PART = new Set(['inproceedings'])\nconst PERIODICAL_PART = new Set(['article', 'suppperiodical'])\nconst TITLE_MAP = {\n mvbook: ['main', BOOK],\n mvcollection: ['main', COLLECTION],\n mvreference: ['main', COLLECTION],\n mvproceedings: ['main', PROCEEDINGS],\n book: ['book', BOOK_PART],\n collection: ['book', COLLECTION_PART],\n reference: ['book', COLLECTION_PART],\n proceedings: ['book', PROCEEDINGS_PART],\n periodical: ['journal', PERIODICAL_PART],\n}\nexport function crossref(target, entry, registry) {\n if (entry.crossref in registry) {\n const parent = registry[entry.crossref]\n if (parent.properties === entry) {\n return entry\n }\n const data = _objectSpread({}, crossref(parent.type, parent.properties, registry))\n delete data.ids\n delete data.crossref\n delete data.xref\n delete data.entryset\n delete data.entrysubtype\n delete data.execute\n delete data.label\n delete data.options\n delete data.presort\n delete data.related\n delete data.relatedoptions\n delete data.relatedstring\n delete data.relatedtype\n delete data.shortand\n delete data.shortandintro\n delete data.sortkey\n if ((parent.type === 'mvbook' || parent.type === 'book') && BOOK_PART.has(target)) {\n data.bookauthor = data.author\n }\n if (parent.type in TITLE_MAP) {\n const [prefix, targets] = TITLE_MAP[parent.type]\n if (targets.has(target)) {\n data[prefix + 'title'] = data.title\n data[prefix + 'subtitle'] = data.subtitle\n if (prefix !== 'journal') {\n data[prefix + 'titleaddon'] = data.titleaddon\n }\n delete data.title\n delete data.subtitle\n delete data.titleaddon\n delete data.shorttitle\n delete data.sorttitle\n delete data.indextitle\n delete data.indexsorttitle\n }\n }\n return Object.assign(data, entry)\n }\n return entry\n}\n","function _objectWithoutProperties(source, excluded) {\n if (source == null) return {}\n var target = _objectWithoutPropertiesLoose(source, excluded)\n var key, i\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source)\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i]\n if (excluded.indexOf(key) >= 0) continue\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue\n target[key] = source[key]\n }\n }\n return target\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {}\n var target = {}\n var sourceKeys = Object.keys(source)\n var key, i\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i]\n if (excluded.indexOf(key) >= 0) continue\n target[key] = source[key]\n }\n return target\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { TYPE, LABEL } from './shared.js'\nimport biblatex from './biblatex.js'\nimport bibtex from './bibtex.js'\nimport { crossref } from './crossref.js'\nfunction _parse(input, spec) {\n const registry = {}\n for (const entry of input) {\n registry[entry.label] = entry\n }\n return input.map(({ type, label, properties }) =>\n spec.convertToTarget(\n _objectSpread(\n {\n [TYPE]: type,\n [LABEL]: label,\n },\n crossref(type, properties, registry)\n )\n )\n )\n}\nfunction _format(input, spec) {\n return input.map((entry) => {\n const _spec$convertToSource = spec.convertToSource(entry),\n { [TYPE]: type, [LABEL]: label } = _spec$convertToSource,\n properties = _objectWithoutProperties(\n _spec$convertToSource,\n [TYPE, LABEL].map(_toPropertyKey)\n )\n return {\n type,\n label,\n properties,\n }\n })\n}\nexport function parseBibtex(input) {\n return _parse(input, bibtex)\n}\nexport function formatBibtex(input) {\n return _format(input, bibtex)\n}\nexport function parse(input) {\n return _parse(input, biblatex)\n}\nexport function format(input) {\n return _format(input, biblatex)\n}\n","export function getStringCase(string) {\n const a = string.toUpperCase()\n const b = string.toLowerCase()\n for (let i = 0; i < string.length; i++) {\n if (a[i] !== b[i]) {\n return a[i] === string[i]\n }\n }\n return null\n}\nexport function formatNameParts(parts) {\n if (parts.length === 0) {\n return undefined\n }\n let piece = ''\n while (parts.length > 1) {\n const { value, hyphenated } = parts.shift()\n piece += value + (hyphenated ? '-' : ' ')\n }\n const output = piece + parts[0].value\n return output[0] && output\n}\nexport function orderNameParts(parts, orderGiven = true) {\n const given = []\n const undecided = []\n if (orderGiven) {\n while (parts.length > 1 && parts[0].upperCase !== false) {\n given.push(...undecided)\n undecided.length = 0\n while (parts.length > 1 && parts[0].upperCase !== false && !parts[0].hyphenated) {\n given.push(parts.shift())\n }\n while (parts.length > 0 && parts[0].upperCase !== false && parts[0].hyphenated) {\n undecided.push(parts.shift())\n }\n }\n }\n const prefix = []\n const family = []\n while (parts.length > 1) {\n prefix.push(...family)\n family.length = 0\n while (parts.length > 1 && parts[0].upperCase === false) {\n prefix.push(parts.shift())\n }\n while (parts.length > 0 && parts[0].upperCase !== false) {\n family.push(parts.shift())\n }\n }\n if (undecided.length) {\n family.unshift(...undecided)\n }\n if (parts.length) {\n family.push(parts[0])\n }\n return [formatNameParts(given), formatNameParts(prefix), formatNameParts(family)]\n}\nexport function orderNamePieces(pieces) {\n if (pieces[0][0].label) {\n const name = {}\n for (const [{ value, label }] of pieces) {\n name[label] = value\n }\n return name\n }\n const name = {}\n const [given, prefix, family] = orderNameParts(pieces[0], pieces.length === 1)\n if (family) {\n name.family = family\n }\n if (prefix) {\n name.prefix = prefix\n }\n if (pieces.length === 3) {\n name.given = formatNameParts(pieces[2])\n name.suffix = formatNameParts(pieces[1])\n } else if (pieces.length === 2) {\n name.given = formatNameParts(pieces[1])\n } else if (given) {\n name.given = given\n }\n return name\n}\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { util } from '../../core/index.js'\nimport moo from 'moo'\nimport config from '../config.js'\nimport * as constants from './constants.js'\nimport { orderNamePieces, formatNameParts, getStringCase } from './name.js'\nconst text = {\n commandBegin: {\n match: '\\\\begin',\n push: 'environment',\n },\n command: {\n match: /\\\\(?:[a-zA-Z]+|.) */,\n value: (s) => s.slice(1).trim(),\n },\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n mathShift: {\n match: '$',\n push: 'mathLiteral',\n },\n whitespace: {\n match: /[\\s]+|~/,\n lineBreaks: true,\n value(token) {\n return token === '~' ? '\\xa0' : ' '\n },\n },\n}\nconst lexer = moo.states({\n stringLiteral: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n namesLiteral: _objectSpread(\n _objectSpread(\n {\n and: /\\s+[aA][nN][dD]\\s+/,\n comma: ',',\n hyphen: '-',\n equals: '=',\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\,=-]+/,\n }\n ),\n listLiteral: _objectSpread(\n _objectSpread(\n {\n and: /\\s+and\\s+/,\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n separatedLiteral: _objectSpread(\n _objectSpread(\n {\n comma: ',',\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\,]+/,\n }\n ),\n annotation: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n colon: ':',\n equals: '=',\n comma: ',',\n semicolon: ';',\n quote: '\"',\n itemCount: /\\d+/,\n text: /[^{$}\\s~\\\\\":;,=]+/,\n }\n ),\n bracedLiteral: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n rbrace: {\n match: '}',\n pop: true,\n },\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n mathLiteral: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n mathShift: {\n match: '$',\n pop: true,\n },\n script: /[\\^_]/,\n text: /[^{$}\\s~\\\\^_]+/,\n }\n ),\n environment: _objectSpread(\n _objectSpread(\n {\n commandEnd: {\n match: '\\\\end',\n pop: true,\n },\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n})\nfunction flattenConsString(string) {\n string[0]\n return string\n}\nfunction applyFormatting(text, format) {\n if (format in constants.formatting) {\n return text && constants.formatting[format].join(text)\n } else {\n return text\n }\n}\nexport const valueGrammar = new util.Grammar(\n {\n String() {\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeRule('Text')\n }\n return flattenConsString(output)\n },\n StringNames() {\n const list = []\n while (true) {\n this.consumeToken('whitespace', true)\n list.push(this.consumeRule('Name'))\n this.consumeToken('whitespace', true)\n if (this.matchEndOfFile()) {\n return list\n } else {\n this.consumeToken('and')\n }\n }\n },\n Name() {\n const pieces = []\n while (true) {\n pieces.push(this.consumeRule('NamePiece'))\n if (this.matchEndOfFile() || this.matchToken('and')) {\n return orderNamePieces(pieces)\n } else {\n this.consumeToken('comma')\n this.consumeToken('whitespace', true)\n }\n }\n },\n NamePiece() {\n const parts = []\n while (true) {\n const part = this.consumeRule('NameToken')\n if (part.label) {\n part.label = formatNameParts([\n ...parts,\n {\n value: part.label,\n },\n ])\n return [part]\n }\n parts.push(part)\n if (this.matchEndOfFile() || this.matchToken('and') || this.matchToken('comma')) {\n return parts\n } else {\n while (this.matchToken('hyphen') || this.matchToken('whitespace')) {\n this.consumeToken()\n }\n }\n }\n },\n NameToken() {\n let upperCase = null\n let value = ''\n while (true) {\n if (upperCase === null && this.matchToken('text')) {\n const text = this.consumeToken().value\n value += text\n upperCase = getStringCase(text)\n } else if (\n this.matchEndOfFile() ||\n this.matchToken('and') ||\n this.matchToken('comma') ||\n this.matchToken('whitespace')\n ) {\n return {\n value,\n upperCase,\n }\n } else if (this.matchToken('hyphen')) {\n return {\n value,\n upperCase,\n hyphenated: true,\n }\n } else if (this.matchToken('equals')) {\n this.consumeToken('equals')\n const text = this.consumeRule('NamePiece')\n if (text[0].label) {\n value += '=' + text[0].label\n }\n return {\n value: formatNameParts(text),\n label: value,\n }\n } else {\n value += this.consumeRule('Text')\n }\n }\n },\n StringList() {\n const list = []\n while (!this.matchEndOfFile()) {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('and')) {\n output += this.consumeRule('Text')\n }\n list.push(flattenConsString(output))\n this.consumeToken('and', true)\n }\n return list.length === 1 ? list[0] : list\n },\n StringSeparated() {\n const list = []\n while (!this.matchEndOfFile()) {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('comma')) {\n output += this.consumeRule('Text')\n }\n list.push(output.trim())\n this.consumeToken('comma', true)\n this.consumeToken('whitespace', true)\n }\n return list\n },\n StringVerbatim() {\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeToken().text\n }\n return flattenConsString(output)\n },\n StringUri() {\n const uri = this.consumeRule('StringVerbatim')\n try {\n if (decodeURI(uri) === uri) {\n return encodeURI(uri)\n } else {\n return uri\n }\n } catch (e) {\n return encodeURI(uri)\n }\n },\n StringTitleCase() {\n this.state.sentenceCase = true\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeRule('Text')\n }\n return flattenConsString(output)\n },\n Annotations() {\n const annotations = {}\n while (true) {\n const { scope, item, part, value } = this.consumeRule('Annotation')\n if (scope === 'part') {\n if (!annotations.part) {\n annotations.part = []\n }\n if (!annotations.part[item]) {\n annotations.part[item] = {}\n }\n annotations.part[item][part] = value\n } else if (scope === 'item') {\n if (!annotations.item) {\n annotations.item = []\n }\n annotations.item[item] = value\n } else {\n annotations.field = value\n }\n if (this.matchEndOfFile()) {\n break\n } else {\n this.consumeToken('semicolon')\n this.consumeRule('_')\n }\n }\n return annotations\n },\n Annotation() {\n const annotation = {}\n if (this.matchToken('itemCount')) {\n annotation.item = parseInt(this.consumeToken('itemCount')) - 1\n if (this.matchToken('colon')) {\n this.consumeToken('colon')\n annotation.part = this.consumeToken('text')\n annotation.scope = 'part'\n } else {\n annotation.scope = 'item'\n }\n } else {\n annotation.scope = 'field'\n }\n this.consumeToken('equals')\n this.consumeRule('_')\n if (this.matchToken('quote')) {\n this.consumeToken('quote')\n let literal = ''\n while (!this.matchToken('quote')) {\n if (\n this.matchToken('itemCount') ||\n this.matchToken('colon') ||\n this.matchToken('comma') ||\n this.matchToken('semicolon') ||\n this.matchToken('equals')\n ) {\n literal += this.token.value\n this.token = this.lexer.next()\n } else {\n literal += this.consumeRule('Text')\n }\n }\n this.consumeToken('quote')\n annotation.value = flattenConsString(literal)\n this.consumeRule('_')\n } else {\n annotation.value = []\n let output = ''\n while (true) {\n output += this.consumeRule('Text')\n if (this.matchToken('comma')) {\n this.consumeToken('comma')\n this.consumeRule('_')\n annotation.value.push(flattenConsString(output))\n output = ''\n } else if (this.matchEndOfFile() || this.matchToken('semicolon')) {\n annotation.value.push(flattenConsString(output))\n break\n }\n }\n }\n return annotation\n },\n BracketString() {\n var _this$state\n let output = ''\n this.consumeToken('lbrace')\n const sentenceCase = this.state.sentenceCase\n this.state.sentenceCase = sentenceCase && this.matchToken('command')\n ;(_this$state = this.state).partlyLowercase &&\n (_this$state.partlyLowercase = this.state.sentenceCase)\n while (!this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n const topLevel = sentenceCase && !this.state.sentenceCase\n const protectCase = topLevel && this.state.partlyLowercase\n this.state.sentenceCase = sentenceCase\n this.consumeToken('rbrace')\n return protectCase ? applyFormatting(output, 'nocase') : output\n },\n MathString() {\n let output = ''\n this.consumeToken('mathShift')\n while (!this.matchToken('mathShift')) {\n if (this.matchToken('script')) {\n const script = this.consumeToken('script').value\n const text = this.consumeRule('Text').split('')\n if (text.every((char) => char in constants.mathScripts[script])) {\n output += text.map((char) => constants.mathScripts[script][char]).join('')\n } else {\n const formatName = constants.mathScriptFormatting[script]\n output += constants.formatting[formatName].join(text.join(''))\n }\n continue\n }\n if (this.matchToken('command')) {\n const command = this.token.value\n if (command in constants.mathScriptFormatting) {\n this.consumeToken('command')\n const text = this.consumeRule('BracketString')\n output += applyFormatting(text, constants.mathScriptFormatting[command])\n continue\n }\n }\n output += this.consumeRule('Text')\n }\n this.consumeToken('mathShift')\n return output\n },\n Text() {\n if (this.matchToken('lbrace')) {\n return this.consumeRule('BracketString')\n } else if (this.matchToken('mathShift')) {\n return this.consumeRule('MathString')\n } else if (this.matchToken('whitespace')) {\n return this.consumeToken('whitespace').value\n } else if (this.matchToken('commandBegin')) {\n return this.consumeRule('EnclosedEnv')\n } else if (this.matchToken('command')) {\n return this.consumeRule('Command')\n }\n const text = this.consumeToken('text').value.replace(\n constants.ligaturePattern,\n (ligature) => constants.ligatures[ligature]\n )\n const afterPunctuation = this.state.afterPunctuation\n this.state.afterPunctuation = /[?!.:]$/.test(text)\n if (!this.state.sentenceCase) {\n var _this$state2\n ;(_this$state2 = this.state).partlyLowercase ||\n (_this$state2.partlyLowercase =\n text === text.toLowerCase() && text !== text.toUpperCase())\n return text\n }\n const [first, ...otherCharacters] = text\n const rest = otherCharacters.join('')\n const restLowerCase = rest.toLowerCase()\n if (rest !== restLowerCase) {\n return text\n }\n if (!afterPunctuation) {\n return text.toLowerCase()\n }\n return first + restLowerCase\n },\n Command() {\n const commandToken = this.consumeToken('command')\n const command = commandToken.value\n if (command in constants.formattingEnvs) {\n const text = this.consumeRule('Env')\n const format = constants.formattingEnvs[command]\n return applyFormatting(text, format)\n } else if (command in constants.formattingCommands) {\n const text = this.consumeRule('BracketString')\n const format = constants.formattingCommands[command]\n return applyFormatting(text, format)\n } else if (command in constants.commands) {\n return constants.commands[command]\n } else if (command in constants.mathCommands) {\n return constants.mathCommands[command]\n } else if (command in constants.diacritics && !this.matchEndOfFile()) {\n const text = this.consumeRule('Text')\n const diacritic = text[0] + constants.diacritics[command]\n return diacritic.normalize('NFC') + text.slice(1)\n } else if (command in constants.argumentCommands) {\n const func = constants.argumentCommands[command]\n const args = []\n let arity = func.length\n while (arity-- > 0) {\n this.consumeToken('whitespace', true)\n args.push(this.consumeRule('BracketString'))\n }\n return func(...args)\n } else if (/^[&%$#_{}]$/.test(command)) {\n return commandToken.text.slice(1)\n } else {\n return commandToken.text\n }\n },\n Env() {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n return output\n },\n EnclosedEnv() {\n this.consumeToken('commandBegin')\n const beginEnv = this.consumeRule('BracketString')\n let output = ''\n while (!this.matchToken('commandEnd')) {\n output += this.consumeRule('Text')\n }\n const end = this.consumeToken('commandEnd')\n const endEnv = this.consumeRule('BracketString')\n if (beginEnv !== endEnv) {\n throw new SyntaxError(\n this.lexer.formatError(\n end,\n `environment started with \"${beginEnv}\", ended with \"${endEnv}\"`\n )\n )\n }\n return applyFormatting(output, constants.formattingEnvs[beginEnv])\n },\n _() {\n while (this.matchToken('whitespace')) {\n this.consumeToken('whitespace')\n }\n },\n },\n {\n sentenceCase: false,\n partlyLowercase: false,\n afterPunctuation: true,\n }\n)\nfunction singleLanguageIsEnglish(language) {\n return constants.sentenceCaseLanguages.includes(language.toLowerCase())\n}\nfunction isEnglish(languages) {\n if (Array.isArray(languages)) {\n return languages.every(singleLanguageIsEnglish)\n }\n return singleLanguageIsEnglish(languages)\n}\nfunction getMainRule(fieldType, languages) {\n if (fieldType[1] === 'name') {\n return fieldType[0] === 'list' ? 'StringNames' : 'Name'\n }\n if (fieldType[1] === 'title') {\n const option = config.parse.sentenceCase\n if (option === 'always' || (option === 'english' && isEnglish(languages))) {\n return 'StringTitleCase'\n } else {\n return 'String'\n }\n }\n switch (fieldType[0] === 'field' ? fieldType[1] : fieldType[0]) {\n case 'list':\n return 'StringList'\n case 'separated':\n return 'StringSeparated'\n case 'verbatim':\n return 'StringVerbatim'\n case 'uri':\n return 'StringUri'\n case 'title':\n case 'literal':\n default:\n return 'String'\n }\n}\nfunction getLexerState(fieldType) {\n if (fieldType[1] === 'name') {\n return 'namesLiteral'\n }\n switch (fieldType[0]) {\n case 'list':\n return 'listLiteral'\n case 'separated':\n return 'separatedLiteral'\n case 'field':\n default:\n return 'stringLiteral'\n }\n}\nexport function parse(text, field, languages = []) {\n const fieldType = constants.fieldTypes[field] || []\n return valueGrammar.parse(\n lexer.reset(text, {\n state: getLexerState(fieldType),\n line: 0,\n col: 0,\n }),\n getMainRule(fieldType, languages)\n )\n}\nexport function parseAnnotation(text) {\n return valueGrammar.parse(\n lexer.reset(text, {\n state: 'annotation',\n line: 0,\n col: 0,\n }),\n 'Annotations'\n )\n}\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport config from '../config.js'\nimport { parse as mapBiblatex, parseBibtex as mapBibtex } from '../mapping/index.js'\nimport { parse as parseValue, parseAnnotation } from './value.js'\nimport { required } from './constants.js'\nfunction validate(entries, requirements) {\n const problems = []\n for (const { type, label, properties } of entries) {\n if (type in requirements) {\n const missing = []\n for (const field of requirements[type]) {\n if (Array.isArray(field) && !field.some((field) => field in properties)) {\n missing.push(field.join('/'))\n } else if (typeof field === 'string' && !(field in properties)) {\n missing.push(field)\n }\n }\n if (missing.length) {\n problems.push([label, `missing fields: ${missing.join(', ')}`])\n }\n } else {\n problems.push([label, `invalid type: \"${type}\"`])\n }\n }\n if (problems.length) {\n throw new RangeError(\n ['Invalid entries:']\n .concat(problems.map(([label, problem]) => ` - ${label} has ${problem}`))\n .join('\\n')\n )\n }\n}\nfunction parseEntryValues(entry) {\n const output = {}\n if ('language' in entry.properties) {\n output.language = parseValue(entry.properties.language, 'language')\n }\n for (const property in entry.properties) {\n const value = entry.properties[property]\n if (value === '') {\n continue\n }\n output[property] = parseValue(value + '', property, output.language)\n }\n for (const property in entry.annotations) {\n for (const annotation in entry.annotations[property]) {\n output[property + '+an:' + annotation] = parseAnnotation(\n entry.annotations[property][annotation]\n )\n }\n }\n return _objectSpread(\n _objectSpread({}, entry),\n {},\n {\n properties: output,\n }\n )\n}\nexport function parse(entries) {\n if (config.parse.strict) {\n validate(entries, required.biblatex)\n }\n return mapBiblatex(entries.map(parseEntryValues))\n}\nexport function parseBibtex(entries) {\n if (config.parse.strict) {\n validate(entries, required.bibtex)\n }\n return mapBibtex(entries.map(parseEntryValues))\n}\n","import { parse as parseFile } from './file.js'\nimport { parse as parseBibtxt } from './bibtxt.js'\nimport { parse as parseEntries, parseBibtex } from './entries.js'\nexport const ref = '@bibtex'\nexport const formats = {\n '@biblatex/text': {\n parse: parseFile,\n parseType: {\n dataType: 'String',\n predicate: /@\\s{0,5}[A-Za-z]{1,13}\\s{0,5}\\{\\s{0,5}[^@{}\"=,\\\\\\s]{0,100}\\s{0,5},[\\s\\S]*\\}/,\n },\n },\n '@biblatex/entry+object': {\n parse(input) {\n return parseEntries([input])\n },\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: {\n props: ['type', 'label', 'properties'],\n },\n },\n },\n '@biblatex/entries+list': {\n parse: parseEntries,\n parseType: {\n elementConstraint: '@biblatex/entry+object',\n },\n },\n '@bibtex/text': {\n parse: parseFile,\n outputs: '@bibtex/entries+list',\n },\n '@bibtex/entry+object': {\n parse(input) {\n return parseBibtex([input])\n },\n },\n '@bibtex/entries+list': {\n parse: parseBibtex,\n },\n '@bibtxt/text': {\n parse: parseBibtxt,\n parseType: {\n dataType: 'String',\n predicate: /^\\s*(\\[(?!\\s*[{[]).*?\\]\\s*(\\n\\s*[^[]((?!:)\\S)+\\s*:\\s*.+?\\s*)*\\s*)+$/,\n },\n },\n}\n","// @ts-nocheck\nimport config from '../config.js'\nimport { diacritics, commands, mathCommands, ligatures, fieldTypes } from '../input/constants.js'\nconst unicode = {}\nfor (const command in commands) {\n unicode[commands[command]] = command\n}\nfor (const diacritic in diacritics) {\n unicode[diacritics[diacritic]] = diacritic\n}\nfor (const ligature in ligatures) {\n unicode[ligatures[ligature]] = ligature\n}\nconst mathUnicode = {}\nfor (const command in mathCommands) {\n mathUnicode[mathCommands[command]] = command\n}\nconst UNSAFE_UNICODE =\n /[^a-zA-Z0-9\\s!\"#%&'()*+,\\-./:;=?@[\\]{}\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]/g\nconst DIACRITIC_PATTERN = /.[\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]+/g\nconst LONE_DIACRITIC_PATTERN = /[\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]/g\nconst listDelimiters = {\n separated: ',',\n list: ' and ',\n}\nconst richTextMappings = {\n i: '\\\\textit{',\n b: '\\\\textbf{',\n sc: '\\\\textsc{',\n sup: '\\\\textsuperscript{',\n sub: '\\\\textsubscript{',\n 'span style=\"font-variant:small-caps;\"': '\\\\textsc{',\n 'span class=\"nocase\"': '{',\n}\nfunction escapeCharacter(char) {\n if (char in unicode) {\n return unicode[char] in ligatures ? unicode[char] : `\\\\${unicode[char]}{}`\n } else if (char in mathUnicode) {\n return `$\\\\${mathUnicode[char]}$`\n } else {\n return ''\n }\n}\nfunction escapeValue(value) {\n if (!config.format.asciiOnly) {\n return value\n }\n return value\n .normalize('NFKD')\n .replace(UNSAFE_UNICODE, (char) => escapeCharacter(char))\n .replace(DIACRITIC_PATTERN, (match) =>\n Array.from(match).reduce((subject, diacritic) => `{\\\\${unicode[diacritic]} ${subject}}`)\n )\n .replace(LONE_DIACRITIC_PATTERN, '')\n}\nfunction formatRichText(value) {\n const closingTags = []\n let tokens = value.split(/<(\\/?(?:i|b|sc|sup|sub|span)|span .*?)>/g)\n tokens = tokens.map((token, index) => {\n if (index % 2 === 0) {\n return escapeValue(token)\n } else if (token in richTextMappings) {\n closingTags.push('/' + token.split(' ')[0])\n return richTextMappings[token]\n } else if (token === closingTags[closingTags.length - 1]) {\n closingTags.pop()\n return '}'\n } else {\n return ''\n }\n })\n return tokens.join('')\n}\nfunction formatName(name) {\n if (name.family && !name.prefix && !name.given & !name.suffix) {\n return name.family.includes(listDelimiters.list) ? name.family : `{${name.family}}`\n }\n const parts = ['']\n if (name.prefix && name.family) {\n parts[0] += name.prefix + ' '\n }\n if (name.family) {\n parts[0] += name.family\n }\n if (name.suffix) {\n parts.push(name.suffix)\n parts.push(name.given || '')\n } else {\n parts.push(name.given)\n }\n return escapeValue(parts.join(', ').trim())\n}\nfunction formatTitle(title) {\n return formatRichText(title)\n .split(/(:\\s*)/)\n .map((part, i) => (i % 2 ? part : part.replace(/([^\\\\])\\b([a-z]*[A-Z].*?)\\b/g, '$1{$2}')))\n .join('')\n}\nfunction formatSingleValue(value, valueType) {\n switch (valueType) {\n case 'title':\n return formatTitle(value)\n case 'literal':\n return formatRichText(value.toString())\n case 'name':\n return formatName(value)\n case 'verbatim':\n case 'uri':\n return value.toString()\n default:\n return escapeValue(value.toString())\n }\n}\nfunction formatList(values, valueType, listType) {\n const delimiter = listDelimiters[listType]\n return values\n .map((value) => {\n const formatted = formatSingleValue(value, valueType)\n return formatted.includes(delimiter) ? `{${formatted}}` : formatted\n })\n .join(delimiter)\n}\nfunction formatAnnotationValue(values) {\n if (Array.isArray(values)) {\n return values.map((value) => escapeValue(value).replace(/([;,\"])/g, '{$1}')).join(', ')\n } else {\n return '\"' + escapeValue(values).replace(/([\"])/g, '{$1}') + '\"'\n }\n}\nexport function format(field, value) {\n if (!(field in fieldTypes)) {\n return formatSingleValue(value, 'verbatim')\n }\n const [listType, valueType] = fieldTypes[field]\n if (listType in listDelimiters) {\n return formatList(value, valueType, listType)\n } else {\n return formatSingleValue(value, valueType)\n }\n}\nexport function formatAnnotation(value) {\n const annotations = []\n if (value.field) {\n annotations.push('=' + formatAnnotationValue(value.field))\n }\n if (value.item) {\n for (const [itemCount, itemValue] of Object.entries(value.item)) {\n if (!itemValue) {\n continue\n }\n const i = parseInt(itemCount) + 1\n annotations.push(i + '=' + formatAnnotationValue(itemValue))\n }\n }\n if (value.part) {\n for (const [itemCount, itemValue] of Object.entries(value.part)) {\n if (!itemValue) {\n continue\n }\n const i = parseInt(itemCount) + 1\n for (const part in itemValue) {\n if (!itemValue[part]) {\n continue\n }\n annotations.push(i + ':' + part + '=' + formatAnnotationValue(itemValue[part]))\n }\n }\n }\n return annotations.join('; ')\n}\n","import { format as mapBiblatex, formatBibtex as mapBibtex } from '../mapping/index.js'\nimport { format as formatValue, formatAnnotation } from './value.js'\nfunction formatEntryValues({ type, label, properties }) {\n const output = {\n type,\n label,\n properties: {},\n }\n for (const property in properties) {\n const value = properties[property]\n const [field, annotation] = property.split('+an:')\n if (annotation) {\n if (!output.annotations) {\n output.annotations = {}\n }\n if (!output.annotations[field]) {\n output.annotations[field] = {}\n }\n output.annotations[field][annotation] = formatAnnotation(value)\n } else {\n output.properties[property] = formatValue(property, value)\n }\n }\n return output\n}\nexport function format(entries) {\n return mapBiblatex(entries).map(formatEntryValues)\n}\nexport function formatBibtex(entries) {\n return mapBibtex(entries).map(formatEntryValues)\n}\n","import config from '../config.js'\nfunction formatField(field, value, dict) {\n return dict.listItem.join(`${field} = {${value}},`)\n}\nfunction formatEntry(entry, dict) {\n const fields = []\n for (const field in entry.properties) {\n fields.push(formatField(field, entry.properties[field], dict))\n if (entry.annotations && entry.annotations[field]) {\n for (const annotation in entry.annotations[field]) {\n let annotationField = field + config.biber.annotationMarker\n if (annotation !== 'default') {\n annotationField += config.biber.namedAnnotationMarker + annotation\n }\n fields.push(formatField(annotationField, entry.annotations[field][annotation], dict))\n }\n }\n }\n return dict.entry.join(`@${entry.type}{${entry.label},${dict.list.join(fields.join(''))}}`)\n}\nexport function format(src, dict) {\n const entries = src.map((entry) => formatEntry(entry, dict)).join('')\n return dict.bibliographyContainer.join(entries)\n}\n","function formatEntry({ type, label, properties }, dict) {\n const fields = Object.entries(properties)\n .concat([['type', type]])\n .map(([field, value]) => dict.listItem.join(`${field}: ${value}`))\n return dict.entry.join(`[${label}]${dict.list.join(fields.join(''))}`)\n}\nexport function format(src, dict) {\n const entries = src.map((entry) => formatEntry(entry, dict)).join('\\n')\n return dict.bibliographyContainer.join(entries)\n}\n","import { plugins } from '../../core/index.js'\nimport { format as mapBiblatex, formatBibtex as mapBibtex } from './entries.js'\nimport { format } from './bibtex.js'\nimport { format as formatBibtxt } from './bibtxt.js'\nconst factory = function (mapper, formatter) {\n return function (data, opts = {}) {\n const { type, format = type || 'text' } = opts\n data = mapper(data)\n if (format === 'object') {\n return data\n } else if (plugins.dict.has(format)) {\n return formatter(data, plugins.dict.get(format), opts)\n } else {\n throw new RangeError(`Output dictionary \"${format}\" not available`)\n }\n }\n}\nexport default {\n bibtex: factory(mapBibtex, format),\n biblatex: factory(mapBiblatex, format),\n bibtxt: factory(mapBibtex, formatBibtxt),\n}\n","import { plugins } from '../core/index.js'\nimport { ref, formats as input } from './input/index.js'\nimport config from './config.js'\nimport output from './output/index.js'\nplugins.add(ref, {\n input,\n output,\n config,\n})\n","import { util } from '../core/index.js'\n\nconst defaultLocales = {\n 'en-US': `Andrew DunningSebastian KarcherRintze M. ZelleDenis MeierBrenton M. WiernikThis work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License2015-10-10T23:31:02+00:00advance online publicationalbumaudio recordingfilmhenceforthloc. cit.no placen.p.no publishern.p.onop. cit.original work publishedpersonal communicationpodcastpodcast episodepreprintradio broadcastradio seriesradio series episodespecial issuespecial sectiontelevision broadcasttelevision seriestelevision series episodevideoworking paperaccessedandand othersanonymousanon.atavailable atbycircac.citededitioneditionsed.et al.forthcomingfromibid.inin pressinternetinterviewletterno daten.d.onlinepresented at thereferencereferencesref.refs.retrievedscaleversionpreprintjournal articlemagazine articlenewspaper articlebillbookbroadcastbook chapterclassiccollectiondatasetdocumententrydictionary entryencyclopedia entryeventgraphichearinginterviewlegal caselegislationmanuscriptmapvideo recordingmusical scorepamphletconference paperpatentperformanceperiodicalpersonal communicationpostblog postregulationreportreviewbook reviewsoftwareaudio recordingpresentationstandardthesistreatywebpagejournal art.mag. art.newspaper art.bk.bk. chap.doc.graph.interv.MSvideo rec.rep.rev.bk. rev.audio rec.ADBCBCECE:,;thstndrdthththfirstsecondthirdfourthfifthsixthseventheighthninthtenthactactsappendixappendicesarticlearticlescanoncanonslocationlocationsequationequationsrulerulesscenescenestabletablestitletitlesbookbookschapterchapterscolumncolumnsfigurefiguresfoliofoliosnumbernumberslinelinesnotenotesopusoperapagepagespagepagesparagraphparagraphspartpartssectionsectionssub verbosub verbisverseversesvolumevolumesapp.apps.art.arts.loc.locs.eq.eqs.r.rr.sc.scs.tbl.tbls.tit.tits.bk.bks.chap.chaps.col.cols.fig.figs.fol.fols.no.nos.l.ll.n.nn.op.opp.p.pp.p.pp.para.paras.pt.pts.sec.secs.s.v.s.vv.v.vv.vol.vols.¶¶§§§chairchairscompilercompilerscontributorcontributorscuratorcuratorsexecutive producerexecutive producersguestguestshosthostsnarratornarratorsorganizerorganizersperformerperformersproducerproducerswriterwritersseries creatorseries creatorsdirectordirectorseditoreditorseditoreditorsillustratorillustratorstranslatortranslatorseditor & translatoreditors & translatorscomp.comps.contrib.contribs.cur.curs.exec. prod.exec. prods.narr.narrs.org.orgs.perf.perfs.prod.prods.writ.writs.cre.cres.dir.dirs.ed.eds.ed.eds.ill.ills.tran.trans.ed. & tran.eds. & trans.chaired bycompiled bywithcurated byexecutive produced bywith guesthosted bynarrated byorganized byperformed byproduced bywritten bycreated bybydirected byedited byedited byillustrated byinterview bytobytranslated byedited & translated bycomp. byw.cur. byexec. prod. byw. guesthosted bynarr. byorg. byperf. byprod. bywrit. bycre. bydir. byed. byed. byillus. bytrans. byed. & trans. byJanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecemberJan.Feb.Mar.Apr.MayJun.Jul.Aug.Sep.Oct.Nov.Dec.SpringSummerAutumnWinter`,\n}\n\nconst locales = new util.Register(defaultLocales)\n\nconst fetchLocale = (lang) => {\n if (locales.has(lang)) {\n return locales.get(lang)\n } else {\n return locales.get('en-US')\n }\n}\n\nexport default fetchLocale\nexport { locales }\n","import { util } from '../core/index.js'\n\nconst defaultTemplates = {\n apa: ``,\n}\nconst templates = new util.Register(defaultTemplates)\n\nconst fetchStyle = (style) => {\n if (templates.has(style)) {\n return templates.get(style)\n } else {\n return templates.get('apa')\n }\n}\n\nexport default fetchStyle\nexport { templates }\n","import CSL from 'citeproc'\nimport { templates } from './styles.js'\nimport { locales } from './locales.js'\nconst proxied = Symbol.for('proxied')\nconst getWrapperProxy = function (original) {\n const proxy = function (state, entry) {\n if (state.sys.wrapBibliographyEntry) {\n const [prefix, postfix] = state.sys.wrapBibliographyEntry(this.system_id)\n entry = [prefix, entry, postfix].join('')\n }\n return original.call(this, state, entry)\n }\n proxy[proxied] = true\n return proxy\n}\nfor (const format in CSL.Output.Formats) {\n const original = CSL.Output.Formats[format]['@bibliography/entry']\n if (!original || original[proxied]) {\n continue\n }\n CSL.Output.Formats[format]['@bibliography/entry'] = getWrapperProxy(original)\n}\nfunction retrieveLocale(locale) {\n if (locales.has(locale)) {\n return locales.get(locale)\n }\n const unnormalised = locale.replace('-', '_')\n if (locales.has(unnormalised)) {\n return locales.get(unnormalised)\n }\n return {}\n}\nconst engines = {}\nconst fetchEngine = function (style, locale, styleXml, retrieveItem, retrieveLocale) {\n const engineHash = `${style}|${locale}`\n let engine\n if (engines[engineHash] instanceof CSL.Engine) {\n engine = engines[engineHash]\n engine.sys.retrieveItem = retrieveItem\n engine.sys.wrapBibliographyEntry = undefined\n engine.updateItems([])\n } else {\n engine = engines[engineHash] = new CSL.Engine(\n {\n retrieveLocale,\n retrieveItem,\n },\n styleXml,\n locale,\n true\n )\n }\n return engine\n}\nconst prepareEngine = function (data, style, locale, format) {\n if (!CSL.Output.Formats[format] || !CSL.Output.Formats[format]['@bibliography/entry']) {\n throw new TypeError(`Cannot find format '${format}'`)\n }\n const items = data.reduce((store, entry) => {\n store[entry.id] = entry\n return store\n }, {})\n const template = templates.get(templates.has(style) ? style : 'apa')\n locale = locales.has(locale) ? locale : undefined\n const callback = function (key) {\n if (Object.prototype.hasOwnProperty.call(items, key)) {\n return items[key]\n } else {\n throw new Error(`Cannot find entry with id '${key}'`)\n }\n }\n const engine = fetchEngine(style, locale, template, callback, retrieveLocale)\n engine.setOutputFormat(format)\n engine.opt.development_extensions.wrap_url_and_doi = false\n return engine\n}\nexport default prepareEngine\nexport { fetchEngine }\n","const getAttributedEntry = (string, name, value) =>\n string.replace(/^\\s*<[a-z]+/i, `$& data-${name}=\"${value}\"`)\nconst getPrefixedEntry = (value, id) => getAttributedEntry(value, 'csl-entry-id', id)\nexport { getAttributedEntry, getPrefixedEntry }\n","import { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\nimport { getPrefixedEntry } from './attr.js'\nconst getAffix = (source, affix) => (typeof affix === 'function' ? affix(source) : affix || '')\nexport default function bibliography(data, options = {}) {\n const { template = 'apa', lang, format = 'text', nosort = false } = options\n const ids = options.entry ? [].concat(options.entry) : data.map(({ id }) => id)\n data = util.downgradeCsl(data)\n const citeproc = prepareEngine(data, template, lang, format)\n const sortedIds = citeproc.updateItems(ids, nosort)\n if (options.append || options.prepend) {\n const items = data.reduce((items, entry) => {\n items[entry.id] = entry\n return items\n }, {})\n citeproc.sys.wrapBibliographyEntry = function (id) {\n const entry = items[id]\n return [getAffix(entry, options.prepend), getAffix(entry, options.append)]\n }\n }\n if (options.hyperlinks) {\n citeproc.opt.development_extensions.wrap_url_and_doi = true\n }\n const bibliography = citeproc.makeBibliography()\n const [{ bibstart, bibend }, bibBody] = bibliography\n const entries = bibBody.map((element, index) => getPrefixedEntry(element, sortedIds[index]))\n if (options.asEntryArray) {\n return entries.map((element, index) => [sortedIds[index], element])\n }\n return bibstart + entries.join('') + bibend\n}\n","import { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\nfunction prepareCiteItem(citeItem) {\n return typeof citeItem === 'object'\n ? citeItem\n : {\n id: citeItem,\n }\n}\nfunction prepareCitation(citation) {\n if (citation.citationItems) {\n return citation\n }\n return {\n citationItems: [].concat(citation).map(prepareCiteItem),\n properties: {\n noteIndex: 0,\n },\n }\n}\nfunction prepareCitations(context) {\n if (!context) {\n return []\n }\n return context.map(prepareCitation)\n}\nexport default function citation(data, options = {}) {\n const { template = 'apa', lang, format = 'text' } = options\n const ids = data.map(({ id }) => id)\n const entries = options.entry ? options.entry : ids\n data = util.downgradeCsl(data)\n const citeproc = prepareEngine(data, template, lang, format)\n const before = prepareCitations(options.citationsPre)\n const citation = prepareCitation(entries)\n const after = prepareCitations(options.citationsPost)\n const output = citeproc.rebuildProcessorState([...before, citation, ...after], format, [])\n return output[before.length][2]\n}\n","import { plugins } from '../core/index.js'\nimport { locales } from './locales.js'\nimport { templates } from './styles.js'\nimport engine from './engines.js'\nimport bibliography from './bibliography.js'\nimport citation from './citation.js'\nplugins.add('@csl', {\n output: {\n bibliography,\n citation,\n },\n config: {\n engine,\n locales,\n templates,\n },\n})\n","import yaml from 'js-yaml'\nimport { plugins } from '../core/index.js'\n\n// See https://github.com/nodeca/js-yaml/issues/569\nconst timestampTag = 'tag:yaml.org,2002:timestamp'\nconst timestamp = yaml.DEFAULT_SCHEMA.compiledTypeMap.scalar[timestampTag]\n\nconst date = new yaml.Type(timestampTag, {\n kind: 'scalar',\n resolve: timestamp.resolve,\n construct: timestamp.construct,\n instanceOf: Date,\n represent(object) {\n return object.toISOString().split('T')[0]\n },\n})\n\nconst CFF_SCHEMA = yaml.DEFAULT_SCHEMA.extend({\n implicit: [date],\n explicit: [],\n})\n\nplugins.add('@else', {\n input: {\n '@else/yaml': {\n parseType: {\n dataType: 'String',\n tokenList: {\n split: /\\n(\\s{2})*(-\\s)?/,\n token: /^[\\w-]*: /,\n every: false,\n },\n },\n parse(file) {\n return yaml.load(file, { json: true })\n },\n },\n },\n output: {\n yaml(data) {\n return yaml.dump(data, { schema: CFF_SCHEMA })\n },\n },\n})\n","import { plugins, util } from '../core/index.js'\nimport { parse as parseDate } from '@citation-js/date'\n\nimport '../plugin-yaml/index.js'\n\n/**\n * Format: Citation File Format (CFF) version 1.2.0\n * Spec: https://github.com/citation-file-format/citation-file-format/blob/1.2.0/schema-guide.md\n */\n\nconst TYPES_TO_TARGET = {\n art: 'graphic',\n article: 'article-journal', // more likely\n audiovisual: 'motion_picture',\n bill: 'bill',\n blog: 'post-weblog',\n book: 'book',\n catalogue: 'collection',\n conference: 'event',\n 'conference-paper': 'paper-conference',\n data: 'dataset',\n database: 'dataset',\n dictionary: 'entry-dictionary',\n 'edited-work': 'document', // unmapped\n encyclopedia: 'entry-encyclopedia',\n 'film-broadcast': 'broadcast',\n generic: 'document',\n 'government-document': 'regulation',\n grant: 'document', // unmapped\n hearing: 'hearing',\n 'historical-work': 'classic',\n 'legal-case': 'legal_case',\n 'legal-rule': 'legislation',\n 'magazine-article': 'article-magazine',\n manual: 'report', // substitute presented in the CSL specification\n map: 'map',\n multimedia: 'motion_picture',\n music: 'musical_score',\n 'newspaper-article': 'article-newspaper',\n pamphlet: 'pamphlet',\n patent: 'patent',\n 'personal-communication': 'personal_communication',\n proceedings: 'book', // substitute presented in the CSL specification\n report: 'report',\n serial: 'periodical',\n slides: 'speech',\n software: 'software',\n 'software-code': 'software',\n 'software-container': 'software',\n 'software-executable': 'software',\n 'software-virtual-machine': 'software',\n 'sound-recording': 'song',\n standard: 'standard',\n statute: 'legislation',\n thesis: 'thesis',\n unpublished: 'article',\n video: 'motion_picture',\n website: 'webpage',\n}\n\nconst TYPES_TO_SOURCE = {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'magazine-article',\n 'article-newspaper': 'newspaper-article',\n bill: 'bill',\n book: 'book',\n broadcast: 'film-broadcast',\n chapter: 'generic', // unmapped\n classic: 'historical-work',\n collection: 'catalogue',\n dataset: 'data',\n document: 'generic',\n entry: 'generic', // unmapped\n 'entry-dictionary': 'dictionary',\n 'entry-encyclopedia': 'encyclopedia',\n event: 'conference',\n figure: 'generic', // unmapped\n graphic: 'art',\n hearing: 'hearing',\n interview: 'sound-recording',\n legal_case: 'legal-case',\n legislation: 'statute',\n manuscript: 'historical-work',\n map: 'map',\n motion_picture: 'film-broadcast',\n musical_score: 'music',\n pamphlet: 'pamphlet',\n 'paper-conference': 'conference-paper',\n patent: 'patent',\n performance: 'generic', // unmapped\n periodical: 'serial',\n personal_communication: 'personal-communication',\n post: 'serial',\n 'post-weblog': 'blog',\n regulation: 'government-document',\n report: 'report',\n review: 'generic', // unmapped\n 'review-book': 'generic', // unmapped\n software: 'software',\n song: 'sound-recording',\n speech: 'slides',\n standard: 'standard',\n thesis: 'thesis',\n treaty: 'generic',\n webpage: 'website',\n}\n\nconst ENTITY_PROPS = [\n { source: 'family-names', target: 'family' },\n { source: 'given-names', target: 'given' },\n { source: 'name-particle', target: 'non-dropping-particle' },\n { source: 'name-suffix', target: 'suffix' },\n { source: 'name', target: 'literal' },\n { source: 'orcid', target: '_orcid' },\n]\n\nconst entity = new util.Translator(ENTITY_PROPS)\n\nconst PROP_CONVERTERS = {\n names: {\n toTarget(names) {\n return names.map(entity.convertToTarget)\n },\n toSource(names) {\n return names.map(entity.convertToSource)\n },\n },\n publisher: {\n toTarget({ name, city, region, country }) {\n const place = [city, region, country].filter(Boolean).join(', ')\n return [name, place || undefined]\n },\n toSource(name, place) {\n const entity = { name }\n\n if (place) {\n // Parse the following:\n // - Country\n // - City, Country\n // - City, Region, Country\n const parts = place.split(', ')\n entity.country = parts.pop()\n if (parts.length === 2) {\n entity.region = parts.pop()\n }\n if (parts.length === 1) {\n entity.city = parts.pop()\n }\n }\n\n return entity\n },\n },\n date: {\n toTarget(date) {\n if (date instanceof Date) {\n return parseDate(date.toISOString())\n } else {\n return parseDate(new Date(date).toISOString())\n }\n },\n toSource(date) {\n if (date.raw) {\n return date.raw\n }\n const [year, month, day] = date['date-parts'][0]\n if (day) {\n return new Date(Date.UTC(year, month - 1, day))\n } else if (month) {\n return new Date(Date.UTC(year, month - 1))\n } else {\n return new Date(Date.UTC(year))\n }\n },\n },\n}\n\nconst SHARED_PROPS = [\n 'abstract',\n\n { source: 'authors', target: 'author', convert: PROP_CONVERTERS.names },\n\n // TODO cff: commit\n\n // TODO cff: contact\n\n {\n source: 'date-released',\n target: 'issued',\n when: { target: { type: 'software' } },\n convert: PROP_CONVERTERS.date,\n },\n\n { source: 'doi', target: 'DOI' },\n\n {\n source: 'identifiers',\n target: ['DOI', 'ISBN', 'ISSN', 'PMCID', 'PMID', 'URL'],\n convert: {\n toTarget(identifiers) {\n const newIdentifiers = Array(6).fill(undefined)\n for (const { type, value } of identifiers) {\n if (!this.doi && type === 'doi') {\n newIdentifiers[0] = value\n }\n if (!this.url && type === 'url') {\n newIdentifiers[5] = value\n }\n if (type === 'other' && value.startsWith('urn:isbn:')) {\n newIdentifiers[1] = value.slice(9)\n }\n if (type === 'other' && value.startsWith('urn:issn:')) {\n newIdentifiers[2] = value.slice(9)\n }\n if (type === 'other' && value.startsWith('pmcid:')) {\n newIdentifiers[3] = value.slice(6)\n }\n if (type === 'other' && value.startsWith('pmid:')) {\n newIdentifiers[4] = value.slice(5)\n }\n }\n return newIdentifiers\n },\n toSource(doi, isbn, issn, pmcid, pmid, url) {\n return [\n doi && { type: 'doi', value: doi },\n url && { type: 'url', value: url },\n\n isbn && { type: 'other', value: `urn:isbn:${isbn}` },\n issn && { type: 'other', value: `urn:issn:${issn}` },\n pmcid && { type: 'other', value: `pmcid:${pmcid}` },\n pmid && { type: 'other', value: `pmid:${pmid}` },\n ].filter(Boolean)\n },\n },\n },\n\n {\n source: 'keywords',\n target: 'keyword',\n convert: {\n toTarget(keywords) {\n return keywords.join(',')\n },\n toSource(keywords) {\n return keywords.split(/,\\s*/g)\n },\n },\n },\n\n // TODO cff: license\n // TODO cff: license-url\n\n // TODO cff: message *\n\n // TODO cff: repository\n // TODO cff: repository-code\n // TODO cff: repository-artifact\n\n {\n source: 'title',\n target: 'title',\n when: {\n source: { term: false, entry: false },\n target: {\n type(type) {\n return !['entry', 'entry-dictionary', 'entry-encyclopedia'].includes(type)\n },\n },\n },\n },\n\n {\n source: 'title',\n target: 'container-title',\n when: {\n source: { entry: true, journal: false },\n target: { type: ['entry'] },\n },\n },\n\n {\n source: 'title',\n target: 'container-title',\n when: {\n source: { term: true, journal: false },\n target: { type: ['entry-dictionary', 'entry-encyclopedia'] },\n },\n },\n\n { source: 'url', target: 'URL' },\n\n 'version',\n]\n\nconst MAIN_PROPS = [\n // TYPES\n {\n source: 'type',\n target: 'type',\n convert: {\n toSource(type) {\n return type === 'dataset' ? 'dataset' : 'software'\n },\n toTarget(type) {\n return type === 'dataset' ? 'dataset' : 'software'\n },\n },\n },\n\n // Include main mappings\n ...SHARED_PROPS,\n]\n\nconst REF_PROPS = [\n // Include main mappings\n ...SHARED_PROPS,\n\n // ABBREVIATION\n { source: 'abbreviation', target: 'title-short' },\n { source: 'abbreviation', target: 'shortTitle' },\n\n // COLLECTIONS\n // TODO cff: collection-doi\n // TODO cff: collection-type\n 'collection-title',\n\n // COMMUNICATION\n { source: 'recipients', target: 'recipient', convert: PROP_CONVERTERS.names },\n { source: 'senders', target: 'authors', convert: PROP_CONVERTERS.names },\n\n // CONFERENCE\n {\n source: 'conference',\n target: ['event-title', 'event-date', 'event-place', 'event'],\n convert: {\n toSource(name, date, place, nameFallback) {\n const entity = { name: name || nameFallback }\n\n if (place) {\n entity.location = place\n }\n if (date) {\n entity['date-start'] = PROP_CONVERTERS.date.toSource(date)\n\n if (date['date-parts'] && date['date-parts'].length === 2) {\n entity['date-end'] = PROP_CONVERTERS.date.toSource({\n 'date-parts': [date['date-parts'][1]],\n })\n }\n }\n\n return entity\n },\n toTarget(event) {\n return [\n event.name,\n parseDate(event['date-start'].toISOString(), event['date-end'].toISOString()),\n event.location,\n ]\n },\n },\n },\n\n // COPYRIGHT\n // TODO cff: contact\n // TODO cff: copyright\n\n // DATABASE\n { source: 'database', target: 'source' },\n // TODO cff: database-provider NOTE entity\n\n // DATE\n { source: 'date-accessed', target: 'accessed', convert: PROP_CONVERTERS.date },\n\n {\n source: 'date-downloaded',\n target: 'accessed',\n convert: PROP_CONVERTERS.date,\n when: { source: { 'date-accessed': false }, target: false },\n },\n\n {\n source: 'date-published',\n target: 'issued',\n convert: PROP_CONVERTERS.date,\n when: {\n source: { 'date-released': false },\n target() {\n return this.type !== 'book' || !this.version\n },\n },\n },\n\n {\n source: ['year', 'month'],\n target: 'issued',\n when: { source: { 'date-published': false, 'date-released': false, year: true } },\n convert: {\n toTarget(year, month) {\n const date = month ? [year, month] : [year]\n return { 'date-parts': [date] }\n },\n toSource(issued) {\n const [year, month] = issued['date-parts'][0]\n return [year, month]\n },\n },\n },\n\n {\n source: 'year-original',\n target: 'original-date',\n convert: {\n toTarget(year) {\n return { 'date-parts': [[year]] }\n },\n toSource(date) {\n return date['date-parts'][0][0]\n },\n },\n },\n\n // EDITION\n 'edition',\n\n // EDITORS\n { source: 'editors', target: 'editor', convert: PROP_CONVERTERS.names },\n { source: 'editors-series', target: 'collection-editor', convert: PROP_CONVERTERS.names },\n\n // ENTRY\n {\n source: 'entry',\n target: 'title',\n when: {\n source: { term: false },\n target: { type: 'entry' },\n },\n },\n {\n source: 'term',\n target: 'title',\n when: {\n target: { type: ['entry-dictionary', 'entry-encyclopedia'] },\n },\n },\n\n // FORMAT\n { source: 'format', target: 'dimensions' },\n 'medium',\n\n // GENRE\n {\n source: 'data-type',\n target: 'genre',\n when: {\n target: {\n type(type) {\n return type !== 'thesis'\n },\n },\n },\n },\n {\n source: 'thesis-type',\n target: 'genre',\n when: {\n source: { 'data-type': false },\n target: { type: 'thesis' },\n },\n },\n\n // IDENTIFIERS\n { source: 'isbn', target: 'ISBN' },\n { source: 'issn', target: 'ISSN' },\n // TODO cff: nihmsid\n { source: 'pmcid', target: 'PMCID' },\n\n // ISSUE\n 'issue',\n\n // JOURNAL\n { source: 'journal', target: 'container-title' },\n { source: 'volume-title', target: 'volume-title' },\n {\n source: 'issue-title',\n target: 'volume-title',\n when: {\n source: { 'volume-title': false },\n target: false,\n },\n },\n // TODO cff: issue-date\n\n // LANGUAGE\n {\n source: 'languages',\n target: 'language',\n when: {\n target: true,\n // NOTE: possible values not as strict in csl, so test (crudely) if the value is ok first\n source: {\n language(code) {\n return /[a-z]{2,3}/.test(code)\n },\n },\n },\n convert: {\n // NOTE: CSL can only hold one language\n toSource(language) {\n return [language]\n },\n toTarget(languages) {\n return languages[0]\n },\n },\n },\n\n // LOCATION\n {\n source: 'location',\n target: ['archive', 'archive-place'],\n convert: PROP_CONVERTERS.publisher,\n },\n\n // LOCATION (CODE)\n // TODO cff: filename\n // TODO cff: loc-start\n // TODO cff: loc-end\n\n // NOTES\n { source: 'notes', target: 'note', when: { source: { scope: false } } },\n { source: 'scope', target: 'note', when: { target: false } },\n\n // NUMBER\n 'number',\n\n // PATENT\n {\n source: 'patent-states',\n target: 'jurisdiction',\n // NOTE: CSL jurisdiction can contain more than just US states\n when: { target: false },\n convert: {\n toTarget(states) {\n return states.join(', ')\n },\n },\n },\n\n // PUBLISHER\n {\n source: ['institution', 'department'],\n target: ['publisher', 'publisher-place'],\n when: { source: { publisher: false }, target: { type: 'thesis' } },\n convert: {\n toTarget(institution, department) {\n const [name, place] = PROP_CONVERTERS.publisher.toTarget(institution)\n return [department ? `${department}, ${name}` : name, place]\n },\n toSource(name, place) {\n return [PROP_CONVERTERS.publisher.toSource(name, place)]\n },\n },\n },\n {\n source: 'publisher',\n target: ['publisher', 'publisher-place'],\n when: {\n target: {\n type(type) {\n return type !== 'thesis'\n },\n },\n },\n convert: PROP_CONVERTERS.publisher,\n },\n\n // SECTION\n 'section',\n\n // STATUS\n {\n source: 'status',\n target: 'status',\n when: {\n source: true,\n // NOTE: possible values not as strict in csl, so test if the value is ok first\n target: {\n status: [\n 'in-preparation',\n 'abstract',\n 'submitted',\n 'in-press',\n 'advance-online',\n 'preprint',\n ],\n },\n },\n },\n\n // PAGES\n { source: 'start', target: 'page-first', when: { target: { page: false } } },\n {\n source: ['start', 'end'],\n target: 'page',\n convert: {\n toTarget(start, end) {\n return end ? `${start}-${end}` : start\n },\n toSource(page) {\n const [start, end] = page.split('-')\n return end ? [start, end] : [start]\n },\n },\n },\n { source: 'pages', target: 'number-of-pages' },\n\n // TRANSLATORS\n { source: 'translators', target: 'translator', convert: PROP_CONVERTERS.names },\n\n // TYPES\n {\n source: 'type',\n target: 'type',\n convert: {\n toTarget(type) {\n return TYPES_TO_TARGET[type] || 'document'\n },\n toSource(type) {\n if (type === 'book' && this['event-title']) {\n return 'proceedings'\n }\n return TYPES_TO_SOURCE[type] || 'generic'\n },\n },\n },\n\n // VOLUMES\n 'volume',\n { source: 'number-volumes', target: 'number-of-volumes' },\n]\n\nconst mainTranslator = new util.Translator(MAIN_PROPS)\nconst refTranslator = new util.Translator(REF_PROPS)\nconst CFF_VERSION = '1.2.0'\n\n/** Add doi or url as unique id if available to make citation easy */\nfunction addId(entry) {\n if ('DOI' in entry) {\n entry.id = entry.DOI\n } else if ('URL' in entry) {\n entry.id = entry.URL.replace('http://', '').replace('https://', '')\n }\n}\n\nfunction parse(input) {\n const main = mainTranslator.convertToTarget(input)\n if (input['cff-version'] <= '1.1.0') {\n main.type = TYPES_TO_TARGET.software\n }\n main._cff_mainReference = true\n addId(main)\n\n const output = [main]\n if (input['preferred-citation']) {\n const preferredCitation = refTranslator.convertToTarget(input['preferred-citation'])\n addId(preferredCitation)\n output.push(preferredCitation)\n }\n\n if (Array.isArray(input.references)) {\n output.push(...input.references.map(refTranslator.convertToTarget))\n }\n\n return output\n}\n\nfunction format(input, options = {}) {\n input = input.slice()\n const {\n main,\n preferred,\n cffVersion = CFF_VERSION,\n message = 'Please cite the following works when using this software.',\n } = options\n\n let preferredCitation\n const preferredIndex = input.findIndex((entry) => preferred && entry.id === preferred)\n if (cffVersion >= '1.2.0' && preferredIndex > -1) {\n preferredCitation = refTranslator.convertToSource(...input.splice(preferredIndex, 1))\n }\n\n let mainIndex = input.findIndex((entry) => (main ? entry.id === main : entry._cff_mainReference))\n mainIndex = mainIndex > -1 ? mainIndex : 0\n const mainRef = input[mainIndex]\n ? mainTranslator.convertToSource(...input.splice(mainIndex, 1))\n : {}\n if (mainRef && cffVersion < '1.2.0') {\n delete mainRef.type\n }\n\n const cff = { 'cff-version': cffVersion, message, ...mainRef }\n\n if (preferredCitation) {\n cff['preferred-citation'] = preferredCitation\n }\n\n if (input.length) {\n // @ts-ignore\n cff.references = input.map(refTranslator.convertToSource)\n }\n\n return cff\n}\n\nplugins.add('@cff', {\n input: {\n '@cff/object': {\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: {\n props: 'cff-version',\n },\n },\n parse,\n },\n },\n output: {\n cff(data, options = {}) {\n const output = format(data, options)\n if (options.type === 'object') {\n return output\n } else {\n return plugins.output.format('yaml', output)\n }\n },\n },\n})\n","import { Cite as CiteCore, plugins } from './citation-js/core/index.js'\nimport './citation-js/plugin-bibjson/index.js'\nimport './citation-js/plugin-bibtex/index.js'\nimport './citation-js/plugin-csl/index.js'\nimport './citation-js/plugin-cff/index.js'\n\nfunction clone(obj) {\n const copy = {}\n for (const key in obj) {\n copy[key] = typeof obj[key] === 'object' ? clone(obj[key]) : obj[key]\n }\n return copy\n}\n\nfunction Cite(data, opts) {\n if (!(this instanceof Cite)) {\n return new Cite(data, opts)\n }\n\n const self = new CiteCore(data, opts)\n this._options = self._options\n this.log = self.log\n this.data = self.data\n}\n\nCite.plugins = clone(plugins)\n\nexport default Cite\n"],"names":["currentVersion","log","length","retrieveVersion","versnum","data","options","image","constructor","JSON","parse","slice","undo","number","retrieveLastVersion","save","push","stringify","_options","formats","types","styles","wrapperTypes","validateOutputOptions","TypeError","format","type","style","lang","append","prepend","includes","test","Error","validateOptions","output","maxChainLength","forceType","generateGraph","strict","target","defaultOptions","validate","Object","assign","typeOf","thing","undefined","name","dataTypeOf","Array","isArray","applyGraph","entry","graph","_graph","index","findIndex","splice","removeGraph","logger","_output","level","scope","msg","_log","_levels","indexOf","_console","console","Console","process","stderr","dataTypes","unregExts","parseNativeTypes","input","dataType","every","matchType","typeList","predicate","extensions","match","addTypeParser","extends","extend","debug","object","parentTypeParser","hasTypeParser","prototype","hasOwnProperty","call","removeTypeParser","typeLists","keys","map","key","filter","list","forEach","listTypeParser","treeTypeParser","attachNode","children","typeMatcher","_defineProperty","obj","value","_toPropertyKey","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","r","e","Symbol","toPrimitive","String","Number","TypeParser","validateDataType","validDataTypes","RangeError","validateParseType","RegExp","validateTokenList","tokenList","validatePropertyConstraint","propertyConstraint","validateElementConstraint","elementConstraint","validateExtends","parseTokenList","token","split","trim","trimInput","testTokens","part","parsePropertyConstraint","constraints","concat","props","some","prop","parseElementConstraint","constraint","parsePredicate","bind","getCombinedPredicate","predicates","getDataType","DataParser","parser","async","FormatParser","parsers","parseType","typeParser","dataParser","parseAsync","asyncDataParser","validateFormat","ownKeys","getOwnPropertySymbols","o","getOwnPropertyDescriptor","apply","_objectSpread","arguments","getOwnPropertyDescriptors","defineProperties","NAME","NAME_LIST","DATE","TYPE","entryTypes","article","bill","book","broadcast","chapter","classic","collection","dataset","document","event","figure","graphic","hearing","interview","legal_case","legislation","manuscript","motion_picture","musical_score","pamphlet","patent","performance","periodical","personal_communication","post","regulation","report","review","software","song","speech","standard","thesis","treaty","webpage","dissertation","fieldTypes","author","chair","compiler","composer","contributor","curator","director","editor","guest","host","interviewer","illustrator","narrator","organizer","performer","producer","recipient","translator","accessed","container","issued","submitted","categories","custom","id","language","journalAbbreviation","shortTitle","abstract","annote","archive","archive_collection","archive_location","authority","dimensions","division","DOI","edition","genre","ISBN","ISSN","issue","jurisdiction","keyword","locator","medium","note","page","PMCID","PMID","printing","publisher","references","scale","section","source","status","supplement","title","URL","version","volume","correctName","bestGuessConversions","literal","given","family","ORCID","orcid","_ORCID","_orcid","parseName","correctNameList","nameList","names","Boolean","correctDateParts","dateParts","isNaN","parseInt","correctDate","date","dp","range","correctType","correctField","toLowerCase","fieldName","fieldType","parseFloat","toString","parseCsl","clean","field","correction","upgradeCsl","item","downgradeCsl","deepCopy","seen","Set","has","add","copy","delete","conversions","lib","sign","x","evenRound","Math","floor","round","createNumberConversion","bitLength","typeOpts","unsigned","lowerBound","pow","upperBound","moduloVal","moduloBitLength","moduloBound","V","opts","enforceRange","isFinite","abs","clamp","val","treatNullAsEmptyString","c","codePointAt","S","n","U","charCodeAt","fromCodePoint","d","a","b","join","Date","module","exports","mixin","getOwnPropertyNames","wrapperSymbol","implSymbol","wrapperForImpl","impl","implForWrapper","wrapper","PROCESSING_OPTIONS","TRANSITIONAL","NONTRANSITIONAL","normalize","str","s","findStatus","start","end","mappingTable","mid","regexAstralSymbols","countSymbols","string","replace","mapChars","domain_name","useSTD3","processing_option","hasError","processed","len","codePoint","error","combiningMarksRegex","validateLabel","label","substr","punycode","toUnicode","search","processing","result","labels","validation","toASCII","verifyDnsLength","l","total","domain","PROCESSING_OPTIONS_1","specialSchemes","ftp","file","gopher","http","https","ws","wss","failure","ucs2","decode","at","idx","isASCIIDigit","isASCIIAlpha","isASCIIAlphanumeric","isASCIIHex","isSingleDot","buffer","isDoubleDot","isWindowsDriveLetterCodePoints","cp1","cp2","isWindowsDriveLetterString","isNormalizedWindowsDriveLetterString","containsForbiddenHostCodePoint","containsForbiddenHostCodePointExcludingPercent","isSpecialScheme","scheme","isSpecial","url","defaultPort","percentEncode","hex","toUpperCase","utf8PercentEncode","buf","Buffer","utf8PercentDecode","isC0ControlPercentEncode","extraPathPercentEncodeSet","isPathPercentEncode","extraUserinfoPercentEncodeSet","isUserinfoPercentEncode","percentEncodeChar","encodeSetPredicate","cStr","parseIPv4Number","R","charAt","substring","regex","parseIPv4","parts","pop","numbers","ipv4","counter","serializeIPv4","address","parseIPv6","pieceIndex","compress","pointer","numbersSeen","ipv4Piece","swaps","temp","serializeIPv6","seqResult","findLongestZeroSequence","ignore0","separator","parseHost","isSpecialArg","parseOpaqueHost","asciiDomain","tr46","ipv4Host","decoded","arr","maxIdx","maxLen","currStart","currLen","serializeHost","trimControlChars","trimTabAndNewline","shortenPath","path","isNormalizedWindowsDriveLetter","includesCredentials","username","password","cannotHaveAUsernamePasswordPort","cannotBeABaseURL","URLStateMachine","base","encodingOverride","stateOverride","parseError","port","query","fragment","res","state","atFlag","arrFlag","passwordTokenSeenFlag","ret","parseSchemeStart","parseScheme","parseNoScheme","parseSpecialRelativeOrAuthority","parsePathOrAuthority","parseRelative","parseRelativeSlash","parseSpecialAuthoritySlashes","parseSpecialAuthorityIgnoreSlashes","parseAuthority","encodedCodePoints","parseHostName","parsePort","fileOtherwiseCodePoints","parseFile","parseFileSlash","parseFileHost","parsePathStart","parsePath","shift","parseCannotBeABaseURLPath","parseQuery","parseFragment","serializeURL","excludeFragment","serializeOrigin","tuple","serializeURLOrigin","parseURL","basicURLParse","usm","baseURL","setTheUsername","setThePassword","serializeInteger","integer","implementation","URLImpl","constructorArgs","parsedBase","parsedURL","_url","href","v","origin","protocol","hostname","pathname","hash","toJSON","utils","args","setup","is","get","set","Impl","create","privateData","interface","expose","Window","Worker","require$$0","require$$1","Readable","Stream","BUFFER","Blob","blobParts","buffers","element","ArrayBuffer","isView","from","byteOffset","byteLength","size","text","Promise","resolve","arrayBuffer","ab","stream","readable","_read","relativeStart","relativeEnd","max","min","span","slicedBuffer","blob","toStringTag","FetchError","message","systemError","code","errno","captureStackTrace","convert","require","INTERNALS","PassThrough","Body","body","_this","_ref","_ref$size","_ref$timeout","timeout","isURLSearchParams","isBlob","isBuffer","disturbed","on","err","bodyUsed","consumeBody","then","ct","headers","json","_this2","reject","textConverted","_this3","convertBody","mixIn","proto","desc","_this4","alloc","accum","accumBytes","abort","resTimeout","setTimeout","chunk","clearTimeout","charset","exec","getAll","sort","clone","instance","p1","p2","getBoundary","pipe","extractContentType","getTotalBytes","getLengthSync","_lengthRetrievers","hasKnownLength","writeToStream","dest","write","global","invalidTokenRegex","invalidHeaderCharRegex","validateName","validateValue","find","MAP","Headers","init","rawHeaders","raw","headerNames","headerName","method","iterator","pairs","pair","callback","thisArg","getHeaders","_pairs$i","createHeadersIterator","values","entries","kind","k","INTERNAL","HeadersIteratorPrototype","setPrototypeOf","next","getPrototypeOf","_INTERNAL","done","exportNodeCompatibleHeaders","__proto__","hostHeaderKey","createHeadersLenient","INTERNALS$1","STATUS_CODES","Response","contentType","statusText","ok","redirected","INTERNALS$2","Url","whatwgUrl","parse_url","format_url","urlStr","streamDestructionSupported","isRequest","isAbortSignal","signal","Request","inputBody","redirect","follow","agent","getNodeRequestOptions","request","contentLengthValue","totalBytes","AbortError","URL$1","PassThrough$1","isDomainOrSubdomain","destination","original","orig","endsWith","isSameProtocol","fetch","send","response","destroyStream","emit","aborted","abortAndFinalize","finalize","req","reqTimeout","addEventListener","removeEventListener","once","socket","fixResponseChunkedTransferBadEnding","addListener","hadError","hasDataListener","listenerCount","isRedirect","statusCode","location","locationURL","requestOpts","response_options","statusMessage","codings","zlibOptions","flush","zlib","Z_SYNC_FLUSH","finishFlush","createGunzip","createInflate","createInflateRaw","createBrotliDecompress","errorCallback","destroy","serializeHeaders","deserializeHeaders","old","serializeRequest","mode","credentials","cache","referrer","referrerPolicy","integrity","keepalive","deserializeRequest","resource","serializeResponse","deserializeResponse","bodyError","createStream","errors","serializeError","deserializeError","parseBodyType","parseBody","Transform","read","shared","execFileSync","_fetch","sendMessage","execPath","__dirname","windowsHide","maxBuffer","Infinity","shell","_body","_bodyError","SyncRequest","defineBuffer","checkBody","SyncResponse","defineBodyError","_super","self","catch","wrapFetchForNode","u","fetchNode","context","fetchFn","default","isBrowser","navigator","fetchPolyfill","userAgent","release","fetchId","prefix","random","Register","remove","Grammar","rules","defaultState","mainRule","lexer","consumeRule","matchEndOfFile","matchToken","consumeToken","optional","got","SyntaxError","formatError","rule","createConditionEval","condition","conditionEval","parsePropStatement","toSource","inputProp","outputProp","toTarget","when","createConverter","Translator","CONVERT_TO_SOURCE","converter","outputData","converted","cause","convertToSource","convertToTarget","CONVERT_TO_TARGET","prepareParseGraph","reduce","array","last","count","ChainParser","iteration","iterate","typeInfo","getTypeInfo","outputs","chain","parseData","chainLink","chainAsync","parseDataAsync","chainLinkAsync","asyncParsers","nativeParsers","flat","@invalid","nativeAsyncParsers","all","dataAsync","hasDataParser","addDataParser","removeDataParser","listDataParser","formatParser","asyncData","util","csl","parseInput","getIds","addAsync","parseInputAsync","setAsync","reset","getLabel","getComparisonValue","getName","num","compareProp","entryA","entryB","flip","getSortCallback","formatter","register","formatData","parsedOptions","styleType","styleFormat","newStyle","newType","formatOptions","template","_newOptions","createElement","tmp","innerHTML","firstChild","promise","Cite","staticMethods","dict","entryName","html","bibliographyContainer","listItem","htmlDict","wr_start","wr_end","en_start","en_end","ul_start","ul_end","li_start","li_end","textDict","configs","ref","config","registers","indices","plugins","mainIndex","typeIndex","typePlugins","typePlugin","substituters","parseJSON","subst","textContent","empty","jquery","jQuery","HTMLElement","appendCommas","getJsonObject","src","getJsonValue","getJson","warn","ndjson","nameProps","person","firstname","lastname","firstName","lastName","identifiers","journalIdentifiers","idProps","upperCaseProp","identifier","typeMap","booklet","proceedings","mastersthesis","inbook","incollection","conference","inproceedings","manual","misc","online","phdthesis","techreport","unpublished","quickscrapeSpecificProps","generalProps","reviewer","keywords","published","parseDate","year","journal","firstpage","pages","lastpage","link","cid","parseContentMine","parseBibJson","scraperLinks","authorNameFields","links","authors","records","metadata","root","factory","moo","this","hasSticky","sticky","isRegExp","isObject","reEscape","reGroups","re","reCapture","reUnion","regexps","regexpOrLiteral","ignoreCase","multiline","pad","lastNLines","numLines","position","lineBreaks","lastIndexOf","startPosition","objectToRules","j","include","ruleOptions","arrayToRules","defaultType","fallback","shouldThrow","toRules","spec","defaultErrorRule","compileRules","hasStates","errorRule","fast","fastAllowed","unicodeFlag","groups","word","unicode","pat","regexp","groupCount","fallbackRule","flags","suffix","combined","compile","Lexer","checkStateGroup","g","compileStates","states","$all","ruleMap","included","newRules","newRule","fastKeys","keywordTransform","isMap","Map","reverseMap","tokenType","keywordList","startState","stack","info","line","col","queuedToken","queuedText","queuedThrow","setState","popState","pushState","eat","_getGroup","tokenToString","queuedGroup","_token","group","lastIndex","offset","matchNL","nl","LexerIterator","numLinesAround","firstDisplayedLine","lastDisplayedLine","lastLineDigits","displayedLines","errorLines","lineNo","freeze","biblatexTypes","mvbook","bookinbook","mvcollection","mvproceedings","reference","mvreference","inreference","artwork","audio","legal","letter","movie","music","video","electronic","www","bibtexTypes","required","biblatex","bibtex","addendum","afterword","annotation","annotator","authortype","bookauthor","bookpagination","booksubtitle","booktitle","booktitleaddon","commentator","doi","editora","editorb","editorc","editortype","editoratype","editorbtype","editorctype","eid","entrysubtype","eprint","eprintclass","eprinttype","eventdate","eventtitle","eventtitleaddon","foreword","holder","howpublished","indextitle","institution","introduction","isan","isbn","ismn","isrn","issn","issuesubtitle","issuetitle","iswc","journalsubtitle","journaltitle","library","mainsubtitle","maintitle","maintitleaddon","month","nameaddon","organization","origdate","origlanguage","origlocation","origpublisher","origtitle","pagetotal","pagination","pubstate","reprinttitle","series","shortauthor","shorteditor","shorthand","shorthandintro","shortjournal","shortseries","shorttitle","subtitle","titleaddon","urldate","venue","volumes","crossref","entryset","execute","gender","langid","langidopts","ids","indexsorttitle","presort","related","relatedoptions","relatedtype","relatedstring","sortkey","sortname","sortshorthand","sorttitle","sortyear","xdata","xref","namea","nameb","namec","nameatype","namebtype","namectype","lista","listb","listc","listd","liste","listf","usera","userb","userc","userd","usere","userf","verba","verbb","verbc","archiveprefix","pdf","primaryclass","school","numpages","pmid","pmcid","diacritics","H","textcommabelow","commands","textquotesingle","textasciigrave","textquotedbl","textdollar","textless","textgreater","textbackslash","textasciicircum","textunderscore","textbraceleft","textbar","textbraceright","textasciitilde","textexclamdown","textcent","textsterling","textcurrency","textyen","textbrokenbar","textsection","textasciidieresis","textcopyright","textordfeminine","guillemetleft","guillemotleft","textlnot","textregistered","textasciimacron","textdegree","textpm","texttwosuperior","textthreesuperior","textasciiacute","textmu","textparagraph","textperiodcentered","textonesuperior","textordmasculine","guillemetright","guillemotright","textonequarter","textonehalf","textthreequarters","textquestiondown","AE","DH","texttimes","O","TH","ss","ae","dh","textdiv","th","DJ","dj","IJ","ij","L","NG","ng","OE","oe","textflorin","textasciicaron","textasciibreve","textacutedbl","textgravedbl","texttildelow","textbaht","SS","textcompwordmark","textendash","textemdash","textbardbl","textquoteleft","textquoteright","quotesinglbase","textquotedblleft","textquotedblright","quotedblbase","textdagger","textdaggerdbl","textbullet","textellipsis","textperthousand","textpertenthousand","guilsinglleft","guilsinglright","textreferencemark","textinterrobang","textfractionsolidus","textlquill","textrquill","textdiscount","textcolonmonetary","textlira","textnaira","textwon","textdong","texteuro","textpeso","textcelsius","textnumero","textcircledP","textrecipe","textservicemark","texttrademark","textohm","textmho","textestimated","textleftarrow","textuparrow","textrightarrow","textdownarrow","textminus","Hwithstroke","hwithstroke","textasteriskcentered","textsurd","textlangle","textrangle","textblank","textvisiblespace","textopenbullet","textbigcircle","textmusicalnote","textmarried","textdivorced","textinterrobangdown","copyright","mathCommands","Gamma","Delta","Theta","Lambda","Xi","Pi","Sigma","Phi","Psi","Omega","alpha","beta","gamma","delta","varepsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","pi","rho","varsigma","sigma","tau","upsilon","varphi","chi","psi","omega","vartheta","Upsilon","phi","varpi","varrho","epsilon","_required","_fieldTypes","defaultStrings","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","acmcs","acta","cacm","ibmjrd","ibmsj","ieeese","ieeetc","ieeetcad","ipl","jacm","jcss","scp","sicomp","tocs","tods","tog","toms","toois","toplas","tcs","formattingEnvs","it","itshape","sl","slshape","em","bf","bfseries","sc","scshape","rm","sf","tt","formattingCommands","textit","textsl","emph","mkbibitalic","mkbibemph","textbf","strong","mkbibbold","textsc","textsuperscript","textsubscript","enquote","mkbibquote","textmd","textrm","textsf","texttt","textup","formatting","italics","bold","superscript","subscript","smallcaps","nocase","quotes","argumentCommands","ElsevierGlyph","glyph","fromCharCode","ligaturePattern","ligatures","mathScriptFormatting","sp","_","sb","mathrm","mathScripts","h","m","p","sentenceCaseLanguages","constants","sentenceCase","useIdAsLabel","checkLabel","asciiOnly","biber","annotationMarker","namedAnnotationMarker","whitespace","comment","main","junk","otherEntryType","dataEntryType","otherEntryContents","lbrace","dataEntryContents","comma","fields","equals","quote","rbrace","quotedLiteral","bracedLiteral","delimiters","bibtexGrammar","Main","oldToken","Entry","openBrace","strings","entryBody","closeBrace","EntryBody","properties","annotationField","annotationName","annotations","Field","Expression","ExpressionPart","QuoteString","BracketString","Text","bibTxtRegex","splitEntries","parseEntry","splitPairs","splitPair","parseBibTxtEntry","out","parseBibTxt","stopWords","unsafeChars","isLabelSafe","formatLabelFromId","firstWord","months","LABEL","MONTHS","january","february","march","april","june","july","august","september","october","november","december","TYPE_KEYS","bathesis","mathesis","candthesis","resreport","datacd","audiocd","patentde","patenteu","patentfr","patentuk","patentus","patreq","patreqde","patreqeu","patreqfr","patrequk","patrequs","STANDARD_NUMBERS_PATTERN","day","parseMonth","formatLabel","Converters","PICK","datePart","padStart","YEAR_MONTH","EPRINT","EVENT_TITLE","addon","HOW_PUBLISHED","howPublished","startsWith","KEYWORDS","NAMES","NAMES_ORCID","inputName","_orcid$item","outputName","PAGES","STANDARD_NUMBERS","STATUS","TITLE","nonSpec","formatDate","S2ID","aliases","subtype","typeKey","sourceType","subType","targetType","BOOK","BOOK_PART","COLLECTION","COLLECTION_PART","PROCEEDINGS","PROCEEDINGS_PART","PERIODICAL_PART","TITLE_MAP","registry","parent","shortand","shortandintro","targets","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","sourceKeys","_parse","_format","_spec$convertToSource","parseBibtex","formatBibtex","getStringCase","formatNameParts","piece","hyphenated","orderNameParts","orderGiven","undecided","upperCase","unshift","orderNamePieces","pieces","commandBegin","command","mathShift","stringLiteral","namesLiteral","and","hyphen","listLiteral","separatedLiteral","colon","semicolon","itemCount","mathLiteral","script","environment","commandEnd","flattenConsString","applyFormatting","valueGrammar","StringNames","Name","NamePiece","NameToken","StringList","StringSeparated","StringVerbatim","StringUri","uri","decodeURI","encodeURI","StringTitleCase","Annotations","Annotation","_this$state","partlyLowercase","topLevel","protectCase","MathString","char","formatName","ligature","afterPunctuation","_this$state2","first","otherCharacters","rest","restLowerCase","Command","commandToken","diacritic","func","arity","Env","EnclosedEnv","beginEnv","endEnv","singleLanguageIsEnglish","isEnglish","languages","getMainRule","option","getLexerState","parseAnnotation","requirements","problems","missing","problem","parseEntryValues","parseValue","property","mapBiblatex","mapBibtex","parseEntries","parseBibtxt","mathUnicode","UNSAFE_UNICODE","DIACRITIC_PATTERN","LONE_DIACRITIC_PATTERN","listDelimiters","separated","richTextMappings","sup","sub","escapeCharacter","escapeValue","subject","formatRichText","closingTags","tokens","formatTitle","formatSingleValue","valueType","formatList","listType","delimiter","formatted","formatAnnotationValue","formatAnnotation","itemValue","formatEntryValues","formatValue","formatField","formatEntry","mapper","bibtxt","formatBibtxt","defaultLocales","locales","defaultTemplates","apa","templates","proxied","for","getWrapperProxy","proxy","sys","wrapBibliographyEntry","postfix","system_id","CSL","Output","Formats","retrieveLocale","locale","unnormalised","engines","fetchEngine","styleXml","retrieveItem","engineHash","engine","Engine","updateItems","prepareEngine","items","store","setOutputFormat","opt","development_extensions","wrap_url_and_doi","getAttributedEntry","getPrefixedEntry","getAffix","affix","bibliography","nosort","citeproc","sortedIds","hyperlinks","makeBibliography","bibstart","bibend","bibBody","asEntryArray","prepareCiteItem","citeItem","prepareCitation","citation","citationItems","noteIndex","prepareCitations","before","citationsPre","after","citationsPost","rebuildProcessorState","timestampTag","timestamp","yaml","DEFAULT_SCHEMA","compiledTypeMap","scalar","Type","construct","instanceOf","represent","toISOString","CFF_SCHEMA","implicit","explicit","load","dump","schema","TYPES_TO_TARGET","art","audiovisual","blog","catalogue","database","dictionary","encyclopedia","generic","grant","multimedia","serial","slides","statute","website","TYPES_TO_SOURCE","ENTITY_PROPS","entity","PROP_CONVERTERS","city","region","country","place","UTC","SHARED_PROPS","newIdentifiers","fill","term","MAIN_PROPS","REF_PROPS","nameFallback","department","mainTranslator","refTranslator","CFF_VERSION","addId","_cff_mainReference","preferredCitation","preferred","cffVersion","preferredIndex","mainRef","cff","_extends","CiteCore"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}